diff --git a/admin/admin_gd_info.php b/admin/admin_gd_info.php new file mode 100644 index 00000000..e19a245a --- /dev/null +++ b/admin/admin_gd_info.php @@ -0,0 +1,112 @@ +set_filenames(array('body' => 'admin/admin_gd_info_body.' . TPL_EXT)); + +if (function_exists('gd_info')) +{ + $gd_info_ary = gd_info(); +} + +$true = '' . $lang['GD_True'] . ''; +$false = '' . $lang['GD_False'] . ''; + +if (count($gd_info_ary) == 0) +{ + print_r('v souboryu nic neni'); +} +else +{ + $counter = 0; + //print_r($gd_info_ary); + foreach($gd_info_ary as $gd_key => $gd_value) + { + if (is_array($gd_value)) + { + /*Convert the array to a string */ + $gd_value = print_r($gd_value, true); + } + + if (ctype_digit(strval($gd_value)) || empty($gd_value)) + { + $gd_value = !empty($gd_value) ? $true : $false; + } + + $gd_info_ary[$gd_key] = $gd_value; + } + $template->assign_vars(array( //# + 'VERSION' => $gd_info_ary['GD Version'], + 'FREETYPE_SUPPORT' => $gd_info_ary['FreeType Support'], + 'FREETYPE_LINKAGE' => $gd_info_ary['FreeType Linkage'], + 'T1LIB_SUPPORT' => $gd_info_ary['T1Lib Support'], + 'GIF_READ_SUPPORT' => $gd_info_ary['GIF Read Support'], + 'GIF_CREATE_SUPPORT' => $gd_info_ary['GIF Create Support'], + 'JPG_SUPPORT' => $gd_info_ary['JPEG Support'], + 'PNG_SUPPORT' => $gd_info_ary['PNG Support'], + 'WBMP_SUPPORT' => $gd_info_ary['WBMP Support'], + 'XBM_SUPPORT' => $gd_info_ary['XBM Support'], + 'WEBP_SUPPORT' => $gd_info_ary['WebP Support'], + 'JIS_MAPPED_SUPPORT' => $gd_info_ary['JIS-mapped Japanese Font Support'], + ) + ); + $counter++; +} + +$template->assign_vars(array( + 'L_TITLE' => $lang['GD_Title'], + 'L_DESCRIPTION' => $lang['GD_Description'], + 'L_VERSION' => $lang['GD_VERSION'], + 'L_FREETYPE_SUPPORT' => $lang['GD_Freetype_Support'], + 'L_FREETYPE_LINKAGE' => $lang['GD_Freetype_Linkage'], + 'L_T1LIB_SUPPORT' => $lang['GD_T1lib_Support'], + 'L_GIF_READ_SUPPORT' => $lang['GD_Gif_Read_Support'], + 'L_GIF_CREATE_SUPPORT' => $lang['GD_Gif_Create_Support'], + 'L_JPG_SUPPORT' => $lang['GD_Jpg_Support'], + 'L_PNG_SUPPORT' => $lang['GD_Png_Support'], + 'L_WBMP_SUPPORT' => $lang['GD_Wbmp_Support'], + 'L_XBM_SUPPORT' => $lang['GD_XBM_Support'], + 'L_WEBP_SUPPORT' => $lang['GD_WebP_Support'], + 'L_JIS_MAPPED_SUPPORT' => $lang['GD_Jis_Mapped_Support'], + + ) +); +$template->pparse('body'); + +// +// Send page footer. +// +include_once('./page_footer_admin.' . PHP_EXT); +?> \ No newline at end of file diff --git a/admin/admin_mx_page_cp.php b/admin/admin_mx_page_cp.php index 22b31064..6f5c0bed 100644 --- a/admin/admin_mx_page_cp.php +++ b/admin/admin_mx_page_cp.php @@ -574,7 +574,8 @@ $page_header = !$new_page ? $page_rows[$page_count]['page_header'] : 'overall_header_navigation.html'; $page_footer = !$new_page ? $page_rows[$page_count]['page_footer'] : 'overall_footer.html'; $page_main_layout = !$new_page ? $page_rows[$page_count]['page_main_layout'] : 'mx_main_layout.html'; - $navigation_block_list = get_list_formatted('block_list', $page_main_layout, 'navigation_block', 'mx_menu_nav.' . $phpEx); + //$navigation_block_list = get_list_formatted('block_list', $page_main_layout, 'navigation_block', 'mx_menu_nav.' . $phpEx); + $navigation_block_list = get_list_formatted('block_list', $portal_config['navigation_block'], 'navigation_block', 'mx_menu_nav.' . $phpEx, false, 'mx_site_nav.' . $phpEx); $default_style = !$new_page ? $page_rows[$page_count]['default_style'] : '_core'; $style_select = mx_style_select($default_style, 'mx_default_style', 'templates', true); diff --git a/admin/admin_mx_portal.php b/admin/admin_mx_portal.php index 5bf59136..5c1425ad 100644 --- a/admin/admin_mx_portal.php +++ b/admin/admin_mx_portal.php @@ -93,15 +93,30 @@ $new['smtp_username'] = $mx_request_vars->post('smtp_username', MX_TYPE_NO_TAGS, '0'); $new['smtp_password'] = $mx_request_vars->post('smtp_password', MX_TYPE_NO_TAGS, '0'); - - $sql = "UPDATE " . PORTAL_TABLE . " SET " . $db->sql_build_array('UPDATE', $new); + $sql = "UPDATE " . PORTAL_TABLE . " SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)); + if( !($db->sql_query($sql)) ) { mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); } - + //print_r("Portal configuration update " . "
" . $sql); $message = update_portal_backend($new['portal_backend']) ? "The CMS configuration file was upgraded ...

" : update_portal_backend($new['portal_backend']); + // + // Update MX-Publisher page/block cache + // + $mx_cache->trash(); // Empty cache folder + $mx_cache->update(); // Regenerate all page_ and block_ files + + // + // Update config/custom cache + // + $mx_cache->tidy(); // Not really needed + $mx_cache->destroy('phpbb_config'); // Not really needed + $mx_cache->destroy('mxbb_config'); // Not really needed + $mx_cache->unload(); // Regenerate data_global.php + + $message .= $lang['Cache_generate'] . "

"; $mx_cache->put('mxbb_config', $new); $message .= $lang['Portal_Config_updated'] . "

" . sprintf($lang['Click_return_portal_config'], "", "") . "

" . sprintf($lang['Click_return_admin_index'], "", ""); @@ -111,19 +126,69 @@ $template->set_filenames(array( 'admin_portal' => 'admin/admin_mx_portal.'.$tplEx) ); +$top_phpbb_links_yes = ( $portal_config['top_phpbb_links'] == 1 ) ? 'checked="checked"' : ''; +$top_phpbb_links_no = ( $portal_config['top_phpbb_links'] == 0 ) ? 'checked="checked"' : ''; + +$mx_use_cache_yes = ( $portal_config['mx_use_cache'] == 1 ) ? 'checked="checked"' : ''; +$mx_use_cache_no = ( $portal_config['mx_use_cache'] == 0 ) ? 'checked="checked"' : ''; + +$mx_mod_rewrite_yes = ( $portal_config['mod_rewrite'] == 1 ) ? 'checked="checked"' : ''; +$mx_mod_rewrite_no = ( $portal_config['mod_rewrite'] == 0 ) ? 'checked="checked"' : ''; + +$mx_portal_status_yes = ( $portal_config['portal_status'] == 1 ) ? 'checked="checked"' : ''; +$mx_portal_status_no = ( $portal_config['portal_status'] == 0 ) ? 'checked="checked"' : ''; + +$disabled_message = $portal_config['disabled_message']; + +$phpbb_rel_path = substr( "$phpbb_root_path", 3 ); + $navigation_block_list = get_list_formatted('block_list', $portal_config['navigation_block'], 'navigation_block', 'mx_menu_nav.' . $phpEx, false, 'mx_site_nav.' . $phpEx); -$portal_config['default_lang'] = $portal_config['default_lang'] == -1 ? $board_config['default_lang'] : $portal_config['default_lang']; +$portal_version = $portal_config['portal_version']; +$phpbb_version = isset($board_config['version']) ? '2' . $board_config['version'] : '0.0.0'; + +$script_path = isset($portal_config['script_path']) ? $portal_config['script_path'] : $board_config['script_path']; +$server_name = isset($portal_config['server_name']) ? $portal_config['server_name'] : $board_config['server_name']; + +$phpbb_script_path = $board_config['script_path']; +$phpbb_server_name = $board_config['server_name']; + + +$portal_config['default_lang'] = ($portal_config['default_lang'] == -1) ? $board_config['default_lang'] : $portal_config['default_lang']; + +// Default to phpBB default $portal_config['default_admin_style'] = $portal_config['default_admin_style'] == -1 ? $board_config['default_style'] : $portal_config['default_admin_style']; $portal_config['default_style'] = $portal_config['default_style'] == -1 ? $board_config['default_style'] : $portal_config['default_style']; $portal_config['override_user_style'] = $portal_config['override_user_style'] == -1 ? $board_config['override_user_style'] : $portal_config['override_user_style']; -$portal_backend_select = get_list_static('portal_backend', array('internal' => 'Internal', 'phpbb2' => 'phpBB2', 'phpbb3' => 'phpBB3', 'olympus' => 'Olympus', 'ascraeus' => 'Ascraeus', 'smf2' => 'SMF2', 'mybb' => 'myBB'), $portal_config['portal_backend']); +$portal_backend_select = get_list_static('portal_backend', + array('internal' => 'Internal', + 'smf2' => 'SMF2', + 'mybb' => 'myBB', + 'phpbb2' => 'phpBB2', + 'phpbb3' => 'phpBB3', + 'olympus' => 'Olympus', + 'ascraeus' => 'Ascraeus', + 'rhea' => 'Rhea', + 'proteus' => 'Proteus', + 'phpbb4' => 'phpBB4' + ), + $portal_config['portal_backend']); $style_select = mx_style_select($portal_config['default_style'], 'mx_default_style'); $style_admin_select = mx_style_select($portal_config['default_admin_style'], 'mx_default_admin_style'); +if ( isset($mx_user->data['user_timezone']) ) +{ + $portal_config['board_timezone'] = $board_config['board_timezone'] = $mx_user->data['user_timezone']; +} +else +{ + $portal_config['board_timezone'] = $board_config['board_timezone']; +} + $lang_select = mx_language_select($portal_config['default_lang'], 'default_lang', "language"); + $timezone_select = mx_tz_select($portal_config['board_timezone'], 'board_timezone'); $current_phpbb_version = $mx_backend->get_phpbb_version(); // Empty if mxp is used standalone @@ -164,37 +229,67 @@ "L_PORTAL_DESC" => $lang['Portal_Desc'], // Will override phpBB 'site_desc' "PORTAL_DESC" => str_replace('"', '"', $portal_config['portal_desc']), - "L_PORTAL_STATUS" => $lang['Portal_status'], // Will override phpBB 'board_disable' - "L_PORTAL_STATUS_EXPLAIN" => $lang['Portal_status_explain'], - "S_PORTAL_STATUS_YES" => ( $portal_config['portal_status'] == 1 ) ? 'checked="checked"' : '', - "S_PORTAL_STATUS_NO" => ( $portal_config['portal_status'] == 0 ) ? 'checked="checked"' : '', + //"L_PORTAL_STATUS" => $lang['Portal_status'], // Will override phpBB 'board_disable' + //"L_PORTAL_STATUS_EXPLAIN" => $lang['Portal_status_explain'], + //"S_PORTAL_STATUS_YES" => ( $portal_config['portal_status'] == 1 ) ? 'checked="checked"' : '', + //"S_PORTAL_STATUS_NO" => ( $portal_config['portal_status'] == 0 ) ? 'checked="checked"' : '', - "L_DISABLED_MESSAGE" => $lang['Disabled_message'], // Will override phpBB3 'board_disable_msg' - "DISABLED_MESSAGE" => $portal_config['disabled_message'], + //"L_DISABLED_MESSAGE" => $lang['Disabled_message'], // Will override phpBB3 'board_disable_msg' + //"DISABLED_MESSAGE" => $portal_config['disabled_message'], "L_SERVER_NAME" => $lang['Server_name'], "L_SERVER_NAME_EXPLAIN" => $lang['Server_name_explain'], - "SERVER_NAME" => $portal_config['server_name'], + "SERVER_NAME" => $server_name, "L_SERVER_PORT" => $lang['Server_port'], "L_SERVER_PORT_EXPLAIN" => $lang['Server_port_explain'], - "SCRIPT_PATH" => $portal_config['script_path'], + "SCRIPT_PATH" => $script_path, "L_SCRIPT_PATH" => $lang['Script_path'], "L_SCRIPT_PATH_EXPLAIN" => $lang['Script_path_explain'], "SERVER_PORT" => $portal_config['server_port'], - "L_DATE_FORMAT" => $lang['Date_format'], + "L_DATE_FORMAT" => 'MXP' . $lang['Date_format'], "L_DATE_FORMAT_EXPLAIN" => $lang['Date_format_explain'], "DEFAULT_DATEFORMAT" => $portal_config['default_dateformat'], - "L_SYSTEM_TIMEZONE" => $lang['System_timezone'], + "L_SYSTEM_TIMEZONE" => 'MXP ' . $lang['System_timezone'], "TIMEZONE_SELECT" => $timezone_select, // board_timezone - "L_ENABLE_GZIP" => $lang['Enable_gzip'], + "L_ENABLE_GZIP" => 'MXP ' . $lang['Enable_gzip'], "GZIP_YES" => ( $portal_config['gzip_compress'] ) ? "checked=\"checked\"" : "", "GZIP_NO" => ( !$portal_config['gzip_compress'] ) ? "checked=\"checked\"" : "", + "PORTAL_PHPBB_URL" => $portal_config['portal_phpbb_url'], + "OVERALL_HEADER" => $portal_config['overall_header'], + + "OVERALL_FOOTER" => $portal_config['overall_footer'], + "MAIN_LAYOUT" => $portal_config['main_layout'], + "NAVIGATION_BLOCK" => $navigation_block_list, + + //"L_PHPBB_RELATIVE_PATH" => $lang['Phpbb_path'], + //"L_PHPBB_RELATIVE_PATH_EXPLAIN" => $lang['Phpbb_path_explain'], + //"PHPBB_RELATIVE_PATH" => $phpbb_rel_path, + + //"L_PORTAL_VERSION" => $lang['Portal_version'], + //"PORTAL_VERSION" => $portal_version, + + "L_PHPBB_INFO" => $lang['PHPBB_info'], + + //"L_PHPBB_SERVER_NAME" => $lang['PHPBB_server_name'], + //"PHPBB_SERVER_NAME" => $phpbb_server_name, + + //"L_PHPBB_SCRIPT_PATH" => $lang['PHPBB_script_path'], + //"PHPBB_SCRIPT_PATH" => $phpbb_script_path, + + //"L_PHPBB_VERSION" => $lang['PHPBB_version'], + //"PHPBB_VERSION" => $phpbb_version, + + "L_TOP_PHPBB_LINKS" => $lang['Top_phpbb_links'] . "
" . $lang['Top_phpbb_links_explain'], + "S_TOP_PHPBB_LINKS_YES" => $top_phpbb_links_yes, + "S_TOP_PHPBB_LINKS_NO" => $top_phpbb_links_no, + "TOP_PHPBB_LINKS" => $portal_config['top_phpbb_links'], + "L_MX_USE_CACHE" => $lang['Mx_use_cache'], "L_MX_USE_CACHE_EXPLAIN" => $lang['Mx_use_cache_explain'], "S_MX_USE_CACHE_YES" => ( $portal_config['mx_use_cache'] == 1 ) ? 'checked="checked"' : '', @@ -260,20 +355,31 @@ // // User & Styling // + "L_DEFAULT_LANG" => $lang['Default_language'] . ' (' . $mx_user->lang_name . '/' . $portal_config['default_lang'] . ') ', "L_DEFAULT_LANGUAGE" => $lang['Default_language'], "LANG_SELECT" => $lang_select, - "L_DEFAULT_STYLE" => $lang['Default_style'], - "STYLE_SELECT" => $style_select, - - "L_DEFAULT_ADMIN_STYLE" => $lang['Default_admin_style'], - "ADMIN_STYLE_SELECT" => $style_admin_select, + "L_DEFAULT_STYLE" => $lang['Default_style'] . ' (' . $portal_config['default_style'] . ') ', + "L_DEFAULT_ADMIN_STYLE" => $lang['Default_admin_style'] . ' (' . $portal_config['default_admin_style'] . ') ', + "L_OVERRIDE_STYLE" => $lang['Override_style'], "L_OVERRIDE_STYLE_EXPLAIN" => $lang['Override_style_explain'], + + "STYLE_SELECT" => $style_select, + "ADMIN_STYLE_SELECT" => $style_admin_select, + "OVERRIDE_STYLE_YES" => ( $portal_config['override_user_style'] ) ? "checked=\"checked\"" : "", "OVERRIDE_STYLE_NO" => ( !$portal_config['override_user_style'] ) ? "checked=\"checked\"" : "", + "L_MX_MOD_REWRITE" => $lang['Mx_mod_rewrite'], + "L_MX_MOD_REWRITE_EXPLAIN" => $lang['Mx_mod_rewrite_explain'], + "S_MX_MOD_REWRITE_YES" => $mx_mod_rewrite_yes, + "S_MX_MOD_REWRITE_NO" => $mx_mod_rewrite_no, + "MX_MOD_REWRITE" => $portal_config['mod_rewrite'], + + + "L_OVERALL_HEADER" => $lang['Portal_Overall_header'] . "
" . $lang['Portal_Overall_header_explain'], "OVERALL_HEADER" => $portal_config['overall_header'], @@ -347,6 +453,14 @@ "L_PHPBB_RELATIVE_PATH_EXPLAIN" => $lang['Phpbb_path_explain'], "PHPBB_RELATIVE_PATH" => substr( "$phpbb_root_path", 3 ), + "L_PORTAL_STATUS" => $lang['Portal_status'], + "L_PORTAL_STATUS_EXPLAIN" => $lang['Portal_status_explain'], + "S_PORTAL_STATUS_YES" => $mx_portal_status_yes, + "S_PORTAL_STATUS_NO" => $mx_portal_status_no, + + "L_DISABLED_MESSAGE" => $lang['Disabled_message'], + "DISABLED_MESSAGE" => $disabled_message, + "L_PHPBB_SERVER_NAME" => $lang['PHPBB_server_name'], "PHPBB_SERVER_NAME" => $board_config['server_name'], diff --git a/admin/admin_mx_styles.php b/admin/admin_mx_styles.php index c8092bf6..255414aa 100644 --- a/admin/admin_mx_styles.php +++ b/admin/admin_mx_styles.php @@ -96,9 +96,9 @@ { while( $sub_dir = @readdir($dir) ) { - if( !is_file(phpBB2::phpbb_realpath($mx_root_path . 'templates/' .$sub_dir)) && !is_link(phpBB2::phpbb_realpath($mx_root_path . 'templates/' .$sub_dir)) && $sub_dir != "." && $sub_dir != ".." && $sub_dir != "CVS" ) + if( !is_file($phpBB2->phpbb_realpath($mx_root_path . 'templates/' .$sub_dir)) && !is_link($phpBB2->phpbb_realpath($mx_root_path . 'templates/' .$sub_dir)) && $sub_dir != "." && $sub_dir != ".." && $sub_dir != "CVS" ) { - if( @file_exists(@phpBB2::phpbb_realpath($mx_root_path. "templates/" . $sub_dir . "/$sub_dir.cfg")) ) + if( @file_exists($phpBB2->phpbb_realpath($mx_root_path. "templates/" . $sub_dir . "/$sub_dir.cfg")) ) { @include($mx_root_path. "templates/" . $sub_dir . "/$sub_dir.cfg"); @@ -132,7 +132,7 @@ "L_STYLES_TITLE" => $lang['Styles_admin'], "L_STYLES_ADD_TEXT" => $lang['Styles_addnew_explain'], "L_STYLE" => $lang['Style'], - //"L_TEMPLATE" => $lang['Template'], + "L_TEMPLATE" => $lang['Template'], "L_INSTALL" => $lang['Install'], "L_ACTION" => $lang['Action']) ); @@ -146,7 +146,7 @@ "ROW_CLASS" => $row_class, "ROW_COLOR" => "#" . $row_color, "STYLE_NAME" => $installable_themes[$i]['style_name'], - //"TEMPLATE_NAME" => $installable_themes[$i]['template_name'], + "TEMPLATE_NAME" => $installable_themes[$i]['template_name'], "U_STYLES_INSTALL" => mx_append_sid("admin_mx_styles.$phpEx?mode=addnew&style=" . urlencode($installable_themes[$i]['style_name']) . "&install_to=" . urlencode($installable_themes[$i]['template_name']))) ); @@ -204,13 +204,15 @@ { mx_message_die(GENERAL_ERROR, "Could not remove style data!", "", __LINE__, __FILE__, $sql); } - - $sql = "UPDATE " . USERS_TABLE . " - SET user_style = " . $board_config['default_style'] . " - WHERE user_style = $style_id"; - if(!$result = $db->sql_query($sql, END_TRANSACTION)) + if (PORTAL_BACKEND !== 'internal') { - mx_message_die(GENERAL_ERROR, "Could not update user style information", "", __LINE__, __FILE__, $sql); + $sql = "UPDATE " . USERS_TABLE . " + SET user_style = " . $board_config['default_style'] . " + WHERE user_style = $style_id"; + if (!$result = $db->sql_query($sql, END_TRANSACTION)) + { + mx_message_die(GENERAL_ERROR, "Could not update user style information", "", __LINE__, __FILE__, $sql); + } } $message = $lang['Style_removed'] . "

" . sprintf($lang['Click_return_styleadmin'], "", "") . "

" . sprintf($lang['Click_return_admin_index'], "", ""); diff --git a/admin/index.php b/admin/index.php index 39143797..7b58d38b 100644 --- a/admin/index.php +++ b/admin/index.php @@ -373,19 +373,19 @@ function read_admin($dir_module) case PAGE_INDEX: $location = $lang['Forum_index']; $location_url = "index.$phpEx?pane=right"; - break; + break; case PAGE_POSTING: $location = $lang['Posting_message']; $location_url = "index.$phpEx?pane=right"; - break; + break; case PAGE_LOGIN: $location = $lang['Logging_on']; $location_url = "index.$phpEx?pane=right"; - break; + break; case PAGE_SEARCH: $location = $lang['Searching_forums']; $location_url = "index.$phpEx?pane=right"; - break; + break; default: $mx_viewonline_info = mx_get_viewonline_info($onlinerow_reg[$i]['user_session_page']); if( $mx_viewonline_info !== false ) @@ -414,8 +414,8 @@ function read_admin($dir_module) "ROW_COLOR" => "#" . $row_color, "ROW_CLASS" => $row_class, "USERNAME" => $username, - "STARTED" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['session_start'], $board_config['board_timezone']), - "LASTUPDATE" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['user_session_time'], $board_config['board_timezone']), + "STARTED" => $phpBB2->create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['session_start'], $board_config['board_timezone']), + "LASTUPDATE" => $phpBB2->create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['user_session_time'], $board_config['board_timezone']), "FORUM_LOCATION" => $location, "IP_ADDRESS" => $reg_ip, @@ -452,19 +452,19 @@ function read_admin($dir_module) case PAGE_INDEX: $location = $lang['Forum_index']; $location_url = "index.$phpEx?pane=right"; - break; + break; case PAGE_POSTING: $location = $lang['Posting_message']; $location_url = "index.$phpEx?pane=right"; - break; + break; case PAGE_LOGIN: $location = $lang['Logging_on']; $location_url = "index.$phpEx?pane=right"; - break; + break; case PAGE_SEARCH: $location = $lang['Searching_forums']; $location_url = "index.$phpEx?pane=right"; - break; + break; default: $mx_viewonline_info = mx_get_viewonline_info($onlinerow_guest[$i]['session_page']); if( $mx_viewonline_info !== false ) @@ -485,8 +485,8 @@ function read_admin($dir_module) "ROW_COLOR" => "#" . $row_color, "ROW_CLASS" => $row_class, "USERNAME" => $lang['Guest'], - "STARTED" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_start'], $board_config['board_timezone']), - "LASTUPDATE" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_time'], $board_config['board_timezone']), + "STARTED" => $phpBB2->create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_start'], $board_config['board_timezone']), + "LASTUPDATE" => $phpBB2->create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_time'], $board_config['board_timezone']), "FORUM_LOCATION" => $location, "IP_ADDRESS" => $guest_ip, @@ -506,8 +506,8 @@ function read_admin($dir_module) $phpbb_version_info = $mx_backend->phpbb_version_check(); /* Begin MX-Publisher version check code block */ - $current_MXP_version = explode('.', $portal_config['portal_version']); - $minor_mx_revision = (int) $current_MXP_version[2]; + $current_mxp_version = explode('.', $portal_config['portal_version']); + $minor_mx_revision = (int) $current_mxp_version[2]; $errno = 0; $errstr = $mx_version_info = ''; @@ -599,7 +599,7 @@ function read_admin($dir_module) ); $template->assign_vars(array( - 'ADMIN_TITLE' => $lang['Mx-Publisher_adminCP'], + 'L_ADMIN_TITLE' => isset($lang['mxBB_adminCP']) ? $lang['mxBB_adminCP'] : $lang['Mx-Publisher_adminCP'], "S_FRAME_NAV" => mx_append_sid("index.$phpEx?pane=left"), "S_FRAME_MAIN" => mx_append_sid("index.$phpEx?pane=right")) ); diff --git a/admin/index_iframes.php b/admin/index_iframes.php new file mode 100644 index 00000000..c565225c --- /dev/null +++ b/admin/index_iframes.php @@ -0,0 +1,607 @@ +get('pane', MX_TYPE_NO_TAGS) == 'left') +{ + //require($mx_root_path.'admin/page_header_admin.'.$phpEx); + + $template->set_filenames(array( + 'body' => 'admin/index_navigate.'.$tplEx) + ); + + $admincp_nav_icon_url = PORTAL_URL . $images['mx_graphics']['admin_icons']; + + $template->assign_vars(array( + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, + "U_PORTAL_INDEX" => mx_append_sid(PORTAL_URL . "index.$phpEx"), + "L_PORTAL_INDEX" => $lang['Portal_index'], + "L_PREVIEW_PORTAL" => $lang['Preview_portal'], + + "LOGO" => $images['mx_logo'], + + "U_FORUM_INDEX" => mx_append_sid(PHPBB_URL . "index.$phpEx"), + "U_ADMIN_INDEX" => mx_append_sid("index.$phpEx?pane=right"), + //+MOD: DHTML Menu for ACP + 'COOKIE_NAME' => $board_config['cookie_name'], + 'COOKIE_PATH' => $board_config['cookie_path'], + 'COOKIE_DOMAIN' => $board_config['cookie_domain'], + 'COOKIE_SECURE' => $board_config['cookie_secure'], + 'IMG_URL_CONTRACT' => $admincp_nav_icon_url . '/contract.gif', + 'IMG_URL_EXPAND' => $admincp_nav_icon_url . '/expand.gif', + //-MOD: DHTML Menu for ACP + "L_FORUM_INDEX" => $lang['Main_index'], + "L_ADMIN_INDEX" => $lang['Admin_Index'], + )); + + // + // Read Portal configuration + // + // MX Addon ------------------------------------ + $module_portal = read_admin('.'); + $template->assign_block_vars('module_portal', array( + 'L_MX_PORTAL' => $lang['MX_Portal'] + )); + // END ------------------------------------------ + + ksort($module_portal); + + //+MOD: DHTML Menu for ACP + $menu_cat_id = 0; + //-MOD: DHTML Menu for ACP + + while( list($cat, $action_array) = each($module_portal) ) + { + $cat = ( !empty($lang[$cat]) ) ? $lang[$cat] : preg_replace("/_/", " ", $cat); + + $template->assign_block_vars('module_portal.catrow', array( + //+MOD: DHTML Menu for ACP + 'MENU_CAT_ID' => $menu_cat_id, + 'MENU_CAT_ROWS' => count($action_array), + //-MOD: DHTML Menu for ACP + 'ADMIN_CATEGORY' => $cat) + ); + + ksort($action_array); + + $row_count = 0; + while( list($action, $file) = each($action_array) ) + { + $row_color = ( !($row_count%2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($row_count%2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $action = ( !empty($lang[$action]) ) ? $lang[$action] : preg_replace("/_/", " ", $action); + + $template->assign_block_vars('module_portal.catrow.modulerow', array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + //+MOD: DHTML Menu for ACP + 'ROW_COUNT' => $row_count, + //-MOD: DHTML Menu for ACP + "ADMIN_MODULE" => $action, + "U_ADMIN_MODULE" => mx_append_sid(PORTAL_URL . $file . ( ( strpos($file, '?') !== false ) ? '&sid=' : '?sid=' ) . $userdata['session_id']) + )); + $row_count++; + } + //+MOD: DHTML Menu for ACP + $menu_cat_id++; + //-MOD: DHTML Menu for ACP + } + + // + // Include PHPBB Administration + // ------------------------------------------------------------------------------- + $mx_backend->load_phpbb_acp_menu(); + + // + // Read Portal Module Configuration + // + $sql = "SELECT * + FROM " . MODULE_TABLE . " + WHERE module_include_admin = 1 + ORDER BY module_name"; + + if( !($q_modules = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Could not query modules information", '', __LINE__, __FILE__, $sql); + } + + if( $total_modules = $db->sql_numrows($q_modules) ) + { + $module_rows = $db->sql_fetchrowset($q_modules); + } + $db->sql_freeresult($result); + + $module_mx = array(); + for( $module_cnt = 0; $module_cnt < $total_modules; $module_cnt++ ) + { + $module_path_admin = $mx_root_path . $module_rows[$module_cnt]['module_path'] . "admin/"; + $module_path_root = $mx_root_path . $module_rows[$module_cnt]['module_path']; + + // ********************************************************************** + // Read language definition + // ********************************************************************** + if ( file_exists( $module_path_root . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ) ) + { + include( $module_path_root . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ); + } + else if ( file_exists( $module_path_root . 'language/lang_english/lang_admin.' . $phpEx ) ) + { + include( $module_path_root . 'language/lang_english/lang_admin.' . $phpEx ); + } + + $module_mx = array_merge_recursive($module_mx, read_admin($module_path_admin)); + } + $template->assign_block_vars('module_mx', array( + 'L_MX_MODULES' => $lang['MX_Modules']) + ); + + ksort($module_mx); + + //+MOD: DHTML Menu for ACP + $menu_cat_id = 0; + //-MOD: DHTML Menu for ACP + + while( list($cat, $action_array) = each($module_mx) ) + { + $cat = ( !empty($lang[$cat]) ) ? $lang[$cat] : preg_replace("/_/", " ", $cat); + + $template->assign_block_vars('module_mx.catrow', array( + //+MOD: DHTML Menu for ACP + 'MENU_CAT_ID' => $menu_cat_id, + 'MENU_CAT_ROWS' => count($action_array), + //-MOD: DHTML Menu for ACP + 'ADMIN_CATEGORY' => $cat) + ); + + ksort($action_array); + + $row_count = 0; + while( list($action, $file) = each($action_array) ) + { + $row_color = ( !($row_count%2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($row_count%2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $action = ( !empty($lang[$action]) ) ? $lang[$action] : preg_replace("/_/", " ", $action); + + $template->assign_block_vars('module_mx.catrow.modulerow', array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + //+MOD: DHTML Menu for ACP + 'ROW_COUNT' => $row_count, + //-MOD: DHTML Menu for ACP + + "ADMIN_MODULE" => $action, + "U_ADMIN_MODULE" => mx_append_sid(PORTAL_URL . $file)) + ); + $row_count++; + } + //+MOD: DHTML Menu for ACP + $menu_cat_id++; + //-MOD: DHTML Menu for ACP + } + // ----------------------------------------------------------------------------------- + // END MX ADDON + // ----------------------------------------------------------------------------------- + $template->pparse('body'); + + include('./page_footer_admin.'.$phpEx); +} +elseif ($mx_request_vars->get('pane', MX_TYPE_NO_TAGS) == 'right') +{ + //require('./page_header_admin.'.$phpEx); + + $template->set_filenames(array( + "body" => "admin/index_body.".$tplEx) + ); + + $template->assign_vars(array( + // MX Addon + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, + // END + "L_WELCOME" => $lang['Welcome_mxBB'], + "L_ADMIN_INTRO" => $lang['Admin_intro_mxBB'], + "L_FORUM_STATS" => $lang['Forum_stats'], + "L_WHO_IS_ONLINE" => $lang['Who_is_Online'], + "L_USERNAME" => $lang['Username'], + "L_LOCATION" => $lang['Location'], + "L_LAST_UPDATE" => $lang['Last_updated'], + "L_IP_ADDRESS" => $lang['IP_Address'], + "L_STATISTIC" => $lang['Statistic'], + "L_VALUE" => $lang['Value'], + "L_NUMBER_POSTS" => $lang['Number_posts'], + "L_POSTS_PER_DAY" => $lang['Posts_per_day'], + "L_NUMBER_TOPICS" => $lang['Number_topics'], + "L_TOPICS_PER_DAY" => $lang['Topics_per_day'], + "L_NUMBER_USERS" => $lang['Number_users'], + "L_USERS_PER_DAY" => $lang['Users_per_day'], + "L_BOARD_STARTED" => $lang['Board_started'], + "L_AVATAR_DIR_SIZE" => $lang['Avatar_dir_size'], + "L_DB_SIZE" => $lang['Database_size'], + "L_FORUM_LOCATION" => $lang['Forum_Location'], + "L_STARTED" => $lang['Login'], + "L_GZIP_COMPRESSION" => $lang['Gzip_compression']) + ); + + + $whois_url = "http://network-tools.com/default.asp?host="; + //$whois_url = mx_append_sid(PHPBB_URL . "adm/index.php?i=users&icat=13&mode=overview&action=whois&user_ip="); + + $mx_backend->load_forum_stats(); + + // + // Get users online information. + // + $sql = $mx_backend->generate_session_online_sql(); + + if(!$result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain regd user/online information.", "", __LINE__, __FILE__, $sql); + } + + $onlinerow_reg = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + $sql = $mx_backend->generate_session_online_sql(true); + + if(!$result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain guest user/online information.", "", __LINE__, __FILE__, $sql); + } + $onlinerow_guest = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + $reg_userid_ary = array(); + + if( count($onlinerow_reg) ) + { + $registered_users = 0; + + for($i = 0; $i < count($onlinerow_reg); $i++) + { + if( !inarray($onlinerow_reg[$i]['user_id'], $reg_userid_ary) ) + { + $reg_userid_ary[] = $onlinerow_reg[$i]['user_id']; + + $username = $onlinerow_reg[$i]['username']; + + if( $onlinerow_reg[$i]['user_allow_viewonline'] || $userdata['user_level'] == ADMIN ) + { + $registered_users++; + $hidden = FALSE; + } + else + { + $hidden_users++; + $hidden = TRUE; + } + + if( $onlinerow_reg[$i]['user_session_page'] < 1 ) + { + switch($onlinerow_reg[$i]['user_session_page']) + { + case PAGE_INDEX: + $location = $lang['Forum_index']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_POSTING: + $location = $lang['Posting_message']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_LOGIN: + $location = $lang['Logging_on']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_SEARCH: + $location = $lang['Searching_forums']; + $location_url = "index.$phpEx?pane=right"; + break; + default: + $mx_viewonline_info = mx_get_viewonline_info($onlinerow_reg[$i]['user_session_page']); + if( $mx_viewonline_info !== false ) + { + list($location, $location_url) = $mx_viewonline_info; + break; + } + } + } + else + { + $mx_viewonline_info = mx_get_viewonline_info($onlinerow_reg[$i]['user_session_page']); + if( $mx_viewonline_info !== false ) + { + list($location, $location_url) = $mx_viewonline_info; + break; + } + } + + $row_color = ( $registered_users % 2 ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( $registered_users % 2 ) ? $theme['td_class1'] : $theme['td_class2']; + + $reg_ip = $mx_backend->decode_ip($onlinerow_reg[$i]['session_ip']); + + $template->assign_block_vars("reg_user_row", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "USERNAME" => $username, + "STARTED" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['session_start'], $board_config['board_timezone']), + "LASTUPDATE" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['user_session_time'], $board_config['board_timezone']), + "FORUM_LOCATION" => $location, + "IP_ADDRESS" => $reg_ip, + + "U_WHOIS_IP" => $whois_url . $reg_ip, + "U_USER_PROFILE" => mx_append_sid(PHPBB_URL . "admin_users.$phpEx?mode=edit&" . POST_USERS_URL . "=" . $onlinerow_reg[$i]['user_id']), + "U_FORUM_LOCATION" => mx_append_sid($location_url)) + ); + } + } + } + else + { + $template->assign_vars(array( + "L_NO_REGISTERED_USERS_BROWSING" => $lang['No_users_browsing']) + ); + } + + // + // Guest users + // + if( count($onlinerow_guest) ) + { + $guest_users = 0; + + for($i = 0; $i < count($onlinerow_guest); $i++) + { + $guest_userip_ary[] = $onlinerow_guest[$i]['session_ip']; + $guest_users++; + + if( $onlinerow_guest[$i]['session_page'] < 1 ) + { + switch( $onlinerow_guest[$i]['session_page'] ) + { + case PAGE_INDEX: + $location = $lang['Forum_index']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_POSTING: + $location = $lang['Posting_message']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_LOGIN: + $location = $lang['Logging_on']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_SEARCH: + $location = $lang['Searching_forums']; + $location_url = "index.$phpEx?pane=right"; + break; + default: + $mx_viewonline_info = mx_get_viewonline_info($onlinerow_guest[$i]['session_page']); + if( $mx_viewonline_info !== false ) + { + list($location, $location_url) = $mx_viewonline_info; + break; + } + } + } + + + $row_color = ( $guest_users % 2 ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( $guest_users % 2 ) ? $theme['td_class1'] : $theme['td_class2']; + + $guest_ip = $mx_backend->decode_ip($onlinerow_guest[$i]['session_ip']); + + $template->assign_block_vars("guest_user_row", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "USERNAME" => $lang['Guest'], + "STARTED" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_start'], $board_config['board_timezone']), + "LASTUPDATE" => phpBB2::create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_time'], $board_config['board_timezone']), + "FORUM_LOCATION" => $location, + "IP_ADDRESS" => $guest_ip, + + "U_WHOIS_IP" => $whois_url . $guest_ip, + "U_FORUM_LOCATION" => mx_append_sid($location_url)) + ); + } + } + else + { + $template->assign_vars(array( + "L_NO_GUESTS_BROWSING" => $lang['No_users_browsing']) + ); + } + + /* Begin phpBB version check code block */ + $phpbb_version_info = $mx_backend->phpbb_version_check(); + + /* Begin MX-Publisher version check code block */ + $current_mxbb_version = explode('.', $portal_config['portal_version']); + $minor_mxbb_revision = (int) $current_mxbb_version[2]; + + $errno = 0; + $errstr = $mxbb_version_info = ''; + + if ($fsock = @fsockopen('www.mx-publisher.com', 80, $errno, $errstr)) + { + @fputs($fsock, "GET /updatecheck/30x.txt HTTP/1.1\r\n"); + @fputs($fsock, "HOST: www.mx-publisher.com\r\n"); + @fputs($fsock, "Connection: close\r\n\r\n"); + + $get_info = false; + while (!@feof($fsock)) + { + if ($get_info) + { + $mxbb_version_info .= @fread($fsock, 1024); + } + else + { + if (@fgets($fsock, 1024) == "\r\n") + { + $get_info = true; + } + } + } + @fclose($fsock); + + $mxbb_version_info = explode("\n", $mxbb_version_info); + $latest_mxbb_head_revision = (int) $mxbb_version_info[0]; + $latest_mxbb_minor_revision = (int) $mxbb_version_info[2]; + $latest_mxbb_patch_revision = (int) $mxbb_version_info[3]; // For betas/RC + + $latest_mxbb_version = (int) $mxbb_version_info[0] . '.' . (int) $mxbb_version_info[1] . '.' . (int) $mxbb_version_info[2]; + + if ($latest_mxbb_head_revision == 3 && $minor_mxbb_revision == $latest_mxbb_minor_revision) + { + $mxbb_version_info = '

' . $lang['mxBB_Version_up_to_date'] . '

'; + } + else + { + $mxbb_version_info = '

' . $lang['mxBB_Version_outdated']; + $mxbb_version_info .= '
' . sprintf($lang['mxBB_Latest_version_info'], $latest_mxbb_version) . sprintf($lang['mxBB_Current_version_info'], $portal_config['portal_version']) . '

'; + } + } + else + { + if ($errstr) + { + $mxbb_version_info = '

' . sprintf($lang['Connect_socket_error'], $errstr) . '

'; + } + else + { + $mxbb_version_info = '

' . $lang['Socket_functions_disabled'] . '

'; + } + } + + $mxbb_version_info .= '

' . $lang['mxBB_Mailing_list_subscribe_reminder'] . '

'; + + $template->assign_vars(array( + 'MXBB_VERSION_INFO' => $mxbb_version_info, + 'PHPBB_VERSION_INFO' => $phpbb_version_info, + 'L_VERSION_INFORMATION' => $lang['Version_information']) + ); + + $template->pparse("body"); + + include('./page_footer_admin.'.$phpEx); +} +else +{ + // + // Generate frameset + // + $template->set_filenames(array( + "body" => "admin/index_iframes.".$tplEx) + ); + $template->assign_vars(array( + "SITENAME" => $board_config['sitename'], + "SITE_DESCRIPTION" => $board_config['site_desc'], + "ADMIN_TITLE" => $lang['mxBB_adminCP'], + "U_PHPBB_ROOT_PATH" => PHPBB_URL, + "TEMPLATE_ROOT_PATH" => TEMPLATE_ROOT_PATH, + "S_FRAME_NAV" => mx_append_sid("index.$phpEx?pane=left"), + "S_FRAME_MAIN" => mx_append_sid("index.$phpEx?pane=right")) + ); + @header ("Expires: " . gmdate("D, d M Y H:i:s", time()) . " GMT"); + @header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + + $template->pparse("body"); + + $db->sql_close(); + exit; +} +?> \ No newline at end of file diff --git a/admin/index_jon.php b/admin/index_jon.php index 76fe430e..29937ee8 100644 --- a/admin/index_jon.php +++ b/admin/index_jon.php @@ -128,7 +128,7 @@ class mx_acp */ function mx_acp() { - global $template, $db, $lang, $phpEx, $mx_root_path, $phpbb_root_path, $phpbb_auth, $mx_user; + global $mx_cache, $template, $db, $lang, $phpEx, $mx_root_path, $phpbb_root_path, $phpbb_auth, $mx_user; $this->_template_set_filenames(); $this->category = MAIN_CATEGORY; @@ -139,21 +139,21 @@ function mx_acp() // if ( PORTAL_BACKEND == 'phpbb2' ) { - mx_cache::load_file( 'functions', true ); - mx_cache::load_file( 'functions_selects', true ); - mx_cache::load_file( 'functions_validate', true ); + $mx_cache->load_file( 'functions', true ); + $mx_cache->load_file( 'functions_selects', true ); + $mx_cache->load_file( 'functions_validate', true ); } if ( PORTAL_BACKEND == 'phpbb3' ) { include_once( $mx_root_path . 'includes/sessions/phpbb3/auth.' . $phpEx ); - mx_cache::load_file( 'functions_admin', 'phpbb3' ); - mx_cache::load_file( 'acp/auth', 'phpbb3' ); - mx_cache::load_file( 'auth', 'phpbb3'); - mx_cache::load_file( 'functions', 'phpbb3' ); - mx_cache::load_file( 'functions', 'phpbb2' ); - mx_cache::load_file( 'functions_module', 'phpbb3' ); - mx_cache::load_file( 'message_parser' , 'phpbb3' ); + $mx_cache->load_file( 'functions_admin', 'phpbb3' ); + $mx_cache->load_file( 'acp/auth', 'phpbb3' ); + $mx_cache->load_file( 'auth', 'phpbb3'); + $mx_cache->load_file( 'functions', 'phpbb3' ); + $mx_cache->load_file( 'functions', 'phpbb2' ); + $mx_cache->load_file( 'functions_module', 'phpbb3' ); + $mx_cache->load_file( 'message_parser' , 'phpbb3' ); $phpbb_admin_path = ( defined( 'PHPBB_ADMIN_PATH' ) ) ? PHPBB_ADMIN_PATH : 'adm/'; @@ -287,7 +287,7 @@ function _read_menu_actions( $menu_array, $category = MAIN_CATEGORY ) function assign_menu() { - global $lang, $db, $template, $mx_user, $mx_root_path, $phpbb_root_path, $phpEx; + global $board_config, $lang, $db, $template, $mx_user, $mx_root_path, $phpbb_root_path, $phpEx; $allow_menu_sort = true; // # @@ -312,7 +312,7 @@ function assign_menu() { $module_rows = $db->sql_fetchrowset( $q_modules ); } - $db->sql_freeresult( $result ); + $db->sql_freeresult( $q_modules ); $menu_array = array(); for( $module_cnt = 0; $module_cnt < $total_modules; $module_cnt++ ) { @@ -343,7 +343,10 @@ function assign_menu() case 'phpbb2': $mnu_ary = read_admin( $phpbb_root_path . 'admin/' ); $menu_array = array(); - + + $lang['Group_rank_order'] = isset($lang['Group_rank_order']) ? $lang['Group_rank_order'] : $mx_user->lang('Group_rank_order'); + $lang['Resync_Post_counts'] = isset($lang['Resync_Post_counts']) ? $lang['Resync_Post_counts'] : $mx_user->lang('Resync_Post_counts'); + foreach( $mnu_ary as $key => $menu ) { $i = 0; @@ -439,12 +442,12 @@ function assign_menu() switch ( $this->category ) { case OLYMPUS_CATEGORY: - $menu_link_params = preg_replace( '#panel=[^&]*#', '&cat=' . $this->category . '&panel=' . $panel, $file_part[1] ); + $menu_link_params = preg_replace( '#panel=[^&]*#', '&cat=' . $this->category . '&panel=' . $panel, (isset($file_part[1]) ? $file_part[1] : '') ); break; case PHPBB2X_CATEGORY: case MODULE_CATEGORY: case MAIN_CATEGORY: - $menu_link_params = str_replace( '?', '', '&cat=' . $this->category . '&panel=' . $panel . '&' . $file_part[1] ); + $menu_link_params = str_replace( '?', '', '&cat=' . $this->category . '&panel=' . $panel . '&' . (isset($file_part[1]) ? $file_part[1] : '') ); break; } @@ -460,7 +463,10 @@ function assign_menu() { $menu_link = mx_append_sid( $menu_link ); } - + + $row_color = (!($row_count%2)) ? $mx_user->theme['td_color1'] : $mx_user->theme['td_color2']; + $row_class = (!($row_count%2)) ? $mx_user->theme['td_class1'] : $mx_user->theme['td_class2']; + $template->assign_block_vars('category.panel', array( "ROW_COLOR" => "#" . $row_color, "ROW_CLASS" => $row_class, // +MOD: DHTML Menu for ACP @@ -476,7 +482,7 @@ function assign_menu() $menu_cat_id++; // -MOD: DHTML Menufor ACP } - $this->menu_actions = array_merge(array( $this->action_script => $this->menu_actions[$this->action_script] ), $this->menu_actions); + $this->menu_actions = array_merge(array( $this->action_script => isset($this->menu_actions[$this->action_script]) ? $this->menu_actions[$this->action_script] : array()), $this->menu_actions); } function prepare_action_script() @@ -529,7 +535,7 @@ function prepare_action_script() ) ); // PHPBB2 FUNCTIONS REPLACE $functions_ary = array( // # - 'get_userdata', 'phpbb_clean_username', phpbb_realpath + 'get_userdata', 'phpbb_clean_username', 'phpbb_realpath' ); $preg_array = array_merge( $preg_array, array( // # '#(' . implode( '|', $functions_ary ) . ')\(#si' => '$phpBB2->\1(', @@ -705,7 +711,7 @@ function assign_content_acp( $acp_html ) function _template_assign_vars() { global $board_config, $userdata, $lang, $mx_user, $admincp_nav_icon_url; - global $theme, $images, $mx_starttime, $db, $phpEx, $template; + global $theme, $images, $mx_starttime, $db, $phpBB2, $phpEx, $template; $l_timezone = explode( '.', $board_config['board_timezone'] ); $l_timezone = ( count( $l_timezone ) > 1 && $l_timezone[count( $l_timezone )-1] != 0 ) ? $lang[sprintf( '%.1f', $board_config['board_timezone'] )] : $lang[number_format( $board_config['board_timezone'] )]; @@ -757,7 +763,7 @@ function _template_assign_vars() 'USERNAME' => $mx_user->data['username'], 'CATEGORY' => $this->category, - 'L_LOGGED_IN_AS' => $lang['Logged_in_as'], + 'L_LOGGED_IN_AS' => $mx_user->lang('Logged_in_as'), "L_PORTAL_INDEX" => $lang['Portal_index'], "L_PREVIEW_PORTAL" => $lang['Preview_portal'], @@ -780,7 +786,7 @@ function _template_assign_vars() 'S_TIMEZONE' => sprintf( $lang['All_times'], $l_timezone ), 'S_LOGIN_ACTION' => mx_append_sid( '../login.' . $phpEx ), 'S_JUMPBOX_ACTION' => mx_append_sid( '../viewforum.' . $phpEx ), - 'S_CURRENT_TIME' => sprintf($lang['Current_time'], phpBB2::create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), + 'S_CURRENT_TIME' => sprintf($lang['Current_time'], $phpBB2->create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), 'S_CONTENT_DIRECTION' => $lang['DIRECTION'], 'S_CONTENT_ENCODING' => $lang['ENCODING'], 'S_CONTENT_DIR_LEFT' => $lang['LEFT'], diff --git a/admin/index_ory.php b/admin/index_ory.php index 29c62fec..0b360a3a 100644 --- a/admin/index_ory.php +++ b/admin/index_ory.php @@ -128,7 +128,7 @@ class mx_acp */ function mx_acp() { - global $template, $db, $lang, $phpEx, $mx_root_path, $phpbb_root_path, $phpbb_auth, $mx_user; + global $mx_cache, $template, $db, $lang, $phpEx, $mx_root_path, $phpbb_root_path, $phpbb_auth, $mx_user; $this->_template_set_filenames(); $this->category = MAIN_CATEGORY; @@ -139,21 +139,21 @@ function mx_acp() // if ( PORTAL_BACKEND == 'phpbb2' ) { - mx_cache::load_file( 'functions', true ); - mx_cache::load_file( 'functions_selects', true ); - mx_cache::load_file( 'functions_validate', true ); + $mx_cache->load_file( 'functions', true ); + $mx_cache->load_file( 'functions_selects', true ); + $mx_cache->load_file( 'functions_validate', true ); } if ( PORTAL_BACKEND == 'phpbb3' ) { include_once( $mx_root_path . 'includes/sessions/phpbb3/auth.' . $phpEx ); - mx_cache::load_file( 'functions_admin', 'phpbb3' ); - mx_cache::load_file( 'acp/auth', 'phpbb3' ); - mx_cache::load_file( 'auth', 'phpbb3'); - mx_cache::load_file( 'functions', 'phpbb3' ); - mx_cache::load_file( 'functions', 'phpbb2' ); - mx_cache::load_file( 'functions_module', 'phpbb3' ); - mx_cache::load_file( 'message_parser' , 'phpbb3' ); + $mx_cache->load_file( 'functions_admin', 'phpbb3' ); + $mx_cache->load_file( 'acp/auth', 'phpbb3' ); + $mx_cache->load_file( 'auth', 'phpbb3'); + $mx_cache->load_file( 'functions', 'phpbb3' ); + $mx_cache->load_file( 'functions', 'phpbb2' ); + $mx_cache->load_file( 'functions_module', 'phpbb3' ); + $mx_cache->load_file( 'message_parser' , 'phpbb3' ); $phpbb_admin_path = ( defined( 'PHPBB_ADMIN_PATH' ) ) ? PHPBB_ADMIN_PATH : 'adm/'; @@ -287,7 +287,7 @@ function _read_menu_actions( $menu_array, $category = MAIN_CATEGORY ) function assign_menu() { - global $lang, $db, $template, $mx_user, $mx_root_path, $phpbb_root_path, $phpEx, $userdata; + global $lang, $db, $board_config, $template, $mx_user, $mx_root_path, $phpbb_root_path, $phpEx, $userdata; $allow_menu_sort = true; // # @@ -312,7 +312,7 @@ function assign_menu() { $module_rows = $db->sql_fetchrowset( $q_modules ); } - $db->sql_freeresult( $result ); + $db->sql_freeresult( $q_modules ); $menu_array = array(); for( $module_cnt = 0; $module_cnt < $total_modules; $module_cnt++ ) { @@ -343,7 +343,10 @@ function assign_menu() case 'phpbb2': $mnu_ary = read_admin( $phpbb_root_path . 'admin/' ); $menu_array = array(); - + + $lang['Group_rank_order'] = isset($lang['Group_rank_order']) ? $lang['Group_rank_order'] : $mx_user->lang('Group_rank_order'); + $lang['Resync_Post_counts'] = isset($lang['Resync_Post_counts']) ? $lang['Resync_Post_counts'] : $mx_user->lang('Resync_Post_counts'); + foreach( $mnu_ary as $key => $menu ) { $i = 0; @@ -439,12 +442,12 @@ function assign_menu() switch ( $this->category ) { case OLYMPUS_CATEGORY: - $menu_link_params = preg_replace( '#panel=[^&]*#', '&cat=' . $this->category . '&panel=' . $panel, $file_part[1] ); + $menu_link_params = preg_replace( '#panel=[^&]*#', '&cat=' . $this->category . '&panel=' . $panel, (isset($file_part[1]) ? $file_part[1] : '') ); break; case PHPBB2X_CATEGORY: case MODULE_CATEGORY: case MAIN_CATEGORY: - $menu_link_params = str_replace( '?', '', '&cat=' . $this->category . '&panel=' . $panel . '&' . $file_part[1] ); + $menu_link_params = str_replace( '?', '', '&cat=' . $this->category . '&panel=' . $panel . '&' . (isset($file_part[1]) ? $file_part[1] : '') ); break; } @@ -469,6 +472,9 @@ function assign_menu() //print_r($module_link); //print_r("
&&
"); + $row_color = (!($row_count%2)) ? $mx_user->theme['td_color1'] : $mx_user->theme['td_color2']; + $row_class = (!($row_count%2)) ? $mx_user->theme['td_class1'] : $mx_user->theme['td_class2']; + $template->assign_block_vars('category.panel', array( "ROW_COLOR" => "#" . $row_color, "ROW_CLASS" => $row_class, @@ -540,7 +546,7 @@ function prepare_action_script() ) ); // PHPBB2 FUNCTIONS REPLACE $functions_ary = array( // # - 'get_userdata', 'phpbb_clean_username', phpbb_realpath + 'get_userdata', 'phpbb_clean_username', 'phpbb_realpath' ); $preg_array = array_merge( $preg_array, array( // # '#(' . implode( '|', $functions_ary ) . ')\(#si' => '$phpBB2->\1(', @@ -716,7 +722,7 @@ function assign_content_acp( $acp_html ) function _template_assign_vars() { global $board_config, $userdata, $lang, $mx_user, $admincp_nav_icon_url; - global $theme, $images, $mx_starttime, $db, $phpEx, $template; + global $theme, $images, $mx_starttime, $db, $phpBB2, $phpEx, $template; $l_timezone = explode( '.', $board_config['board_timezone'] ); $l_timezone = ( count( $l_timezone ) > 1 && $l_timezone[count( $l_timezone )-1] != 0 ) ? $lang[sprintf( '%.1f', $board_config['board_timezone'] )] : $lang[number_format( $board_config['board_timezone'] )]; @@ -768,7 +774,7 @@ function _template_assign_vars() 'USERNAME' => $mx_user->data['username'], 'CATEGORY' => $this->category, - 'L_LOGGED_IN_AS' => $mx_user->lang['LOGGED_IN_AS'], + 'L_LOGGED_IN_AS' => $mx_user->lang('LOGGED_IN_AS'), "L_PORTAL_INDEX" => $lang['Portal_index'], "L_PREVIEW_PORTAL" => $lang['Preview_portal'], @@ -791,7 +797,7 @@ function _template_assign_vars() 'S_TIMEZONE' => sprintf( $lang['All_times'], $l_timezone ), 'S_LOGIN_ACTION' => mx_append_sid( '../login.' . $phpEx ), 'S_JUMPBOX_ACTION' => mx_append_sid( '../viewforum.' . $phpEx ), - 'S_CURRENT_TIME' => sprintf($lang['Current_time'], phpBB2::create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), + 'S_CURRENT_TIME' => sprintf($lang['Current_time'], $phpBB2->create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), 'S_CONTENT_DIRECTION' => $lang['DIRECTION'], 'S_CONTENT_ENCODING' => $lang['ENCODING'], 'S_CONTENT_DIR_LEFT' => $lang['LEFT'], diff --git a/admin/page_footer_admin.php b/admin/page_footer_admin.php index 0e59013b..9fe58e71 100644 --- a/admin/page_footer_admin.php +++ b/admin/page_footer_admin.php @@ -9,34 +9,45 @@ * */ -if ( !defined('IN_PORTAL') ) +if (!defined('IN_PORTAL') ) { die("Hacking attempt"); } global $do_gzip_compress; -// -// Show the overall footer. -// -$template->set_filenames(array( 'page_footer' => 'admin/page_footer.tpl' )); +/* START Include language file */ +$language = ($mx_user->user_language_name) ? $mx_user->user_language_name : (($board_config['default_lang']) ? $board_config['default_lang'] : 'english'); +if ((@include $mx_root_path . "language/lang_" . $language . "/lang_main.$phpEx") === false) +{ + if ((@include $mx_root_path . "language/lang_english/lang_main.$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'Language file ' . $mx_root_path . "language/lang_" . $language . "/lang_main.$phpEx" . ' couldn\'t be opened.'); + } + $language = 'english'; +} + +/* */ +/* Show the overall footer. +/* */ +$template->set_filenames(array('page_footer' => 'admin/page_footer.tpl' )); -// +/* */ // Generate stats -// +/* */ $endtime = explode(' ', microtime()); $stime = ( $endtime[1] + $endtime[0] ) - $mx_starttime; $current_phpbb_version = $mx_backend->get_phpbb_version(); -$execution_stats = sprintf($lang['Execution_Stats'], $db->num_queries, round($stime, 4)); +$execution_stats = sprintf($mx_user->lang['Execution_Stats'], $db->num_queries, round($stime, 4)); $template->assign_vars(array( - 'PHPBB_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? $current_phpbb_version : '', - 'MX_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? PORTAL_VERSION : '', - 'TRANSLATION_INFO' => (isset($lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($lang['TRANSLATION'])) ? $lang['TRANSLATION'] : ''), - 'POWERED_BY' => $lang['Powered_by'], - 'EXECUTION_STATS' => $execution_stats + 'PHPBB_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? $current_phpbb_version : '', + 'MX_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? PORTAL_VERSION : '', + 'TRANSLATION_INFO' => (isset($mx_user->lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($mx_user->lang['TRANSLATION'])) ? $mx_user->lang['TRANSLATION'] : 'Traslation '), + 'POWERED_BY' => $mx_user->lang('Powered_by'), + 'EXECUTION_STATS' => $execution_stats )); $template->pparse('page_footer'); @@ -46,20 +57,23 @@ $mx_cache->unload(); } -// -// Close our DB connection. -// -$db->sql_close(); +/* */ +/* Close our DB connection. +/* */ +if(is_object($db)) +{ + $db->sql_close(); +} -// -// Compress buffered output if required -// and send to browser -// +/* */ +/* Compress buffered output if required +/* and send to browser +/* */ if( $do_gzip_compress ) { - // - // Borrowed from php.net! - // + /* */ + /* Borrowed from php.net! + /* */ $gzip_contents = ob_get_contents(); ob_end_clean(); diff --git a/admin/page_header_admin.php b/admin/page_header_admin.php index 8f0c80c0..39fb72cc 100644 --- a/admin/page_header_admin.php +++ b/admin/page_header_admin.php @@ -57,6 +57,15 @@ } **********/ +// Instantiate Dummy phpBB Classes +if( class_exists('phpBB2')) +{ + $phpBB2 = new phpBB2(); +} +if ( !isset($lang) ) +{ + $lang = array(); +} $template->set_filenames(array('header' => 'admin/page_header.tpl')); // Format Timezone. We are unable to use array_pop here, because of PHP3 compatibility @@ -77,7 +86,7 @@ 'S_TIMEZONE' => sprintf($lang['All_times'], $l_timezone), 'S_LOGIN_ACTION' => mx_append_sid('../login.'.$phpEx), 'S_JUMPBOX_ACTION' => mx_append_sid('../viewforum.'.$phpEx), - 'S_CURRENT_TIME' => sprintf($lang['Current_time'], phpBB2::create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), + 'S_CURRENT_TIME' => sprintf($lang['Current_time'], $phpBB2->create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), 'S_CONTENT_DIRECTION' => $lang['DIRECTION'], 'S_CONTENT_ENCODING' => $lang['ENCODING'], 'S_CONTENT_DIR_LEFT' => $lang['LEFT'], @@ -140,7 +149,6 @@ // Backend 'PHPBB' => !(PORTAL_BACKEND === 'internal'), - // Additional css for gecko browsers 'GECKO' => strstr($useragent, 'Gecko'), )); diff --git a/admin/pagestart.php b/admin/pagestart.php index ee51179d..eb69ee40 100644 --- a/admin/pagestart.php +++ b/admin/pagestart.php @@ -11,14 +11,14 @@ if( !defined('IN_PORTAL') ) { - die("Hacking attempt"); + die('Hacking attempt @ line: ' . __LINE__ .' & file: '. basename(__FILE__)); } -define('IN_ADMIN', true); +@define('IN_ADMIN', true); $phpEx = substr(strrchr(__FILE__, '.'), 1); -include_once($mx_root_path . 'common.' . $phpEx); +include($mx_root_path . 'common.' . $phpEx); include_once($mx_root_path . 'includes/mx_functions_admincp.' . $phpEx); include_once($mx_root_path . 'includes/mx_functions_blockcp.' . $phpEx); diff --git a/assets/cookieconsent/cookieconsent.min.css b/assets/cookieconsent/cookieconsent.min.css new file mode 100644 index 00000000..03c69fe8 --- /dev/null +++ b/assets/cookieconsent/cookieconsent.min.css @@ -0,0 +1,6 @@ +.cc-window{opacity:1;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{transition:transform 1s ease}.cc-animate.cc-revoke.cc-top{transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-bottom,.cc-animate.cc-revoke.cc-active.cc-top,.cc-revoke:hover{transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;transition:max-height 1s} +.cc-link,.cc-revoke:hover{text-decoration:underline}.cc-revoke,.cc-window{position:fixed;overflow:hidden;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-banner .cc-btn:last-child{min-width:140px}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1} +.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-ms-flex:1;flex:1}.cc-window.cc-banner{-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{-ms-flex:1;flex:1}.cc-compliance{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-compliance>.cc-btn{-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em} +@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-ms-flex:1;flex:1}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-ms-flex-align:unset;align-items:unset}} +.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block} +.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em 2em 1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0} \ No newline at end of file diff --git a/assets/cookieconsent/cookieconsent.min.js b/assets/cookieconsent/cookieconsent.min.js new file mode 100644 index 00000000..8e44bdde --- /dev/null +++ b/assets/cookieconsent/cookieconsent.min.js @@ -0,0 +1 @@ +!function(e){if(!e.hasInitialised){var t={escapeRegExp:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},hasClass:function(e,t){var i=" ";return 1===e.nodeType&&(i+e.className+i).replace(/[\n\t]/g,i).indexOf(i+t+i)>=0},addClass:function(e,t){e.className+=" "+t},removeClass:function(e,t){var i=new RegExp("\\b"+this.escapeRegExp(t)+"\\b");e.className=e.className.replace(i,"")},interpolateString:function(e,t){var i=/{{([a-z][a-z0-9\-_]*)}}/gi;return e.replace(i,function(e){return t(arguments[1])||""})},getCookie:function(e){var t="; "+document.cookie,i=t.split("; "+e+"=");return 2!=i.length?void 0:i.pop().split(";").shift()},setCookie:function(e,t,i,n,o){var s=new Date;s.setDate(s.getDate()+(i||365));var r=[e+"="+t,"expires="+s.toUTCString(),"path="+(o||"/")];n&&r.push("domain="+n),document.cookie=r.join(";")},deepExtend:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(i in e&&this.isPlainObject(e[i])&&this.isPlainObject(t[i])?this.deepExtend(e[i],t[i]):e[i]=t[i]);return e},throttle:function(e,t){var i=!1;return function(){i||(e.apply(this,arguments),i=!0,setTimeout(function(){i=!1},t))}},hash:function(e){var t,i,n,o=0;if(0===e.length)return o;for(t=0,n=e.length;t=128?"#000":"#fff"},getLuminance:function(e){var t=parseInt(this.normaliseHex(e),16),i=38,n=(t>>16)+i,o=(t>>8&255)+i,s=(255&t)+i,r=(16777216+65536*(n<255?n<1?0:n:255)+256*(o<255?o<1?0:o:255)+(s<255?s<1?0:s:255)).toString(16).slice(1);return"#"+r},isMobile:function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},isPlainObject:function(e){return"object"==typeof e&&null!==e&&e.constructor==Object}};e.status={deny:"deny",allow:"allow",dismiss:"dismiss"},e.transitionEnd=function(){var e=document.createElement("div"),t={t:"transitionend",OT:"oTransitionEnd",msT:"MSTransitionEnd",MozT:"transitionend",WebkitT:"webkitTransitionEnd"};for(var i in t)if(t.hasOwnProperty(i)&&"undefined"!=typeof e.style[i+"ransition"])return t[i];return""}(),e.hasTransition=!!e.transitionEnd;var i=Object.keys(e.status).map(t.escapeRegExp);e.customStyles={},e.Popup=function(){function n(){this.initialise.apply(this,arguments)}function o(e){this.openingTimeout=null,t.removeClass(e,"cc-invisible")}function s(t){t.style.display="none",t.removeEventListener(e.transitionEnd,this.afterTransition),this.afterTransition=null}function r(){var t=this.options.onInitialise.bind(this);if(!window.navigator.cookieEnabled)return t(e.status.deny),!0;if(window.CookiesOK||window.navigator.CookiesOK)return t(e.status.allow),!0;var i=Object.keys(e.status),n=this.getStatus(),o=i.indexOf(n)>=0;return o&&t(n),o}function a(){var e=this.options.position.split("-"),t=[];return e.forEach(function(e){t.push("cc-"+e)}),t}function c(){var e=this.options,i="top"==e.position||"bottom"==e.position?"banner":"floating";t.isMobile()&&(i="floating");var n=["cc-"+i,"cc-type-"+e.type,"cc-theme-"+e.theme];e["static"]&&n.push("cc-static"),n.push.apply(n,a.call(this));p.call(this,this.options.palette);return this.customStyleSelector&&n.push(this.customStyleSelector),n}function l(){var e={},i=this.options;i.showLink||(i.elements.link="",i.elements.messagelink=i.elements.message),Object.keys(i.elements).forEach(function(n){e[n]=t.interpolateString(i.elements[n],function(e){var t=i.content[e];return e&&"string"==typeof t&&t.length?t:""})});var n=i.compliance[i.type];n||(n=i.compliance.info),e.compliance=t.interpolateString(n,function(t){return e[t]});var o=i.layouts[i.layout];return o||(o=i.layouts.basic),t.interpolateString(o,function(t){return e[t]})}function u(i){var n=this.options,o=document.createElement("div"),s=n.container&&1===n.container.nodeType?n.container:document.body;o.innerHTML=i;var r=o.children[0];return r.style.display="none",t.hasClass(r,"cc-window")&&e.hasTransition&&t.addClass(r,"cc-invisible"),this.onButtonClick=h.bind(this),r.addEventListener("click",this.onButtonClick),n.autoAttach&&(s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r)),r}function h(n){var o=n.target;if(t.hasClass(o,"cc-btn")){var s=o.className.match(new RegExp("\\bcc-("+i.join("|")+")\\b")),r=s&&s[1]||!1;r&&(this.setStatus(r),this.close(!0))}t.hasClass(o,"cc-close")&&(this.setStatus(e.status.dismiss),this.close(!0)),t.hasClass(o,"cc-revoke")&&this.revokeChoice()}function p(e){var i=t.hash(JSON.stringify(e)),n="cc-color-override-"+i,o=t.isPlainObject(e);return this.customStyleSelector=o?n:null,o&&d(i,e,"."+n),o}function d(i,n,o){if(e.customStyles[i])return void++e.customStyles[i].references;var s={},r=n.popup,a=n.button,c=n.highlight;r&&(r.text=r.text?r.text:t.getContrast(r.background),r.link=r.link?r.link:r.text,s[o+".cc-window"]=["color: "+r.text,"background-color: "+r.background],s[o+".cc-revoke"]=["color: "+r.text,"background-color: "+r.background],s[o+" .cc-link,"+o+" .cc-link:active,"+o+" .cc-link:visited"]=["color: "+r.link],a&&(a.text=a.text?a.text:t.getContrast(a.background),a.border=a.border?a.border:"transparent",s[o+" .cc-btn"]=["color: "+a.text,"border-color: "+a.border,"background-color: "+a.background],"transparent"!=a.background&&(s[o+" .cc-btn:hover, "+o+" .cc-btn:focus"]=["background-color: "+v(a.background)]),c?(c.text=c.text?c.text:t.getContrast(c.background),c.border=c.border?c.border:"transparent",s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+c.text,"border-color: "+c.border,"background-color: "+c.background]):s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+r.text]));var l=document.createElement("style");document.head.appendChild(l),e.customStyles[i]={references:1,element:l.sheet};var u=-1;for(var h in s)s.hasOwnProperty(h)&&l.sheet.insertRule(h+"{"+s[h].join(";")+"}",++u)}function v(e){return e=t.normaliseHex(e),"000000"==e?"#222":t.getLuminance(e)}function f(i){if(t.isPlainObject(i)){var n=t.hash(JSON.stringify(i)),o=e.customStyles[n];if(o&&!--o.references){var s=o.element.ownerNode;s&&s.parentNode&&s.parentNode.removeChild(s),e.customStyles[n]=null}}}function m(e,t){for(var i=0,n=e.length;i=0&&(this.dismissTimeout=window.setTimeout(function(){t(e.status.dismiss)},Math.floor(i)));var n=this.options.dismissOnScroll;if("number"==typeof n&&n>=0){var o=function(i){window.pageYOffset>Math.floor(n)&&(t(e.status.dismiss),window.removeEventListener("scroll",o),this.onWindowScroll=null)};this.onWindowScroll=o,window.addEventListener("scroll",o)}}function y(){if("info"!=this.options.type&&(this.options.revokable=!0),t.isMobile()&&(this.options.animateRevokable=!1),this.options.revokable){var e=a.call(this);this.options.animateRevokable&&e.push("cc-animate"),this.customStyleSelector&&e.push(this.customStyleSelector);var i=this.options.revokeBtn.replace("{{classes}}",e.join(" "));this.revokeBtn=u.call(this,i);var n=this.revokeBtn;if(this.options.animateRevokable){var o=t.throttle(function(e){var i=!1,o=20,s=window.innerHeight-20;t.hasClass(n,"cc-top")&&e.clientYs&&(i=!0),i?t.hasClass(n,"cc-active")||t.addClass(n,"cc-active"):t.hasClass(n,"cc-active")&&t.removeClass(n,"cc-active")},200);this.onMouseMove=o,window.addEventListener("mousemove",o)}}}var g={enabled:!0,container:null,cookie:{name:"cookieconsent_status",path:"/",domain:"",expiryDays:365},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(e){},onStatusChange:function(e,t){},onRevokeChoice:function(){},content:{header:"Cookies used on the website!",message:"This website uses cookies to ensure you get the best experience on our website.",dismiss:"Got it!",allow:"Allow cookies",deny:"Decline",link:"Learn more",href:"http://cookiesandyou.com",close:"❌"},elements:{header:'{{header}} ',message:'{{message}}',messagelink:'{{message}} {{link}}',dismiss:'{{dismiss}}',allow:'{{allow}}',deny:'{{deny}}',link:'{{link}}',close:'{{close}}'},window:'',revokeBtn:'
Cookie Policy
',compliance:{info:'
{{dismiss}}
',"opt-in":'
{{dismiss}}{{allow}}
',"opt-out":'
{{deny}}{{dismiss}}
'},type:"info",layouts:{basic:"{{messagelink}}{{compliance}}","basic-close":"{{messagelink}}{{compliance}}{{close}}","basic-header":"{{header}}{{message}}{{link}}{{compliance}}"},layout:"basic",position:"bottom",theme:"block","static":!1,palette:null,revokable:!1,animateRevokable:!0,showLink:!0,dismissOnScroll:!1,dismissOnTimeout:!1,autoOpen:!0,autoAttach:!0,whitelistPage:[],blacklistPage:[],overrideHTML:null};return n.prototype.initialise=function(e){this.options&&this.destroy(),t.deepExtend(this.options={},g),t.isPlainObject(e)&&t.deepExtend(this.options,e),r.call(this)&&(this.options.enabled=!1),m(this.options.blacklistPage,location.pathname)&&(this.options.enabled=!1),m(this.options.whitelistPage,location.pathname)&&(this.options.enabled=!0);var i=this.options.window.replace("{{classes}}",c.call(this).join(" ")).replace("{{children}}",l.call(this)),n=this.options.overrideHTML;if("string"==typeof n&&n.length&&(i=n),this.options["static"]){var o=u.call(this,'
'+i+"
");o.style.display="",this.element=o.firstChild,this.element.style.display="none",t.addClass(this.element,"cc-invisible")}else this.element=u.call(this,i);b.call(this),y.call(this),this.options.autoOpen&&this.autoOpen()},n.prototype.destroy=function(){this.onButtonClick&&this.element&&(this.element.removeEventListener("click",this.onButtonClick),this.onButtonClick=null),this.dismissTimeout&&(clearTimeout(this.dismissTimeout),this.dismissTimeout=null),this.onWindowScroll&&(window.removeEventListener("scroll",this.onWindowScroll),this.onWindowScroll=null),this.onMouseMove&&(window.removeEventListener("mousemove",this.onMouseMove),this.onMouseMove=null),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null,this.revokeBtn&&this.revokeBtn.parentNode&&this.revokeBtn.parentNode.removeChild(this.revokeBtn),this.revokeBtn=null,f(this.options.palette),this.options=null},n.prototype.open=function(t){if(this.element)return this.isOpen()||(e.hasTransition?this.fadeIn():this.element.style.display="",this.options.revokable&&this.toggleRevokeButton(),this.options.onPopupOpen.call(this)),this},n.prototype.close=function(t){if(this.element)return this.isOpen()&&(e.hasTransition?this.fadeOut():this.element.style.display="none",t&&this.options.revokable&&this.toggleRevokeButton(!0),this.options.onPopupClose.call(this)),this},n.prototype.fadeIn=function(){var i=this.element;if(e.hasTransition&&i&&(this.afterTransition&&s.call(this,i),t.hasClass(i,"cc-invisible"))){if(i.style.display="",this.options["static"]){var n=this.element.clientHeight;this.element.parentNode.style.maxHeight=n+"px"}var r=20;this.openingTimeout=setTimeout(o.bind(this,i),r)}},n.prototype.fadeOut=function(){var i=this.element;e.hasTransition&&i&&(this.openingTimeout&&(clearTimeout(this.openingTimeout),o.bind(this,i)),t.hasClass(i,"cc-invisible")||(this.options["static"]&&(this.element.parentNode.style.maxHeight=""),this.afterTransition=s.bind(this,i),i.addEventListener(e.transitionEnd,this.afterTransition),t.addClass(i,"cc-invisible")))},n.prototype.isOpen=function(){return this.element&&""==this.element.style.display&&(!e.hasTransition||!t.hasClass(this.element,"cc-invisible"))},n.prototype.toggleRevokeButton=function(e){this.revokeBtn&&(this.revokeBtn.style.display=e?"":"none")},n.prototype.revokeChoice=function(e){this.options.enabled=!0,this.clearStatus(),this.options.onRevokeChoice.call(this),e||this.autoOpen()},n.prototype.hasAnswered=function(t){return Object.keys(e.status).indexOf(this.getStatus())>=0},n.prototype.hasConsented=function(t){var i=this.getStatus();return i==e.status.allow||i==e.status.dismiss},n.prototype.autoOpen=function(e){!this.hasAnswered()&&this.options.enabled&&this.open()},n.prototype.setStatus=function(i){var n=this.options.cookie,o=t.getCookie(n.name),s=Object.keys(e.status).indexOf(o)>=0;Object.keys(e.status).indexOf(i)>=0?(t.setCookie(n.name,i,n.expiryDays,n.domain,n.path),this.options.onStatusChange.call(this,i,s)):this.clearStatus()},n.prototype.getStatus=function(){return t.getCookie(this.options.cookie.name)},n.prototype.clearStatus=function(){var e=this.options.cookie;t.setCookie(e.name,"",-1,e.domain,e.path)},n}(),e.Location=function(){function e(e){t.deepExtend(this.options={},s),t.isPlainObject(e)&&t.deepExtend(this.options,e),this.currentServiceIndex=-1}function i(e,t,i){var n,o=document.createElement("script");o.type="text/"+(e.type||"javascript"),o.src=e.src||e,o.async=!1,o.onreadystatechange=o.onload=function(){var e=o.readyState;clearTimeout(n),t.done||e&&!/loaded|complete/.test(e)||(t.done=!0,t(),o.onreadystatechange=o.onload=null)},document.body.appendChild(o),n=setTimeout(function(){t.done=!0,t(),o.onreadystatechange=o.onload=null},i)}function n(e,t,i,n,o){var s=new(window.XMLHttpRequest||window.ActiveXObject)("MSXML2.XMLHTTP.3.0");if(s.open(n?"POST":"GET",e,1),s.setRequestHeader("X-Requested-With","XMLHttpRequest"),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),Array.isArray(o))for(var r=0,a=o.length;r3&&t(s)}),s.send(n)}function o(e){return new Error("Error ["+(e.code||"UNKNOWN")+"]: "+e.error)}var s={timeout:5e3,services:["freegeoip","ipinfo","maxmind"],serviceDefinitions:{freegeoip:function(){return{url:"//freegeoip.net/json/?callback={callback}",isScript:!0,callback:function(e,t){try{var i=JSON.parse(t);return i.error?o(i):{code:i.country_code}}catch(n){return o({error:"Invalid response ("+n+")"})}}}},ipinfo:function(){return{url:"//ipinfo.io",headers:["Accept: application/json"],callback:function(e,t){try{var i=JSON.parse(t);return i.error?o(i):{code:i.country}}catch(n){return o({error:"Invalid response ("+n+")"})}}}},ipinfodb:function(e){return{url:"//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}",isScript:!0,callback:function(e,t){try{var i=JSON.parse(t);return"ERROR"==i.statusCode?o({error:i.statusMessage}):{code:i.countryCode}}catch(n){return o({error:"Invalid response ("+n+")"})}}}},maxmind:function(){return{url:"//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js",isScript:!0,callback:function(e){return window.geoip2?void geoip2.country(function(t){try{e({code:t.country.iso_code})}catch(i){e(o(i))}},function(t){e(o(t))}):void e(new Error("Unexpected response format. The downloaded script should have exported `geoip2` to the global scope"))}}}}};return e.prototype.getNextService=function(){var e;do e=this.getServiceByIdx(++this.currentServiceIndex);while(this.currentServiceIndex=0,revokable:t.revokable.indexOf(e)>=0,explicitAction:t.explicitAction.indexOf(e)>=0}},e.prototype.applyLaw=function(e,t){var i=this.get(t);return i.hasLaw||(e.enabled=!1),this.options.regionalLaw&&(i.revokable&&(e.revokable=!0),i.explicitAction&&(e.dismissOnScroll=!1,e.dismissOnTimeout=!1)),e},e}(),e.initialise=function(t,i,n){var o=new e.Law(t.law);i||(i=function(){}),n||(n=function(){}),e.getCountryCode(t,function(n){delete t.law,delete t.location,n.code&&(t=o.applyLaw(t,n.code)),i(new e.Popup(t))},function(i){delete t.law,delete t.location,n(i,new e.Popup(t))})},e.getCountryCode=function(t,i,n){if(t.law&&t.law.countryCode)return void i({code:t.law.countryCode});if(t.location){var o=new e.Location(t.location);return void o.locate(function(e){i(e||{})},n)}i({})},e.utils=t,e.hasInitialised=!0,window.cookieconsent=e}}(window.cookieconsent||{}); \ No newline at end of file diff --git a/assets/css/font-awesome.min.css b/assets/css/font-awesome.min.css new file mode 100644 index 00000000..540440ce --- /dev/null +++ b/assets/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/assets/fonts/FontAwesome.otf b/assets/fonts/FontAwesome.otf new file mode 100644 index 00000000..401ec0f3 Binary files /dev/null and b/assets/fonts/FontAwesome.otf differ diff --git a/assets/fonts/fontawesome-webfont.eot b/assets/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/assets/fonts/fontawesome-webfont.eot differ diff --git a/assets/fonts/fontawesome-webfont.svg b/assets/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/assets/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/fonts/fontawesome-webfont.ttf b/assets/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/assets/fonts/fontawesome-webfont.ttf differ diff --git a/assets/fonts/fontawesome-webfont.woff b/assets/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/assets/fonts/fontawesome-webfont.woff differ diff --git a/assets/fonts/fontawesome-webfont.woff2 b/assets/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/assets/fonts/fontawesome-webfont.woff2 differ diff --git a/assets/javascript/core.js b/assets/javascript/core.js new file mode 100644 index 00000000..726048bf --- /dev/null +++ b/assets/javascript/core.js @@ -0,0 +1,1674 @@ +/* global bbfontstyle */ + +var phpbb = {}; +phpbb.alertTime = 100; + +(function($) { // Avoid conflicts with other libraries + +'use strict'; + +// define a couple constants for keydown functions. +var keymap = { + TAB: 9, + ENTER: 13, + ESC: 27 +}; + +var $dark = $('#darkenwrapper'); +var $loadingIndicator; +var phpbbAlertTimer = null; + +phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined'); + +/** + * Display a loading screen + * + * @returns {object} Returns loadingIndicator. + */ +phpbb.loadingIndicator = function() { + if (!$loadingIndicator) { + $loadingIndicator = $('#loading_indicator'); + } + + if (!$loadingIndicator.is(':visible')) { + $loadingIndicator.fadeIn(phpbb.alertTime); + // Wait 60 seconds and display an error if nothing has been returned by then. + phpbb.clearLoadingTimeout(); + phpbbAlertTimer = setTimeout(function() { + phpbb.showTimeoutMessage(); + }, 60000); + } + + return $loadingIndicator; +}; + +/** + * Show timeout message + */ +phpbb.showTimeoutMessage = function () { + var $alert = $('#phpbb_alert'); + + if ($loadingIndicator.is(':visible')) { + phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req')); + } +}; + +/** + * Clear loading alert timeout +*/ +phpbb.clearLoadingTimeout = function() { + if (phpbbAlertTimer !== null) { + clearTimeout(phpbbAlertTimer); + phpbbAlertTimer = null; + } +}; + + +/** +* Close popup alert after a specified delay +* +* @param {int} delay Delay in ms until darkenwrapper's click event is triggered +*/ +phpbb.closeDarkenWrapper = function(delay) { + phpbbAlertTimer = setTimeout(function() { + $('#darkenwrapper').trigger('click'); + }, delay); +}; + +/** + * Display a simple alert similar to JSs native alert(). + * + * You can only call one alert or confirm box at any one time. + * + * @param {string} title Title of the message, eg "Information" (HTML). + * @param {string} msg Message to display (HTML). + * + * @returns {object} Returns the div created. + */ +phpbb.alert = function(title, msg) { + var $alert = $('#phpbb_alert'); + $alert.find('.alert_title').html(title); + $alert.find('.alert_text').html(msg); + + $(document).on('keydown.phpbb.alert', function(e) { + if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) { + phpbb.alert.close($alert, true); + e.preventDefault(); + e.stopPropagation(); + } + }); + phpbb.alert.open($alert); + + return $alert; +}; + +/** +* Handler for opening an alert box. +* +* @param {jQuery} $alert jQuery object. +*/ +phpbb.alert.open = function($alert) { + if (!$dark.is(':visible')) { + $dark.fadeIn(phpbb.alertTime); + } + + if ($loadingIndicator && $loadingIndicator.is(':visible')) { + $loadingIndicator.fadeOut(phpbb.alertTime, function() { + $dark.append($alert); + $alert.fadeIn(phpbb.alertTime); + }); + } else if ($dark.is(':visible')) { + $dark.append($alert); + $alert.fadeIn(phpbb.alertTime); + } else { + $dark.append($alert); + $alert.show(); + $dark.fadeIn(phpbb.alertTime); + } + + $alert.on('click', function(e) { + e.stopPropagation(); + }); + + $dark.one('click', function(e) { + phpbb.alert.close($alert, true); + e.preventDefault(); + e.stopPropagation(); + }); + + $alert.find('.alert_close').one('click', function(e) { + phpbb.alert.close($alert, true); + e.preventDefault(); + }); +}; + +/** +* Handler for closing an alert box. +* +* @param {jQuery} $alert jQuery object. +* @param {bool} fadedark Whether to remove dark background. +*/ +phpbb.alert.close = function($alert, fadedark) { + var $fade = (fadedark) ? $dark : $alert; + + $fade.fadeOut(phpbb.alertTime, function() { + $alert.hide(); + }); + + $alert.find('.alert_close').off('click'); + $(document).off('keydown.phpbb.alert'); +}; + +/** + * Display a simple yes / no box to the user. + * + * You can only call one alert or confirm box at any one time. + * + * @param {string} msg Message to display (HTML). + * @param {function} callback Callback. Bool param, whether the user pressed + * yes or no (or whatever their language is). + * @param {bool} fadedark Remove the dark background when done? Defaults + * to yes. + * + * @returns {object} Returns the div created. + */ +phpbb.confirm = function(msg, callback, fadedark) { + var $confirmDiv = $('#phpbb_confirm'); + $confirmDiv.find('.alert_text').html(msg); + fadedark = typeof fadedark !== 'undefined' ? fadedark : true; + + $(document).on('keydown.phpbb.alert', function(e) { + if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) { + var name = (e.keyCode === keymap.ENTER) ? 'confirm' : 'cancel'; + + $('input[name="' + name + '"]').trigger('click'); + e.preventDefault(); + e.stopPropagation(); + } + }); + + $confirmDiv.find('input[type="button"]').one('click.phpbb.confirmbox', function(e) { + var confirmed = this.name === 'confirm'; + + callback(confirmed); + $confirmDiv.find('input[type="button"]').off('click.phpbb.confirmbox'); + phpbb.alert.close($confirmDiv, fadedark || !confirmed); + + e.preventDefault(); + e.stopPropagation(); + }); + + phpbb.alert.open($confirmDiv); + + return $confirmDiv; +}; + +/** + * Turn a querystring into an array. + * + * @argument {string} string The querystring to parse. + * @returns {object} The object created. + */ +phpbb.parseQuerystring = function(string) { + var params = {}, i, split; + + string = string.split('&'); + for (i = 0; i < string.length; i++) { + split = string[i].split('='); + params[split[0]] = decodeURIComponent(split[1]); + } + return params; +}; + + +/** + * Makes a link use AJAX instead of loading an entire page. + * + * This function will work for links (both standard links and links which + * invoke confirm_box) and forms. It will be called automatically for links + * and forms with the data-ajax attribute set, and will call the necessary + * callback. + * + * For more info, view the following page on the phpBB wiki: + * http://wiki.phpbb.com/JavaScript_Function.phpbb.ajaxify + * + * @param {object} options Options. + */ +phpbb.ajaxify = function(options) { + var $elements = $(options.selector), + refresh = options.refresh, + callback = options.callback, + overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true, + isForm = $elements.is('form'), + isText = $elements.is('input[type="text"], textarea'), + eventName; + + if (isForm) { + eventName = 'submit'; + } else if (isText) { + eventName = 'keyup'; + } else { + eventName = 'click'; + } + + $elements.on(eventName, function(event) { + var action, method, data, submit, that = this, $this = $(this); + + if ($this.find('input[type="submit"][data-clicked]').attr('data-ajax') === 'false') { + return; + } + + /** + * Handler for AJAX errors + */ + function errorHandler(jqXHR, textStatus, errorThrown) { + if (typeof console !== 'undefined' && console.log) { + console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown); + } + phpbb.clearLoadingTimeout(); + var responseText, errorText = false; + try { + responseText = JSON.parse(jqXHR.responseText); + responseText = responseText.message; + } catch (e) {} + if (typeof responseText === 'string' && responseText.length > 0) { + errorText = responseText; + } else if (typeof errorThrown === 'string' && errorThrown.length > 0) { + errorText = errorThrown; + } else { + errorText = $dark.attr('data-ajax-error-text-' + textStatus); + if (typeof errorText !== 'string' || !errorText.length) { + errorText = $dark.attr('data-ajax-error-text'); + } + } + phpbb.alert($dark.attr('data-ajax-error-title'), errorText); + } + + /** + * This is a private function used to handle the callbacks, refreshes + * and alert. It calls the callback, refreshes the page if necessary, and + * displays an alert to the user and removes it after an amount of time. + * + * It cannot be called from outside this function, and is purely here to + * avoid repetition of code. + * + * @param {object} res The object sent back by the server. + */ + function returnHandler(res) { + var alert; + + phpbb.clearLoadingTimeout(); + + // Is a confirmation required? + if (typeof res.S_CONFIRM_ACTION === 'undefined') { + // If a confirmation is not required, display an alert and call the + // callbacks. + if (typeof res.MESSAGE_TITLE !== 'undefined') { + alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT); + } else { + $dark.fadeOut(phpbb.alertTime); + + if ($loadingIndicator) { + $loadingIndicator.fadeOut(phpbb.alertTime); + } + } + + if (typeof phpbb.ajaxCallbacks[callback] === 'function') { + phpbb.ajaxCallbacks[callback].call(that, res); + } + + // If the server says to refresh the page, check whether the page should + // be refreshed and refresh page after specified time if required. + if (res.REFRESH_DATA) { + if (typeof refresh === 'function') { + refresh = refresh(res.REFRESH_DATA.url); + } else if (typeof refresh !== 'boolean') { + refresh = false; + } + + phpbbAlertTimer = setTimeout(function() { + if (refresh) { + window.location = res.REFRESH_DATA.url; + } + + // Hide the alert even if we refresh the page, in case the user + // presses the back button. + $dark.fadeOut(phpbb.alertTime, function() { + if (typeof alert !== 'undefined') { + alert.hide(); + } + }); + }, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds + } + } else { + // If confirmation is required, display a dialog to the user. + phpbb.confirm(res.MESSAGE_BODY, function(del) { + if (!del) { + return; + } + + phpbb.loadingIndicator(); + data = $('
' + res.S_HIDDEN_FIELDS + '
').serialize(); + $.ajax({ + url: res.S_CONFIRM_ACTION, + type: 'POST', + data: data + '&confirm=' + res.YES_VALUE + '&' + $('form', '#phpbb_confirm').serialize(), + success: returnHandler, + error: errorHandler + }); + }, false); + } + } + + // If the element is a form, POST must be used and some extra data must + // be taken from the form. + var runFilter = (typeof options.filter === 'function'); + data = {}; + + if (isForm) { + action = $this.attr('action').replace('&', '&'); + data = $this.serializeArray(); + method = $this.attr('method') || 'GET'; + + if ($this.find('input[type="submit"][data-clicked]')) { + submit = $this.find('input[type="submit"][data-clicked]'); + data.push({ + name: submit.attr('name'), + value: submit.val() + }); + } + } else if (isText) { + var name = $this.attr('data-name') || this.name; + action = $this.attr('data-url').replace('&', '&'); + data[name] = this.value; + method = 'POST'; + } else { + action = this.href; + data = null; + method = 'GET'; + } + + var sendRequest = function() { + var dataOverlay = $this.attr('data-overlay'); + if (overlay && (typeof dataOverlay === 'undefined' || dataOverlay === 'true')) { + phpbb.loadingIndicator(); + } + + var request = $.ajax({ + url: action, + type: method, + data: data, + success: returnHandler, + error: errorHandler, + cache: false + }); + + request.always(function() { + if ($loadingIndicator && $loadingIndicator.is(':visible')) { + $loadingIndicator.fadeOut(phpbb.alertTime); + } + }); + }; + + // If filter function returns false, cancel the AJAX functionality, + // and return true (meaning that the HTTP request will be sent normally). + if (runFilter && !options.filter.call(this, data, event, sendRequest)) { + return; + } + + sendRequest(); + event.preventDefault(); + }); + + if (isForm) { + $elements.find('input:submit').click(function () { + var $this = $(this); + + // Remove data-clicked attribute from any submit button of form + $this.parents('form:first').find('input:submit[data-clicked]').removeAttr('data-clicked'); + + $this.attr('data-clicked', 'true'); + }); + } + + return this; +}; + +phpbb.search = { + cache: { + data: [] + }, + tpl: [], + container: [] +}; + +/** + * Get cached search data. + * + * @param {string} id Search ID. + * @returns {bool|object} Cached data object. Returns false if no data exists. + */ +phpbb.search.cache.get = function(id) { + if (this.data[id]) { + return this.data[id]; + } + return false; +}; + +/** + * Set search cache data value. + * + * @param {string} id Search ID. + * @param {string} key Data key. + * @param {string} value Data value. + */ +phpbb.search.cache.set = function(id, key, value) { + if (!this.data[id]) { + this.data[id] = { results: [] }; + } + this.data[id][key] = value; +}; + +/** + * Cache search result. + * + * @param {string} id Search ID. + * @param {string} keyword Keyword. + * @param {Array} results Search results. + */ +phpbb.search.cache.setResults = function(id, keyword, results) { + this.data[id].results[keyword] = results; +}; + +/** + * Trim spaces from keyword and lower its case. + * + * @param {string} keyword Search keyword to clean. + * @returns {string} Cleaned string. + */ +phpbb.search.cleanKeyword = function(keyword) { + return $.trim(keyword).toLowerCase(); +}; + +/** + * Get clean version of search keyword. If textarea supports several keywords + * (one per line), it fetches the current keyword based on the caret position. + * + * @param {jQuery} $input Search input|textarea. + * @param {string} keyword Input|textarea value. + * @param {bool} multiline Whether textarea supports multiple search keywords. + * + * @returns string Clean string. + */ +phpbb.search.getKeyword = function($input, keyword, multiline) { + if (multiline) { + var line = phpbb.search.getKeywordLine($input); + keyword = keyword.split('\n').splice(line, 1); + } + return phpbb.search.cleanKeyword(keyword); +}; + +/** + * Get the textarea line number on which the keyword resides - for textareas + * that support multiple keywords (one per line). + * + * @param {jQuery} $textarea Search textarea. + * @returns {int} The line number. + */ +phpbb.search.getKeywordLine = function ($textarea) { + var selectionStart = $textarea.get(0).selectionStart; + return $textarea.val().substr(0, selectionStart).split('\n').length - 1; +}; + +/** + * Set the value on the input|textarea. If textarea supports multiple + * keywords, only the active keyword is replaced. + * + * @param {jQuery} $input Search input|textarea. + * @param {string} value Value to set. + * @param {bool} multiline Whether textarea supports multiple search keywords. + */ +phpbb.search.setValue = function($input, value, multiline) { + if (multiline) { + var line = phpbb.search.getKeywordLine($input), + lines = $input.val().split('\n'); + lines[line] = value; + value = lines.join('\n'); + } + $input.val(value); +}; + +/** + * Sets the onclick event to set the value on the input|textarea to the + * selected search result. + * + * @param {jQuery} $input Search input|textarea. + * @param {object} value Result object. + * @param {jQuery} $row Result element. + * @param {jQuery} $container jQuery object for the search container. + */ +phpbb.search.setValueOnClick = function($input, value, $row, $container) { + $row.click(function() { + phpbb.search.setValue($input, value.result, $input.attr('data-multiline')); + $container.hide(); + }); +}; + +/** + * Runs before the AJAX search request is sent and determines whether + * there is a need to contact the server. If there are cached results + * already, those are displayed instead. Executes the AJAX request function + * itself due to the need to use a timeout to limit the number of requests. + * + * @param {Array} data Data to be sent to the server. + * @param {object} event Onkeyup event object. + * @param {function} sendRequest Function to execute AJAX request. + * + * @returns {bool} Returns false. + */ +phpbb.search.filter = function(data, event, sendRequest) { + var $this = $(this), + dataName = ($this.attr('data-name') !== undefined) ? $this.attr('data-name') : $this.attr('name'), + minLength = parseInt($this.attr('data-min-length'), 10), + searchID = $this.attr('data-results'), + keyword = phpbb.search.getKeyword($this, data[dataName], $this.attr('data-multiline')), + cache = phpbb.search.cache.get(searchID), + proceed = true; + data[dataName] = keyword; + + if (cache.timeout) { + clearTimeout(cache.timeout); + } + + var timeout = setTimeout(function() { + // Check min length and existence of cache. + if (minLength > keyword.length) { + proceed = false; + } else if (cache.lastSearch) { + // Has the keyword actually changed? + if (cache.lastSearch === keyword) { + proceed = false; + } else { + // Do we already have results for this? + if (cache.results[keyword]) { + var response = { + keyword: keyword, + results: cache.results[keyword] + }; + phpbb.search.handleResponse(response, $this, true); + proceed = false; + } + + // If the previous search didn't yield results and the string only had characters added to it, + // then we won't bother sending a request. + if (keyword.indexOf(cache.lastSearch) === 0 && cache.results[cache.lastSearch].length === 0) { + phpbb.search.cache.set(searchID, 'lastSearch', keyword); + phpbb.search.cache.setResults(searchID, keyword, []); + proceed = false; + } + } + } + + if (proceed) { + sendRequest.call(this); + } + }, 350); + phpbb.search.cache.set(searchID, 'timeout', timeout); + + return false; +}; + +/** + * Handle search result response. + * + * @param {object} res Data received from server. + * @param {jQuery} $input Search input|textarea. + * @param {bool} fromCache Whether the results are from the cache. + * @param {function} callback Optional callback to run when assigning each search result. + */ +phpbb.search.handleResponse = function(res, $input, fromCache, callback) { + if (typeof res !== 'object') { + return; + } + + var searchID = $input.attr('data-results'), + $container = $(searchID); + + if (this.cache.get(searchID).callback) { + callback = this.cache.get(searchID).callback; + } else if (typeof callback === 'function') { + this.cache.set(searchID, 'callback', callback); + } + + if (!fromCache) { + this.cache.setResults(searchID, res.keyword, res.results); + } + + this.cache.set(searchID, 'lastSearch', res.keyword); + this.showResults(res.results, $input, $container, callback); +}; + +/** + * Show search results. + * + * @param {Array} results Search results. + * @param {jQuery} $input Search input|textarea. + * @param {jQuery} $container Search results container element. + * @param {function} callback Optional callback to run when assigning each search result. + */ +phpbb.search.showResults = function(results, $input, $container, callback) { + var $resultContainer = $('.search-results', $container); + this.clearResults($resultContainer); + + if (!results.length) { + $container.hide(); + return; + } + + var searchID = $container.attr('id'), + tpl, + row; + + if (!this.tpl[searchID]) { + tpl = $('.search-result-tpl', $container); + this.tpl[searchID] = tpl.clone().removeClass('search-result-tpl'); + tpl.remove(); + } + tpl = this.tpl[searchID]; + + $.each(results, function(i, item) { + row = tpl.clone(); + row.find('.search-result').html(item.display); + + if (typeof callback === 'function') { + callback.call(this, $input, item, row, $container); + } + row.appendTo($resultContainer).show(); + }); + $container.show(); +}; + +/** + * Clear search results. + * + * @param {jQuery} $container Search results container. + */ +phpbb.search.clearResults = function($container) { + $container.children(':not(.search-result-tpl)').remove(); +}; + +$('#phpbb').click(function() { + var $this = $(this); + + if (!$this.is('.live-search') && !$this.parents().is('.live-search')) { + $('.live-search').hide(); + } +}); + +phpbb.history = {}; + +/** +* Check whether a method in the native history object is supported. +* +* @param {string} fn Method name. +* @returns {bool} Returns true if the method is supported. +*/ +phpbb.history.isSupported = function(fn) { + return !(typeof history === 'undefined' || typeof history[fn] === 'undefined'); +}; + +/** +* Wrapper for the pushState and replaceState methods of the +* native history object. +* +* @param {string} mode Mode. Either push or replace. +* @param {string} url New URL. +* @param {string} [title] Optional page title. +* @param {object} [obj] Optional state object. +*/ +phpbb.history.alterUrl = function(mode, url, title, obj) { + var fn = mode + 'State'; + + if (!url || !phpbb.history.isSupported(fn)) { + return; + } + if (!title) { + title = document.title; + } + if (!obj) { + obj = null; + } + + history[fn](obj, title, url); +}; + +/** +* Wrapper for the native history.replaceState method. +* +* @param {string} url New URL. +* @param {string} [title] Optional page title. +* @param {object} [obj] Optional state object. +*/ +phpbb.history.replaceUrl = function(url, title, obj) { + phpbb.history.alterUrl('replace', url, title, obj); +}; + +/** +* Wrapper for the native history.pushState method. +* +* @param {string} url New URL. +* @param {string} [title] Optional page title. +* @param {object} [obj] Optional state object. +*/ +phpbb.history.pushUrl = function(url, title, obj) { + phpbb.history.alterUrl('push', url, title, obj); +}; + +/** +* Hide the optgroups that are not the selected timezone +* +* @param {bool} keepSelection Shall we keep the value selected, or shall the +* user be forced to repick one. +*/ +phpbb.timezoneSwitchDate = function(keepSelection) { + var $timezoneCopy = $('#timezone_copy'); + var $timezone = $('#timezone'); + var $tzDate = $('#tz_date'); + var $tzSelectDateSuggest = $('#tz_select_date_suggest'); + + if ($timezoneCopy.length === 0) { + // We make a backup of the original dropdown, so we can remove optgroups + // instead of setting display to none, because IE and chrome will not + // hide options inside of optgroups and selects via css + $timezone.clone() + .attr('id', 'timezone_copy') + .css('display', 'none') + .attr('name', 'tz_copy') + .insertAfter('#timezone'); + } else { + // Copy the content of our backup, so we can remove all unneeded options + $timezone.html($timezoneCopy.html()); + } + + if ($tzDate.val() !== '') { + $timezone.children('optgroup').remove(':not([data-tz-value="' + $tzDate.val() + '"])'); + } + + if ($tzDate.val() === $tzSelectDateSuggest.attr('data-suggested-tz')) { + $tzSelectDateSuggest.css('display', 'none'); + } else { + $tzSelectDateSuggest.css('display', 'inline'); + } + + var $tzOptions = $timezone.children('optgroup[data-tz-value="' + $tzDate.val() + '"]').children('option'); + + if ($tzOptions.length === 1) { + // If there is only one timezone for the selected date, we just select that automatically. + $tzOptions.prop('selected', true); + keepSelection = true; + } + + if (typeof keepSelection !== 'undefined' && !keepSelection) { + var $timezoneOptions = $timezone.find('optgroup option'); + if ($timezoneOptions.filter(':selected').length <= 0) { + $timezoneOptions.filter(':first').prop('selected', true); + } + } +}; + +/** +* Display the date/time select +*/ +phpbb.timezoneEnableDateSelection = function() { + $('#tz_select_date').css('display', 'block'); +}; + +/** +* Preselect a date/time or suggest one, if it is not picked. +* +* @param {bool} forceSelector Shall we select the suggestion? +*/ +phpbb.timezonePreselectSelect = function(forceSelector) { + + // The offset returned here is in minutes and negated. + var offset = (new Date()).getTimezoneOffset(); + var sign = '-'; + + if (offset < 0) { + sign = '+'; + offset = -offset; + } + + var minutes = offset % 60; + var hours = (offset - minutes) / 60; + + if (hours < 10) { + hours = '0' + hours.toString(); + } else { + hours = hours.toString(); + } + + if (minutes < 10) { + minutes = '0' + minutes.toString(); + } else { + minutes = minutes.toString(); + } + + var prefix = 'UTC' + sign + hours + ':' + minutes; + var prefixLength = prefix.length; + var selectorOptions = $('option', '#tz_date'); + var i; + + var $tzSelectDateSuggest = $('#tz_select_date_suggest'); + + for (i = 0; i < selectorOptions.length; ++i) { + var option = selectorOptions[i]; + + if (option.value.substring(0, prefixLength) === prefix) { + if ($('#tz_date').val() !== option.value && !forceSelector) { + // We do not select the option for the user, but notify him, + // that we would suggest a different setting. + phpbb.timezoneSwitchDate(true); + $tzSelectDateSuggest.css('display', 'inline'); + } else { + option.selected = true; + phpbb.timezoneSwitchDate(!forceSelector); + $tzSelectDateSuggest.css('display', 'none'); + } + + var suggestion = $tzSelectDateSuggest.attr('data-l-suggestion'); + + $tzSelectDateSuggest.attr('title', suggestion.replace('%s', option.innerHTML)); + $tzSelectDateSuggest.attr('value', suggestion.replace('%s', option.innerHTML.substring(0, 9))); + $tzSelectDateSuggest.attr('data-suggested-tz', option.innerHTML); + + // Found the suggestion, there cannot be more, so return from here. + return; + } + } +}; + +phpbb.ajaxCallbacks = {}; + +/** + * Adds an AJAX callback to be used by phpbb.ajaxify. + * + * See the phpbb.ajaxify comments for information on stuff like parameters. + * + * @param {string} id The name of the callback. + * @param {function} callback The callback to be called. + */ +phpbb.addAjaxCallback = function(id, callback) { + if (typeof callback === 'function') { + phpbb.ajaxCallbacks[id] = callback; + } + return this; +}; + +/** + * This callback handles live member searches. + */ +phpbb.addAjaxCallback('member_search', function(res) { + phpbb.search.handleResponse(res, $(this), false, phpbb.getFunctionByName('phpbb.search.setValueOnClick')); +}); + +/** + * This callback alternates text - it replaces the current text with the text in + * the alt-text data attribute, and replaces the text in the attribute with the + * current text so that the process can be repeated. + */ +phpbb.addAjaxCallback('alt_text', function() { + var $anchor, + updateAll = $(this).data('update-all'), + altText; + + if (updateAll !== undefined && updateAll.length) { + $anchor = $(updateAll); + } else { + $anchor = $(this); + } + + $anchor.each(function() { + var $this = $(this); + altText = $this.attr('data-alt-text'); + $this.attr('data-alt-text', $this.text()); + $this.attr('title', $.trim(altText)); + $this.text(altText); + }); +}); + +/** + * This callback is based on the alt_text callback. + * + * It replaces the current text with the text in the alt-text data attribute, + * and replaces the text in the attribute with the current text so that the + * process can be repeated. + * Additionally it replaces the class of the link's parent + * and changes the link itself. + */ +phpbb.addAjaxCallback('toggle_link', function() { + var $anchor, + updateAll = $(this).data('update-all') , + toggleText, + toggleUrl, + toggleClass; + + if (updateAll !== undefined && updateAll.length) { + $anchor = $(updateAll); + } else { + $anchor = $(this); + } + + $anchor.each(function() { + var $this = $(this); + + // Toggle link url + toggleUrl = $this.attr('data-toggle-url'); + $this.attr('data-toggle-url', $this.attr('href')); + $this.attr('href', toggleUrl); + + // Toggle class of link parent + toggleClass = $this.attr('data-toggle-class'); + $this.attr('data-toggle-class', $this.children().attr('class')); + $this.children('.icon').attr('class', toggleClass); + + // Toggle link text + toggleText = $this.attr('data-toggle-text'); + $this.attr('data-toggle-text', $this.children('span').text()); + $this.attr('title', $.trim(toggleText)); + $this.children('span').text(toggleText); + }); +}); + +/** +* Automatically resize textarea +* +* This function automatically resizes textarea elements when user +* types text. +* +* @param {jQuery} $items jQuery object(s) to resize +* @param {object} [options] Optional parameter that adjusts default +* configuration. See configuration variable +* +* Optional parameters: +* minWindowHeight {number} Minimum browser window height when textareas are resized. Default = 500 +* minHeight {number} Minimum height of textarea. Default = 200 +* maxHeight {number} Maximum height of textarea. Default = 500 +* heightDiff {number} Minimum difference between window and textarea height. Default = 200 +* resizeCallback {function} Function to call after resizing textarea +* resetCallback {function} Function to call when resize has been canceled + +* Callback function format: function(item) {} +* this points to DOM object +* item is a jQuery object, same as this +*/ +phpbb.resizeTextArea = function($items, options) { + // Configuration + var configuration = { + minWindowHeight: 500, + minHeight: 200, + maxHeight: 500, + heightDiff: 200, + resizeCallback: function() {}, + resetCallback: function() {} + }; + + if (phpbb.isTouch) { + return; + } + + if (arguments.length > 1) { + configuration = $.extend(configuration, options); + } + + function resetAutoResize(item) { + var $item = $(item); + if ($item.hasClass('auto-resized')) { + $(item) + .css({ height: '', resize: '' }) + .removeClass('auto-resized'); + configuration.resetCallback.call(item, $item); + } + } + + function autoResize(item) { + function setHeight(height) { + height += parseInt($item.css('height'), 10) - $item.innerHeight(); + $item + .css({ height: height + 'px', resize: 'none' }) + .addClass('auto-resized'); + configuration.resizeCallback.call(item, $item); + } + + var windowHeight = $(window).height(); + + if (windowHeight < configuration.minWindowHeight) { + resetAutoResize(item); + return; + } + + var maxHeight = Math.min( + Math.max(windowHeight - configuration.heightDiff, configuration.minHeight), + configuration.maxHeight + ), + $item = $(item), + height = parseInt($item.innerHeight(), 10), + scrollHeight = (item.scrollHeight) ? item.scrollHeight : 0; + + if (height < 0) { + return; + } + + if (height > maxHeight) { + setHeight(maxHeight); + } else if (scrollHeight > (height + 5)) { + setHeight(Math.min(maxHeight, scrollHeight)); + } + } + + $items.on('focus change keyup', function() { + $(this).each(function() { + autoResize(this); + }); + }).change(); + + $(window).resize(function() { + $items.each(function() { + if ($(this).hasClass('auto-resized')) { + autoResize(this); + } + }); + }); +}; + +/** +* Check if cursor in textarea is currently inside a bbcode tag +* +* @param {object} textarea Textarea DOM object +* @param {Array} startTags List of start tags to look for +* For example, Array('[code]', '[code=') +* @param {Array} endTags List of end tags to look for +* For example, Array('[/code]') +* +* @returns {boolean} True if cursor is in bbcode tag +*/ +phpbb.inBBCodeTag = function(textarea, startTags, endTags) { + var start = textarea.selectionStart, + lastEnd = -1, + lastStart = -1, + i, index, value; + + if (typeof start !== 'number') { + return false; + } + + value = textarea.value.toLowerCase(); + + for (i = 0; i < startTags.length; i++) { + var tagLength = startTags[i].length; + if (start >= tagLength) { + index = value.lastIndexOf(startTags[i], start - tagLength); + lastStart = Math.max(lastStart, index); + } + } + if (lastStart === -1) { + return false; + } + + if (start > 0) { + for (i = 0; i < endTags.length; i++) { + index = value.lastIndexOf(endTags[i], start - 1); + lastEnd = Math.max(lastEnd, index); + } + } + + return (lastEnd < lastStart); +}; + + +/** +* Adjust textarea to manage code bbcode +* +* This function allows to use tab characters when typing code +* and keeps indentation of previous line of code when adding new +* line while typing code. +* +* Editor's functionality is changed only when cursor is between +* [code] and [/code] bbcode tags. +* +* @param {object} textarea Textarea DOM object to apply editor to +*/ +phpbb.applyCodeEditor = function(textarea) { + // list of allowed start and end bbcode code tags, in lower case + var startTags = ['[code]', '[code='], + startTagsEnd = ']', + endTags = ['[/code]']; + + if (!textarea || typeof textarea.selectionStart !== 'number') { + return; + } + + if ($(textarea).data('code-editor') === true) { + return; + } + + function inTag() { + return phpbb.inBBCodeTag(textarea, startTags, endTags); + } + + /** + * Get line of text before cursor + * + * @param {boolean} stripCodeStart If true, only part of line + * after [code] tag will be returned. + * + * @returns {string} Line of text + */ + function getLastLine(stripCodeStart) { + var start = textarea.selectionStart, + value = textarea.value, + index = value.lastIndexOf('\n', start - 1); + + value = value.substring(index + 1, start); + + if (stripCodeStart) { + for (var i = 0; i < startTags.length; i++) { + index = value.lastIndexOf(startTags[i]); + if (index >= 0) { + var tagLength = startTags[i].length; + + value = value.substring(index + tagLength); + if (startTags[i].lastIndexOf(startTagsEnd) !== tagLength) { + index = value.indexOf(startTagsEnd); + + if (index >= 0) { + value = value.substr(index + 1); + } + } + } + } + } + + return value; + } + + /** + * Append text at cursor position + * + * @param {string} text Text to append + */ + function appendText(text) { + var start = textarea.selectionStart, + end = textarea.selectionEnd, + value = textarea.value; + + textarea.value = value.substr(0, start) + text + value.substr(end); + textarea.selectionStart = textarea.selectionEnd = start + text.length; + } + + $(textarea).data('code-editor', true).on('keydown', function(event) { + var key = event.keyCode || event.which; + + // intercept tabs + if (key === keymap.TAB && + !event.ctrlKey && + !event.shiftKey && + !event.altKey && + !event.metaKey) { + if (inTag()) { + appendText('\t'); + event.preventDefault(); + return; + } + } + + // intercept new line characters + if (key === keymap.ENTER) { + if (inTag()) { + var lastLine = getLastLine(true), + code = '' + /^\s*/g.exec(lastLine); + + if (code.length > 0) { + appendText('\n' + code); + event.preventDefault(); + } + } + } + }); +}; + +/** + * Show drag and drop animation when textarea is present + * + * This function will enable the drag and drop animation for a specified + * textarea. + * + * @param {HTMLElement} textarea Textarea DOM object to apply editor to + */ +phpbb.showDragNDrop = function(textarea) { + if (!textarea) { + return; + } + + $('body').on('dragenter dragover', function () { + $(textarea).addClass('drag-n-drop'); + }).on('dragleave dragout dragend drop', function() { + $(textarea).removeClass('drag-n-drop'); + }); + $(textarea).on('dragenter dragover', function () { + $(textarea).addClass('drag-n-drop-highlight'); + }).on('dragleave dragout dragend drop', function() { + $(textarea).removeClass('drag-n-drop-highlight'); + }); +}; + +/** +* List of classes that toggle dropdown menu, +* list of classes that contain visible dropdown menu +* +* Add your own classes to strings with comma (probably you +* will never need to do that) +*/ +phpbb.dropdownHandles = '.dropdown-container.dropdown-visible .dropdown-toggle'; +phpbb.dropdownVisibleContainers = '.dropdown-container.dropdown-visible'; + +/** +* Dropdown toggle event handler +* This handler is used by phpBB.registerDropdown() and other functions +*/ +phpbb.toggleDropdown = function() { + var $this = $(this), + options = $this.data('dropdown-options'), + parent = options.parent, + visible = parent.hasClass('dropdown-visible'), + direction; + + if (!visible) { + // Hide other dropdown menus + $(phpbb.dropdownHandles).each(phpbb.toggleDropdown); + + // Figure out direction of dropdown + direction = options.direction; + var verticalDirection = options.verticalDirection, + offset = $this.offset(); + + if (direction === 'auto') { + if (($(window).width() - $this.outerWidth(true)) / 2 > offset.left) { + direction = 'right'; + } else { + direction = 'left'; + } + } + parent.toggleClass(options.leftClass, direction === 'left') + .toggleClass(options.rightClass, direction === 'right'); + + if (verticalDirection === 'auto') { + var height = $(window).height(), + top = offset.top - $(window).scrollTop(); + + verticalDirection = (top < height * 0.7) ? 'down' : 'up'; + } + parent.toggleClass(options.upClass, verticalDirection === 'up') + .toggleClass(options.downClass, verticalDirection === 'down'); + } + + options.dropdown.toggle(); + parent.toggleClass(options.visibleClass, !visible) + .toggleClass('dropdown-visible', !visible); + + // Check dimensions when showing dropdown + // !visible because variable shows state of dropdown before it was toggled + if (!visible) { + var windowWidth = $(window).width(); + + options.dropdown.find('.dropdown-contents').each(function() { + var $this = $(this); + + $this.css({ + marginLeft: 0, + left: 0, + marginRight: 0, + right: 0, + maxWidth: (windowWidth - 4) + 'px' + }); + + var offset = $this.offset().left, + width = $this.outerWidth(true); + + if (offset < 2) { + $this.css('left', (2 - offset) + 'px'); + } else if ((offset + width + 2) > windowWidth) { + $this.css('margin-left', (windowWidth - offset - width - 2) + 'px'); + } + + // Check whether the vertical scrollbar is present. + $this.toggleClass('dropdown-nonscroll', this.scrollHeight === $this.innerHeight()); + + }); + var freeSpace = parent.offset().left - 4; + + if (direction === 'left') { + options.dropdown.css('margin-left', '-' + freeSpace + 'px'); + + // Try to position the notification dropdown correctly in RTL-responsive mode + if (options.dropdown.hasClass('dropdown-extended')) { + var contentWidth, + fullFreeSpace = freeSpace + parent.outerWidth(); + + options.dropdown.find('.dropdown-contents').each(function() { + contentWidth = parseInt($(this).outerWidth(), 10); + $(this).css({ marginLeft: 0, left: 0 }); + }); + + var maxOffset = Math.min(contentWidth, fullFreeSpace) + 'px'; + options.dropdown.css({ + width: maxOffset, + marginLeft: -maxOffset + }); + } + } else { + options.dropdown.css('margin-right', '-' + (windowWidth + freeSpace) + 'px'); + } + } + + // Prevent event propagation + if (arguments.length > 0) { + try { + var e = arguments[0]; + e.preventDefault(); + e.stopPropagation(); + } catch (error) { } + } + return false; +}; + +/** +* Toggle dropdown submenu +*/ +phpbb.toggleSubmenu = function(e) { + $(this).siblings('.dropdown-submenu').toggle(); + e.preventDefault(); +}; + +/** +* Register dropdown menu +* Shows/hides dropdown, decides which side to open to +* +* @param {jQuery} toggle Link that toggles dropdown. +* @param {jQuery} dropdown Dropdown menu. +* @param {Object} options List of options. Optional. +*/ +phpbb.registerDropdown = function(toggle, dropdown, options) { + var ops = { + parent: toggle.parent(), // Parent item to add classes to + direction: 'auto', // Direction of dropdown menu. Possible values: auto, left, right + verticalDirection: 'auto', // Vertical direction. Possible values: auto, up, down + visibleClass: 'visible', // Class to add to parent item when dropdown is visible + leftClass: 'dropdown-left', // Class to add to parent item when dropdown opens to left side + rightClass: 'dropdown-right', // Class to add to parent item when dropdown opens to right side + upClass: 'dropdown-up', // Class to add to parent item when dropdown opens above menu item + downClass: 'dropdown-down' // Class to add to parent item when dropdown opens below menu item + }; + if (options) { + ops = $.extend(ops, options); + } + ops.dropdown = dropdown; + + ops.parent.addClass('dropdown-container'); + toggle.addClass('dropdown-toggle'); + + toggle.data('dropdown-options', ops); + + toggle.click(phpbb.toggleDropdown); + $('.dropdown-toggle-submenu', ops.parent).click(phpbb.toggleSubmenu); +}; + +/** +* Get the HTML for a color palette table. +* +* @param {string} dir Palette direction - either v or h +* @param {int} width Palette cell width. +* @param {int} height Palette cell height. +*/ +phpbb.colorPalette = function(dir, width, height) { + var r, g, b, + numberList = new Array(6), + color = '', + html = ''; + + numberList[0] = '00'; + numberList[1] = '40'; + numberList[2] = '80'; + numberList[3] = 'BF'; + numberList[4] = 'FF'; + + var tableClass = (dir === 'h') ? 'horizontal-palette' : 'vertical-palette'; + html += ''; + + for (r = 0; r < 5; r++) { + if (dir === 'h') { + html += ''; + } + + for (g = 0; g < 5; g++) { + if (dir === 'v') { + html += ''; + } + + for (b = 0; b < 5; b++) { + color = '' + numberList[r] + numberList[g] + numberList[b]; + html += ''; + } + + if (dir === 'v') { + html += ''; + } + } + + if (dir === 'h') { + html += ''; + } + } + html += '
'; + html += '
'; + return html; +}; + +/** +* Register a color palette. +* +* @param {jQuery} el jQuery object for the palette container. +*/ +phpbb.registerPalette = function(el) { + var orientation = el.attr('data-orientation'), + height = el.attr('data-height'), + width = el.attr('data-width'), + target = el.attr('data-target'), + bbcode = el.attr('data-bbcode'); + + // Insert the palette HTML into the container. + el.html(phpbb.colorPalette(orientation, width, height)); + + // Add toggle control. + $('#color_palette_toggle').click(function(e) { + el.toggle(); + e.preventDefault(); + }); + + // Attach event handler when a palette cell is clicked. + $(el).on('click', 'a', function(e) { + var color = $(this).attr('data-color'); + + if (bbcode) { + bbfontstyle('[color=#' + color + ']', '[/color]'); + } else { + $(target).val(color); + } + e.preventDefault(); + }); +}; + +/** +* Set display of page element +* +* @param {string} id The ID of the element to change +* @param {int} action Set to 0 if element display should be toggled, -1 for +* hiding the element, and 1 for showing it. +* @param {string} type Display type that should be used, e.g. inline, block or +* other CSS "display" types +*/ +phpbb.toggleDisplay = function(id, action, type) { + if (!type) { + type = 'block'; + } + + var $element = $('#' + id); + + var display = $element.css('display'); + if (!action) { + action = (display === '' || display === type) ? -1 : 1; + } + $element.css('display', ((action === 1) ? type : 'none')); +}; + +/** +* Toggle additional settings based on the selected +* option of select element. +* +* @param {jQuery} el jQuery select element object. +*/ +phpbb.toggleSelectSettings = function(el) { + el.children().each(function() { + var $this = $(this), + $setting = $($this.data('toggle-setting')); + $setting.toggle($this.is(':selected')); + + // Disable any input elements that are not visible right now + if ($this.is(':selected')) { + $($this.data('toggle-setting') + ' input').prop('disabled', false); + } else { + $($this.data('toggle-setting') + ' input').prop('disabled', true); + } + }); +}; + +/** +* Get function from name. +* Based on http://stackoverflow.com/a/359910 +* +* @param {string} functionName Function to get. +* @returns function +*/ +phpbb.getFunctionByName = function (functionName) { + var namespaces = functionName.split('.'), + func = namespaces.pop(), + context = window; + + for (var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + } + return context[func]; +}; + +/** +* Register page dropdowns. +*/ +phpbb.registerPageDropdowns = function() { + var $body = $('body'); + + $body.find('.dropdown-container').each(function() { + var $this = $(this), + $trigger = $this.find('.dropdown-trigger:first'), + $contents = $this.find('.dropdown'), + options = { + direction: 'auto', + verticalDirection: 'auto' + }, + data; + + if (!$trigger.length) { + data = $this.attr('data-dropdown-trigger'); + $trigger = data ? $this.children(data) : $this.children('a:first'); + } + + if (!$contents.length) { + data = $this.attr('data-dropdown-contents'); + $contents = data ? $this.children(data) : $this.children('div:first'); + } + + if (!$trigger.length || !$contents.length) { + return; + } + + if ($this.hasClass('dropdown-up')) { + options.verticalDirection = 'up'; + } + if ($this.hasClass('dropdown-down')) { + options.verticalDirection = 'down'; + } + if ($this.hasClass('dropdown-left')) { + options.direction = 'left'; + } + if ($this.hasClass('dropdown-right')) { + options.direction = 'right'; + } + + phpbb.registerDropdown($trigger, $contents, options); + }); + + // Hide active dropdowns when click event happens outside + $body.click(function(e) { + var $parents = $(e.target).parents(); + if (!$parents.is(phpbb.dropdownVisibleContainers)) { + $(phpbb.dropdownHandles).each(phpbb.toggleDropdown); + } + }); +}; + +/** + * Handle avatars to be lazy loaded. + */ +phpbb.lazyLoadAvatars = function loadAvatars() { + $('.avatar[data-src]').each(function () { + var $avatar = $(this); + + $avatar + .attr('src', $avatar.data('src')) + .removeAttr('data-src'); + }); +}; + +$(window).load(phpbb.lazyLoadAvatars); + +/** +* Apply code editor to all textarea elements with data-bbcode attribute +*/ +$(function() { + $('textarea[data-bbcode]').each(function() { + phpbb.applyCodeEditor(this); + }); + + phpbb.registerPageDropdowns(); + + $('[data-orientation]').each(function() { + phpbb.registerPalette($(this)); + }); + + // Update browser history URL to point to specific post in viewtopic.php + // when using view=unread#unread link. + phpbb.history.replaceUrl($('#unread[data-url]').data('url')); + + // Hide settings that are not selected via select element. + $('select[data-togglable-settings]').each(function() { + var $this = $(this); + + $this.change(function() { + phpbb.toggleSelectSettings($this); + }); + phpbb.toggleSelectSettings($this); + }); +}); + +})(jQuery); // Avoid conflicts with other libraries diff --git a/assets/javascript/editor.js b/assets/javascript/editor.js new file mode 100644 index 00000000..23244f5a --- /dev/null +++ b/assets/javascript/editor.js @@ -0,0 +1,425 @@ +/** +* bbCode control by subBlue design [ www.subBlue.com ] +* Includes unixsafe colour palette selector by SHS` +*/ + +// Startup variables +var imageTag = false; +var theSelection = false; +var bbcodeEnabled = true; + +// Check for Browser & Platform for PC & IE specific bits +// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html +var clientPC = navigator.userAgent.toLowerCase(); // Get client info +var clientVer = parseInt(navigator.appVersion, 10); // Get browser version + +var is_ie = ((clientPC.indexOf('msie') !== -1) && (clientPC.indexOf('opera') === -1)); +var is_win = ((clientPC.indexOf('win') !== -1) || (clientPC.indexOf('16bit') !== -1)); +var baseHeight; + +/** +* Shows the help messages in the helpline window +*/ +function helpline(help) { + document.forms[form_name].helpbox.value = help_line[help]; +} + +/** +* Fix a bug involving the TextRange object. From +* http://www.frostjedi.com/terra/scripts/demo/caretBug.html +*/ +function initInsertions() { + var doc; + + if (document.forms[form_name]) { + doc = document; + } else { + doc = opener.document; + } + + var textarea = doc.forms[form_name].elements[text_name]; + + if (is_ie && typeof(baseHeight) !== 'number') { + textarea.focus(); + baseHeight = doc.selection.createRange().duplicate().boundingHeight; + + if (!document.forms[form_name]) { + document.body.focus(); + } + } +} + +/** +* bbstyle +*/ +function bbstyle(bbnumber) { + if (bbnumber !== -1) { + bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]); + } else { + insert_text('[*]'); + document.forms[form_name].elements[text_name].focus(); + } +} + +/** +* Apply bbcodes +*/ +function bbfontstyle(bbopen, bbclose) { + theSelection = false; + + var textarea = document.forms[form_name].elements[text_name]; + + textarea.focus(); + + if ((clientVer >= 4) && is_ie && is_win) { + // Get text selection + theSelection = document.selection.createRange().text; + + if (theSelection) { + // Add tags around selection + document.selection.createRange().text = bbopen + theSelection + bbclose; + textarea.focus(); + theSelection = ''; + return; + } + } else if (textarea.selectionEnd && (textarea.selectionEnd - textarea.selectionStart > 0)) { + mozWrap(textarea, bbopen, bbclose); + textarea.focus(); + theSelection = ''; + return; + } + + //The new position for the cursor after adding the bbcode + var caret_pos = getCaretPosition(textarea).start; + var new_pos = caret_pos + bbopen.length; + + // Open tag + insert_text(bbopen + bbclose); + + // Center the cursor when we don't have a selection + // Gecko and proper browsers + if (!isNaN(textarea.selectionStart)) { + textarea.selectionStart = new_pos; + textarea.selectionEnd = new_pos; + } + // IE + else if (document.selection) { + var range = textarea.createTextRange(); + range.move("character", new_pos); + range.select(); + storeCaret(textarea); + } + + textarea.focus(); +} + +/** +* Insert text at position +*/ +function insert_text(text, spaces, popup) { + var textarea; + + if (!popup) { + textarea = document.forms[form_name].elements[text_name]; + } else { + textarea = opener.document.forms[form_name].elements[text_name]; + } + + if (spaces) { + text = ' ' + text + ' '; + } + + // Since IE9, IE also has textarea.selectionStart, but it still needs to be treated the old way. + // Therefore we simply add a !is_ie here until IE fixes the text-selection completely. + if (!isNaN(textarea.selectionStart) && !is_ie) { + var sel_start = textarea.selectionStart; + var sel_end = textarea.selectionEnd; + + mozWrap(textarea, text, ''); + textarea.selectionStart = sel_start + text.length; + textarea.selectionEnd = sel_end + text.length; + } else if (textarea.createTextRange && textarea.caretPos) { + if (baseHeight !== textarea.caretPos.boundingHeight) { + textarea.focus(); + storeCaret(textarea); + } + + var caret_pos = textarea.caretPos; + caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) === ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; + } else { + textarea.value = textarea.value + text; + } + + if (!popup) { + textarea.focus(); + } +} + +/** +* Add inline attachment at position +*/ +function attachInline(index, filename) { + insert_text('[attachment=' + index + ']' + filename + '[/attachment]'); + document.forms[form_name].elements[text_name].focus(); +} + +/** +* Add quote text to message +*/ +function addquote(post_id, username, l_wrote, attributes) { + var message_name = 'message_' + post_id; + var theSelection = ''; + var divarea = false; + var i; + + if (l_wrote === undefined) { + // Backwards compatibility + l_wrote = 'wrote'; + } + if (typeof attributes !== 'object') { + attributes = {}; + } + + if (document.all) { + divarea = document.all[message_name]; + } else { + divarea = document.getElementById(message_name); + } + + // Get text selection - not only the post content :( + // IE9 must use the document.selection method but has the *.getSelection so we just force no IE + if (window.getSelection && !is_ie && !window.opera) { + theSelection = window.getSelection().toString(); + } else if (document.getSelection && !is_ie) { + theSelection = document.getSelection(); + } else if (document.selection) { + theSelection = document.selection.createRange().text; + } + + if (theSelection === '' || typeof theSelection === 'undefined' || theSelection === null) { + if (divarea.innerHTML) { + theSelection = divarea.innerHTML.replace(/
/ig, '\n'); + theSelection = theSelection.replace(//ig, '\n'); + theSelection = theSelection.replace(/<\;/ig, '<'); + theSelection = theSelection.replace(/>\;/ig, '>'); + theSelection = theSelection.replace(/&\;/ig, '&'); + theSelection = theSelection.replace(/ \;/ig, ' '); + } else if (document.all) { + theSelection = divarea.innerText; + } else if (divarea.textContent) { + theSelection = divarea.textContent; + } else if (divarea.firstChild.nodeValue) { + theSelection = divarea.firstChild.nodeValue; + } + } + + if (theSelection) { + if (bbcodeEnabled) { + attributes.author = username; + insert_text(generateQuote(theSelection, attributes)); + } else { + insert_text(username + ' ' + l_wrote + ':' + '\n'); + var lines = split_lines(theSelection); + for (i = 0; i < lines.length; i++) { + insert_text('> ' + lines[i] + '\n'); + } + } + } +} + +/** +* Create a quote block for given text +* +* Possible attributes: +* - author: author's name (usually a username) +* - post_id: post_id of the post being quoted +* - user_id: user_id of the user being quoted +* - time: timestamp of the original message +* +* @param {!string} text Quote's text +* @param {!Object} attributes Quote's attributes +* @return {!string} Quote block to be used in a new post/text +*/ +function generateQuote(text, attributes) { + text = text.replace(/^\s+/, '').replace(/\s+$/, ''); + var quote = '[quote'; + if (attributes.author) { + // Add the author as the BBCode's default attribute + quote += '=' + formatAttributeValue(attributes.author); + delete attributes.author; + } + for (var name in attributes) { + if (attributes.hasOwnProperty(name)) { + var value = attributes[name]; + quote += ' ' + name + '=' + formatAttributeValue(value.toString()); + } + } + quote += ']'; + var newline = ((quote + text + '[/quote]').length > 80 || text.indexOf('\n') > -1) ? '\n' : ''; + quote += newline + text + newline + '[/quote]'; + + return quote; +} + +/** +* Format given string to be used as an attribute value +* +* Will return the string as-is if it can be used in a BBCode without quotes. Otherwise, +* it will use either single- or double- quotes depending on whichever requires less escaping. +* Quotes and backslashes are escaped with backslashes where necessary +* +* @param {!string} str Original string +* @return {!string} Same string if possible, escaped string within quotes otherwise +*/ +function formatAttributeValue(str) { + if (!/[ "'\\\]]/.test(str)) { + // Return as-is if it contains none of: space, ' " \ or ] + return str; + } + var singleQuoted = "'" + str.replace(/[\\']/g, '\\$&') + "'", + doubleQuoted = '"' + str.replace(/[\\"]/g, '\\$&') + '"'; + + return (singleQuoted.length < doubleQuoted.length) ? singleQuoted : doubleQuoted; +} + +function split_lines(text) { + var lines = text.split('\n'); + var splitLines = new Array(); + var j = 0; + var i; + + for(i = 0; i < lines.length; i++) { + if (lines[i].length <= 80) { + splitLines[j] = lines[i]; + j++; + } else { + var line = lines[i]; + var splitAt; + do { + splitAt = line.indexOf(' ', 80); + + if (splitAt === -1) { + splitLines[j] = line; + j++; + } else { + splitLines[j] = line.substring(0, splitAt); + line = line.substring(splitAt); + j++; + } + } + while(splitAt !== -1); + } + } + return splitLines; +} + +/** +* From http://www.massless.org/mozedit/ +*/ +function mozWrap(txtarea, open, close) { + var selLength = (typeof(txtarea.textLength) === 'undefined') ? txtarea.value.length : txtarea.textLength; + var selStart = txtarea.selectionStart; + var selEnd = txtarea.selectionEnd; + var scrollTop = txtarea.scrollTop; + + var s1 = (txtarea.value).substring(0,selStart); + var s2 = (txtarea.value).substring(selStart, selEnd); + var s3 = (txtarea.value).substring(selEnd, selLength); + + txtarea.value = s1 + open + s2 + close + s3; + txtarea.selectionStart = selStart + open.length; + txtarea.selectionEnd = selEnd + open.length; + txtarea.focus(); + txtarea.scrollTop = scrollTop; + + return; +} + +/** +* Insert at Caret position. Code from +* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130 +*/ +function storeCaret(textEl) { + if (textEl.createTextRange && document.selection) { + textEl.caretPos = document.selection.createRange().duplicate(); + } +} + +/** +* Caret Position object +*/ +function caretPosition() { + var start = null; + var end = null; +} + +/** +* Get the caret position in an textarea +*/ +function getCaretPosition(txtarea) { + var caretPos = new caretPosition(); + + // simple Gecko/Opera way + if (txtarea.selectionStart || txtarea.selectionStart === 0) { + caretPos.start = txtarea.selectionStart; + caretPos.end = txtarea.selectionEnd; + } + // dirty and slow IE way + else if (document.selection) { + // get current selection + var range = document.selection.createRange(); + + // a new selection of the whole textarea + var range_all = document.body.createTextRange(); + range_all.moveToElementText(txtarea); + + // calculate selection start point by moving beginning of range_all to beginning of range + var sel_start; + for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++) { + range_all.moveStart('character', 1); + } + + txtarea.sel_start = sel_start; + + // we ignore the end value for IE, this is already dirty enough and we don't need it + caretPos.start = txtarea.sel_start; + caretPos.end = txtarea.sel_start; + } + + return caretPos; +} + +/** +* Allow to use tab character when typing code +* Keep indentation of last line of code when typing code +*/ +(function($) { + $(document).ready(function() { + var doc, textarea; + + // find textarea, make sure browser supports necessary functions + if (document.forms[form_name]) { + doc = document; + } else { + doc = opener.document; + } + + if (!doc.forms[form_name]) { + return; + } + + textarea = doc.forms[form_name].elements[text_name]; + + phpbb.applyCodeEditor(textarea); + if ($('#attach-panel').length) { + phpbb.showDragNDrop(textarea); + } + + $('textarea').on('keydown', function (e) { + if (e.which === 13 && (e.metaKey || e.ctrlKey)) { + $(this).closest('form').find(':submit').click(); + } + }); + }); +})(jQuery); + diff --git a/assets/javascript/installer.js b/assets/javascript/installer.js new file mode 100644 index 00000000..a11b76b8 --- /dev/null +++ b/assets/javascript/installer.js @@ -0,0 +1,615 @@ +/** + * Installer's AJAX frontend handler + */ + +(function($) { // Avoid conflicts with other libraries + 'use strict'; + + // Installer variables + var pollTimer = null; + var nextReadPosition = 0; + var progressBarTriggered = false; + var progressTimer = null; + var currentProgress = 0; + var refreshRequested = false; + var transmissionOver = false; + var statusCount = 0; + + // Template related variables + var $contentWrapper = $('.install-body').find('.main'); + + // Intercept form submits + interceptFormSubmit($('#install_install')); + + /** + * Creates an XHR object + * + * jQuery cannot be used as the response is streamed, and + * as of now, jQuery does not provide access to the response until + * the connection is not closed. + * + * @return XMLHttpRequest + */ + function createXhrObject() { + return new XMLHttpRequest(); + } + + /** + * Displays error, warning and log messages + * + * @param type + * @param messages + */ + function addMessage(type, messages) { + // Get message containers + var $errorContainer = $('#error-container'); + var $warningContainer = $('#warning-container'); + var $logContainer = $('#log-container'); + + var $title, $description, $msgElement, arraySize = messages.length; + for (var i = 0; i < arraySize; i++) { + $msgElement = $('
'); + $title = $(''); + $title.text(messages[i].title); + $msgElement.append($title); + + if (messages[i].hasOwnProperty('description')) { + $description = $('

'); + $description.html(messages[i].description); + $msgElement.append($description); + } + + switch (type) { + case 'error': + $msgElement.addClass('errorbox'); + $errorContainer.append($msgElement); + break; + case 'warning': + $msgElement.addClass('warningbox'); + $warningContainer.append($msgElement); + break; + case 'log': + $msgElement.addClass('log'); + $logContainer.prepend($msgElement); + $logContainer.addClass('show_log_container'); + break; + case 'success': + $msgElement.addClass('successbox'); + $errorContainer.prepend($msgElement); + break; + } + } + } + + /** + * Render a download box + */ + function addDownloadBox(downloadArray) + { + var $downloadContainer = $('#download-wrapper'); + var $downloadBox, $title, $content, $link; + + for (var i = 0; i < downloadArray.length; i++) { + $downloadBox = $('

'); + $downloadBox.addClass('download-box'); + + $title = $(''); + $title.text(downloadArray[i].title); + $downloadBox.append($title); + + if (downloadArray[i].hasOwnProperty('msg')) { + $content = $('

'); + $content.text(downloadArray[i].msg); + $downloadBox.append($content); + } + + $link = $(''); + $link.addClass('button1'); + $link.attr('href', downloadArray[i].href); + $link.text(downloadArray[i].download); + $downloadBox.append($link); + + $downloadContainer.append($downloadBox); + } + } + + /** + * Render update files' status + */ + function addUpdateFileStatus(fileStatus) + { + var $statusContainer = $('#file-status-wrapper'); + $statusContainer.html(fileStatus); + } + + /** + * Displays a form from the response + * + * @param formHtml + */ + function addForm(formHtml) { + var $formContainer = $('#form-wrapper'); + $formContainer.html(formHtml); + var $form = $('#install_install'); + interceptFormSubmit($form); + } + + /** + * Handles navigation status updates + * + * @param navObj + */ + function updateNavbarStatus(navObj) { + var navID, $stage, $stageListItem, $active; + $active = $('#activemenu'); + + if (navObj.hasOwnProperty('finished')) { + // This should be an Array + var navItems = navObj.finished; + + for (var i = 0; i < navItems.length; i++) { + navID = 'installer-stage-' + navItems[i]; + $stage = $('#' + navID); + $stageListItem = $stage.parent(); + + if ($active.length && $active.is($stageListItem)) { + $active.removeAttr('id'); + } + + $stage.addClass('completed'); + } + } + + if (navObj.hasOwnProperty('active')) { + navID = 'installer-stage-' + navObj.active; + $stage = $('#' + navID); + $stageListItem = $stage.parent(); + + if ($active.length && !$active.is($stageListItem)) { + $active.removeAttr('id'); + } + + $stageListItem.attr('id', 'activemenu'); + } + } + + /** + * Renders progress bar + * + * @param progressObject + */ + function setProgress(progressObject) { + var $statusText, $progressBar, $progressText, $progressFiller, $progressFillerText; + + if (progressObject.task_name.length) { + if (!progressBarTriggered) { + // Create progress bar + var $progressBarWrapper = $('#progress-bar-container'); + + // Create progress bar elements + $progressBar = $('

'); + $progressBar.attr('id', 'progress-bar'); + $progressText = $('

'); + $progressText.attr('id', 'progress-bar-text'); + $progressFiller = $('

'); + $progressFiller.attr('id', 'progress-bar-filler'); + $progressFillerText = $('

'); + $progressFillerText.attr('id', 'progress-bar-filler-text'); + + $statusText = $('

'); + $statusText.attr('id', 'progress-status-text'); + + $progressFiller.append($progressFillerText); + $progressBar.append($progressText); + $progressBar.append($progressFiller); + + $progressBarWrapper.append($statusText); + $progressBarWrapper.append($progressBar); + + $progressFillerText.css('width', $progressBar.width()); + + progressBarTriggered = true; + } else if (progressObject.hasOwnProperty('restart')) { + clearInterval(progressTimer); + + $progressFiller = $('#progress-bar-filler'); + $progressFillerText = $('#progress-bar-filler-text'); + $progressText = $('#progress-bar-text'); + $statusText = $('#progress-status-text'); + + $progressText.text('0%'); + $progressFillerText.text('0%'); + $progressFiller.css('width', '0%'); + + currentProgress = 0; + } else { + $statusText = $('#progress-status-text'); + } + + // Update progress bar + $statusText.text(progressObject.task_name + '…'); + incrementProgressBar(Math.round(progressObject.task_num / progressObject.task_count * 100)); + } + } + + // Set cookies + function setCookies(cookies) { + var cookie; + + for (var i = 0; i < cookies.length; i++) { + // Set cookie name and value + cookie = encodeURIComponent(cookies[i].name) + '=' + encodeURIComponent(cookies[i].value); + // Set path + cookie += '; path=/'; + document.cookie = cookie; + } + } + + // Redirects user + function redirect(url, use_ajax) { + if (use_ajax) { + resetPolling(); + + var xhReq = createXhrObject(); + xhReq.open('GET', url, true); + xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhReq.send(); + + startPolling(xhReq); + } else { + window.location.href = url; + } + } + + /** + * Parse messages from the response object + * + * @param messageJSON + */ + function parseMessage(messageJSON) { + $('#loading_indicator').css('display', 'none'); + var responseObject; + + try { + responseObject = JSON.parse(messageJSON); + } catch (err) { + if (window.console) { + console.log('Failed to parse JSON object\n\nMessage: ' + err.message + '\n\nServer Response: ' + messageJSON); + } else { + alert('Failed to parse JSON object\n\nMessage: ' + err.message + '\n\nServer Response: ' + messageJSON); + } + + resetPolling(); + return; + } + + // Parse object + if (responseObject.hasOwnProperty('errors')) { + addMessage('error', responseObject.errors); + } + + if (responseObject.hasOwnProperty('warnings')) { + addMessage('warning', responseObject.warnings); + } + + if (responseObject.hasOwnProperty('logs')) { + addMessage('log', responseObject.logs); + } + + if (responseObject.hasOwnProperty('success')) { + addMessage('success', responseObject.success); + } + + if (responseObject.hasOwnProperty('form')) { + addForm(responseObject.form); + } + + if (responseObject.hasOwnProperty('progress')) { + setProgress(responseObject.progress); + } + + if (responseObject.hasOwnProperty('download')) { + addDownloadBox(responseObject.download); + } + + if (responseObject.hasOwnProperty('file_status')) { + addUpdateFileStatus(responseObject.file_status); + } + + if (responseObject.hasOwnProperty('nav')) { + updateNavbarStatus(responseObject.nav); + } + + if (responseObject.hasOwnProperty('cookies')) { + setCookies(responseObject.cookies); + } + + if (responseObject.hasOwnProperty('refresh')) { + refreshRequested = true; + } + + if (responseObject.hasOwnProperty('redirect')) { + redirect(responseObject.redirect.url, responseObject.redirect.use_ajax); + } + + if (responseObject.hasOwnProperty('over')) { + if (responseObject.over) { + transmissionOver = true; + } + } + } + + /** + * Processes status data + * + * @param status + */ + function processTimeoutResponse(status) { + if (statusCount === 12) { // 1 minute hard cap + status = 'fail'; + } + + if (status === 'continue') { + refreshRequested = false; + doRefresh(); + } else if (status === 'running') { + statusCount++; + $('#loading_indicator').css('display', 'block'); + setTimeout(queryInstallerStatus, 5000); + } else { + $('#loading_indicator').css('display', 'none'); + addMessage('error', + [{ + title: installLang.title, + description: installLang.msg + }] + ); + } + } + + /** + * Queries the installer's status + */ + function queryInstallerStatus() { + var url = $(location).attr('pathname'); + var lookUp = 'install/app.php'; + var position = url.indexOf(lookUp); + + if (position === -1) { + lookUp = 'install'; + position = url.indexOf(lookUp); + + if (position === -1) { + return false; + } + } + + url = url.substring(0, position) + lookUp + '/installer/status'; + $.getJSON(url, function(data) { + processTimeoutResponse(data.status); + }); + } + + /** + * Process updates in streamed response + * + * @param xhReq XHR object + */ + function pollContent(xhReq) { + var messages = xhReq.responseText; + var msgSeparator = '}\n\n'; + var unprocessed, messageEndIndex, endOfMessageIndex, message; + + do { + unprocessed = messages.substring(nextReadPosition); + messageEndIndex = unprocessed.indexOf(msgSeparator); + + if (messageEndIndex !== -1) { + endOfMessageIndex = messageEndIndex + msgSeparator.length; + message = unprocessed.substring(0, endOfMessageIndex); + parseMessage($.trim(message)); + nextReadPosition += endOfMessageIndex; + } + } while (messageEndIndex !== -1); + + if (xhReq.readyState === 4) { + $('#loading_indicator').css('display', 'none'); + resetPolling(); + + var timeoutDetected = !transmissionOver; + + if (refreshRequested) { + refreshRequested = false; + doRefresh(); + } + + if (timeoutDetected) { + statusCount = 0; + queryInstallerStatus(); + } + } + } + + /** + * Animates the progress bar + * + * @param $progressText + * @param $progressFiller + * @param $progressFillerText + * @param progressLimit + */ + function incrementFiller($progressText, $progressFiller, $progressFillerText, progressLimit) { + if (currentProgress >= progressLimit || currentProgress >= 100) { + clearInterval(progressTimer); + return; + } + + var $progressBar = $('#progress-bar'); + + currentProgress++; + $progressFillerText.css('width', $progressBar.width()); + $progressFillerText.text(currentProgress + '%'); + $progressText.text(currentProgress + '%'); + $progressFiller.css('width', currentProgress + '%'); + } + + /** + * Wrapper function for progress bar rendering and animating + * + * @param progressLimit + */ + function incrementProgressBar(progressLimit) { + var $progressFiller = $('#progress-bar-filler'); + var $progressFillerText = $('#progress-bar-filler-text'); + var $progressText = $('#progress-bar-text'); + var progressStart = $progressFiller.width() / $progressFiller.offsetParent().width() * 100; + currentProgress = Math.floor(progressStart); + + clearInterval(progressTimer); + progressTimer = setInterval(function() { + incrementFiller($progressText, $progressFiller, $progressFillerText, progressLimit); + }, 10); + } + + /** + * Resets the polling timer + */ + function resetPolling() { + clearInterval(pollTimer); + nextReadPosition = 0; + } + + /** + * Sets up timer for processing the streamed HTTP response + * + * @param xhReq + */ + function startPolling(xhReq) { + resetPolling(); + transmissionOver = false; + pollTimer = setInterval(function () { + pollContent(xhReq); + }, 250); + } + + /** + * Refresh page + */ + function doRefresh() { + resetPolling(); + + var xhReq = createXhrObject(); + xhReq.open('GET', $(location).attr('pathname'), true); + xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhReq.send(); + + startPolling(xhReq); + } + + /** + * Renders the AJAX UI layout + */ + function setupAjaxLayout() { + progressBarTriggered = false; + + // Clear content + $contentWrapper.html(''); + + var $header = $('

'); + $header.attr('id', 'header-container'); + $contentWrapper.append($header); + + var $description = $('
'); + $description.attr('id', 'description-container'); + $contentWrapper.append($description); + + var $errorContainer = $('
'); + $errorContainer.attr('id', 'error-container'); + $contentWrapper.append($errorContainer); + + var $warningContainer = $('
'); + $warningContainer.attr('id', 'warning-container'); + $contentWrapper.append($warningContainer); + + var $progressContainer = $('
'); + $progressContainer.attr('id', 'progress-bar-container'); + $contentWrapper.append($progressContainer); + + var $logContainer = $('
'); + $logContainer.attr('id', 'log-container'); + $contentWrapper.append($logContainer); + + var $installerContentWrapper = $('
'); + $installerContentWrapper.attr('id', 'content-container'); + $contentWrapper.append($installerContentWrapper); + + var $installerDownloadWrapper = $('
'); + $installerDownloadWrapper.attr('id', 'download-wrapper'); + $installerContentWrapper.append($installerDownloadWrapper); + + var $updaterFileStatusWrapper = $('
'); + $updaterFileStatusWrapper.attr('id', 'file-status-wrapper'); + $installerContentWrapper.append($updaterFileStatusWrapper); + + var $formWrapper = $('
'); + $formWrapper.attr('id', 'form-wrapper'); + $installerContentWrapper.append($formWrapper); + + var $spinner = $('
'); + $spinner.attr('id', 'loading_indicator'); + $spinner.html(' '); + $contentWrapper.append($spinner); + } + + // Submits a form + function submitForm($form, $submitBtn) { + $form.css('display', 'none'); + + var xhReq = createXhrObject(); + xhReq.open('POST', $form.attr('action'), true); + xhReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + xhReq.send(getFormFields($form, $submitBtn)); + + // Disable language selector + $('#language_selector :input, label').css('display', 'none'); + + // Clear content + setupAjaxLayout(); + $('#loading_indicator').css('display', 'block'); + + startPolling(xhReq); + } + + /** + * Add submit button to the POST information + * + * @param $form + * @param $submitBtn + * + * @returns {*} + */ + function getFormFields($form, $submitBtn) { + var formData = $form.serialize(); + formData += ((formData.length) ? '&' : '') + encodeURIComponent($submitBtn.attr('name')) + '='; + formData += encodeURIComponent($submitBtn.attr('value')); + + return formData; + } + + /** + * Intercept form submit events and determine the submit button used + * + * @param $form + */ + function interceptFormSubmit($form) { + if (!$form.length) { + return; + } + + $form.find(':submit').bind('click', function (event) { + event.preventDefault(); + submitForm($form, $(this)); + }); + } +})(jQuery); // Avoid conflicts with other libraries diff --git a/assets/javascript/jquery.min.js b/assets/javascript/jquery.min.js new file mode 100644 index 00000000..73f33fb3 --- /dev/null +++ b/assets/javascript/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f +}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,w=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),w.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})},destroy:function(){this.getRuntime().getShim().removeInstance(this.uid)}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}); +/** + * Plupload - multi-runtime File Uploader + * v2.3.3 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2017-08-28 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size&&e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart!==!1||(n.send_binary_string=!0),e.http_method&&(n.use_http_method=e.http_method),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.3.3",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,moxie:t,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.addFileFilter("prevent_empty",function(e,t,n){e&&!t.size&&t.size!==i?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),n(!1)):n(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t,n,r=0;for(I.reset(),e=0;eS)&&(r+=n),I.loaded+=n):I.size=i,t.status==l.DONE?I.uploaded++:t.status==l.FAILED?I.failed++:I.queued++;I.size===i?I.percent=D.length>0?Math.ceil(100*(I.uploaded/D.length)):0:(I.bytesPerSec=Math.ceil(r/((+new Date-S||1)/1e3)),I.percent=I.size>0?Math.ceil(100*(I.loaded/I.size)):0)}function c(){var e=F[0]||P[0];return e?e.getRuntime().uid:!1}function f(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",b),this.bind("BeforeUpload",m),this.bind("UploadFile",_),this.bind("UploadProgress",E),this.bind("StateChanged",v),this.bind("QueueChanged",d),this.bind("Error",R),this.bind("FileUploaded",y),this.bind("Destroy",z)}function p(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:x,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,F.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function g(e,n,r,s){var a=new t.image.Image;try{a.onload=function(){n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),s(e)):a.downsize(n.width,n.height,n.crop,n.preserve_headers)},a.onresize=function(){var t=this.getAsBlob(e.type,n.quality);this.destroy(),s(t)},a.bind("error runtimeerror",function(){this.destroy(),s(e)}),a.load(e,r)}catch(o){s(e)}}function h(e,i,r){function s(e,i,n){var r=O[e];switch(e){case"max_file_size":"max_file_size"===e&&(O.max_file_size=O.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(O[e]=i,O.send_file_name=!0);break;case"multipart":O[e]=i,i||(O.send_file_name=!0);break;case"http_method":O[e]="PUT"===i.toUpperCase()?"PUT":"POST";break;case"unique_names":O[e]=i,i&&(O.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(O.filters,i):O.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),O.filters.mime_types=i.mime_types);break;case"resize":O.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":O.prevent_duplicates=O.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":O[e]=i,n||(u=!0);break;default:O[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(O.required_features=n(l.extend({},O)),x=n(l.extend({},O,{required_features:!0}))):u&&(a.trigger("Destroy"),p.call(a,O,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function _(e,i){function n(){c-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()}))}function s(){var t,n,r={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(r.name=i.target_name||i.name),d&&f.chunks&&o.size>d?(n=Math.min(d,o.size-p),t=o.slice(p,p+n)):(n=o.size,t=o),d&&f.chunks&&(e.settings.send_chunk_number?(r.chunk=Math.ceil(p/d),r.chunks=Math.ceil(o.size/d)):(r.offset=p,r.total=o.size)),e.trigger("BeforeChunkUpload",i,r,t,p)&&a(r,t,n))}function a(a,d,g){var m;T=new t.xhr.XMLHttpRequest,T.upload&&(T.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),T.onload=function(){return T.status<200&&T.status>=400?(n(),void 0):(c=e.settings.max_retries,g=o.size?(i.size!=i.origSize&&(o.destroy(),o=null),e.trigger("UploadProgress",i),i.status=l.DONE,i.completeTimestamp=+new Date,e.trigger("FileUploaded",i,{response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()})):r(s,1),void 0)},T.onerror=function(){n()},T.onloadend=function(){this.destroy()},e.settings.multipart&&f.multipart?(T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),m=new t.xhr.FormData,l.each(l.extend(a,e.settings.multipart_params),function(e,t){m.append(t,e)}),m.append(e.settings.file_data_name,d),T.send(m,h)):(u=l.buildUrl(e.settings.url,l.extend(a,e.settings.multipart_params)),T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),T.hasRequestHeader("Content-Type")||T.setRequestHeader("Content-Type","application/octet-stream"),T.send(d,h))}var o,u=e.settings.url,d=e.settings.chunk_size,c=e.settings.max_retries,f=e.features,p=0,h={runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:x,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url};i.loaded&&(p=i.loaded=d?d*Math.floor(i.loaded/d):0),o=i.getSource(),l.isEmptyObj(e.settings.resize)||-1===l.inArray(o.type,["image/jpeg","image/png"])?s():g(o,e.settings.resize,h,function(e){o=e,i.size=e.size,s()})}function E(e,t){u(t)}function v(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function b(){T&&T.abort()}function y(e){d(),r(function(){a.call(e)},1)}function R(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,t.file.completeTimestamp=+new Date,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function z(e){e.stop(),l.each(D,function(e){e.destroy()}),D=[],F.length&&(l.each(F,function(e){e.destroy()}),F=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),x={},U=!1,S=T=null,I.reset()}var O,S,I,T,w=l.guid(),D=[],x={},F=[],P=[],U=!1;O={chunk_size:0,file_data_name:"file",filters:{mime_types:[],max_file_size:0,prevent_duplicates:!1,prevent_empty:!0},flash_swf_url:"js/Moxie.swf",http_method:"POST",max_retries:0,multipart:!0,multi_selection:!0,resize:!1,runtimes:o.order,send_file_name:!0,send_chunk_number:!0,silverlight_xap_url:"js/Moxie.xap"},h.call(this,e,null,!0),I=new l.QueueProgress,l.extend(this,{id:w,uid:w,state:l.STOPPED,features:{},runtime:null,files:D,settings:O,total:I,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),f.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):O.browse_button||O.drop_element?(p.call(i,O,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){h.call(this,e,t,!this.runtime)},getOption:function(e){return e?O[e]:O},refresh:function(){F.length&&l.each(F,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,F.length&&l.each(F,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=D.length-1;t>=0;t--)if(D[t].id===e)return D[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(D.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=D.length-1;i>=0;i--)if(D[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=D.splice(e===i?0:e,t===i?D.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n= 4.1.0, PHP 5, PHP 7) +*/ +@define('PHP_VERSION_MX', PHP_VERSION); // If we are on PHP >= 6.0.0 we do not need some code if (version_compare(PHP_VERSION, '5.3.0', '>=')) @@ -167,11 +173,123 @@ function deregister_globals() die("Hacking attempt"); } -/* -* Define some basic configuration arrays this also prevents -* malicious rewriting of language and otherarray values via -* URI params -*/ +if (@ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on') +{ + // PHP4+ path + $not_unset = array('_GET', '_POST', '_COOKIE', '_SERVER', '_SESSION', '_ENV', '_POST', 'phpEx', 'phpbb_root_path', 'mx_root_path'); + + // Not only will array_merge give a warning if a parameter + // is not an array, it will actually fail. So we check if + // _SESSION has been initialised. + if (!isset($_SESSION) || !is_array($_SESSION)) + { + $_SESSION = array(); + } + + // Merge all into one extremely huge array; unset + // this later + // + // Note! Since array_merge() destroys numerical keys - if the array is numerically indexed, the keys get reindexed in a continuous way - we use the + operator instead + // + //$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_SESSION, $_ENV, $_POST); + $input = $_GET + $_POST + $_COOKIE + $_SERVER + $_SESSION + $_ENV + $_POST; + + unset($input['input']); + unset($input['not_unset']); + + while (list($var,) = @each($input)) + { + if (in_array($var, $not_unset)) + { + die('Hacking attempt!'); + } + unset($$var); + } + unset($input); +} + +// +// addslashes to vars if magic_quotes_gpc is off +// this is a security precaution to prevent someone +// trying to break out of a SQL statement. +// +// If we are on PHP >= 6.0.0 we do not need some code +if ( (@phpversion() < '5.3.0') or ( @function_exists('get_magic_quotes_gpc') && !@get_magic_quotes_gpc() ) ) +{ + if( is_array($_GET) ) + { + while( list($k, $v) = each($_GET) ) + { + if( is_array($_GET[$k]) ) + { + while( list($k2, $v2) = each($_GET[$k]) ) + { + $_GET[$k][$k2] = addslashes($v2); + } + @reset($_GET[$k]); + } + else + { + $_GET[$k] = addslashes($v); + } + } + @reset($_GET); + } + + if( is_array($_POST) ) + { + while( list($k, $v) = each($_POST) ) + { + if( is_array($_POST[$k]) ) + { + while( list($k2, $v2) = each($_POST[$k]) ) + { + $_POST[$k][$k2] = addslashes($v2); + } + @reset($_POST[$k]); + } + else + { + $_POST[$k] = addslashes($v); + } + } + @reset($_POST); + } + + if( is_array($_COOKIE) ) + { + while( list($k, $v) = each($_COOKIE) ) + { + if( is_array($_COOKIE[$k]) ) + { + while( list($k2, $v2) = each($_COOKIE[$k]) ) + { + $_COOKIE[$k][$k2] = addslashes($v2); + } + @reset($_COOKIE[$k]); + } + else + { + $_COOKIE[$k] = addslashes($v); + } + } + @reset($_COOKIE); + } +} + +// +// Temp fix for timezone +// +if (@function_exists('date_default_timezone_set') && @function_exists('date_default_timezone_get')) +{ + @date_default_timezone_set(@date_default_timezone_get()); +} + +// +// Define some basic configuration arrays this also prevents +// malicious rewriting of language and otherarray values via +// URI params +// $board_config = array(); $portal_config = array(); $userdata = array(); @@ -205,6 +323,8 @@ function deregister_globals() require($mx_root_path . INCLUDES . 'utf/utf_tools.' . $phpEx); //Load UTF-8 Tools require($mx_root_path . INCLUDES . 'mx_functions_core.' . $phpEx); // CORE class +require($mx_root_path . 'vendor/paragonie/random_compat/lib/random.' . $phpEx); + // Setup class loader first if (@phpversion() >= '5.1.2') { @@ -225,7 +345,6 @@ function deregister_globals() */ $mx_cache = new mx_cache(); - /* * Define Users/Group/Sessions backend, and validate * Set $portal_config, $phpbb_root_path, $tplEx, $table_prefix & PORTAL_BACKEND @@ -239,6 +358,26 @@ function deregister_globals() @date_default_timezone_set(@date_default_timezone_get()); } +// +// instatiate the mx_backend class +// +$mx_backend = new mx_backend(); + +// +// Define some general backend definitions +// PORTAL_URL, PHPBB_URL, PORTAL_VERSION & $board_config +// +$mx_backend->setup_backend(); + +// +// Instantiate Dummy phpBB Classes +// +if( class_exists('phpBB2')) +{ + $phpBB2 = new phpBB2(); +} +$phpBB3 = new phpBB3(); + // // MX-Publisher Includes - doing the rest // @@ -258,6 +397,12 @@ function deregister_globals() // $mx_user = new mx_user(); +/** +* Instantiate the mx_language class +* $language->_load_lang($mx_root_path, 'lang_main'); +*/ +$language = new mx_language(); + // // Instantiate the mx_page (CORE) class // @@ -271,14 +416,8 @@ function deregister_globals() // // Obtain and encode users IP // -$client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : getenv('REMOTE_ADDR') ); -$user_ip = phpBB2::encode_ip($client_ip); - -// -// Define some general backend definitions -// PORTAL_URL, PHPBB_URL, PORTAL_VERSION & $board_config -// -$mx_backend->setup_backend(); +$client_ip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : ((!empty($_ENV['REMOTE_ADDR'])) ? $_ENV['REMOTE_ADDR'] : getenv('REMOTE_ADDR')); +$user_ip = $phpBB2->encode_ip($client_ip); // // Instantiate the mx_bbcode class @@ -320,4 +459,5 @@ function deregister_globals() $do_gzip_compress = FALSE; mx_session_start(); // Note: this needs $board_config populated + ?> \ No newline at end of file diff --git a/contrib/phpbb3_backend_language/lang_romanian/lang_admin.php b/contrib/phpbb3_backend_language/lang_romanian/lang_admin.php index ba08326d..1903f698 100644 --- a/contrib/phpbb3_backend_language/lang_romanian/lang_admin.php +++ b/contrib/phpbb3_backend_language/lang_romanian/lang_admin.php @@ -1,9 +1,9 @@ Pagina de start a administratorului din panel-ul stâng. Pentru a reveni la pagina de start a forumului dumneavoastră, apăsaţi pe logo-ul phpBB-ului aflat, de asemenea, în panel-ul stâng. Celelalte legături din partea stângă vă permit să controlaţi orice aspect al forumului, fiecare ecran va avea instrucţiuni care dau explicaţii despre cum se folosesc uneltele.'; +$lang['Welcome_mxBB'] = 'Bine aţi venit la panoul de control al portalului mxBB'; +$lang['Admin_intro_mxBB'] = 'Vă mulţumim pentru aţi ales mxBB-Portal ca soluţie pentru portalul/cms-ul dumneavoastră şi phpBB ca soluţie pentru forumul dumneavoastră. Acest ecran vă oferă o privire de ansamblu a diverselor statistici ale site-ului dumneavoastră. Puteţi reveni la această pagină folosind legătura Pagina de start a administratorului din panel-ul stâng. Pentru a reveni la pagina de start a forumului dumneavoastră, apăsaţi pe logo-ul phpBB-ului aflat, de asemenea, în panel-ul stâng. Celelalte legături din partea stângă vă permit să controlaţi orice aspect al forumului, fiecare ecran va avea instrucţiuni care dau explicaţii despre cum se folosesc uneltele.'; // // General @@ -116,19 +116,19 @@ $lang['Portal_Name'] = 'Nume Portal:'; $lang['Portal_Description'] = 'Descriptie Portal:'; $lang['Portal_PHPBB_Url'] = 'URL pt. instarea ta de forum phpBB:'; -$lang['Portal_Url'] = 'URL pentru Mx-Publisher:'; +$lang['Portal_Url'] = 'URL pentru mxBB-Portal:'; $lang['Portal_Config_updated'] = 'Configuraţia Portalului Actualizată cu Succes'; $lang['Click_return_portal_config'] = 'Click %sAici%s pentru a te intoarce la Configurarea Portalului'; $lang['PHPBB_info'] = 'Informatii phpBB'; $lang['PHPBB_version'] = 'Versiunea phpBB:'; $lang['PHPBB_script_path'] = 'phpBB Cale Script:'; $lang['PHPBB_server_name'] = 'phpBB Domeniu (nume_server):'; -$lang['MX_Portal'] = 'Mx-Publisher'; -$lang['MX_Modules'] = 'MXP-Module'; +$lang['MX_Portal'] = 'mxBB-Portal'; +$lang['MX_Modules'] = 'mxBB-Module'; $lang['Phpbb'] = 'phpBB'; $lang['Top_phpbb_links'] = 'phpBB Stats în Header (valoare impicită)
- linkuri la postari noi/necitite etc'; -$lang['Portal_version'] = 'Versiune Mx-Publisher:'; -$lang['Mx_use_cache'] = 'Foloseşte MXP Bloc Cache'; +$lang['Portal_version'] = 'Versiune mxBB-Portal:'; +$lang['Mx_use_cache'] = 'Foloseşte mxBB Bloc Cache'; $lang['Mx_use_cache_explain'] = 'Datele din Bloc este în fişiere individuale cache/bloc_*.xml. Fişierele Bloc cache sunt create când Blocurile sunt editate.'; $lang['Mx_mod_rewrite'] = 'Foloseste mod_rewrite'; $lang['Mx_mod_rewrite_explain'] = 'Daca eşti pe server Apache, şi ai mod_rewrite activat, poţi rescrie url-urile ca \'page=x\' cu alternative mai intuitive. Citeşte pentru mai multe documentaţia pentru modulul mx_mod_rewrite.'; @@ -307,104 +307,6 @@ $lang['Click_return_portalpage_admin'] = 'Click %sAici%s pt. întoarcere la Pagina Portalului'; $lang['BlockCP_Config_updated'] = 'Blocul a fost Actualizat...'; - -// -// Pages Administration -// -$lang['Page_admin'] = 'Page Administration'; -$lang['Page_admin_explain'] = 'Use this form to add, delete and change the settings for Portal Pages and Page Templates.
To use this panel, you need to have JavaScript and cookies enabled in your browser!'; -$lang['Page_admin_edit'] = 'Page Edit'; -$lang['Page_admin_private'] = 'Advanced Page (PRIVATE) Permissions'; -$lang['Page_admin_settings'] = 'Page Settings'; -$lang['Page_admin_new_page'] = 'New Page Administration'; -$lang['Page'] = 'Page'; -$lang['Page_Id'] = 'Page ID'; -$lang['Page_icon'] = 'Page Icon
- to be used in the adminCP only, eg. icon_home.gif (default)'; -$lang['Page_alt_icon'] = 'Alternative Page Icon
- Full url (http://...) to custom page icon.'; -$lang['Default_page_style'] = 'Portal Style (default)
To use the default setting, leave this unset.'; -$lang['Override_page_style'] = 'Override user style'; -$lang['Override_page_style_explain'] = ' '; -$lang['Page_header'] = 'Page header file
- i.e. overall_header.tpl (default), overall_noheader.tpl (no header) or user custom header file.
To use the default setting, leave this blank.'; -$lang['Page_footer'] = 'Page footer file
- i.e. overall_footer.tpl (default) or user custom footer file.
To use the default setting, leave this blank.'; -$lang['Page_main_layout'] = 'Page main layout file
- i.e. mx_main_layout.tpl (default) or user custom header file.
To use the default setting, leave this blank.'; -$lang['Page_Navigation_block'] = 'Page header navigation block'; -$lang['Page_Navigation_block_explain'] = '- This is the page header navigation block, provided you\'ve chosen a overall header file which supports page navigation.
To use the default setting, leave this unset.'; -$lang['Auth_Page'] = 'Permissions'; -$lang['Select_sort_method'] = 'Select Sort Method'; -$lang['Order'] = 'Order'; -$lang['Sort'] = 'Sort'; -$lang['Width'] = 'Width'; -$lang['Height'] = 'Height'; -$lang['Page_sort_title'] = 'Page title'; -$lang['Page_sort_desc'] = 'Page description'; -$lang['Page_sort_created'] = 'Page created'; -$lang['Sort_Ascending'] = 'ASC'; -$lang['Sort_Descending'] = 'DESC'; -$lang['Return_to_page'] = 'Return to Portal Page'; -$lang['Auth_Page_group'] = '-> PRIVATE Group'; -$lang['Page_desc'] = 'Description'; -$lang['Page_parent'] = 'Parent Page'; -$lang['Add_Page'] = 'Add New Page'; -$lang['Page_Config_updated'] = 'Page Configuration Updated Successfully'; -$lang['Click_return_page_admin'] = 'Click %sHere%s to return to Page Administration'; -$lang['Remove_block'] = 'Remove Portal Block'; -$lang['Remove_block_explain'] = 'This will remove the block from this page. Beware: this operation cannot be undone!'; -$lang['Click_block_remove_yes'] = 'Click %sHere%s to remove the Block'; -$lang['Delete_page'] = 'Delete Page'; -$lang['Delete_page_explain'] = 'This will delete the Page. Beware: this operation cannot be undone!'; -$lang['Click_page_delete_yes'] = 'Click %sHere%s to delete the Page'; - -$lang['Mx_IP_filter'] = 'IP Filter'; -$lang['Mx_IP_filter_explain'] = 'To restrict access to this page by IP, enter the valid IP adresses, with one IP address per line.
Example: 127.0.0.1 or 127.1.*.*'; -$lang['Mx_phpBB_stats'] = 'phpBB Statistics in Header'; -$lang['Mx_phpBB_stats_explain'] = '- Links to new, unread posts, etc.'; -$lang['Column_admin'] = 'Page Column Administration'; -$lang['Column_admin_explain'] = 'Administrate Page Columns'; -$lang['Column'] = 'Page Column'; -$lang['Columns'] = 'Page Columns'; -$lang['Column_block'] = 'Page Column Block'; -$lang['Column_blocks'] = 'Page Column Blocks'; -$lang['Edit_Column'] = 'Edit a Column'; -$lang['Edit_Column_explain'] = 'Use this form to modify a column'; -$lang['Column_Size'] = 'Size of the column'; -$lang['Column_name'] = 'Column Name'; -$lang['Column_delete'] = 'Delete a Column'; -$lang['Page_updated'] = 'Page and Column information updated successfully'; -$lang['Create_column'] = 'Add New Column'; -$lang['Delete_page_column'] = 'Delete Page Column'; -$lang['Delete_page_column_explain'] = 'This will delete the Page Column. Beware: this operation cannot be undone!'; -$lang['Click_page_column_delete_yes'] = 'Click %sHere%s to delete the Page Column'; - -$lang['Add_Split_Block'] = 'Add Split Column Block'; -$lang['Add_Split_Block_explain'] = 'This block splits the column'; -$lang['Add_Dynamic_Block'] = 'Add Dynamic (Sub) Block'; -$lang['Add_Dynamic_Block_explain'] = 'This dynamic block defines subpages, set from the navigation menu'; -$lang['Add_Virtual_Block'] = 'Add Virtual (Page Blog) Block'; -$lang['Add_Virtual_Block_explain'] = 'This block turns the page into a virtual (blog) page'; - -// -// Page templates -// -$lang['Page_templates_admin'] = 'Page Templates Administration'; -$lang['Page_templates_admin_explain'] = 'Use this page to create, edit or delete Page Templates'; -$lang['Page_template'] = 'Page Template'; -$lang['Page_templates'] = 'Page Templates'; -$lang['Page_template_column'] = 'Page Template Column'; -$lang['Page_template_columns'] = 'Page Template Columns'; -$lang['Choose_page_template'] = 'Choose Page Template'; -$lang['Template_Config_updated'] = 'Template Configuration Updated'; -$lang['Add_Template'] = 'Add New Template'; -$lang['Template'] = 'Template'; -$lang['Template_name'] = 'Template Name'; -$lang['Page_template_delete'] = 'Delete Template'; -$lang['Delete_page_template'] = 'Delete Page Template'; -$lang['Delete_page_template_explain'] = 'This will delete the Page Template. Beware: this operation cannot be undone!'; -$lang['Click_page_template_delete_yes'] = 'Click %sHere%s to delete the Page Template'; -$lang['Delete_page_template_column'] = 'Delete Page Template'; -$lang['Delete_page_template_column_explain'] = 'This will delete the Page Template. Beware: this operation cannot be undone!'; -$lang['Click_page_template_column_delete_yes'] = 'Click %sHere%s to delete the Page Template'; - - // // Pages Administration // @@ -465,14 +367,6 @@ $lang['Delete_page_column_explain'] = 'Acesta va şterge Coloana Paginii. Atenţie, acestă operaţie nu este reversibilă!'; $lang['Click_page_column_delete_yes'] = 'Click %sAici%s pt. a şterge Colana Paginii'; - -$lang['Add_Split_Block'] = 'Add Split Column Block'; -$lang['Add_Split_Block_explain'] = 'This block splits the column'; -$lang['Add_Dynamic_Block'] = 'Add Dynamic (Sub) Block'; -$lang['Add_Dynamic_Block_explain'] = 'This dynamic block defines subpages, set from the navigation menu'; -$lang['Add_Virtual_Block'] = 'Add Virtual (Page Blog) Block'; -$lang['Add_Virtual_Block_explain'] = 'This block turns the page into a virtual (blog) page'; - // // Page templates // @@ -501,7 +395,7 @@ $lang['Cache_dir_write_protect'] = 'Directorul tau cache este protejat la scriere. Nu s-a putut genera fişierul cache'; $lang['Cache_generate'] = 'Fişierele cache au fost generate.'; $lang['Cache_submit'] = 'Să generez fişierul cache?'; -$lang['Cache_explain'] = 'Cu acestă opţiune poţi să generezi toate fişierele XML (fişiere cache) odată pentru toate blocurile portalului. Aceste fişiere permit reducerea numărului de cereri ale bazei de date necesare şi îmbunătăţesc performanţa portalului.
Notează: MXP cache trebuie activat (în Portal General Admin CP) petru ca aceste fişiere să fie folosite de sistem.
Mai Notează: fişierele cache sunt create on the fly când sunt şi blocurile de editare la fel.'; +$lang['Cache_explain'] = 'Cu acestă opţiune poţi să generezi toate fişierele XML (fişiere cache) odată pentru toate blocurile portalului. Aceste fişiere permit reducerea numărului de cereri ale bazei de date necesare şi îmbunătăţesc performanţa portalului.
Notează: mxBB cache trebuie activat (în Portal General Admin CP) petru ca aceste fişiere să fie folosite de sistem.
Mai Notează: fiÅŸierele cache sunt create on the fly când sunt ÅŸi blocurile de editare la fel.'; $lang['Generate_mx_cache'] = 'Generează Bloc Cache'; // @@ -639,11 +533,11 @@ // // Version Checker // -$lang['MXP_Version_up_to_date'] = 'Instalarea MXP este la zi. Nu există actualizări pentru versiunea ta de MXP.'; -$lang['MXP_Version_outdated'] = 'Se pare ca instalarea ta MXP nu este la zi. Actualizări există pentru versiunea ta de MXP. Te rog viziteză downloadare pachetul MXP Core pt. a obÅ£ine ultima versiune.'; -$lang['MXP_Latest_version_info'] = 'Ultima veriune disponibilă este MXP %s. '; -$lang['MXP_Current_version_info'] = 'Tu ai MXP %s.'; -$lang['MXP_Mailing_list_subscribe_reminder'] = 'Pentru ultimile informaÅ£ii de ÅŸtiri ÅŸi actualizări pentru MXP, de ce nu înscriete la lista de mailuri.'; +$lang['mxBB_Version_up_to_date'] = 'Instalarea mxBB este la zi. Nu există actualizări pentru versiunea ta de mxBB.'; +$lang['mxBB_Version_outdated'] = 'Se pare ca instalarea ta mxBB nu este la zi. Actualizări există pentru versiunea ta de mxBB. Te rog viziteză downloadare pachetul mxBB Core pt. a obÅ£ine ultima versiune.'; +$lang['mxBB_Latest_version_info'] = 'Ultima veriune disponibilă este mxBB %s. '; +$lang['mxBB_Current_version_info'] = 'Tu ai mxBB %s.'; +$lang['mxBB_Mailing_list_subscribe_reminder'] = 'Pentru ultimile informaÅ£ii de ÅŸtiri ÅŸi actualizări pentru mxBB, de ce nu înscriete la lista de mailuri.'; $lang['Trans_title'] = 'Translate to your Language'; $lang['Trans_description'] = 'Use Translate Control Panel to translate portal to your language'; diff --git a/docs/INSTALL.html b/docs/INSTALL.html new file mode 100644 index 00000000..6cf34e19 --- /dev/null +++ b/docs/INSTALL.html @@ -0,0 +1,275 @@ + + + + + + + + + + + + + +MXP • Installalation + + + + + + + +
+ + + + + +
+ + + + + + + + +

Please read through this document completely before you proceed to installation or upgrade.

+

This document will walk you through the basics on installation & updgrading the MXP CMS software.

+ +

Install

+ + + +

1. Requirements

+
+
+
+ +

MXP as a CMS tool does have some requirements which must be met before you are able to start your installation.

+ +
    +
  • A webserver or web hosting account running on any major Operating System with support for PHP.
  • +
  • mySQL3 or postgreSQL 7.1 Database (Latest mySQL4 or postgreSQL version recommended)
  • +
  • PHP 5.1.2 and later versions.
  • +
  • phpBB 2.0.x (Latest phpBB2 recommended) (Required in MX-Publisher 2.8.x. Optional in MX-Publisher 3.0.x)
  • +
  • phpBB 3.0.x (Latest phpBB3/Olympus recommended) (Optional in MX-Publisher 3.0.x)
  • +

    +
  • The following are optional items you may require depending on your local machines setup and/or your server or web-hosts control panel support and features. +
      +
    • FTP Program
    • +
    • HTML Editor
    • +
    +
  • +
+ +
+
+ +
+
+ +

2. Uploading the MXP Core

+
+
+
+ +

As a rule without exception MXP and phpBB must be installed in different directories. Do not mix the files up!! If phpBB is not installed on your system, please visit www.phpBB.com for further instructions. When uploading the default directory structure which will cause you the least effort and quickest installation is as follows:

+ +

/your/path/to/public/html/YOUR_PORTAL_NAME/ (this is the place were all MXP files should be located)
+/your/path/to/public/html/YOUR_FORUM_NAME/ (this is the place where your working phpBB installation should be located)

+ +

You can alternatively install MX-Publisher in your root directory (which can be accessed via http://www.yourdomain.com/ while your forum can be installed in a folder along with the MXP folders (ie it'd be located in http://www.yourdomain.com/phpBB2/

+ +

Using the default setup above, the install path variables should be: phpBB Relative Path: ../YOUR_FORUM_NAME/

+ +

Note #1

If you move the phpBB folder into another one before installing MXP, the phpBB configuration (the /phpbbroot/config.php file) must also be modified to match the new phpB location.

+ +

Note #2

The MXP and phpBB installations use completely differing config.php files. Do not confuse them and mix them together! They are two different files.

+ +

Note #3

If you plan to switch to phpBB mode later (after a fresh standalone installation) you have to set the phpBB relative path manually in the MXP Admin Control Panel. + +

Unzip the distributed MXP files and upload

+ +

SPECIAL NOTE

MX-Publisher needs write access/permissions to the cache folder and the mx_meta.inc file.

+ +

## CHMOD (0777) THE FOLLOWING FILES/DIRECTORIES:

## - mxroot/cache/
## - mxroot/mx_meta.inc

+ +

For those with Windows servers, CHMOD 0777 gives read, write, and access permissions to all 3 auth types (commonly Owner, Group, and Other/Anonymous). You'll have to give the files/folders above these permissions; this depends from host to host, though usually you can do it via your hosting control panel (cPanel, DirectAdmin, etc.) +

+
+ +
+
+ +

3. New installation

+
+
+
+ +

In your browser, call http://www.yourdomain.com/mxproot/install/mx_install.php Replace "mxproot" with whatever name you had for your MXP folder, which contains all of the MXP files and folders. You will now be presented with an installation page showing you some options, the first of which is the choice of MXP installtion, of which there are a possible 3 seperate types of install which you can choose from, lets take a look at these below:

+ +

MXP - standalone (INTERNAL)

+

This option will allow you to get your MXP install up and running without any need of 3rd party software - usually phpBB forum - it'll get your demo default website up and running quickly without the forum part. At a later stage you can still choose from with the Admin Control Panel to select a type of phpBB forum software which you have installed - of which MXP supports two types; phpBB 2 and phpBB 3.

+

MXP - With phpBB2 / phpBB3

+

With the installer, all of the values should already be filled in, and you should be set up to go and click "Install." However, you should go over the information filled in. If you definitely need something changed, then go ahead and see this document for details on how to set the installer to allow you to enter your own settings. Note that you should only do this if you know what you are doing. + +

You then need to fill out the installation configuration form which consists of the following:

+ +

MX-Publisher Prefix in DB (default: mx_)

+

This is the prefix name for the database - so when you browse through phpmyadmin you'll see it more clearly plus it prevents table mixups between other things in your database (such as phpBB) which has a database prefix of phpbb_. Also you may want to change this if you want several instances of MXP present within the same database; for example mx2_ - this is not something highly recommended due to export and backup functions, extraction of data however.

+

Database Type (default: mySQL)

+

You wont have to change this option.

+

Database Server Hostname/DSN

+

The default: localhost is normally all that is required if you need to fill this in.

+

Your Database Name

+

This will be either the database which phpBB already uses or if you are planning on an enttirely internal (standalone) install you'll need to create a new one with your prefered db management tool. Sometimes the database name here requries a prefix of the domain name - which for example might be www.testsite.com with a database named data1; so the database name entry here would be testsite_data1.

+

Database Username

+

You need to enter the database username which was auto-created when your database was created OR create a db user, with appropriate db permissions. Again this may require the website name as a prefix to the username.

+

Database Password

+

The password unlike the two previous entries which required your website as a prefix before either the database name or the database username DOES NOT need a prefix before it - enter this as per the normal password of the database user. +

MXP Admin Username

+

You may or may not want to consider keeping this the same as your phpBB forum install credentials for simplicity and to avoid confusion when switching around your website.

+

MXP Admin Password

+

Again - you may or may not want to consider keeping this the same as your phpBB forum install credentials for simplicity and to avoid confusion when switching around your website.

+

Re-enter MXP Admin Password

+

Repeat the password you have just entered.

+ +

Now That you have the correct information present you can click the Install button to continue, at this stage you'll be told you can download the config.php for you to upload directly to your sever into the MXP directory so this is your next step - click the button to download the config.php file and place it on your server.

+

You can now REFRESH the page and this will start the installation wizard placing entries into the database - the page will scroll showing you this, when finished you'll be presented with some instructions at the bottom fo the page.

+

These will tell you that you need to now delete two directories on your server: /contrib/ and /install/ once done you can then login to your brand new MXP installation.

+ +
+
+ +
+
+ +

4. Advanced Installation

+
+
+
+

To choose your own configuration instead of the installer's default suggestions, open up the mx_install.php file in your favorite PHP or text editor and perform the following code changes to the file.

+

Find

define('INSTALL_READONLY', true); +

Replace With:

// define('INSTALL_READONLY', true);

+ +

The purpsoe of this is to 'comment out' the code line - meaning that it will stop working and in turn allow you to set up your own configuration. + +

Note

+

The install script creates the MX-Publisher config.php file. If for some reason the install fails, you may need to remove the generated config.php manually before retrying the install. Also, if you feel like doing a fresh reinstallation, you will need to remove the previous MX-Publisher config.php file.

+
Failure to do this action will result in a failure to install MXP and your install script will not update correctly.

+ +Also, some webservers deny the installer the rights to edit the config.php file. In this case you'll need to CHMOD the config.php file to 0777. (CHMOD is overviewed above). If you have any other errors regarding config.php (you shouldn't), go here. + +2) Don't forget to remove the install/ and contrib/ folders after a successful installation! Otherwise, this could mean a potential security hole. +3) Installation Complete! Now enter the MX-Publisher AdminCP and configure the portal. The user interface is intuitive. For further information, visit some of our documents and Knowledge Base articles on ours DOCS page at www.mx-publisher.com. +
+
+
+
+ + +

5. Upgrading the MXP Core

+ +
+
+ +
+ +

Upgrading your installation is only a matter of a few steps to take and simple awareness of one or two facts.

+ +
    +
  • Download the full package from the Downloads Page at www.mx-publisher.com.
  • +
  • Unzip/unrar the contents - making sure the directory integrity remains intact.
  • +
  • Open your FTP client and connect to your MXP directory
  • +
  • Upload all files and folders except for config.php.
  • +
  • Now visit the mx_install.php.
  • +
    +
  • This will start the install wizard for your upgrade - follow all the steps then click Finish.
  • +
  • Remove the /install/ and /contrib/ directories and you are free to login to your new portal. +
+ +

Do not forget to also upgrade all the modules to make sure you have full MXP compatibility.

+
+
+
+ + +

6. Confirmation

+ +
+
+ +
+ +

After successful installation of the MXP db tables, you'll be forwarded to the confirmation page, from where you are directed to the MXP Administration Control Panel, to finalize the installation, eg

+
    +
  • define board timezone and other localized settings
  • +
  • configure the server mail SMTP
  • +
+

Further, in the MXP Administration Control Panel, additional modules can be installed.

+ +
+
+
+
+ + +

7. Copyright and Disclaimer

+ +
+
+ +
+

This CMS tool is opensource software released under the GPL. Please see source code and the docs directory for more details. MXP and its contents are Copyright (c) 2001 - 2008 MXP Homepage, All Rights Reserved.

+

Install Version: 1.0

+ + +
+
+
+
+ + + + + + +
+ +
+ +
+ + + diff --git a/docs/bg_header.gif b/docs/bg_header.gif new file mode 100644 index 00000000..351de9f4 Binary files /dev/null and b/docs/bg_header.gif differ diff --git a/docs/corners_left.gif b/docs/corners_left.gif new file mode 100644 index 00000000..206e5036 Binary files /dev/null and b/docs/corners_left.gif differ diff --git a/docs/corners_left.png b/docs/corners_left.png new file mode 100644 index 00000000..256bde3d Binary files /dev/null and b/docs/corners_left.png differ diff --git a/docs/corners_right.gif b/docs/corners_right.gif new file mode 100644 index 00000000..0ba66d50 Binary files /dev/null and b/docs/corners_right.gif differ diff --git a/docs/corners_right.png b/docs/corners_right.png new file mode 100644 index 00000000..df41823b Binary files /dev/null and b/docs/corners_right.png differ diff --git a/docs/mxp.css b/docs/mxp.css index abeef6f2..7e6d6764 100644 --- a/docs/mxp.css +++ b/docs/mxp.css @@ -1,832 +1,363 @@ -/***********************************************/ -/* Main */ -/***********************************************/ - -/* Fix for centering the container in IE */ -body{ - /* text-align: center; */ - margin: 0px; - padding: 0px; - font-family: Verdana, Arial, Helvetica, sans-serif; - color: #000; - line-height: 85%; - background: #ffffff url(images/theme/bg.gif) top left repeat-x; - /*background: #f0f0f0;*/ - - scrollbar-face-color: #DEE3E7; - scrollbar-highlight-color: #FFFFFF; - scrollbar-shadow-color: #DEE3E7; - scrollbar-3dlight-color: #D1D7DC; - scrollbar-arrow-color: #326030; - scrollbar-track-color: #EFEFEF; - scrollbar-darkshadow-color: #98AAB1; -} - -/* TinyMCE specific rules */ -body.mceContentBody { - text-align: left; - font-family: Verdana, Arial, Helvetica, sans-serif; - color: #000; - background: #FFF; -} - -/* Main Containers */ -#container{ - width: 750px; - min-width: 500px; - text-align: left; /* Fix for centering the container in IE */ - margin: 0px auto 0px auto; - /*background-color: #ffffff;*/ - border: 0px solid black; -} - -/* Main Containers */ -#container_100{ - width: 100%; - text-align: left; /* Fix for centering the container in IE */ - margin: 0px auto 0px auto; - /*background-color: #ffffff;*/ - border: 0px solid black; -} - -/* Outer and Inner Container */ -#outer { - width: auto; - border-left-style: solid; - border-left-width: 190px; /* left column width */ - border-left-color: #ffffff; /* left column colour */ - /*border-right-style: solid;*/ - /*border-right-width: 160px;*/ /* right column width */ - /*border-right-color: #EEEEDD;*/ /* right column colour */ - background-color: #fff; /* center column colour */ -} - -/* One-column */ -#outer_1_col { - width: auto; - /*border-left-style: solid;*/ - /*border-left-width: 220px;*/ /* left column width */ - /*border-left-color: #ffffff;*/ /* left column colour */ - /*border-right-style: solid;*/ - /*border-right-width: 160px;*/ /* right column width */ - /*border-right-color: #EEEEDD;*/ /* right column colour */ - background-color: #fff; /* center column colour */ -} - -#inner { - margin: 0px; - width: 100%; - - /* background: url(/templates/mxp/images/theme/leftcol.gif) -195px repeat-y; */ -} - -/* Columns */ -#leftcol{ - width: 190px; /* left column width */ - float: left; - position: relative; - padding: 0px; - margin: 0px; - margin-left: -190px; /* _negative_ left column width */ - - border-top: 1px solid #a1a1a1; - border-bottom: 1px solid #a1a1a1; - - background: url(images/theme/leftcol.gif) repeat-y; - - overflow:hidden; - z-index: 10; -} - -#rightcol{ - width: 190px; /* right column width */ - float: right; - position: relative; - padding: 0px; - margin: 0px; - margin-right: -190px; /* _negative_ right column width */ - - overflow:hidden; - z-index: 11; -} - -#middlecol{ - float: left; - width: 100%; - position: relative; - /*padding: 0px;*/ - z-index: 12; -} - -/* Block Container */ -div.blockcontainer{ - height: 1%; /* IE6 Fix */ - padding: 0px; -} - -#leftcol div.blockcontainer{ - margin: 10px; -} - -#middlecol div.blockcontainer{ - margin: 10px 10px 10px 20px; -} - -#rightcol div.blockcontainer{ - margin: 10px; -} - -/***********************************************/ -/* Layout */ -/***********************************************/ - -#header{ - /* background-color: #326030; - border-top: 1px solid gray; - border-bottom: 1px solid gray; - */ - margin: 0px; - padding: 0px; - - height:35px; - - /*background-image: url(more_col_base.jpg);*/ - /*background-repeat: repeat-y;*/ - /*background-position: right;*/ -} - -#header h1, #header h2, #header h3{ - padding: 0px; - margin: 0px; -} - -/* Top Navigation */ -#header .globalNav{ - color: #00355C; - white-space: nowrap; - padding: 11px 0px; -} -/* 'nowrap' prevents links from line-wrapping if there are too many to fit in one line - this will force a horizontal scrollbar if there isn't enough room for all links - remove rule or change value to 'normal' if you want the links to line-wrap */ - -#header .globalNav img{ - /* display: block; */ -} - -/* Top header */ -#header .globalNav .cat-button, #header .globalNav .cat-button-current{ - white-space: nowrap; - padding: 3px 3px; -} - -#header .globalNav .cat-button{ - /*background-color: #00355C;*/ - /*border-bottom: 1px solid #f0f0f0;*/ -} - -#header .globalNav .cat-button a{ - color:#f0f0f0; -} - -#header .globalNav .cat-button-current{ - /*background-color: #f0f0f0;*/ - /*border-bottom: 1px solid #f0f0f0;*/ -} - -#header .globalNav .cat-button-current a{ - color:#b0b0b0; -} - -#header .globalNav .cat-button a, #header .globalNav .cat-button-current a { - font-size:11px; font-style:normal; font-weight:bold; text-decoration:none; text-transform:uppercase; -} +/* + The original "prosilver" theme for phpBB3 + Created by subBlue design :: http://www.subBlue.com +*/ -#header .globalNav .cat-button a:hover, #header .globalNav .cat-button-current a:hover { +* { margin: 0; padding: 0; } -} +html { font-size: 100%; height: 100%; margin-bottom: 1px; } -/* Lower header */ -#header .globalNav .nav-button, #header .globalNav .nav-button-current{ - padding: 3px 3px; +body { + font-family: Verdana, Helvetica, Arial, sans-serif; + color: #828282; + background-color: #FFFFFF; + font-size: 12px; + margin: 0; + padding: 12px 0; } -#header .globalNav .nav-button{ - /*background-color: #00355C;*/ -} +img { border-width: 0; } -#header .globalNav .nav-button a{ - color:#f0f0f0; +p { + line-height: 1.3em; + font-size: 1.1em; + margin-bottom: 1.5em; } -#header .globalNav .nav-button-current{ - /*background-color: #00355C;*/ +hr { + border: 0 none #FFFFFF; + border-top: 1px solid #CCCCCC; + height: 1px; + margin: 5px 0; + display: block; + clear: both; } -#header .globalNav .nav-button-current a{ - color:#cccccc; +html, body { + color: #536482; + background-color: #FFFFFF; } -#header .globalNav .nav-button a, #header .globalNav .nav-button-current a { - font-size:10px; font-style:normal; font-weight:bold; text-decoration:none; text-transform:uppercase; +#doc-description h1 { + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + margin-right: 200px; + color: #FFFFFF; + margin-top: 15px; + font-weight: bold; + font-size: 2em; + color: #fff; } -#header .globalNav .nav-button a:hover, #header .globalNav .nav-button-current a:hover { - +h1 { + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + font-weight: normal; + color: #000; + font-size: 2em; + margin: 0.8em 0 0.2em 0; } -#subheader{ - /*background: transparent url('/templates/mxp/images/theme/leftcol.gif') repeat-y;*/ - margin: 0px; - padding: 0px 10px 9px 10px; - font-size:10px; font-style:normal; font-weight:bold; text-decoration:none; color:#215A19; +h2 { + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + font-weight: normal; + color: #28313F; + font-size: 1.5em; + margin: 0.8em 0 0.2em 0; } -#subheader a { - font-size:10px; font-style:normal; font-weight:bold; text-decoration:none; color:#215A19; +h3 { + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + border-bottom: 1px solid #CCCCCC; + margin-bottom: 3px; + padding-bottom: 2px; + font-size: 1.05em; + color: #115098; + margin-top: 20px; } -#subheader a:hover { - text-decoration:underline; - font-size:10px; font-style:normal; font-weight:bold; text-decoration:none; color:#999999; +h4 { + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + margin-bottom: 3px; + padding-bottom: 2px; + font-size: 1.05em; + color: #115098; + margin-top: 20px; } -#subheader .left .menu-button-current a{ - color:#999999; +h5 { + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + margin-bottom: 3px; + padding-bottom: 2px; + font-size: 1.05em; + color: #ec0409; + margin-top: 20px; } -#subheader .left{ - text-align: left; - float:right; - - padding: 5px 5px 2px 20px; - border-right: 1px solid #CFD5CF; - border-bottom: 1px solid #CFD5CF; -} +.good { color: green; } +.bad { color: red; } -#subheader .right{ +.version { + margin-top: 20px; text-align: left; - - padding: 5px 5px 3px 5px; + font-size: 70%; + color: #006600; + border-top: 1px solid #ccc; } -/* Block title */ -div.blockheader{ - margin: 0px; - padding: 2px 5px; - - /* background: url(/templates/mxp/images/cornerr.gif) top right no-repeat; */ +code { + color: #006600; + font-weight: normal; + font-family: 'Courier New', monospace; + border-color: #D1D7DC; + border-width: 1px; + border-style: solid; + background-color: #FAFAFA; } -#leftcol div.blockheader{ - /* - border-top: 1px solid #215A19; - border-right: 1px solid #215A19; - border-bottom: 0px solid #215A19; - border-left: 1px solid #215A19; - */ - - color: #333; - /* background-color: #215A19; */ - background: transparent url('images/theme/blockheader.gif') no-repeat; - - padding: 6px 5px; +#wrap { + padding: 0 20px; + min-width: 650px; } -#middlecol div.blockheader{ - +#simple-wrap { + padding: 6px 10px; } -#rightcol div.blockheader{ - +#page-body { + margin: 4px 0; + clear: both; } -div.blockheader .blockhidden{ - float: right; - margin: 0px; - padding: 0px; +#page-footer { + clear: both; } -div.blockheader .editCP_switch{ - float: right; - margin: 0px; - padding: 0px; +#logo { + float: left; + width: auto; + padding: 10px 13px 0 10px; } -div.blockheader .editCP_switch .trimform { - margin: 0px; - padding: 0px; +a#logo:hover { + text-decoration: none; } -div.block{ - margin: 0px; - padding: 0px; +#doc-description { + float: left; + width: 70%; } -#leftcol div.block{ - border-top: 1px solid #215A19; - border-right: 1px solid #215A19; - border-bottom: 1px solid #215A19; - border-left: 1px solid #215A19; - - background-color: #ffffff; - - padding: 5px; +#doc-description h1 { + margin-right: 0; } -#middlecol div.block{ - /* - border-top: 1px solid #B0B0B0; - border-right: 1px solid #B0B0B0; - border-bottom: 1px solid #B0B0B0; - border-left: 1px solid #B0B0B0; - - background-color: #ffffff; - */ - - padding: 5px; +.headerbar { + background: #ebebeb none repeat-x 0 0; + color: #FFFFFF; + margin-bottom: 4px; + padding: 0 5px; } -#rightcol div.block{ - +span.corners-top, span.corners-bottom, span.corners-top span, span.corners-bottom span { + font-size: 1px; + line-height: 1px; + display: block; + height: 5px; + background-repeat: no-repeat; } -#footer{ - clear: both; - margin: 5px 0px; - padding: 2px 5px; - color: #333; - background-color: #326030; - border: 1px solid #000; - font-size: 9px; +span.corners-top { + background-image: none; + background-position: 0 0; + margin: 0 -5px; } -#footer .globalNav{ - text-align: center; - color: #cccccc; - white-space: nowrap; +span.corners-top span { + background-image: none; + background-position: 100% 0; } -/* 'nowrap' prevents links from line-wrapping if there are too many to fit in one line - this will force a horizontal scrollbar if there isn't enough room for all links - remove rule or change value to 'normal' if you want the links to line-wrap */ - -#footer .globalNav a { - padding: 0px 4px 0px 0px; +span.corners-bottom { + background-image: none; + background-position: 0 100%; + margin: 0 -5px; + clear: both; } -#footer a, #footer a:link, #footer a:visited { text-decoration: none; color: #CFD7D1; font-weight: bold;} -#footer a:hover{ text-decoration: underline; color: #CFD7D1; font-weight: bold;} - -#footer a.copyright, #footer a.copyright:link, #footer a.copyright:visited { text-decoration: none; color: #CFD7D1; font-weight: normal;} -#footer a.copyright:hover{ text-decoration: underline; color: #CFD7D1; font-weight: normal;} - -#footer p { margin: 0px 0px 1em 0px; } - -.pageStats { - padding: 0px 10px 5px 0px; +span.corners-bottom span { + background-image: none; + background-position: 100% 100%; } -* html x { /* This is the Tan hack */ - width: 130px; /* For IE5 */ - w\idth: 100px; } /* For IE6 */ - -#clear { clear: both; } - -/***********************************************/ -/* Theme */ -/***********************************************/ -/* General text */ -font,th,td,p { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; } -#leftcol font, #leftcol th, #leftcol td, #leftcol p { color: #000000; } -#middlecol font, #middlecol th, #middlecol td, #middlecol p { color: #000000; } -#rightcol font, #rightcol th, #rightcol td, #rightcol p { color: #000000; } - -.gen,.genmed,.gensmall { color : #000000; } -a,a.gen,a.genmed,a.gensmall { color: #326030; text-decoration: none; } -a:hover,a.gen:hover,a.genmed:hover,a.gensmall:hover { color: #DD6900; text-decoration: underline; } - -tr.oddrow a, tr.oddrow a.gen,tr.oddrow a.genmed, tr.oddrow a.gensmall { font-size:10px; color: #ffffff; text-decoration: none; } -tr.oddrow a:hover, tr.oddrow a.gen:hover,tr.oddrow a.genmed:hover,tr.oddrow a.gensmall:hover { color: #215A19; text-decoration: underline; } - -/* -#leftcol .gen, #leftcol .genmed, #leftcol .gensmall { color : #000000; } -#leftcol a.gen, #leftcol a.genmed, #leftcol a.gensmall { color: #326030; text-decoration: none; } -#leftcol a.gen:hover, #leftcol a.genmed:hover, #leftcol a.gensmall:hover { color: #DD6900; text-decoration: underline; } - -#middlecol .gen, #middlecol .genmed, #middlecol .gensmall { color : #000000; } -#middlecol a.gen, #middlecol a.genmed, #middlecol a.gensmall { color: #326030; text-decoration: none; } -#middlecol a.gen:hover, #middlecol a.genmed:hover, #middlecol a.gensmall:hover { color: #DD6900; text-decoration: underline; } - -#rightcol .gen, #rightcol .genmed, #rightcol .gensmall { color : #000000; } -#rightcol a.gen, #rightcol a.genmed, #rightcol a.gensmall { color: #326030; text-decoration: none; } -#rightcol a.gen:hover, #rightcol a.genmed:hover, #rightcol a.gensmall:hover { color: #DD6900; text-decoration: underline; } -*/ - -.gen { font-size : 11px; } -.genmed { font-size : 10px; } -.gensmall { font-size : 9px; } - -/* This is the outline round the main forum tables */ -.forumline { text-align: left; } - -/* Main table cell colours and backgrounds */ -td.row1 { } -td.row2 { background-color: #f0f0f0; } -td.row3 { background-color: #f0f0f0; } - -td.oddcell { background-color: #f0f0f0; } -tr.oddrow { background-color: #f0f0f0; } - -/* -#leftcol td.row1 { background-color: #EFEFEF; } -#leftcol td.row2 { background-color: #DEE3E7; } -#leftcol td.row3 { background-color: #D1D7DC; } - -#middlecol td.row1 { background-color: #EFEFEF; } -#middlecol td.row2 { background-color: #DEE3E7; } -#middlecol td.row3 { background-color: #D1D7DC; } - -#rightcol td.row1 { background-color: #EFEFEF; } -#rightcol td.row2 { background-color: #DEE3E7; } -#rightcol td.row3 { background-color: #D1D7DC; } -*/ - -#middlecol div.block img { margin: 4px 10px 4px 4px; } -#middlecol div.block .DynamicTree img { margin: 0px; } /* SimpleDoc Fix */ -#middlecol div.block .wrap2 img { margin: 0px; } /* tinyMCE Fix */ -.ImageFrame_image { margin: 0px; padding: 0px; } /* Gallery Fix */ -#middlecol div.block img.ImageFrame_image { margin: 0px; padding: 0px; } /* Gallery Fix */ - -div.block p { margin: 0.7em 0px 0.7em 0px; } - -div.block h1 { margin: .2em 0px .5em 0px; } -div.block h2 { margin: 1.5em 0px .5em 0px; } -div.block h3, div.block h4 { margin: 1.5em 0px .4em 0px; } - -h1 { font-family: Geneva, Arial, Helvetica, san-serif; font-size: 13px; font-weight: bold; color: #215A19; letter-spacing: 2px; } -h2 { font-family: Geneva, Arial, Helvetica, san-serif; font-size: 12px; font-weight: bold; color: #215A19; letter-spacing: 2px; } -h3 { font-family: Geneva, Arial, Helvetica, san-serif; font-size: 11px; font-weight: bold; font-variant: normal; color: #003300; text-transform: uppercase; } -h4 { font-size: 10px; font-variant: normal; color: #006600; text-transform: uppercase; line-height: 5px;} - -/* Block titles */ -.blocktitle { font-family: Verdana, Arial, Helvetica, sans-serif;font-weight: bold; font-size: 11px ; letter-spacing: 1px;} -a.blocktitle { text-decoration: none;} -a.blocktitle:hover{ text-decoration: underline;} - -/* Discreet text */ -.discreet { font-size : 9px; color : #879C6C } - -#leftcol .blocktitle, #leftcol a.blocktitle { color : #ffffff;} -#middlecol .blocktitle, #middlecol a.blocktitle { color : #326030;} -#rightcol .blocktitle, #rightcol a.blocktitle { color : #326030;} - -/* The register, login, search etc links at the top of the page */ -.mainmenu { font-size : 11px; color : #000000 } -a.mainmenu { text-decoration: none; color : #326030; } -a.mainmenu:hover{ text-decoration: underline; color : #DD6900; } - -/* Forum category titles */ -.cattitle { font-weight: bold; font-size: 12px ; letter-spacing: 1px; color : #326030} -a.cattitle { text-decoration: none; color : #215A19; } -a.cattitle:hover{ text-decoration: underline; } - -/* Forum title: Text and link to the forums used in: index.php */ -.forumlink { font-weight: bold; font-size: 12px; color : #215A19; } -a.forumlink { text-decoration: none; color : #215A19; } -a.forumlink:hover{ text-decoration: underline; color : #DD6900; } - -/* Used for the navigation text, (Page 1,2,3 etc) and the navigation bar when in a forum */ -.nav { font-weight: bold; font-size: 11px; color : #000000;} -a.nav { text-decoration: none; color : #215A19; } -a.nav:hover { text-decoration: underline; } - -/* titles for the topics: could specify viewed link colour too */ -.topictitle { font-weight: bold; font-size: 11px; color : #000000; } -a.topictitle:link { text-decoration: none; color : #215A19; } -a.topictitle:visited { text-decoration: none; color : #215A19; } -a.topictitle:hover { text-decoration: underline; color : #444444; } - -/* Name of poster in viewmsg.php and viewtopic.php and other places */ -.name { font-size : 11px; color : #000000;} - -/* Location, number of posts, post date etc */ -.postdetails { font-size : 10px; color : #000000; } - -/* The content of the posts (body of text) */ -.postbody { font-size : 10px;} -a.postlink:link { text-decoration: none; color : #326030 } -a.postlink:visited { text-decoration: none; color : #5493B4; } -a.postlink:hover { text-decoration: underline; color : #DD6900} - -/* Quote & Code blocks */ -.code { - font-family: Courier, 'Courier New', sans-serif; font-size: 10px; color: #006600; - background-color: #FAFAFA; border: #D1D7DC; border-style: solid; - border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px -} - -.code { - display: block; - padding: 5px; - margin: 5px 15px; +.paragraph { + padding: 0 10px; + margin-bottom: 4px; + background-repeat: no-repeat; + background-position: 100% 0; + background-color: #ECF3F7; } -.quote { - font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #444444; line-height: 125%; - background-color: #FAFAFA; border: #D1D7DC; border-style: solid; - border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px +.paragraph:target .content { + color: #000000; } -.quote { - display: block; - padding: 5px; - margin: 5px 15px; +.paragraph:target h3 a { + color: #000000; } -/* Copyright and bottom info */ -.copyright { font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #444444; letter-spacing: -1px;} -a.copyright { color: #444444; text-decoration: none;} -a.copyright:hover { color: #000000; text-decoration: underline;} - -/* Form elements */ -input,textarea, select { - color : #000000; - font: normal 10px Verdana, Arial, Helvetica, sans-serif; - border-color : #000000; +.content { + color: #333333; } -/* The text input fields background colour */ -input.post, textarea.post, select { - background-color : #FFFFFF; +.content h2, .panel h2 { + color: #115098; + border-bottom-color: #CCCCCC; } -input { text-indent : 2px; } +a:link { color: #898989; text-decoration: none; } +a:visited { color: #898989; text-decoration: none; } +a:hover { color: #d3d3d3; text-decoration: underline; } +a:active { color: #d2d2d2; text-decoration: none; } -/* The buttons used for bbCode styling in message post */ -input.button { - background-color : #EFEFEF; - color : #000000; - font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; +hr { + border-color: #FFFFFF; + border-top-color: #CCCCCC; } -/* The main submit button option */ -input.mainoption { - background-color : #FAFAFA; - font-weight : bold; +.menu { + background-color: #cadceb; } -/* None-bold submit button */ -input.liteoption { - background-color : #FAFAFA; - font-weight : normal; -} - -/* This is the line in the posting page which shows the rollover - help line. This is actually a text box, but if set to be the same - colour as the background no one will know ;) -*/ -.helpline { background-color: #DEE3E7; border-style: none; } - -/* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */ -/* @import url("formIE.css"); */ - -/* Fancy form styles for IE */ - -input, textarea, select { - border-top-width : 1px; - border-right-width : 1px; - border-bottom-width : 1px; - border-left-width : 1px; +.headerbar { + background-color: #12A3EB; + background-image: url("bg_header.gif"); + color: #FFFFFF; } -input { text-indent : 2px; } - -input.button { - border-top-width : 1px; - border-right-width : 1px; - border-bottom-width : 1px; - border-left-width : 1px; +.panel { + background-color: #ECF1F3; + color: #28313F; } -.postbody { line-height: 18px} -/* Form elements */ -form { - margin: 0px; +span.corners-top { + background-image: url("corners_left.png"); } -/* Form elements */ -form.mx_editform { - margin-bottom: 0px; - margin-top: 0px; +span.corners-top span { + background-image: url("corners_right.png"); } -/* This is the border around numbers in pagination */ -.mx_pagination, .mx_pagination_sele, .mx_pagination_over { - padding-left: 2px; - padding-right: 2px; - border-top: 1px solid #B0B0B0; - border-right: 1px solid #B0B0B0; - border-bottom: 1px solid #B0B0B0; - border-left: 1px solid #B0B0B0; - text-decoration: none; +span.corners-bottom { + background-image: url("corners_left.png"); } -.mx_pagination_sele { - background-color: #E0E0E0; -} -.mx_pagination_over { - background-color: #F0F0F0; +span.corners-bottom span { + background-image: url("corners_right.png"); } -.shadow { - color: #00AA00; - filter: DropShadow(Color=#660000, OffX=5, OffY=5, Positive=1); -} -img.shadow { - color: #00AA00; - filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=5, OffY=5, Color='gray', Positive='true'); +.error { + color: #BC2A4D; } -/* This is the style used for the top page title. */ -.pagetitle { - font-weight: bold; - font-size: 30px; - font-family: "Comic Sans MS", Verdana, Arial, Helvetica, sans-serif; - text-decoration: none; - line-height : 120%; - color : #000066; - font-variant: small-caps; - text-transform: capitalize; - letter-spacing: 5px; - vertical-align: 20%; -} +a:link { color: #105289; } +a:visited { color: #105289; } +a:hover { color: #D31141; } +a:active { color: #368AD2; } -/* This is the style used for the top site title. */ -.sitetitle { - font-family: Arial; - font-variant: small-caps; - font-weight: bolder; - font-size: 12pt; - color: #000066; +.paragraph span.corners-top, .paragraph span.corners-bottom { + margin: 0 -10px; } -/* This is the style used for the top site description. */ -.sitetitle_desc { - color: #326030; - font-size: 9px; +.content { + padding: 0; + line-height: 1.48em; + color: #333333; } -/* Block Navigation */ -#leftcol ul { - border: 1px solid #fff; - border-width: 0px 1px; - font-size: 11px; - /* font-size: 85%; */ - list-style: none; - margin: 3px 0px 3px 0px; - padding: 0px; +.content h2, .panel h2 { + color: #115098; + border-bottom-color: #CCCCCC; } -#leftcol ul li { - border-bottom: 1px solid #fff; +.notice { + border-top-color: #CCCCCC; } -#leftcol ul a { - /* background: #ffffff url(/modules/mx_navmenu/templates/samSkolan3/images/arrow_right.gif) 5px 50% no-repeat; */ - background: #ffffff; - border: none; - color: #215A19; +.codebox { + padding: 3px; + background-color: #FFFFFF; + border: 1px solid #C9D2D8; + font-size: 1em; + margin-bottom: 10px; display: block; - line-height: 1.4em; - /* padding-left: 20px; */ - padding-left: 5px; - text-decoration: none; - font-size: 11px; + font: 0.9em Monaco, "Andale Mono","Courier New", Courier, mono; + line-height: 1.3em; } -#leftcol ul a:hover { - /* background: #efefef url(/modules/mx_navmenu/templates/samSkolan3/images/arrow_right.gif) 5px 50% no-repeat; */ - background: #efefef; - border: none; - color: #215A19; -} +* html hr { margin: 0; } +* html span.corners-top, * html span.corners-bottom { background-image: url("corners_left.gif"); } +* html span.corners-top span, * html span.corners-bottom span { background-image: url("corners_right.gif"); } -#leftcol li#cattitle a { - /* background: #ffffff url(/modules/mx_navmenu/templates/samSkolan3/images/arrow_right.gif) 5px 50% no-repeat; */ - background: #ffffff; - color: #215A19; - font-weight: bold; - font-variant: small-caps; -} - -#leftcol li#cat a { - /* background: #ffffff url(/modules/mx_navmenu/templates/samSkolan3/images/arrow_right.gif) 5px 50% no-repeat; */ - background: #326B2A; - color: #ffffff; - font-weight: bold; - font-variant: small-caps; -} - -/* -* -* Generic Button -* -*/ -a.genericbutton { - background: transparent url('images/buttons/createbutton_a.gif') no-repeat scroll top right; - color: #326030; - display: inline-block; - /*float: left;*/ - font: bold 10px arial, sans-serif; - height: 20px; - margin: 10px 6px 10px 0px; - padding-right: 14px; /* sliding doors padding */ - text-decoration: none; - vertical-align: middle; +.back2top { + clear: both; + height: 11px; + text-align: right; + color: #da343b; } -a.genericbutton span { - background: transparent url('images/buttons/createbutton_span.gif') no-repeat; - display: inline-block; - line-height: 12px; - padding: 4px 0 4px 14px; - cursor: pointer; +.content ol, .content ul { + margin-left: 25px; + margin-top: 0; } -/* ForeFox Fix */ -a.genericbutton, a.genericbutton span { - display:-moz-inline-stack; +.content ul + p, .content ul + div { + margin-top: 20px; } -/* Hover */ -a.genericbutton:hover { - background-position: bottom right; +.comment { + color: green; } -a.genericbutton:hover span { - background-position: bottom left; - color: #a51; +.indent { + margin-left: 20px; } -/* Click */ -a.genericbutton:active { - background-position: bottom right; - color: #000; - outline: none; /* hide dotted outline in Firefox */ +.paragraph table { + font-size: 8pt; + border-collapse: collapse; + border: 1px solid #cfcfcf; + margin-bottom: 20px; } -a.genericbutton:active span { - background-position: bottom left; +.paragraph table caption { + display: none; } -/* -* -* Image Button -* -*/ -a.imagebutton { - text-decoration: none; - vertical-align: middle; - display: inline-block; +.paragraph table thead { + background-color: #cadceb; + color: #000; } -a.imagebutton:hover { - text-decoration: none; - vertical-align: middle; - display: inline-block; - - filter:alpha(opacity=40); - opacity:0.4; +.paragraph table td, .paragraph table th { + border: 1px solid #006699; + padding: 0.5em; + background-color: #e1ebf2; } -/* ForeFox Fix */ -a.imagebutton{ - display:-moz-inline-stack; +.paragraph table th { + background-color: #cadceb; } -/* -* -* Text Button -* -*/ -a.textbutton { - text-decoration: none; - vertical-align: middle; - font-weight: bold; - - margin: 10px 6px 10px 0px; - border: 1px double #326030; - border-width: 3px 1px; +.paragraph table td dl { + margin: 0; + padding: 0; } -a.textbutton:hover { - border: 1px double #326030; - border-width: 2px 1px; +.paragraph table td dl dt { + float: left; + clear: both; + margin-right: 1em; } - -a.textbutton:active { - border: 1px double #326030; - border-width: 2px 1px; -} \ No newline at end of file diff --git a/docs/site_logo.gif b/docs/site_logo.gif new file mode 100644 index 00000000..35e7c9bd Binary files /dev/null and b/docs/site_logo.gif differ diff --git a/includes/db/dbal.php b/includes/db/dbal.php index 887f59c7..646cbb1d 100644 --- a/includes/db/dbal.php +++ b/includes/db/dbal.php @@ -8,12 +8,10 @@ * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @link http://mxpcms.sourceforge.net/ * +* */ -if ( !defined('IN_PORTAL') ) -{ - die("Hacking attempt"); -} +if (!defined('IN_PORTAL')) { die("Hacking attempt"); } /** * @package DBal @@ -61,7 +59,97 @@ function dbal() $this->any_char = chr(0) . '%'; $this->one_char = chr(0) . '_'; } + + /** + * Gets the name of the sql layer. + * + * @return string + */ + public function get_sql_layer() + { + return $this->sql_layer; + } + /** + * Gets the name of the database. + * + * @return string + */ + public function get_db_name() + { + return $this->dbname; + } + + /** + * Wildcards for matching any (%) character within LIKE expressions + * + * @return string + */ + public function get_any_char() + { + return $this->any_char; + } + + /** + * Wildcards for matching exactly one (_) character within LIKE expressions + * + * @return string + */ + public function get_one_char() + { + return $this->one_char; + } + + /** + * {@inheritdoc} + */ + public function get_db_connect_id() + { + return $this->db_connect_id; + } + + /** + * {@inheritdoc} + */ + public function get_sql_error_triggered() + { + return $this->sql_error_triggered; + } + + /** + * {@inheritdoc} + */ + public function get_sql_error_sql() + { + return $this->sql_error_sql; + } + + /** + * {@inheritdoc} + */ + public function get_transaction() + { + return $this->transaction; + } + + /** + * Gets the time spent into the queries + * + * @return int + */ + public function get_sql_time() + { + return $this->sql_time; + } + + /** + * {@inheritdoc} + */ + public function get_sql_error_returned() + { + return $this->sql_error_returned; + } + /** * return on error or display error message */ diff --git a/includes/hooks/hook_fb4phpbb_light.php b/includes/hooks/hook_fb4phpbb_light.php new file mode 100644 index 00000000..42365219 --- /dev/null +++ b/includes/hooks/hook_fb4phpbb_light.php @@ -0,0 +1,51 @@ +assign_vars(array( + 'HAS_JQUERY' => find_jquery(), + 'HAS_JQUERY_UI' => find_jquery_ui(), + 'FB4PHPBB_LIGHT_XMLNS' => 'xmlns:fb="http://ogp.me/ns/fb#"', + 'FB4PHPBB_LIGHT_INIT' => fb4phpbb_light_init($config['fb4phpbb_light_appid'], $config['fb4phpbb_light_lang']), + 'S_FB4PHPBB_MOD_ENABLED' => ($config['fb4phpbb_light_mod_enabled'] == 'yes') ? true : false, + 'FB4PHPBB_LIGHT_CONNECT' => generate_board_url() . '/fb4phpbb_light/fb4phpbb_light_connect.' . $phpEx, + )); + } +} + +if (!$config['board_disable']) +{ + $phpbb_hook->register(array('template','display'), 'facebook_for_phpbb_light_template_hook'); +} diff --git a/includes/mx_functions.php b/includes/mx_functions.php index 46b5cfbd..8314ef59 100644 --- a/includes/mx_functions.php +++ b/includes/mx_functions.php @@ -59,7 +59,6 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = // //This will check whaever we are installing // - if(defined('HAS_DIED')) { // @@ -74,7 +73,7 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = else { $custom_error_message = sprintf($custom_error_message, '', ''); - } + } echo "\n\n\nCritical Error!
\nmx_message_die() was called multiple times.
 
"; for( $i = 0; $i < count($msg_history); $i++ ) { @@ -94,6 +93,10 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = } echo " 
\n"; } + if (version_compare(PHP_VERSION, '5.4') < 0) + { + echo('You are running an unsupported PHP version: ' . PHP_VERSION . '. Please upgrade to PHP 5.6.4 or higher before trying to install phpBB3 or install / upgrate MX-Publisher 3
'); + } echo $custom_error_message . '

'; die("\n"); } @@ -189,7 +192,7 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = if ( empty($default_lang) ) { // - populate $default_lang - $default_lang= 'english'; + $default_lang = 'english'; } $lang_path = $mx_root_path . 'includes/shared/phpbb2/language/'; @@ -230,11 +233,11 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = // if ( !defined('IN_ADMIN') ) { - include($mx_root_path . 'includes/page_header.'.$phpEx); + include_once($mx_root_path . 'includes/page_header.'.$phpEx); } else { - include($mx_root_path . 'admin/page_header_admin.'.$phpEx); + include_once($mx_root_path . 'admin/page_header_admin.'.$phpEx); } } @@ -245,14 +248,14 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = { $msg_title = $lang['Information']; } - break; + break; case CRITICAL_MESSAGE: if ( $msg_title == '' ) { $msg_title = $lang['Critical_Information']; } - break; + break; case GENERAL_ERROR: if ( $msg_text == '' ) @@ -264,7 +267,7 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = { $msg_title = $lang['General_Error']; } - break; + break; case CRITICAL_ERROR: // @@ -304,7 +307,7 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = { $msg_title = 'MX-Publisher : ' . $lang['Critical_Error'] . ''; } - break; + break; } @@ -348,6 +351,7 @@ function mx_message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = { $template->set_filenames(array('message_body' => 'admin/admin_message_body.tpl')); } + // // Fix for correcting possible "bad" links to phpBB // @@ -662,6 +666,116 @@ function mx_redirect($url, $redirect_msg = '', $redirect_link = '') exit; } +// +// Encode the IP from decimals into hexademicals +// +function mx_encode_ip($dotquad_ip) +{ + $ip_sep = explode('.', $dotquad_ip); + return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]); +} + +// +// Decode the IP from hexademicals to decimals +// +function mx_decode_ip($int_ip) +{ + $hexipbang = explode('.', chunk_split($int_ip, 2, '.')); + return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]); +} + +// +// Create date/time from format and timezone +// +function mx_create_date($format, $gmepoch, $tz) +{ + global $mx_user, $board_config, $lang; + + static $translate; + static $midnight; + static $date_cache; + + $format = (!$format) ? $mx_user->date_format : $format; + $now = time(); + $delta = $now - $gmepoch; + + if (!isset($date_cache[$format])) + { + // Is the user requesting a friendly date format (i.e. 'Today 12:42')? + $date_cache[$format] = array( + 'is_short' => strpos($format, '|'), + 'format_short' => substr($format, 0, strpos($format, '|')) . '||' . substr(strrchr($format, '|'), 1), + 'format_long' => str_replace('|', '', $format), + // Filter out values that are not strings (e.g. arrays) for strtr(). + 'lang' => array_filter($mx_user->lang['datetime'], 'is_string'), + ); + + // Short representation of month in format? Some languages use different terms for the long and short format of May + if ((strpos($format, '\M') === false && strpos($format, 'M') !== false) || (strpos($format, '\r') === false && strpos($format, 'r') !== false)) + { + $date_cache[$format]['lang']['May'] = $mx_user->lang['datetime']['May_short']; + } + } + + // Zone offset + $zone_offset = $mx_user->timezone + $mx_user->dst; + + // Show date <= 1 hour ago as 'xx min ago' but not greater than 60 seconds in the future + // A small tolerence is given for times in the future but in the same minute are displayed as '< than a minute ago' + if ($delta <= 3600 && $delta > -60 && ($delta >= -5 || (($now / 60) % 60) == (($gmepoch / 60) % 60)) && $date_cache[$format]['is_short'] !== false && !$forcedate && isset($this->lang['datetime']['AGO'])) + { + return $this->lang(array('datetime', 'AGO'), max(0, (int) floor($delta / 60))); + } + + if (!$midnight) + { + list($d, $m, $y) = explode(' ', gmdate('j n Y', time() + $zone_offset)); + $midnight = gmmktime(0, 0, 0, $m, $d, $y) - $zone_offset; + } + + if ($date_cache[$format]['is_short'] !== false && !$forcedate && !($gmepoch < $midnight - 86400 || $gmepoch > $midnight + 172800)) + { + $day = false; + + if ($gmepoch > $midnight + 86400) + { + $day = 'TOMORROW'; + } + else if ($gmepoch > $midnight) + { + $day = 'TODAY'; + } + else if ($gmepoch > $midnight - 86400) + { + $day = 'YESTERDAY'; + } + + if ($day !== false) + { + return str_replace('||', $mx_user->lang['datetime'][$day], strtr(@gmdate($date_cache[$format]['format_short'], $gmepoch + $zone_offset), $date_cache[$format]['lang'])); + } + } + + if (empty($translate) && $board_config['default_lang'] != 'english') + { + @reset($lang['datetime']); + while (list($match, $replace) = @each($lang['datetime'])) + { + $translate[$match] = $replace; + } + } + + if (empty($translate)) + { + @reset($lang['datetime']); + while (list($match, $replace) = @each($lang['datetime'])) + { + $translate[$match] = $replace; + } + } + return (!is_array($translate)) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $date_cache[$format]['lang']); +} + /** * Global function for chmodding directories and files for internal use * @@ -685,7 +799,7 @@ function mx_redirect($url, $redirect_msg = '', $redirect_link = '') * @return bool true on success, otherwise false * @author faw, phpBB Group */ -function mx_chmod($filename, $perms = CHMOD_READ) +function mx3_chmod($filename, $perms = CHMOD_READ) { static $_chmod_info; @@ -892,7 +1006,7 @@ function mx_is_writable($file) } /** -* Generate portal url (example: http://www.example.com/phpBB) +* Generate portal url (example: http://www.example.com/) * @param bool $without_script_path if set to true the script path gets not appended (example: http://www.example.com) */ function generate_portal_url($without_script_path = false) @@ -928,7 +1042,7 @@ function generate_portal_url($without_script_path = false) if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80))) { - // HTTP HOST can carry a port number (we fetch $user->host, but for old versions this may be true) + // HTTP HOST can carry a port number (we fetch $mx_user->host, but for old versions this may be true) if (strpos($server_name, ':') === false) { $url .= ':' . $server_port; @@ -948,6 +1062,101 @@ function generate_portal_url($without_script_path = false) return $url; } +//Form validation + + +/** +* Add a secret hash for use in links/GET requests +* @param string $link_name The name of the link; has to match the name used in check_link_hash, otherwise no restrictions apply +* @return string the hash +unique_id() +*/ +function mx_generate_link_hash($link_name) +{ + global $mx_user; + + if (!isset($mx_user->data["hash_$link_name"])) + { + $mx_user->data["hash_$link_name"] = substr(sha1($mx_user->data['user_form_salt'] . $link_name), 0, 8); + } + + return $mx_user->data["hash_$link_name"]; +} + + +/** +* checks a link hash - for GET requests +* @param string $token the submitted token +* @param string $link_name The name of the link +* @return boolean true if all is fine +*/ +function mx_check_link_hash($token, $link_name) +{ + return $token === mx_generate_link_hash($link_name); +} + +/** +* Add a secret token to the form (requires the S_FORM_TOKEN template variable) +* @param string $form_name The name of the form; has to match the name used in check_form_key, otherwise no restrictions apply +* @param string $template_variable_suffix A string that is appended to the name of the template variable to which the form elements are assigned +*/ +function mx_add_form_key($form_name, $template_variable_suffix = '') +{ + global $board_config, $template, $mx_user; + + $now = time(); + $token_sid = ($mx_user->data['user_id'] == ANONYMOUS) ? $mx_user->session_id : ''; + $token = sha1($now . $mx_user->data['user_form_salt'] . $form_name . $token_sid); + + $s_fields = build_hidden_fields(array( + 'creation_time' => $now, + 'form_token' => $token, + )); + + $template->assign_var('S_FORM_TOKEN' . $template_variable_suffix, $s_fields); +} + +/** + * Check the form key. Required for all altering actions not secured by confirm_box + * + * @param string $form_name The name of the form; has to match the name used + * in add_form_key, otherwise no restrictions apply + * @param int $timespan The maximum acceptable age for a submitted form + * in seconds. Defaults to the config setting. + * @return bool True, if the form key was valid, false otherwise + */ +function mx_check_form_key($form_name, $timespan = false) +{ + global $board_config, $mx_request_vars, $mx_user; + + if ($timespan === false) + { + // we enforce a minimum value of half a minute here. + $timespan = ($board_config['form_token_lifetime'] == -1) ? -1 : max(30, $board_config['form_token_lifetime']); + } + + if ($mx_request_vars->is_set_post('creation_time') && $mx_request_vars->is_set_post('form_token')) + { + $creation_time = abs($mx_request_vars->request('creation_time', 0)); + $token = $mx_request_vars->variable('form_token', ''); + + $diff = time() - $creation_time; + + // If creation_time and the time() now is zero we can assume it was not a human doing this (the check for if ($diff)... + if (defined('DEBUG_TEST') || $diff && ($diff <= $timespan || $timespan === -1)) + { + $token_sid = ($mx_user->data['user_id'] == ANONYMOUS && !empty($board_config['form_token_sid_guests'])) ? $mx_user->session_id : ''; + $key = sha1($creation_time . $mx_user->data['user_form_salt'] . $form_name . $token_sid); + + if ($key === $token) + { + return true; + } + } + } + + return false; +} /** * Generate Pagination. @@ -1067,31 +1276,31 @@ function mx_generate_pagination($base_url, $num_items, $per_page, $start_item, $ /** * Get userdata * - * Get Userdata, $user can be username or user_id. If force_str is true, the username will be forced. + * Get Userdata, $mx_user can be username or user_id. If force_str is true, the username will be forced. * Cached sql, since this function is used for every block. * - * @param unknown_type $user id or name + * @param unknown_type $mx_user id or name * @param boolean $force_str force clean_username * @return array */ -function mx_get_userdata($user, $force_str = false) +function mx_get_userdata($mxuser, $force_str = false) { - global $db; + global $db, $phpBB2; - if (!is_numeric($user) || $force_str) + if (!is_numeric($mxuser) || $force_str) { - $user = phpBB2::phpbb_clean_username($user); + $mxuser = $phpBB2->phpbb_clean_username($mxuser); } else { - $user = intval($user); + $mxuser = intval($mxuser); } $sql = "SELECT * FROM " . USERS_TABLE . " WHERE "; - $sql .= ((is_integer($user)) ? "user_id = $user" : "username = '" . str_replace("\'", "''", $user) . "'" ) . " AND user_id <> " . ANONYMOUS; - if (!($result = $db->sql_query($sql, 120))) + $sql .= ((is_integer($mxuser)) ? "user_id = $mxuser" : "username = '" . str_replace("\'", "''", $mxuser) . "'" ) . " AND user_id <> " . ANONYMOUS; + if (!($result = $db->sql_query($sql))) { mx_message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql); } @@ -1101,6 +1310,205 @@ function mx_get_userdata($user, $force_str = false) return $return; } +/** +* Get user avatar +* +* @param array $user_row Row from the users table +* @param string $alt Optional language string for alt tag within image, can be a language key or text +* @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP +* @param bool $lazy If true, will be lazy loaded (requires JS) +* +* @return string Avatar html +*/ +function mx_get_user_avatar($user_row, $alt = 'USER_AVATAR', $ignore_config = false, $lazy = false) +{ + return mx_get_avatar($user_row, $alt, $ignore_config, $lazy); +} + +/** +* Get group avatar +* +* @param array $group_row Row from the groups table +* @param string $alt Optional language string for alt tag within image, can be a language key or text +* @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP +* @param bool $lazy If true, will be lazy loaded (requires JS) +* +* @return string Avatar html +*/ +function mx_get_group_avatar($user_row, $alt = 'GROUP_AVATAR', $ignore_config = false, $lazy = false) +{ + return mx_get_avatar($user_row, $alt, $ignore_config, $lazy); +} + +/** +* Build gravatar URL for output on page +* +* @param array $row User data or group data that has been cleaned with +* \phpbb\avatar\manager::clean_row +* @return string Gravatar URL +*/ +function mx_get_gravatar_url($row) +{ + $url = '//secure.gravatar.com/avatar/'; + + $url .= md5(strtolower(trim($row['avatar']))); + + if ($row['avatar_width'] || $row['avatar_height']) + { + $url .= '?s=' . max($row['avatar_width'], $row['avatar_height']); + } + + return $url; +} + +/** +* Get avatar +* +* @param array $row Row cleaned by \phpbb\avatar\manager::clean_row +* @param string $alt Optional language string for alt tag within image, can be a language key or text +* @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP +* @param bool $lazy If true, will be lazy loaded (requires JS) +* +* @return string Avatar html +*/ +function mx_get_avatar($row, $alt, $ignore_config = false, $lazy = false) +{ + global $mx_user, $board_config, $mx_cache, $phpbb_root_path, $phpEx; + + if (!$mx_user->optionget('viewavatars') && !$ignore_config) + { + return ''; + } + + $row = array( + 'avatar' => isset($row['avatar']) ? $row['avatar'] : $row['user_avatar'], + 'avatar_type' => isset($row['avatar_type']) ? $row['avatar_type'] : $row['user_avatar_type'], + 'avatar_width' => isset($row['avatar_width']) ? $row['avatar_width'] : (isset($row['user_avatar_width']) ? $row['user_avatar_width'] : '120'), + 'avatar_height' => isset($row['avatar_height']) ? $row['avatar_height'] : (isset($row['user_avatar_height']) ? $row['user_avatar_height'] : '120'), + ); + + $avatar_data = array( + 'src' => $row['avatar'], + 'width' => $row['avatar_width'], + 'height' => $row['avatar_height'], + ); + + + $driver = $row['avatar_type']; + $html = ''; + + if ($driver) + { + $html = ''; + + if (!empty($html)) + { + return $html; + } + + $root_path = generate_portal_url(); + + $avatar_data = array( + 'src' => $root_path . $board_config['avatar_gallery_path'] . '/' . $row['avatar'], + 'width' => $row['avatar_width'], + 'height' => $row['avatar_height'], + ); + } + else + { + $avatar_data['src'] = ''; + } + + if (!empty($avatar_data['src'])) + { + if ($lazy) + { + // Determine board url - we may need it later + $board_url = generate_portal_url() . '/'; + // This path is sent with the base template paths in the assign_vars() + // call below. We need to correct it in case we are accessing from a + // controller because the web paths will be incorrect otherwise. + + $web_path = $board_url; + + if (is_dir($phpbb_root_path . $mx_user->template_path . $mx_user->template_name . '/theme/images/')) + { + $theme_images = "{$web_path}{$mx_user->template_path}" . rawurlencode($mx_user->template_name) . '/theme/images'; + } + elseif (is_dir($phpbb_root_path . $mx_user->template_path . $mx_user->template_name . '/images/')) + { + $theme_images = "{$web_path}{$mx_user->template_path}" . rawurlencode($mx_user->template_name . '/images'); + } + $src = 'src="' . $theme_images . '/no_avatar.gif" data-src="' . $avatar_data['src'] . '"'; + } + else + { + $src = 'src="' . $avatar_data['src'] . '"'; + } + + $html = ''; + } + return $html; +} + +/** +* Get user rank title and image +* +* @param array $userdata the current stored users data +* @param int $user_posts the users number of posts +* +* @return array An associative array containing the rank title (title), the rank image as full img tag (img) and the rank image source (img_src) +* +* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false +*/ +function mx_get_user_rank($userdata, $user_posts, &$rank_title = null, &$rank_img = null, &$rank_img_src = null) +{ + global $ranks, $board_config, $phpbb_root_path; + + $user_rank_data = array( + 'title' => $rank_title ? $rank_title : null, + 'img' => $rank_img ? $rank_img : null, + 'img_src' => $rank_img_src ? $rank_img_src : null, + ); + + if (empty($ranks)) + { + global $mx_cache; + $ranks = $mx_cache->obtain_ranks(); + } + + if (!empty($userdata)) + { + $user_rank_data['title'] = (isset($ranks['special'][$userdata['user_rank']]['rank_title'])) ? $ranks['special'][$userdata['user_rank']]['rank_title'] : ''; + $user_rank_data['img'] = (!empty($ranks['special'][$userdata['user_rank']]['rank_image'])) ? '' . $ranks['special'][$userdata['user_rank']]['rank_title'] . '' : ''; + $user_rank_data['img_src'] = (!empty($ranks['special'][$userdata['user_rank']]['rank_image'])) ? $phpbb_root_path . $board_config['ranks_path'] . '/' . $ranks['special'][$userdata['user_rank']]['rank_image'] : ''; + } + else if ($user_posts !== false) + { + if (!empty($ranks['normal'])) + { + foreach ($ranks['normal'] as $rank) + { + if ($user_posts >= $rank['rank_min']) + { + $user_rank_data['title'] = $rank['rank_title']; + $user_rank_data['img'] = (!empty($rank['rank_image'])) ? '' . $rank['rank_title'] . '' : ''; + $user_rank_data['img_src'] = (!empty($rank['rank_image'])) ? $phpbb_root_path . $board_config['ranks_path'] . '/' . $rank['rank_image'] : ''; + break; + } + } + } + } + + return $user_rank_data; +} + /** * Select language. * @@ -1182,7 +1590,7 @@ function mx_style_select($default_style, $select_name = "style", $dirname = "tem { $style_select .= ''; } - + /* while (!($row = $db->sql_fetchrow($result))) { $sql = "SELECT themes_id, style_name @@ -1193,7 +1601,8 @@ function mx_style_select($default_style, $select_name = "style", $dirname = "tem { mx_message_die(GENERAL_ERROR, "Couldn't query themes table", "", __LINE__, __FILE__, $sql); } - } + } + */ while ($row = $db->sql_fetchrow($result)) { $id = $row['themes_id']; @@ -2070,7 +2479,7 @@ function mx_this_url($args = '', $force_standalone_mode = false, $file = '') */ function mx_session_start() { - global $board_config, $do_gzip_compress; + global $board_config, $do_gzip_compress, $mx_user, $mx_request_vars, $sid; // // Prevent from doing the job more than once. @@ -2096,9 +2505,9 @@ function mx_session_start() { $phpver = phpversion(); - $useragent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT'); + $mx_useragent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT'); - if ($phpver >= '4.0.4pl1' && (strstr($useragent,'compatible') || strstr($useragent,'Gecko'))) + if ($phpver >= '4.0.4pl1' && (strstr($mx_useragent,'compatible') || strstr($mx_useragent,'Gecko'))) { if (extension_loaded('zlib')) { @@ -2126,8 +2535,24 @@ function mx_session_start() // Initialize PHP session // //phpinfo(); - session_start(); - // + //Security check + if(is_object($mx_request_vars) || !empty($mx_user->session_id)) + { + // session id check + if (!$mx_request_vars->is_empty_request('sid')) + { + $sid = $mx_request_vars->request('sid', MX_TYPE_NO_TAGS, $mx_user->session_id); + } + session_id(strip_tags($sid)); + } + // ok to try and start the session + if (!empty($sid)) + { + if (!session_start()) + { + mx_message_die(GENERAL_ERROR, "Failed to start the session", '', __LINE__, __FILE__, $sid); + } + } } /** @@ -2151,12 +2576,12 @@ function get_page_id($search_item, $use_function_file = false, $get_page_data_ar // // Try to reuse results. // - $cache_key = '_pagemap_block' . $search_item; + $mx_cache_key = '_pagemap_block' . $search_item; $page_id_array = array(); - if ( $mx_cache->_exists( $cache_key ) ) + if ( $mx_cache->_exists( $mx_cache_key ) ) { - $page_id_array = unserialize( $mx_cache->get( $cache_key ) ); + $page_id_array = unserialize( $mx_cache->get( $mx_cache_key ) ); } else { @@ -2324,7 +2749,7 @@ function get_page_id($search_item, $use_function_file = false, $get_page_data_ar $page_id_array['block_id'] = isset($p_row['block_id']) ? $p_row['block_id'] : 0; } unset($p_row); - $mx_cache->put( $cache_key, serialize($page_id_array) ); + $mx_cache->put( $mx_cache_key, serialize($page_id_array) ); } if ( $get_page_data_array && !empty($page_id_array['page_id']) ) @@ -2463,6 +2888,30 @@ function mx_parent_data($block_id, $key = '') return false; } +/** + * Get MX-Publisher modules + * + * @return modules array + */ +function obtain_portal_modules() +{ + global $db; + + $modules = array(); + + $sql = "SELECT * FROM " . MODULE_TABLE . " ORDER BY module_name"; + if( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain modules from database", '', __LINE__, __FILE__, $sql); + } + while ($row = $db->sql_fetchrow($result)) + { + $modules[] = $row; + } + $db->sql_freeresult($result); + return $modules; +} + /** * Compose MX-Publisher copyrights and credits page. * @access public @@ -2484,7 +2933,7 @@ function compose_mx_copy() $mx_module_copy = '

' . $lang['mx_copy_title'] . '



'; $mx_module_copy .= '
' . '' . $lang['mx_copy_modules_title'] . ''; - for( $i = 0; $i < count($module); $i++ ) + for( $i = 0; $i < $count = count($module); $i++ ) { if( !empty($module[$i]['module_copy']) ) { @@ -2714,28 +3163,28 @@ function get_backtrace() * * Creates missing config entry if needed. * - * @param unknown_type $config_name - * @param unknown_type $config_value + * @param unknown_type $board_config_name + * @param unknown_type $board_config_value * @param unknown_type $is_dynamic */ - function mx_set_config($config_name, $config_value) + function mx_set_config($board_config_name, $board_config_value) { global $db, $mx_cache, $portal_config; $sql = 'UPDATE ' . PORTAL_TABLE . " - SET config_value = '" . $db->sql_escape($config_value) . "' - WHERE config_name = '" . $db->sql_escape($config_name) . "'"; + SET config_value = '" . $db->sql_escape($board_config_value) . "' + WHERE config_name = '" . $db->sql_escape($board_config_name) . "'"; $db->sql_query($sql); - if (!$db->sql_affectedrows() && !isset($portal_config[$config_name])) + if (!$db->sql_affectedrows() && !isset($portal_config[$board_config_name])) { $sql = 'INSERT INTO ' . PORTAL_TABLE . ' ' . $db->sql_build_array('INSERT', array( - 'config_name' => $config_name, - 'config_value' => $config_value)); + 'config_name' => $board_config_name, + 'config_value' => $board_config_value)); $db->sql_query($sql); } - $portal_config[$config_name] = $config_value; + $portal_config[$board_config_name] = $board_config_value; $mx_cache->put( 'mxbb_config', $portal_config ); } } @@ -3005,7 +3454,7 @@ function update_portal_backend($new_backend = PORTAL_BACKEND) $dbcharacter_set = "uft8"; /* - $config = array( + $board_config = array( 'dbms' => $dbms, 'dbhost' => $dbhost, 'dbname' => $dbname, @@ -3043,18 +3492,18 @@ function update_portal_backend($new_backend = PORTAL_BACKEND) $process_msgs[] = 'Writing config ...
'; - $config_data = "<"."?php\n\n"; - $config_data .= "// $mx_portal_name auto-generated config file\n// Do not change anything in this file!\n\n"; - $config_data .= "// This file must be put into the $mx_portal_name directory, not into the phpBB directory.\n\n"; - $config_data .= '$'."dbms = '$dbms';\n\n"; - $config_data .= '$'."dbhost = '$dbhost';\n"; - $config_data .= '$'."dbname = '$dbname';\n"; - $config_data .= '$'."dbuser = '$dbuser';\n"; - $config_data .= '$'."dbpasswd = '$dbpasswd';\n\n"; - $config_data .= '$'."mx_table_prefix = '$mx_table_prefix';\n\n"; - $config_data .= "define('DBCHARACTER_SET', '$dbcharacter_set');\n\n"; - $config_data .= "define('MX_INSTALLED', true);\n\n"; - $config_data .= '?' . '>'; // Done this to prevent highlighting editors getting confused! + $board_config_data = "<"."?php\n\n"; + $board_config_data .= "// $mx_portal_name auto-generated config file\n// Do not change anything in this file!\n\n"; + $board_config_data .= "// This file must be put into the $mx_portal_name directory, not into the phpBB directory.\n\n"; + $board_config_data .= '$'."dbms = '$dbms';\n\n"; + $board_config_data .= '$'."dbhost = '$dbhost';\n"; + $board_config_data .= '$'."dbname = '$dbname';\n"; + $board_config_data .= '$'."dbuser = '$dbuser';\n"; + $board_config_data .= '$'."dbpasswd = '$dbpasswd';\n\n"; + $board_config_data .= '$'."mx_table_prefix = '$mx_table_prefix';\n\n"; + $board_config_data .= "define('DBCHARACTER_SET', '$dbcharacter_set');\n\n"; + $board_config_data .= "define('MX_INSTALLED', true);\n\n"; + $board_config_data .= '?' . '>'; // Done this to prevent highlighting editors getting confused! @umask(0111); @chmod($mx_root_path . "config.$phpEx", 0644); @@ -3063,10 +3512,10 @@ function update_portal_backend($new_backend = PORTAL_BACKEND) { $process_msgs[] = "Unable to write config file " . $mx_root_path . "config.$phpEx" . "
\n"; } - $result = @fputs($fp, $config_data, strlen($config_data)); + $result = @fputs($fp, $board_config_data, strlen($board_config_data)); @fclose($fp); - $process_msgs[] = ''.str_replace("\n", "
\n", htmlspecialchars($config_data)).'
'; + $process_msgs[] = ''.str_replace("\n", "
\n", htmlspecialchars($board_config_data)).'
'; $message = '
'; for( $i=0; $i < count($process_msgs); $i++ ) @@ -3119,11 +3568,13 @@ function t($string, array $args = array(), array $options = array()) { global $lang, $mx_cache, $mx_user, $board_config; static $lang_string; + // Merge in default. if (empty($options['langcode'])) { $options['langcode'] = isset($lang['USER_LANG']) ? $lang['USER_LANG'] : $mx_user->encode_lang($board_config['default_lang']); } + if (!empty($lang[$string])) { $lang_string = $lang[$string]; @@ -3132,6 +3583,7 @@ function t($string, array $args = array(), array $options = array()) { $lang_string = $string; } + if (empty($args)) { return $lang_string; diff --git a/includes/mx_functions_admincp.php b/includes/mx_functions_admincp.php index 42b946e2..1b1155e1 100644 --- a/includes/mx_functions_admincp.php +++ b/includes/mx_functions_admincp.php @@ -2842,31 +2842,7 @@ function_admin= '$module_data[6]' $sql_delete = "DELETE FROM " . PARAMETER_TABLE . " WHERE function_id = " . $module_data[1] . " AND parameter_id = " . $module_data[2]; break; - // - // 0: option, 1: option_id, 2: parameter_id, 3: option_code, - // 4: option_desc - // - case 'option': - // Parameter Option - $sql = "SELECT * FROM " . PARAMETER_OPTION_TABLE . " WHERE parameter_id = ".intval($module_data[2])." ORDER BY option_id"; - if(($result = $db->sql_query($sql))) - { - $table = PARAMETER_OPTION_TABLE; - $fldkey = 'option_id'; - $key = $module_data[1]; - - $sql_add = "INSERT INTO " . PARAMETER_OPTION_TABLE . " (option_id, parameter_id, option_code, option_desc) - VALUES ('$module_data[1]', '$module_data[2]', '$module_data[3]', '$module_data[4]' )"; - - $sql_update = "UPDATE " . PARAMETER_OPTION_TABLE . " - SET parameter_id = '$module_data[2]', - option_code = '$module_data[3]', - option_desc = '$module_data[4]' - WHERE option_id = '$module_data[1]'"; - - $sql_delete = "DELETE FROM " . PARAMETER_OPTION_TABLE . " WHERE option_id = " . $module_data[1] . " AND parameter_id = " . $module_data[2]; - } - break; + // // 0: block, 1: block_id, 2: block_title, 3: block_desc, // 4: function_id, 5: auth_view, 6: auth_edit, 7: auth_delete @@ -3165,28 +3141,6 @@ function export_pack($module_id) $module_pak .= $resultset_param[$p]['parameter_order'] . "\n"; $paramater_id = $resultset_param[$p]['parameter_id']; - - // Parameter Option - $sql = "SELECT * FROM " . PARAMETER_OPTION_TABLE . " WHERE parameter_id = $paramater_id ORDER BY option_id"; - if(($result = $db->sql_query($sql))) - { - $resultset_opt = $db->sql_fetchrowset($result); - - // 0: option, 1: option_id, 2: parameter_id, 3: option_code, - // 4: option_desc - for( $o = 0; $o < count($resultset_opt); $o++ ) - { - $module_pak .= 'option' . $delimeter . $resultset_opt[$o]['option_id'] . $delimeter; - $module_pak .= $resultset_opt[$o]['parameter_id'] . $delimeter; - $module_pak .= $resultset_opt[$o]['option_code'] . $delimeter; - $module_pak .= $resultset_opt[$o]['option_desc'] . "\n"; - } - - $module_pak .= 'option' . $delimeter. '0' . $delimeter; - $module_pak .= '0' . $delimeter; - $module_pak .= '0' . $delimeter; - $module_pak .= 'endoflist' . $delimeter . "\n"; - } } $module_pak .= 'parameter' . $delimeter . '0' . $delimeter; diff --git a/includes/mx_functions_bbcode.php b/includes/mx_functions_bbcode.php index 9ba77fbe..161b1ba6 100644 --- a/includes/mx_functions_bbcode.php +++ b/includes/mx_functions_bbcode.php @@ -85,8 +85,8 @@ function prepare_bbcode_template($bbcode_tpl) { global $document_id, $access_key, $height, $width; global $lang; - $bbcode_tpl['olist_open'] = str_replace('{LIST_TYPE}', '\\1', $bbcode_tpl['olist_open']); + //$bbcode_tpl['mlist_open'] = str_replace('{LIST_TYPE}', '\\1', $bbcode_tpl['mlist_open']); $bbcode_tpl['color_open'] = str_replace('{COLOR}', '\\1', $bbcode_tpl['color_open']); $bbcode_tpl['size_open'] = str_replace('{SIZE}', '\\1', $bbcode_tpl['size_open']); $bbcode_tpl['quote_open'] = str_replace('{L_QUOTE}', $lang['Quote'], $bbcode_tpl['quote_open']); @@ -112,14 +112,35 @@ function prepare_bbcode_template($bbcode_tpl) $bbcode_tpl['email'] = str_replace('{EMAIL}', '\\1', $bbcode_tpl['email']); // bbcode_box Mod - $bbcode_tpl['align_open'] = str_replace('{ALIGN}', '\\1', $bbcode_tpl['align_open']); - // $bbcode_tpl['stream'] = str_replace('{URL}', '\\1', $bbcode_tpl['stream']); + // $bbcode_tpl['stream'] = str_replace('{URL}', '\\1', $bbcode_tpl['stream']); $bbcode_tpl['ram'] = str_replace('{URL}', '\\1', $bbcode_tpl['ram']); $bbcode_tpl['marq_open'] = str_replace('{MARQ}', '\\1', $bbcode_tpl['marq_open']); - $bbcode_tpl['table_open'] = str_replace('{TABLE}', '\\1', $bbcode_tpl['table_open']); - $bbcode_tpl['cell_open'] = str_replace('{CELL}', '\\1', $bbcode_tpl['cell_open']); - $bbcode_tpl['web'] = str_replace('{URL}', '\\1', $bbcode_tpl['web']); - //$bbcode_tpl['center_open'] = str_replace('{CENTER}', '\\1', $bbcode_tpl['center_open']); + + // table + $bbcode_tpl['table_open'] = str_replace('{TABLE}', '\\1', $bbcode_tpl['table_open']); + // tr + $bbcode_tpl['tr_open'] = str_replace('{TR}', '\\1', $bbcode_tpl['tr_open']); + // th + $bbcode_tpl['th_open'] = str_replace('{TH}', '\\1', $bbcode_tpl['th_open']); + // td + $bbcode_tpl['td_open'] = str_replace('{TD}', '\\1', $bbcode_tpl['td_open']); + // cell + $bbcode_tpl['cell_open'] = str_replace('{CELL}', '\\1', $bbcode_tpl['cell_open']); + // thead + $bbcode_tpl['thead_open'] = str_replace('{THEAD}', '\\1', $bbcode_tpl['thead_open']); + // tbody + $bbcode_tpl['tbody_open'] = str_replace('{TBODY}', '\\1', $bbcode_tpl['tbody_open']); + // center + $bbcode_tpl['center_open'] = str_replace('{CENTER}', '\\1', $bbcode_tpl['center_open']); + // align + $bbcode_tpl['align_open'] = str_replace('{ALIGN}', '\\1', $bbcode_tpl['align_open']); + // float + $bbcode_tpl['float_open'] = str_replace('{FLOAT}', '\\1', $bbcode_tpl['float_open']); + // fa + $bbcode_tpl['fa_open'] = str_replace('{TEXT}', '\\1', $bbcode_tpl['fa_open']); + + $bbcode_tpl['web'] = str_replace('{URL}', '\\1', $bbcode_tpl['web']); + //$bbcode_tpl['flash'] = str_replace('{WIDTH}', '\\1', $bbcode_tpl['flash']); //$bbcode_tpl['flash'] = str_replace('{HEIGHT}', '\\2', $bbcode_tpl['flash']); //$bbcode_tpl['flash'] = str_replace('{URL}', '\\3', $bbcode_tpl['flash']); @@ -176,6 +197,21 @@ function bbcode_nl2br($text) * a thread. Assumes the message is already first-pass encoded, and we are given the * correct UID as used in first-pass encoding. * This a temporary function + + Creating an BBcode List with a custom bullet character. + For example to list your favorite colors you could use: + + [list=square] + [*]Red + [*]Blue + [*]Yellow + [/list] + + The question is how to specify a custom list’s bullet such as [b]?[/b] for a Features BBcode List ? + + [b]√[/b][color=#FF0000]Red[/color] + [b]√[/b][color=#0040FF]Blue[/color] + [b]√[/b][color=#FFFF00]Yellow[/color] */ function bbencode_second_pass($text, $uid = '', $bitfield = false) { @@ -200,8 +236,8 @@ function bbencode_second_pass($text, $uid = '', $bitfield = false) $this->bbcode_second_pass($text, $uid, $bitfield); } - //$text = str_replace(array("\n", "\r"), array('
', "\n"), $text); - $text = str_replace(array("\n", "\r"), array('
', ""), $text); + $text = str_replace(array("\n", "\r"), array('
', "\n"), $text); + $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text); // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0). @@ -243,14 +279,23 @@ function bbencode_second_pass($text, $uid = '', $bitfield = false) // [list] and [list=x] for (un)ordered lists. // unordered lists $text = str_replace("[list:$uid]", $bbcode_tpl['ulist_open'], $text); + // li tags $text = str_replace("[*:$uid]", $bbcode_tpl['listitem'], $text); + // ending tags $text = str_replace("[/list:u:$uid]", $bbcode_tpl['ulist_close'], $text); $text = str_replace("[/list:o:$uid]", $bbcode_tpl['olist_close'], $text); - // Ordered lists - $text = preg_replace("/\[list=([a1]):$uid\]/si", $bbcode_tpl['olist_open'], $text); - + //$text = str_replace("[/list:m:$uid]", $bbcode_tpl['mlist_close'], $text); + // Ordered lists + $text = preg_replace("/\[list=([a1]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([disc]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([circle]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([square]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([radical]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([none]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([^\[]+):$uid\][\n]/si", $bbcode_tpl['mlist_open'], $text); + // colours $text = preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+):$uid\]/si", $bbcode_tpl['color_open'], $text); $text = str_replace("[/color:$uid]", $bbcode_tpl['color_close'], $text); @@ -262,7 +307,13 @@ function bbencode_second_pass($text, $uid = '', $bitfield = false) // [b] and [/b] for bolding text. $text = str_replace("[b:$uid]", $bbcode_tpl['b_open'], $text); $text = str_replace("[/b:$uid]", $bbcode_tpl['b_close'], $text); - + + // [fa] and [/fa] for bolding text. + $text = str_replace("[fa:$uid]", $bbcode_tpl['fa_open'], $text); + $text = str_replace("[fa_logo:$uid]", $bbcode_tpl['fa_logo_open'], $text); + $text = str_replace("[/fa:$uid]", $bbcode_tpl['fa_close'], $text); + $text = str_replace("[/fa_logo:$uid]", $bbcode_tpl['fa_logo_close'], $text); + // [u] and [/u] for underlining text. $text = str_replace("[u:$uid]", $bbcode_tpl['u_open'], $text); $text = str_replace("[/u:$uid]", $bbcode_tpl['u_close'], $text); @@ -280,8 +331,8 @@ function bbencode_second_pass($text, $uid = '', $bitfield = false) // [img]image_url_here[/img] code.. // This one gets first-passed.. $patterns[] = "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i"; - $replacements[] = $bbcode_tpl['img']; - + $replacements[] = $bbcode_tpl['img']; + // matches a [url]xxxx://www.phpbb.com[/url] code.. $patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is"; $replacements[] = $bbcode_tpl['url1']; @@ -297,10 +348,13 @@ function bbencode_second_pass($text, $uid = '', $bitfield = false) // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix). $patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"; $replacements[] = $bbcode_tpl['url4']; - + // [email]user@domain.tld[/email] code.. $patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si"; - $replacements[] = $bbcode_tpl['email']; + $replacements[] = $bbcode_tpl['email']; + + $patterns[] = "#\[ram\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/ram\]#si"; + $replacements[] = $bbcode_tpl['ram']; //Strat more bbcode $text = preg_replace($patterns, $replacements, $text); @@ -310,16 +364,39 @@ function bbencode_second_pass($text, $uid = '', $bitfield = false) // marquee $text = preg_replace("/\[marq=(left|right|up|down):$uid\]/si", $bbcode_tpl['marq_open'], $text); $text = str_replace("[/marq:$uid]", $bbcode_tpl['marq_close'], $text); + // html + $text = $this->bbencode_second_pass_html($text, $uid, $bbcode_tpl); // table - $text = preg_replace("/\[table=(.*?):$uid\]/si", $bbcode_tpl['table_open'], $text); - $text = str_replace("[/table:$uid]", $bbcode_tpl['table_close'], $text); + $text = str_replace("[table:$uid]", $bbcode_tpl['table_open'], $text); + $text = str_replace("[/table:$uid]", $bbcode_tpl['table_close'], $text); + // tr + $text = str_replace("[tr:$uid]", $bbcode_tpl['tr_open'], $text); + $text = str_replace("[/tr:$uid]", $bbcode_tpl['tr_close'], $text); + // th + $text = preg_replace("[th:$uid]", $bbcode_tpl['th_open'], $text); + $text = str_replace("[/th:$uid]", $bbcode_tpl['th_close'], $text); + // td + $text = preg_replace("[td:$uid]", $bbcode_tpl['td_open'], $text); + $text = str_replace("[/td:$uid]", $bbcode_tpl['td_close'], $text); // cell $text = preg_replace("/\[cell=(.*?):$uid\]/si", $bbcode_tpl['cell_open'], $text); $text = str_replace("[/cell:$uid]", $bbcode_tpl['cell_close'], $text); + // thead + $text = preg_replace("[thead:$uid]", $bbcode_tpl['thead_open'], $text); + $text = str_replace("[/thead:$uid]", $bbcode_tpl['thead_close'], $text); + // tbody + $text = preg_replace("[tbody:$uid]", $bbcode_tpl['tbody_open'], $text); + $text = str_replace("[/tbody:$uid]", $bbcode_tpl['tbody_close'], $text); // center $text = preg_replace("/\[center:$uid\]/si", $bbcode_tpl['center_open'], $text); $text = str_replace("[/center:$uid]", $bbcode_tpl['center_close'], $text); - // font + // align + $text = preg_replace("/\[align:$uid\]/si", $bbcode_tpl['align_open'], $text); + $text = str_replace("[/align:$uid]", $bbcode_tpl['align_close'], $text); + // float + $text = preg_replace("/\[float:$uid\]/si", $bbcode_tpl['float_open'], $text); + $text = str_replace("[/float:$uid]", $bbcode_tpl['float_close'], $text); + // font $text = preg_replace("/\[font=(.*?):$uid\]/si", $bbcode_tpl['font_open'], $text); $text = str_replace("[/font:$uid]", $bbcode_tpl['font_close'], $text); // poet @@ -401,7 +478,6 @@ function bbencode_second_pass($text, $uid = '', $bitfield = false) function replace_listitems($text, $uid) { $text = str_replace("[*]", "[*:$uid]", $text); - return $text; } @@ -435,7 +511,7 @@ function bbencode_first_pass($text, $uid) // [ipaper] and [/ipaper] for posting scribd embed bbcode in your posts. $text = $this->bbencode_first_pass_pda($text, $uid, '[ipaper]', '[/ipaper]', '', true, ''); - + // [scribd] and [/scribd] for posting scribd embed bbcode in your posts. $text = $this->bbencode_first_pass_pda($text, $uid, '[scribd]', '[/scribd]', '', false, ''); $text = $this->bbencode_first_pass_pda($text, $uid, '/\[scribd\\\\id=([0-9A-Za-z-_]{8})\\\\key=([0-9A-Za-z-_]{24})\](.*?)\]/is', '[/scribd]', '', false, '', "[scribd:$uid=\\\id=\\1\\\key=\\2\\\]"); @@ -446,10 +522,15 @@ function bbencode_first_pass($text, $uid) // unordered.. $text = $this->bbencode_first_pass_pda($text, $uid, $open_tag, "[/list]", "[/list:u]", false, 'replace_listitems'); - + $open_tag[0] = "[list=1]"; $open_tag[1] = "[list=a]"; - + //$open_tag[0] = "[list=disc]"; + //$open_tag[0] = "[list=circle]"; + //$open_tag[0] = "[list=square]"; + //$open_tag[0] = "[list=radical]"; + //$open_tag[0] = "[list=none]"; + // ordered. $text = $this->bbencode_first_pass_pda($text, $uid, $open_tag, "[/list]", "[/list:o]", false, 'replace_listitems'); @@ -461,7 +542,11 @@ function bbencode_first_pass($text, $uid) // [b] and [/b] for bolding text. $text = preg_replace("#\[b\](.*?)\[/b\]#si", "[b:$uid]\\1[/b:$uid]", $text); - + + // [fa] and [/fa] for simple text. + $text = preg_replace("#\[fa\](.*?)\[/fa\]#si", "[fa:$uid]\\1[/fa:$uid]", $text); + $text = preg_replace("#\[fa_logo\](.*?)\[/fa_logo\]#si", "[fa_logo:$uid]\\1[/fa_logo:$uid]", $text); + // [u] and [/u] for underlining text. $text = preg_replace("#\[u\](.*?)\[/u\]#si", "[u:$uid]\\1[/u:$uid]", $text); @@ -469,14 +554,18 @@ function bbencode_first_pass($text, $uid) $text = preg_replace("#\[i\](.*?)\[/i\]#si", "[i:$uid]\\1[/i:$uid]", $text); // [img]image_url_here[/img] code.. - $text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text); - + $text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#si", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text); + //Start more bbcode $text = str_replace('url:' . $uid, 'url', $text); // [stream]Sound URL[/stream] code.. $text = preg_replace("#\[stream\](.*?)\[/stream\]#si", "[stream:$uid]\\1[/stream:$uid]", $text); + // [html width=X height=X] [/html] code.. + $text = $this->bbencode_first_pass_pda($text, $uid, '[html]', '[/html]', '', true, ''); + + // [scribd width=X height=X]Scribd URL[/scribd] code.. $text = preg_replace("#\[scribd width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\](([a-z]+?)://([^, \n\r]+))\[\/scribd\]#si","[scribd width=\\1 height=\\2:$uid\]\\3[/scribd:$uid]", $text); @@ -489,7 +578,7 @@ function bbencode_first_pass($text, $uid) //Stop more bbcode // Remove our padding from the string.. - return substr($text, 1);; + return substr($text, 1); } // bbencode_first_pass() @@ -684,24 +773,18 @@ function bbencode_first_pass_pda($text, $uid, $open_tag, $close_tag, $close_tag_ $after_end_tag = substr($text, $curr_pos + $close_tag_length); // Mark the lowest nesting level if needed. - if ($mark_lowest_level && ($curr_nesting_depth == 1)) - { - if ($open_tag[0] == '[code]') - { - $code_entities_match = array('#<#', '#>#', '#"#', '#:#', '#\[#', '#\]#', '#\(#', '#\)#', '#\{#', '#\}#'); - $code_entities_replace = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}'); - $between_tags = preg_replace($code_entities_match, $code_entities_replace, $between_tags); - } - $text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$curr_nesting_depth:$uid]"; - $text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$curr_nesting_depth:$uid]"; - } - else + if (!$mark_lowest_level && ($curr_nesting_depth !== 1)) { if ($open_tag[0] == '[code]') { $text = $before_start_tag . '[code]'; $text .= $between_tags . '[/code]'; } + elseif ($open_tag[0] == '[html]') + { + $text = $before_start_tag . '[ ]'; + $text .= $between_tags . '[ ]'; + } else { if ($open_is_regexp) @@ -715,7 +798,23 @@ function bbencode_first_pass_pda($text, $uid, $open_tag, $close_tag, $close_tag_ $text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$uid]"; } } - + elseif ($mark_lowest_level && ($curr_nesting_depth == 1)) + { + if ($open_tag[0] == '[code]') + { + $code_entities_match = array('#<#', '#>#', '#"#', '#:#', '#\[#', '#\]#', '#\(#', '#\)#', '#\{#', '#\}#'); + $code_entities_replace = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}'); + $between_tags = preg_replace($code_entities_match, $code_entities_replace, $between_tags); + } + if ($open_tag[0] == '[html]') + { + $code_entities_match = array('#<#', '#>#', '#"#', '#:#', '#\[#', '#\]#', '#\(#', '#\)#', '#\{#', '#\}#'); + $code_entities_replace = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}'); + $between_tags = preg_replace($code_entities_match, $code_entities_replace, $between_tags); + } + $text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$curr_nesting_depth:$uid]"; + $text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$curr_nesting_depth:$uid]"; + } $text .= $after_end_tag; // Now.. we've screwed up the indices by changing the length of the string. @@ -804,7 +903,56 @@ function bbencode_second_pass_code($text, $uid, $bbcode_tpl) return $text; } // bbencode_second_pass_code() + + /** + * Rewritten by Florin C Bodin - August 2, 2018. + */ + function bbencode_second_pass_html($text, $uid, $bbcode_tpl) + { + global $lang; + + $html_start_html = $bbcode_tpl['html_open']; + $html_end_html = $bbcode_tpl['html_close']; + + // First, do all the 1st-level matches. These need an htmlspecialchars() run, + // so they have to be handled differently. + $match_count = preg_match_all("#\[html:1:$uid\](.*?)\[/html:1:$uid\]#si", $text, $matches); + + for ($i = 0; $i < $match_count; $i++) + { + $before_replace = $matches[1][$i]; + $after_replace = $matches[1][$i]; + + // Replace 2 spaces with "  " so non-tabbed table indents without making huge long lines. + $after_replace = str_replace(" ", "  ", $after_replace); + // now Replace 2 spaces with "  " to catch odd #s of spaces. + $after_replace = str_replace(" ", "  ", $after_replace); + + // Replace tabs with "   " so tabbed table indents sorta right without making huge long lines. + $after_replace = str_replace("\t", "   ", $after_replace); + + // now Replace space occurring at the beginning of a line + $after_replace = preg_replace("/^ {1}/m", ' ', $after_replace); + + $str_to_match = "[html:1:$uid]" . $before_replace . "[/html:1:$uid]"; + + $replacement = $html_start_html; + + $replacement .= $after_replace; + + $replacement .= $html_end_html; + + $text = str_replace($str_to_match, $replacement, $text); + } + + // Now, do all the non-first-level matches. These are simple. + $text = str_replace("[html:$uid]", $html_start_html, $text); + $text = str_replace("[/html:$uid]", $html_end_html, $text); + return $text; + + } // bbencode_second_pass_html() + //phpBB Temporary code ends /** diff --git a/includes/mx_functions_blockcp.php b/includes/mx_functions_blockcp.php index 41df5bd6..b68474b4 100644 --- a/includes/mx_functions_blockcp.php +++ b/includes/mx_functions_blockcp.php @@ -421,7 +421,7 @@ function _controlpanel($id, $new_block = false) /* * PRIVATE auth */ - + $groupdata = array(); // Get the list of phpBB usergroups $sql = $mx_backend->generate_group_select_sql(); if( !($result = $db->sql_query($sql)) ) @@ -441,7 +441,7 @@ function _controlpanel($id, $new_block = false) $moderator_groups = @explode(',', $this->block_info['auth_moderator_group']); $row_private = ''; - for( $i = 0; $i < count($groupdata); $i++ ) + for( $i = 0; $i < $count = count($groupdata); $i++ ) { $row_color = ( !( $i % 2 ) ) ? 'row1' : 'row2'; $row_private .= '
'; diff --git a/includes/mx_functions_core.php b/includes/mx_functions_core.php index 56a07053..87752a0b 100644 --- a/includes/mx_functions_core.php +++ b/includes/mx_functions_core.php @@ -74,19 +74,19 @@ class mx_cache extends cache */ public function __construct() { - global $mx_root_path, $phpbb_root_path, $phpEx; + global $mx_root_path, $phpbb_root_path; global $db, $portal_config; global $mx_table_prefix, $table_prefix, $phpEx, $tplEx; global $mx_backend, $phpbb_auth, $mx_bbcode; - $this->path = $mx_root_path; + $this->path = ($mx_root_path) ? $mx_root_path : './'; + $this->php_ext = $phpEx; + $this->cache_dir = $mx_root_path . 'cache/'; $this->backend = $mx_backend; $this->backend_path = $phpbb_root_path; $this->db = $db; $this->config = $portal_config; - $this->php_ex = $phpEx; - $this->tpl_ex = $tplEx; - $this->cache_dir = $mx_root_path . 'cache/'; + $this->tpl_ext = $tplEx; $this->prefix = $mx_table_prefix; } @@ -118,14 +118,16 @@ public function load_backend($portal_backend = false) // Overwrite Backend $this->portal_config = $portal_config; - + if (($portal_config['portal_backend']) && @file_exists($portal_config['portal_backend_path'] . "index.$phpEx")) + { + $this->backend_path = (!$portal_config['portal_backend_path']) ? $this->backend_path : $portal_config['portal_backend_path']; + } if ($this->backend) { $portal_config['portal_backend'] = $this->backend; } - - // No backend defined ? Portal not updated to v. 3 ? - if ((!$portal_config['portal_backend']) && @file_exists($this->phpbb_path . "profile.$phpEx")) + // No backend defined ? MXP-CMS not updated to v. 3 ? + if ((!$portal_config['portal_backend']) && @file_exists($this->backend_path . "profile.$phpEx")) { $portal_config['portal_backend'] = 'phpbb2'; $portal_config['portal_backend_path'] = $this->backend_path; @@ -139,10 +141,8 @@ public function load_backend($portal_backend = false) } // Load backend $mx_root_path = $this->path; - $phpbb_root_path = $this->backend_path; - $phpEx = $this->php_ex; - $tplEx = $this->tpl_ex; - require($this->path . 'includes/sessions/'.$portal_config['portal_backend'].'/core.'. $this->php_ex); + $phpbb_root_path = $this->backend_path; + require($this->path . 'includes/sessions/'.$portal_config['portal_backend'].'/core.'. $this->php_ext); //Redirect to upgrade or redefine portal backend path if (!$portal_config['portal_backend_path']) @@ -186,6 +186,46 @@ public function load_backend($portal_backend = false) require($mx_root_path . 'includes/sessions/'.PORTAL_BACKEND.'/constants.' . $phpEx); } + /** + * Enter description here... + * + * @access public + * @param boolean $use_cache + * @return unknown + */ + function obtain_phpbb_config($use_cache = true) + { + global $db; + + if (($config = $this->get('phpbb_config')) && $use_cache) + { + return $config; + } + else + { + $sql = "SELECT * + FROM " . CONFIG_TABLE; + + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); + } + + while ( $row = $db->sql_fetchrow($result) ) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + if ($use_cache) + { + $this->put('phpbb_config', $config); + } + + return ( $config ); + } + } + /** * Get MX-Publisher config data * @@ -250,7 +290,6 @@ public function obtain_mxbb_config($use_cache = true) public function load_file($file = '', $force_shared = false) { global $mx_root_path, $phpbb_root_path, $phpEx, $mx_page, $mx_backend; - /* * Remember loaded files */ @@ -258,11 +297,11 @@ public function load_file($file = '', $force_shared = false) { return; } - + $mx_page->loaded_files[] = $file . (is_string($force_shared) ? $force_shared : ''); - + $path = $mx_backend->load_file($force_shared); - + if (file_exists($path . $file.'.'.$phpEx)) { @include_once($path . $file.'.'.$phpEx); @@ -276,13 +315,13 @@ public function load_file($file = '', $force_shared = false) public function init_mod_rewrite() { global $portal_config, $mx_root_path, $phpEx, $mx_mod_rewrite; - + if ($portal_config['mod_rewrite']) { if ( file_exists( $mx_root_path . 'modules/mx_mod_rewrite/includes/rewrite_functions.' . $phpEx ) ) { include_once( $mx_root_path . 'modules/mx_mod_rewrite/includes/rewrite_functions.' . $phpEx ); - + if (class_exists('mx_mod_rewrite')) { $mx_mod_rewrite = new mx_mod_rewrite(); @@ -306,7 +345,7 @@ public function init_mod_rewrite() public function _read_config($id = 1, $sub_id = 0, $type, $force_query = false) { global $portal_config, $mx_root_path; - + switch ($type) { case MX_CACHE_BLOCK_TYPE: @@ -502,7 +541,169 @@ public function _get_block_config($id = '', $sub_id = 0) unset($row); $db->sql_freeresult($result); } + // -------------------------------------------------------------------GET DATA + // Read the variable block configuration + function block_config($id = '', $sub_id = 0, $config = '') + { + global $db; + + $this->block_config = array(); + + // If this block doesn't have any parameters, we need this additional query :( + $sql_block = !empty($id) ? " AND block_id = " . $id : ''; + + // Generate block parameter data + $sql = "SELECT blk.*, + mdl.module_path, mdl.module_name, + fnc.function_file, fnc.function_id, fnc.function_admin + FROM " . BLOCK_TABLE . " blk, + " . FUNCTION_TABLE . " fnc, + " . MODULE_TABLE . " mdl + WHERE blk.function_id = fnc.function_id + AND fnc.module_id = mdl.module_id"; + $sql .= $sql_block; + $sql .= " ORDER BY block_id"; + + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, 'Could not obtain block data information', '', __LINE__, __FILE__, $sql ); + } + + while ($row = $db->sql_fetchrow($result)) + { + $block_id = $row['block_id']; + + $block_row = array( + "block_id" => $row['block_id'], + "block_title" => $row['block_title'], + "block_desc" => $row['block_desc'], + "auth_view" => $row['auth_view'], + "auth_view_group" => $row['auth_view_group'], + "auth_edit" => $row['auth_edit'], + "auth_edit_group" => $row['auth_edit_group'], + "auth_moderator_group" => $row['auth_moderator_group'], + "show_block" => $row['show_block'], + "show_title" => $row['show_title'], + "show_stats" => $row['show_stats'], + "block_time" => $row['block_time'], + "block_editor_id" => $row['block_editor_id'], + "module_root_path" => $row['module_path'], + "module_name" => $row['module_name'], + "block_file" => $row['function_file'], + "block_edit_file" => $row['function_admin'], + "function_id" => $row['function_id'] + ); + + $this->block_config[$block_id]['block_info'] = $block_row; + } + + $db->sql_freeresult($result); + $sql_block = !empty( $id ) ? ' AND sys.block_id = ' . $id : ''; + $sql_sub = !empty( $sub_id ) ? ' AND sys.sub_id = ' . $sub_id : ' AND sys.sub_id = 0'; + + // Generate block parameter data + $sql = "SELECT blk.*, + sys.parameter_id, sys.parameter_value, sys.parameter_opt, + par.*, + mdl.module_path, mdl.module_name, + bct.column_id, + fnc.function_file, fnc.function_id, fnc.function_admin + FROM " . BLOCK_SYSTEM_PARAMETER_TABLE . " sys, + " . PARAMETER_TABLE . " par, + " . BLOCK_TABLE . " blk, + " . FUNCTION_TABLE . " fnc, + " . MODULE_TABLE . " mdl, + " . COLUMN_BLOCK_TABLE . " bct + WHERE sys.parameter_id = par.parameter_id + AND sys.block_id = blk.block_id + AND blk.function_id = fnc.function_id + AND fnc.module_id = mdl.module_id"; + + $sql .= $sql_block; + $sql .= $sql_sub; + $sql .= " ORDER BY sys.block_id, par.parameter_order"; + + if (!($result = $db->sql_query($sql))) + { + mx_message_die( GENERAL_ERROR, 'Could not obtain block data information', '', __LINE__, __FILE__, $sql ); + } + + $block_id = 0; + while ( $row = $db->sql_fetchrow( $result ) ) + { + $next_block = ( $block_id != $row['block_id'] ) ? true : false; + $block_id = $row['block_id']; + + $block_row = array( + "block_id" => $row['block_id'], + "block_title" => $row['block_title'], + "block_desc" => $row['block_desc'], + "column_id" => $row['column_id'], + "auth_view" => $row['auth_view'], + "auth_view_group" => $row['auth_view_group'], + "auth_edit" => $row['auth_edit'], + "auth_edit_group" => $row['auth_edit_group'], + "auth_moderator_group" => $row['auth_moderator_group'], + "show_block" => $row['show_block'], + "show_title" => $row['show_title'], + "show_stats" => $row['show_stats'], + "block_time" => $row['block_time'], + "block_editor_id" => $row['block_editor_id'], + "module_root_path" => $row['module_path'], + "module_name" => $row['module_name'], + "block_file" => $row['function_file'], + "block_edit_file" => $row['function_admin'], + "function_id" => $row['function_id'] + ); + + $param_row = array( + "parameter_id" => $row['parameter_id'], + "function_id" => $row['function_id'], + "parameter_name" => $row['parameter_name'], + "parameter_type" => $row['parameter_type'], + "parameter_auth" => $row['parameter_auth'], + "parameter_value" => $row['parameter_value'], + "parameter_default" => $row['parameter_default'], + "parameter_function" => $row['parameter_function'], + "parameter_opt" => $row['parameter_opt'], + "parameter_order" => $row['parameter_order'] + ); + + if ( $next_block ) + { + $temp_row = array(); + $temp_row = array( 'block_info' => $block_row ); + } + + $temp_row['block_parameters'][$param_row['parameter_name']] = $param_row; + // + // Compose the pages config array + // + $this->block_config[$block_id] = $temp_row; + } + unset($row); + $db->sql_freeresult($result); + + switch($config) + { + case 'block_info': + return $block_row; + break; + + case 'block_parameters': + return $param_row; + break; + + case 'block_config': + return $this->block_config; + break; + + default: + return $this->block_config; + break; + } + } /** * Query page data * @@ -1040,13 +1241,16 @@ public function _write($filename, $data = null, $expires = 0, $query = '') fclose($handle); - if (!function_exists('mx_chmod')) + if (!function_exists('mx3_chmod')) { - global $mx_root_path; - include($mx_root_path . 'includes/mx_functions.' . $phpEx); + //global $mx_root_path; + //include($mx_root_path . 'includes/mx_functions.' . $phpEx); + mx_chmod($file, CHMOD_READ | CHMOD_WRITE); + } + else + { + mx3_chmod($file, CHMOD_READ | CHMOD_WRITE); } - - mx_chmod($file, CHMOD_READ | CHMOD_WRITE); $return_value = true; } @@ -1140,10 +1344,10 @@ class cache */ public function __construct() { - global $mx_root_path, $phpEx; + global $mx_root_path; - $this->path = $mx_root_path; - $this->php_ext = $phpEx; + $this->path = ($mx_root_path) ? $mx_root_path : './'; + $this->php_ext = substr(strrchr(__FILE__, '.')); $this->cache_dir = $mx_root_path . 'cache/'; } @@ -1389,12 +1593,12 @@ public function sql_save($query, &$query_result, $ttl) public function sql2_save($query, &$query_result, $ttl) { global $db, $phpEx; - + // Remove extra spaces and tabs $query = preg_replace('/[\n\r\s\t]+/', ' ', $query); $hash = md5($query); - if ($fp = @fopen($this->cache_dir . 'sql_' . md5($query) . '.' . $phpEx, 'wb')) + if ($fp = @fopen($this->cache_dir . 'sql_' . md5($query) . '.' . $this->php_ext, 'wb')) { @flock($fp, LOCK_EX); @@ -1459,8 +1663,8 @@ public function _exists($var_name) { if ($var_name{0} == '_') { - global $phpEx; - return file_exists($this->cache_dir . 'data' . $var_name . ".$phpEx"); + $phpEx = substr(strrchr(__FILE__, '.'), 1); + return file_exists($this->cache_dir . 'data' . $var_name . "." . $phpEx); } else { @@ -1586,8 +1790,7 @@ public function put($var_name, $var, $ttl = 31536000) { if ($var_name{0} == '_') { - global $phpEx; - + $phpEx = substr(strrchr(__FILE__, '.'), 1); if ($fp = @fopen($this->cache_dir . 'data' . $var_name . ".$phpEx", 'wb')) { @flock($fp, LOCK_EX); @@ -1617,8 +1820,7 @@ public function put($var_name, $var, $ttl = 31536000) */ public function destroy($var_name, $table = '') { - global $phpEx; - + $phpEx = substr(strrchr(__FILE__, '.'), 1); if ($var_name == 'sql' && !empty($table)) { $regex = '(' . ((is_array($table)) ? implode('|', $table) : $table) . ')'; @@ -1652,7 +1854,7 @@ public function destroy($var_name, $table = '') if ($var_name{0} == '_') { - @unlink($this->cache_dir . 'data' . $var_name . ".$phpEx"); + @unlink($this->cache_dir . 'data' . $var_name . "." . $phpEx); } else if (isset($this->vars[$var_name])) { @@ -1816,8 +2018,8 @@ class mx_block extends mx_block_parameter * @access public * @var string */ - var $function_id = ''; - var $block_id = ''; + var $function_id = 0; + var $block_id = 0; var $block_title = ''; var $block_desc = ''; /**#@-*/ @@ -1841,8 +2043,9 @@ class mx_block extends mx_block_parameter * @access public * @var string */ - var $module_root_path = ''; - var $block_file = ''; + var $module_root_path = 'modules/mx_coreblocks/'; + var $php_ext = 'php7'; + var $block_file = 'app.php5'; var $block_edit_file = ''; /**#@-*/ @@ -1851,7 +2054,7 @@ class mx_block extends mx_block_parameter * * @access public */ - var $virtual_id = ''; + var $virtual_id = 0; var $block_virtual_parameters = array(); /**#@-*/ @@ -1860,7 +2063,7 @@ class mx_block extends mx_block_parameter * * @access public */ - var $dynamic_block_id = ''; + var $dynamic_block_id = 0; var $is_dynamic = false; /**#@-*/ @@ -1869,7 +2072,7 @@ class mx_block extends mx_block_parameter * * @access public */ - var $total_subs = ''; + var $total_subs = 0; var $sub_block_ids = ''; var $sub_block_sizes = ''; var $sub_inner_space = ''; @@ -1904,9 +2107,9 @@ class mx_block extends mx_block_parameter */ public function _set_all() { - global $userdata, $lang; + global $mx_user, $userdata, $lang; - $is_admin = ($userdata['user_level'] == ADMIN && $userdata['session_logged_in']) ? true : 0; + $is_admin = ($mx_user->data['user_level'] == ADMIN && $mx_user->data['session_logged_in']) ? true : 0; // Weird rewrite for php5 - anyone explaining why wins a medal ;) $temp_row = isset($this->block_config[$this->block_id]) ? $this->block_config[$this->block_id] : false; @@ -2000,7 +2203,7 @@ public function _is_dynamic() { global $mx_request_vars, $phpEx; - $is_dynamic = ( ( $this->block_file == 'mx_dynamic.' . $phpEx ) ? true : false ); + $is_dynamic = ( ( $this->block_file == 'mx_dynamic.' . $this->php_ext ) ? true : false ); if ( $is_dynamic ) { @@ -2019,7 +2222,8 @@ public function _is_dynamic() public function _is_sub() { global $phpEx; - $is_sub = ( ( $this->block_file == 'mx_multiple_blocks.' . $phpEx ) ? true : false ); + + $is_sub = ( ( $this->block_file == 'mx_multiple_blocks.' . $this->php_ext ) ? true : false ); if ( $is_sub ) { @@ -2153,10 +2357,7 @@ public function virtual_create($virtual_id = '', $project_name = '') } $db->sql_freeresult($result); } - - } - $mx_cache->_read_config($this->block_id, $virtual_id, MX_CACHE_BLOCK_TYPE); } @@ -2184,7 +2385,6 @@ public function virtual_update($virtual_id = '', $project_name = '') } $db->sql_freeresult($result); } - $mx_cache->update(MX_CACHE_BLOCK_TYPE, $this->block_id, $virtual_id); } @@ -2280,7 +2480,7 @@ public function output_full_page() { global $layouttemplate, $mx_page; - mx_message_die(GENERAL_MESSAGE,$this->block_contents); + mx_message_die(GENERAL_MESSAGE, $this->block_contents); } /** @@ -2289,18 +2489,18 @@ public function output_full_page() */ public function output_stats() { - global $layouttemplate, $board_config, $lang, $userdata; + global $layouttemplate, $board_config, $lang, $mx_user, $phpBB2, $userdata; if ( $this->show_stats && !empty($this->block_time) && !empty($this->editor_id) ) { - $is_admin = ( $userdata['user_level'] == ADMIN && $userdata['session_logged_in'] ) ? TRUE : 0; + $is_admin = ($mx_user->data['user_level'] == ADMIN && $mx_user->data['session_logged_in'] ) ? TRUE : 0; $editor_name_tmp = mx_get_userdata($this->editor_id); $editor_name = $editor_name_tmp['username']; - $edit_time = phpBB2::create_date( $board_config['default_dateformat'], $this->block_time, $board_config['board_timezone'] ); + $edit_time = $phpBB2->create_date( $board_config['default_dateformat'], $this->block_time, $board_config['board_timezone'] ); $layouttemplate->assign_block_vars('layout_column.blocks.block_stats', array( 'L_BLOCK_UPDATED' => $lang['Block_updated_date'], - 'EDITOR_NAME' => $is_admin ? $lang['Block_updated_by'] . $editor_name : '', + 'EDITOR_NAME' => $is_admin ? $lang['Block_updated_by'] . ' ' . $editor_name : '', 'EDIT_TIME' => $edit_time )); } @@ -2344,7 +2544,7 @@ public function output_title() */ public function output_cp_button($overall_header = false) { - global $layouttemplate, $userdata, $mx_root_path, $mx_page, $lang, $block_size, $images, $phpEx; + global $layouttemplate, $mx_user, $userdata, $mx_root_path, $mx_page, $lang, $block_size, $images, $phpEx; // // Define some hidden Edit Block parameters @@ -2376,7 +2576,7 @@ public function output_cp_button($overall_header = false) // Compose buttons and info // $block_desc = !empty( $this->block_desc ) ? ' (' . $this->block_desc . ')' : ''; - $edit_url = mx_append_sid( $mx_root_path . $edit_file . "?sid=" . $userdata['session_id'] ); + $edit_url = mx_append_sid($mx_root_path . $edit_file . "?sid=" . $mx_user->data['session_id']); $edit_img = ''; $this->virtual_id = isset($this->virtual_id) ? $this->virtual_id : ''; //Virtual Id is Not Set ? @@ -2389,9 +2589,13 @@ public function output_cp_button($overall_header = false) // Output // $temp_array = array( - 'BLOCK_SIZE' => ( !empty( $block_size ) ? $block_size : '100%' ), + 'BLOCK_SIZE' => (!empty($block_size) ? $block_size : '100%'), 'EDIT_ACTION' => $edit_url, 'EDIT_IMG' => $edit_img, + 'EDIT_BLOCK_ALT' => $block_edit_alt, + 'EDIT_BLOCK_TITLE' => $this->block_title, + 'EDIT_BLOCK_DESC' => $block_desc, + 'EDIT_IMG_SRC' => $block_edit_img, 'EDITCP_SHOW' => $mx_page->editcp_show ? '' : 'none', 'S_HIDDEN_FORM_FIELDS' => $s_hidden_fields ); @@ -2436,7 +2640,7 @@ public function get_parameters($key = MX_GET_ALL_PARS, $mode = MX_GET_PAR_VALUE) global $mx_request_vars; $block_config_temp = ''; - + if ($key == MX_GET_ALL_PARS) { return array_merge($this->block_info, $this->block_parameters); @@ -2446,7 +2650,32 @@ public function get_parameters($key = MX_GET_ALL_PARS, $mode = MX_GET_PAR_VALUE) { return $this->block_parameters[$key]['parameter_opt']; } - + /** **/ + if (!isset($this->block_parameters[$key]['parameter_value'])) + { + $keys = (array) $key; + + foreach ($keys as $key) + { + $level = 0; + if (is_array($key)) + { + $pars_key = $key[0]; + $param_key = $key[1]; + if (count($key) > 2) + { + $level = $key[2]; + } + } + else + { + $pars_key = $key; + $param_key = $keys[0]; + } + $key = trim($pars_key); + } + } + /** **/ return !empty($this->virtual_id) ? $this->block_virtual_parameters[$key]['parameter_value'] : $this->block_parameters[$key]['parameter_value']; } @@ -2466,20 +2695,20 @@ public function auth($type) case AUTH_ALL: $auth_fields = array('auth_view', 'auth_edit'); $auth_fields_groups = array('auth_view_group', 'auth_edit_group'); - break; + break; case AUTH_VIEW: $auth_fields = array('auth_view'); $auth_fields_groups = array('auth_view_group'); - break; + break; case AUTH_EDIT: $auth_fields = array('auth_edit'); $auth_fields_groups = array('auth_edit_group'); - break; + break; default: - break; + break; } $auth_user = array(); @@ -2522,27 +2751,27 @@ public function auth($type) case AUTH_ALL: $auth_user[$auth_fields[$i]] = TRUE; $auth_user[$auth_fields[$i] . '_type'] = $lang['Auth_Anonymous_Users']; - break; + break; case AUTH_REG: $auth_user[$auth_fields[$i]] = ( $userdata['session_logged_in'] ) ? TRUE : 0; $auth_user[$auth_fields[$i] . '_type'] = $lang['Auth_Registered_Users']; - break; + break; case AUTH_ANONYMOUS: $auth_user[$auth_fields[$i]] = ( ! $userdata['session_logged_in'] ) ? TRUE : 0; $auth_user[$auth_fields[$i] . '_type'] = $lang['Auth_Anonymous_Users']; - break; + break; case AUTH_ACL: // PRIVATE $auth_user[$auth_fields[$i]] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($this->block_info[$auth_fields_groups[$i]]) || $is_admin : 0; $auth_user[$auth_fields[$i] . '_type'] = $lang['Auth_Users_granted_access']; - break; + break; case AUTH_MOD: $auth_user[$auth_fields[$i]] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($this->block_info['auth_moderator_group']) || $is_admin : 0; $auth_user[$auth_fields[$i] . '_type'] = $lang['Auth_Moderators']; - break; + break; case AUTH_ADMIN: $auth_user[$auth_fields[$i]] = $is_admin; @@ -2551,7 +2780,7 @@ public function auth($type) default: $auth_user[$auth_fields[$i]] = 0; - break; + break; } } @@ -2562,9 +2791,136 @@ public function auth($type) return $auth_user; } -} // class mx_block + + /** + * Block authb extend + * + * @access private + * @param integer $type all, view or edit + * @return array + */ + function block_auth($type, $module_id, $userdata, $f_access = '', $f_access_group = '') + { + global $db, $lang; -/** + switch( $type ) + { + // case AUTH_ALL: + // $a_sql = 'a.auth_view, a.auth_edit, a.auth_delete'; + // $a_sql_groups = 'a.auth_view_group, a.auth_edit_group, a.auth_delete_group'; + // $auth_fields = array('auth_view', 'auth_edit', 'auth_delete'); + // $auth_fields_groups = array('auth_view_group', 'auth_edit_group', 'auth_delete_group'); + // break; + + case AUTH_VIEW: + $a_sql = 'a.auth_view'; + $a_sql_groups = 'a.auth_view_group'; + $auth_fields = array('auth_view'); + $auth_fields_groups = array('auth_view_group'); + break; + + case AUTH_EDIT: + $a_sql = 'a.auth_edit'; + $a_sql_groups = 'a.auth_edit_group'; + $auth_fields = array('auth_edit'); + $auth_fields_groups = array('auth_edit_group'); + break; + + case AUTH_DELETE: + $a_sql = 'a.auth_delete'; + $a_sql_groups = 'a.auth_delete_group'; + $auth_fields = array('auth_delete'); + $auth_fields_groups = array('auth_delete_group'); + break; + + default: + break; + } + + if( $module_id == 0 ) + { + if( $userdata['user_level'] == ADMIN && $userdata['session_logged_in'] ) + { + $auth_user[$auth_fields[0]] = 1; + $auth_user[$auth_fields[0] . '_type'] = $lang['Auth_Moderators']; + } + else + { + $auth_user[$auth_fields[0]] = 0; + $auth_user[$auth_fields[0] . '_type'] = $lang['Auth_Moderators']; + } + return $auth_user; + } + + $is_admin = ( $userdata['user_level'] == ADMIN && $userdata['session_logged_in'] ) ? TRUE : 0; + + $auth_user = array(); + for( $i = 0; $i < count($auth_fields); $i++ ) + { + $key = $auth_fields[$i]; + $key_groups = $auth_fields_groups[$i]; + // + // If the user is logged on and the module type is either ALL or REG then the user has access + // + // If the type if ACL, MOD or ADMIN then we need to see if the user has specific permissions + // to do whatever it is they want to do ... to do this we pull relevant information for the + // user (and any groups they belong to) + // + // Now we compare the users access level against the modules. We assume here that a moderator + // and admin automatically have access to an ACL module, similarly we assume admins meet an + // auth requirement of MOD + // + $value = $f_access[$key]; + // $value_groups = $f_access_group[$key_groups]; + $value_groups = $f_access_group; + + switch($value) + { + case AUTH_ALL: + $auth_user[$key] = TRUE; + $auth_user[$key . '_type'] = $lang['Auth_Anonymous_Users']; + break; + + case AUTH_REG: + $auth_user[$key] = ( $userdata['session_logged_in'] ) ? TRUE : 0; + $auth_user[$key . '_type'] = $lang['Auth_Registered_Users']; + break; + + case AUTH_ANONYMOUS: + $auth_user[$key] = ( ! $userdata['session_logged_in'] ) ? TRUE : 0; + $auth_user[$key . '_type'] = $lang['Auth_Anonymous_Users']; + break; + + case AUTH_ACL: // PRIVATE + $auth_user[$key] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($value_groups) || $is_admin : 0; + $auth_user[$key . '_type'] = $lang['Auth_Users_granted_access']; + break; + + case AUTH_MOD: + $auth_user[$key] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($f_access_group['auth_moderator_group']) || $is_admin : 0; + $auth_user[$key . '_type'] = $lang['Auth_Moderators']; + break; + + case AUTH_ADMIN: + $auth_user[$key] = $is_admin; + $auth_user[$key . '_type'] = $lang['Auth_Administrators']; + break; + + default: + $auth_user[$key] = 0; + break; + } + } + + // + // Is user a moderator? + $auth_user['auth_mod'] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($f_access_group['auth_moderator_group']) || $is_admin : 0; + + return $auth_user; + } +} // class mx_block + +/** * Class: mx_block_parameter. * * This is the CORE mx_block_parameter object. @@ -2723,36 +3079,36 @@ public function submit_parameters( $block_id = false ) case 'Text': case 'TextArea': $parameter_value = htmlspecialchars( trim( $parameter_value ) ); - break; + break; case 'BBText': $bbcode_uid = $parameter_opt = $mx_bbcode->make_bbcode_uid(); $parameter_value = $mx_bbcode->prepare_message($parameter_value, true, true, true, $bbcode_uid); - break; + break; case 'Html': $parameter_value = $mx_bbcode->prepare_message($parameter_value, true, false, false); - break; + break; case 'Number': $parameter_value = intval($parameter_value); - break; + break; case 'Function': if( is_array($parameter_value) ) { //$parameter_value = implode(',' , htmlspecialchars($parameter_value)); $parameter_value = implode(',' , $parameter_value); } - break; + break; // Custom Fields case 'Radio_single_select': case 'Menu_single_select': $parameter_value = htmlspecialchars( trim( $parameter_value ) ); - break; + break; case 'Menu_multiple_select': case 'Checkbox_multiple_select': $parameter_value = addslashes( serialize( $parameter_value ) ); - break; + break; case 'Separator': - break; + break; default: $parameter_custom = $this->_submit_custom_module_parameters($parameter_data, $block_id); @@ -2816,8 +3172,6 @@ public function submit_parameters( $block_id = false ) // $mx_cache->update(MX_CACHE_BLOCK_TYPE, $block_id, $sub_id); // Maybe ambitious, but why not ;) $message .= $lang['AdminCP_action'] . ": " . $lang['Block'] . ' ' . $lang['was_updated']; - - } return $message; } @@ -2853,42 +3207,42 @@ public function load_block_parameters( $block_id = false ) { case 'Separator': $this->display_edit_Separator( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'Text': $this->display_edit_PlainTextField( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'TextArea': $this->display_edit_PlainTextAreaField( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'BBText': $this->display_edit_BBText( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'Html': $this->display_edit_Html( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'Boolean': $this->display_edit_Boolean( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'Number': $this->display_edit_Number( $block_id, $parameter_data['parameter_id'], $parameter_data ); break; case 'Function': $this->display_edit_Function( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; // Custom Fields case 'Radio_single_select': $this->display_edit_Radio_single_select( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'Menu_single_select': $this->display_edit_Menu_single_select( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'Menu_multiple_select': $this->display_edit_Menu_multiple_select( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; case 'Checkbox_multiple_select': $this->display_edit_Checkbox_multiple_select( $block_id, $parameter_data['parameter_id'], $parameter_data ); - break; + break; default: $module_root_path = $mx_root_path . $this->module_root_path; $this->is_panel = $this->_get_custom_module_parameters($parameter_data, $block_id); @@ -2948,7 +3302,6 @@ public function display_edit_Separator( $block_id, $parameter_id, $parameter_dat 'PARAMETER_TYPE' => ( !empty($lang["ParType_".$parameter_data['parameter_type']]) ) ? $lang["ParType_".$parameter_data['parameter_type']] : '', 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '' )); - $template->pparse('parameter'); } @@ -2977,7 +3330,6 @@ public function display_edit_PlainTextField( $block_id, $parameter_id, $paramete 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '', 'PARAMETER_FIELD' => $parameter_field )); - $template->pparse('parameter'); } @@ -3006,7 +3358,6 @@ public function display_edit_PlainTextAreaField( $block_id, $parameter_id, $para 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '', 'PARAMETER_FIELD' => $parameter_field )); - $template->pparse('parameter'); } @@ -3039,7 +3390,6 @@ public function display_edit_BBText( $block_id, $parameter_id, $parameter_data ) 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '', 'PARAMETER_FIELD' => $parameter_field )); - $template->pparse('parameter'); } @@ -3068,7 +3418,6 @@ public function display_edit_Html( $block_id, $parameter_id, $parameter_data ) 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '', 'PARAMETER_FIELD' => $parameter_field )); - $template->pparse('parameter'); } @@ -3097,7 +3446,6 @@ public function display_edit_Number( $block_id, $parameter_id, $parameter_data ) 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '', 'PARAMETER_FIELD' => $parameter_field )); - $template->pparse('parameter'); } @@ -3136,7 +3484,6 @@ public function display_edit_Boolean( $block_id, $parameter_id, $parameter_data 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '', 'PARAMETER_FIELD' => $parameter_field )); - $template->pparse('parameter'); } @@ -3167,7 +3514,6 @@ public function display_edit_Function( $block_id, $parameter_id, $parameter_data 'PARAMETER_TYPE_INFO' => ( !empty($lang["ParType_".$parameter_data['parameter_type'] . "_info"]) ) ? ' :: ' . $lang["ParType_".$parameter_data['parameter_type'] . "_info"] : '', 'PARAMETER_FIELD' => $parameter_field )); - $template->pparse('parameter'); } @@ -3190,14 +3536,14 @@ public function display_edit_Radio_single_select( $block_id, $parameter_id, $par 'parameter' => 'admin/mx_core_parameters.tpl') ); - $template->assign_block_vars( 'radio', array( + $template->assign_block_vars('radio', array( 'PARAMETER_TITLE' => ( !empty($lang[$parameter_data['parameter_name']]) ) ? $lang[$parameter_data['parameter_name']] : $parameter_data['parameter_name'], 'PARAMETER_TITLE_EXPLAIN' => ( !empty($lang[$parameter_data['parameter_name']. "_explain"]) ) ? '
' . $lang[$parameter_data['parameter_name']. "_explain"] : '', 'FIELD_NAME' => ( !empty($lang[$parameter_data['parameter_name']]) ) ? $lang[$parameter_data['parameter_name']] : $parameter_data['parameter_name'], 'FIELD_ID' => $parameter_data['parameter_id'], 'FIELD_DESCRIPTION' => ( !empty($lang["ParType_".$parameter_data['parameter_type']]) ) ? $lang["ParType_".$parameter_data['parameter_type']] : '' - )); + )); if ( !empty( $parameter_datas ) ) { @@ -3208,7 +3554,6 @@ public function display_edit_Radio_single_select( $block_id, $parameter_id, $par ); } } - $template->pparse('parameter'); } @@ -3230,16 +3575,14 @@ public function display_edit_Menu_single_select( $block_id, $parameter_id, $para $template->set_filenames(array( 'parameter' => 'admin/mx_core_parameters.tpl') ); - - $template->assign_block_vars( 'select', array( + $template->assign_block_vars('select', array( 'PARAMETER_TITLE' => ( !empty($lang[$parameter_data['parameter_name']]) ) ? $lang[$parameter_data['parameter_name']] : $parameter_data['parameter_name'], 'PARAMETER_TITLE_EXPLAIN' => ( !empty($lang[$parameter_data['parameter_name']. "_explain"]) ) ? '
' . $lang[$parameter_data['parameter_name']. "_explain"] : '', 'FIELD_NAME' => ( !empty($lang[$parameter_data['parameter_name']]) ) ? $lang[$parameter_data['parameter_name']] : $parameter_data['parameter_name'], 'FIELD_ID' => $parameter_data['parameter_id'], 'FIELD_DESCRIPTION' => ( !empty($lang["ParType_".$parameter_data['parameter_type']]) ) ? $lang["ParType_".$parameter_data['parameter_type']] : '' - )); - + )); if ( !empty( $parameter_datas ) ) { foreach( $parameter_datas as $key => $value ) @@ -3249,7 +3592,6 @@ public function display_edit_Menu_single_select( $block_id, $parameter_id, $para ); } } - $template->pparse('parameter'); } @@ -3271,13 +3613,11 @@ public function display_edit_Menu_multiple_select( $block_id, $parameter_id, $pa $template->set_filenames(array( 'parameter' => 'admin/mx_core_parameters.tpl') ); - $template->assign_block_vars( 'select_multiple', array( 'FIELD_NAME' => ( !empty($lang[$parameter_data['parameter_name']]) ) ? $lang[$parameter_data['parameter_name']] : $parameter_data['parameter_name'], 'FIELD_ID' => $parameter_data['parameter_id'], 'FIELD_DESCRIPTION' => ( !empty($lang["ParType_".$parameter_data['parameter_type']]) ) ? $lang["ParType_".$parameter_data['parameter_type']] : '' - )); - + )); if ( !empty( $parameter_datas ) ) { foreach( $parameter_datas as $key => $value ) @@ -3299,7 +3639,6 @@ public function display_edit_Menu_multiple_select( $block_id, $parameter_id, $pa ); } } - $template->pparse('parameter'); } @@ -3352,7 +3691,6 @@ public function display_edit_Checkbox_multiple_select( $block_id, $parameter_id, ); } } - $template->pparse('parameter'); } @@ -3590,18 +3928,56 @@ public function modified( $true_false = false ) */ public function _set_all() { - global $userdata, $mx_root_path, $mx_request_vars, $portal_config, $theme, $lang; + global $mx_user, $db, $userdata, $board_config, $mx_root_path, $_COOKIE, $portal_config, $theme, $lang, $mx_request_vars; global $mx_block, $tplEx, $_GET; $this->info = &$this->page_config[$this->page_id]['page_info']; - $is_admin = ($userdata['user_level'] == ADMIN && $userdata['session_logged_in']) ? true : 0; + $is_admin = ($mx_user->data['user_level'] == ADMIN && $mx_user->data['session_logged_in']) ? true : 0; /* * IP filter */ $mx_ip = new mx_ip; - + + /* + /* We are trying to setup a style which does not exist in the database + /* Try to fallback to the board default (if the user had a custom style) + /* and then any users using this style to the default if it succeeds + * / + if (($mx_user->data['user_style'] == $board_config['default_style']) || ($mx_user->data['user_id'] == ANONYMOUS)) + { + $sql = 'SELECT template_name + FROM ' . THEMES_TABLE . ' + WHERE themes_id = ' . (int) $board_config['default_style']; + if ($theme = $db->sql_fetchrow($result = $db->sql_query($sql))) + { + $db->sql_freeresult($result); + } + } + else + { + $sql = 'SELECT template_name + FROM ' . THEMES_TABLE . ' + WHERE themes_id = ' . (int) $mx_user->data['user_style']; + if ($theme = $db->sql_fetchrow($result = $db->sql_query($sql))) + { + $db->sql_freeresult($result); + } + } + + if (file_exists($mx_root_path . 'templates/'. $theme['template_name'] . '/template/')) + { + $overall_header_tpl = (($this->page_id != 2) && file_exists($mx_root_path . 'templates/'. $theme['template_name'] . '/template/overall_header_navigation.'.$tplEx)) ? 'overall_header_navigation.'.$tplEx : $portal_config['overall_header']; + $overall_header_tpl = (($this->page_id == 2) && file_exists($mx_root_path . 'templates/'. $theme['template_name'] . '/template/overall_header_navigation_phpbb.'.$tplEx)) ? 'overall_header_navigation_phpbb.'.$tplEx : $overall_header_tpl; + } + else + { + $overall_header_tpl = (($this->page_id != 2) && file_exists($mx_root_path . 'templates/'. $theme['template_name'] . '/overall_header_navigation.'.$tplEx)) ? 'overall_header_navigation.'.$tplEx : $portal_config['overall_header']; + $overall_header_tpl = (($this->page_id == 2) && file_exists($mx_root_path . 'templates/'. $theme['template_name'] . '/overall_header_navigation_phpbb.'.$tplEx)) ? 'overall_header_navigation_phpbb.'.$tplEx : $overall_header_tpl; + } + /* */ + // // General // @@ -3611,17 +3987,20 @@ public function _set_all() $this->default_style = $this->info['default_style'] == -1 ? ($portal_config['default_style']) : ( $this->info['default_style'] ); $this->override_user_style = $this->info['override_user_style'] == -1 ? ($portal_config['override_user_style'] == 1 ? 1 : 0 ) : ( $this->info['override_user_style'] == 1 ? 1 : 0 ); + // // Setup demo style // - if (isset($_GET['strip']) && ($_GET['strip'] == true)) + if (isset($_GET['strip']) && ($mx_request_vars->is_get('strip') == true)) { $this->page_ov_header = 'overall_header_print.'.$tplEx; } else { $this->page_ov_header = !empty($this->info['page_header']) ? $this->info['page_header'] : $portal_config['overall_header']; + //$this->page_ov_header = !empty($this->info['page_header']) ? $this->info['page_header'] : $overall_header_tpl; } + $this->page_ov_footer = !empty($this->info['page_footer']) ? $this->info['page_footer'] : $portal_config['overall_footer']; $this->page_main_layout = !empty($this->info['page_main_layout']) ? $this->info['page_main_layout'] : $portal_config['main_layout']; $this->phpbb_stats = $this->info['phpbb_stats'] == -1 ? ($portal_config['top_phpbb_links'] == 1 ? true : false ) : ( $this->info['phpbb_stats'] == 1 ? true : false ); @@ -3642,7 +4021,7 @@ public function _set_all() $this->block_border_graphics = isset($theme['border_graphics']) ? $theme['border_graphics'] : false; - $s_hidden_fields = ''; + $s_hidden_fields = ''; $s_hidden_fields .= ''; $s_hidden_fields .= ''; $s_hidden_fields .= $mx_request_vars->is_get('f') ? '' : ''; @@ -3653,7 +4032,7 @@ public function _set_all() // // Generate the fold/unfold menu navigation switches (cookie based) // - $this->editcp_show = ( $userdata['user_level'] == ADMIN && isset($_COOKIE['editCP_switch']) ) ? $_COOKIE['editCP_switch'] == 1 : true; + $this->editcp_show = ($mx_user->data['user_level'] == ADMIN && isset($_COOKIE['editCP_switch'])) ? $_COOKIE['editCP_switch'] == 1 : true; $this->is_virtual = isset($this->page_config[$this->page_id]['virtual']) ? $this->page_config[$this->page_id]['virtual'] : false; } @@ -3665,25 +4044,25 @@ public function _set_all() * @param unknown_type $column * @return unknown */ - public function _get_colclass( $column ) + public function _get_colclass($column) { - if ( $this->total_column == 1 ) + if ($this->total_column == 1) { $colclass = 'middlecol'; } else { - switch( $column ) + switch($column) { case 0: $colclass = 'leftcol'; - break; + break; case 1: $colclass = 'middlecol'; - break; + break; case 2: $colclass = 'rightcol'; - break; + break; } } @@ -4020,17 +4399,17 @@ public function auth($auth_data = '', $group_data = '', $moderator_data = '') case AUTH_ALL: $auth_user[$auth_label[$i]] = TRUE; $auth_user[$auth_label[$i] . '_type'] = $lang['Auth_Anonymous_Users']; - break; + break; case AUTH_REG: $auth_user[$auth_label[$i]] = ($userdata['session_logged_in']) ? TRUE : 0; $auth_user[$auth_label[$i] . '_type'] = $lang['Auth_Registered_Users']; - break; + break; case AUTH_ANONYMOUS: $auth_user[$auth_label[$i]] = (!$userdata['session_logged_in']) ? TRUE : 0; $auth_user[$auth_label[$i] . '_type'] = $lang['Auth_Anonymous_Users']; - break; + break; case AUTH_ACL: // PRIVATE $auth_user[$auth_label[$i]] = ($userdata['session_logged_in']) ? mx_is_group_member($group_data) || $is_admin : 0; @@ -4040,16 +4419,16 @@ public function auth($auth_data = '', $group_data = '', $moderator_data = '') case AUTH_MOD: $auth_user[$auth_label[$i]] = ($userdata['session_logged_in']) ? mx_is_group_member($moderator_data) || $is_admin : 0; $auth_user[$auth_label[$i] . '_type'] = $lang['Auth_Moderators']; - break; + break; case AUTH_ADMIN: $auth_user[$auth_label[$i]] = $is_admin; $auth_user[$auth_label[$i] . '_type'] = $lang['Auth_Administrators']; - break; + break; default: $auth_user[$auth_label[$i]] = 0; - break; + break; } } // Is user a moderator? @@ -4057,7 +4436,80 @@ public function auth($auth_data = '', $group_data = '', $moderator_data = '') return $auth_user; } + /** + * Page auth extend. + * + * @access private + * @param unknown_type $auth_data + * @param unknown_type $group_data + * @param unknown_type $moderator_data + * @return array + */ + public function page_auth($type, $userdata, $f_access = '', $f_access_group = '') + { + global $db, $lang, $mx_user; + + $a_sql = 'a.auth_view'; + $a_sql_groups = 'a.auth_view_group'; + $auth_fields = array('auth_view'); + $auth_fields_groups = array('auth_view_group'); + + $is_admin = ( $mx_user->data['user_level'] == ADMIN && $userdata['session_logged_in'] ) ? TRUE : 0; + + $auth_user = array(); + for( $i = 0; $i < count($auth_fields); $i++ ) + { + $key = $auth_fields[$i]; + $key_groups = $auth_fields_groups[$i]; + + $value = $f_access[$key]; + // $value_groups = $f_access_group[$key_groups]; + $value_groups = $f_access_group; + + switch( $value ) + { + case AUTH_ALL: + $auth_user[$key] = TRUE; + $auth_user[$key . '_type'] = $lang['Auth_Anonymous_Users']; + break; + case AUTH_REG: + $auth_user[$key] = ( $userdata['session_logged_in'] ) ? TRUE : 0; + $auth_user[$key . '_type'] = $lang['Auth_Registered_Users']; + break; + + case AUTH_ANONYMOUS: + $auth_user[$key] = ( ! $userdata['session_logged_in'] ) ? TRUE : 0; + $auth_user[$key . '_type'] = $lang['Auth_Anonymous_Users']; + break; + + case AUTH_ACL: // PRIVATE + $auth_user[$key] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($value_groups) || $is_admin : 0; + $auth_user[$key . '_type'] = $lang['Auth_Users_granted_access']; + break; + + case AUTH_MOD: + $auth_user[$key] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($f_access_group['auth_moderator_group']) || $is_admin : 0; + $auth_user[$key . '_type'] = $lang['Auth_Moderators']; + break; + + case AUTH_ADMIN: + $auth_user[$key] = $is_admin; + $auth_user[$key . '_type'] = $lang['Auth_Administrators']; + break; + + default: + $auth_user[$key] = 0; + break; + } + } + + // + // Is user a moderator? + $auth_user['auth_mod'] = ( $userdata['session_logged_in'] ) ? mx_is_group_member($f_access_group['auth_moderator_group']) || $is_admin : 0; + + return $auth_user; + } } // class mx_page /** @@ -4195,31 +4647,184 @@ public function auth( $mx_page_allowed_ips = '' ) */ class mx_request_vars { + /**#@+ + * Constant identifying the super global with the same name. + */ + const POST = 0; + const GET = 1; + const REQUEST = 2; + const COOKIE = 3; + const SERVER = 4; + const FILES = 5; + /**#@-*/ + // // Implementation Conventions: // Properties and methods prefixed with underscore are intented to be private. ;-) // + + /** + * @var array The names of super global variables that this class should protect if super globals are disabled. + */ + protected $super_globals = array( + self::POST => '_POST', + self::GET => '_GET', + self::REQUEST => '_REQUEST', + self::COOKIE => '_COOKIE', + self::SERVER => '_SERVER', + self::FILES => '_FILES', + ); + + /** + * @var array Stores original contents of $_REQUEST array. + */ + protected $original_request = null; + + /** + * @var + */ + protected $super_globals_disabled = false; + /** + * @var array An associative array that has the value of super global constants as keys and holds their data as values. + */ + protected $input; + + /** + * @var \phpbb\request\type_cast_helper_interface An instance of a type cast helper providing convenience methods for type conversions. + */ + protected $type_cast_helper; + // ------------------------------ // Properties // - // ------------------------------ - // Constructor - // + /* ------------------------------ + * Constructor + * Initialises the request class, that means it stores all input data in {@link $input input} + * and then calls {@link deactivated_super_global deactivated_super_global} + */ + public function __construct($disable_super_globals = false) + { + foreach ($this->super_globals as $const => $super_global) + { + $this->input[$const] = isset($GLOBALS[$super_global]) ? $GLOBALS[$super_global] : array(); + } - // ------------------------------ - // Private Methods - // + // simulate request_order = GP + $this->original_request = $this->input[self::REQUEST]; + $this->input[self::REQUEST] = $this->input[self::POST] + $this->input[self::GET]; + + if ($disable_super_globals) + { + $this->disable_super_globals(); + } + } /** - * Function: _read(). - * - * Get the value of the specified request var (post or get) and force the result to be - * of specified type. It might also transform the result (stripslashes, htmlspecialchars) for security - * purposes. It all depends on the $type argument. - * If the specified request var does not exist, then the default ($dflt) value is returned. - * Note the $type argument behaves as a bit array where more than one option can be specified by OR'ing + * Getter for $super_globals_disabled + * + * @return bool Whether super globals are disabled or not. + */ + public function super_globals_disabled() + { + return $this->super_globals_disabled; + } + + /** + * Disables access of super globals specified in $super_globals. + * This is achieved by overwriting the super globals with instances of {@link \phpbb\request\deactivated_super_global \phpbb\request\deactivated_super_global} + */ + public function disable_super_globals() + { + if (!$this->super_globals_disabled) + { + foreach ($this->super_globals as $const => $super_global) + { + unset($GLOBALS[$super_global]); + $GLOBALS[$super_global] = new deactivated_super_global($this, $super_global, $const); + } + + $this->super_globals_disabled = true; + } + } + + /** + * Enables access of super globals specified in $super_globals if they were disabled by {@link disable_super_globals disable_super_globals}. + * This is achieved by making the super globals point to the data stored within this class in {@link $input input}. + */ + public function enable_super_globals() + { + if ($this->super_globals_disabled) + { + foreach ($this->super_globals as $const => $super_global) + { + $GLOBALS[$super_global] = $this->input[$const]; + } + + $GLOBALS['_REQUEST'] = $this->original_request; + + $this->super_globals_disabled = false; + } + } + + // ------------------------------ + // Public Methods + // + + /** + * This function allows overwriting or setting a value in one of the super global arrays. + * + * Changes which are performed on the super globals directly will not have any effect on the results of + * other methods this class provides. Using this function should be avoided if possible! It will + * consume twice the the amount of memory of the value + * + * @param string $var_name The name of the variable that shall be overwritten + * @param mixed $value The value which the variable shall contain. + * If this is null the variable will be unset. + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global + * Specifies which super global shall be changed + */ + public function overwrite($var_name, $value, $super_global = self::REQUEST) + { + if (!isset($this->super_globals[$super_global])) + { + return; + } + + $this->type_cast_helper->add_magic_quotes($value); + + // setting to null means unsetting + if ($value === null) + { + unset($this->input[$super_global][$var_name]); + if (!$this->super_globals_disabled()) + { + unset($GLOBALS[$this->super_globals[$super_global]][$var_name]); + } + } + else + { + $this->input[$super_global][$var_name] = $value; + if (!$this->super_globals_disabled()) + { + $GLOBALS[$this->super_globals[$super_global]][$var_name] = $value; + } + } + } + + // ------------------------------ + // Private Methods + // + + /** + * Function: _read(). + * + * Get the value of the specified request var (post or get) and force the result to be + * of specified type. It might also transform the result (stripslashes, htmlspecialchars) for security + * purposes. It all depends on the $type argument. + * If the specified request var does not exist, then the default ($dflt) value is returned. + * Note the $type argument behaves as a bit array where more than one option can be specified by OR'ing * the passed argument. This is tipical practice in languages like C, but it can also be done with PHP. * * @access private @@ -4320,6 +4925,152 @@ public function _read($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false) // Public Methods // + /** + * Central type safe input handling function. + * All variables in GET or POST requests should be retrieved through this function to maximise security. + * + * @param string|array $var_name The form variable's name from which data shall be retrieved. + * If the value is an array this may be an array of indizes which will give + * direct access to a value at any depth. E.g. if the value of "var" is array(1 => "a") + * then specifying array("var", 1) as the name will return "a". + * @param mixed $default A default value that is returned if the variable was not set. + * This function will always return a value of the same type as the default. + * @param bool $multibyte If $default is a string this parameter has to be true if the variable may contain any UTF-8 characters + * Default is false, causing all bytes outside the ASCII range (0-127) to be replaced with question marks + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global + * Specifies which super global should be used + * + * @return mixed The value of $_REQUEST[$var_name] run through {@link set_var set_var} to ensure that the type is the + * the same as that of $default. If the variable is not set $default is returned. + */ + public function variable($var_name, $default, $multibyte = false, $super_global = self::REQUEST) + { + return $this->_variable($var_name, $default, $multibyte, $super_global, true); + } + + /** + * Get a variable, but without trimming strings. + * Same functionality as variable(), except does not run trim() on strings. + * This method should be used when handling passwords. + * + * @param string|array $var_name The form variable's name from which data shall be retrieved. + * If the value is an array this may be an array of indizes which will give + * direct access to a value at any depth. E.g. if the value of "var" is array(1 => "a") + * then specifying array("var", 1) as the name will return "a". + * @param mixed $default A default value that is returned if the variable was not set. + * This function will always return a value of the same type as the default. + * @param bool $multibyte If $default is a string this parameter has to be true if the variable may contain any UTF-8 characters + * Default is false, causing all bytes outside the ASCII range (0-127) to be replaced with question marks + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global + * Specifies which super global should be used + * + * @return mixed The value of $_REQUEST[$var_name] run through {@link set_var set_var} to ensure that the type is the + * the same as that of $default. If the variable is not set $default is returned. + */ + public function untrimmed_variable($var_name, $default, $multibyte = false, $super_global = self::REQUEST) + { + return $this->_variable($var_name, $default, $multibyte, $super_global, false); + } + + /** + * {@inheritdoc} + */ + public function raw_variable($var_name, $default, $super_global = self::REQUEST) + { + $path = false; + + // deep direct access to multi dimensional arrays + if (is_array($var_name)) + { + $path = $var_name; + // make sure at least the variable name is specified + if (empty($path)) + { + return (is_array($default)) ? array() : $default; + } + // the variable name is the first element on the path + $var_name = array_shift($path); + } + + if (!isset($this->input[$super_global][$var_name])) + { + return (is_array($default)) ? array() : $default; + } + $var = $this->input[$super_global][$var_name]; + + if ($path) + { + // walk through the array structure and find the element we are looking for + foreach ($path as $key) + { + if (is_array($var) && isset($var[$key])) + { + $var = $var[$key]; + } + else + { + return (is_array($default)) ? array() : $default; + } + } + } + + return $var; + } + + /** + * Shortcut method to retrieve SERVER variables. + * + * Also fall back to getenv(), some CGI setups may need it (probably not, but + * whatever). + * + * @param string|array $var_name See \phpbb\request\request_interface::variable + * @param mixed $Default See \phpbb\request\request_interface::variable + * + * @return mixed The server variable value. + */ + public function server($var_name, $default = '') + { + $multibyte = true; + + if ($this->is_set($var_name, self::SERVER)) + { + return $this->variable($var_name, $default, $multibyte, self::SERVER); + } + else + { + $var = getenv($var_name); + //$this->type_cast_helper->recursive_set_var($var, $default, $multibyte); + return $var; + } + } + + /** + * Shortcut method to retrieve the value of client HTTP headers. + * + * @param string|array $header_name The name of the header to retrieve. + * @param mixed $default See \phpbb\request\request_interface::variable + * + * @return mixed The header value. + */ + public function header($header_name, $default = '') + { + $var_name = 'HTTP_' . str_replace('-', '_', strtoupper($header_name)); + return $this->server($var_name, $default); + } + + /** + * Shortcut method to retrieve $_FILES variables + * + * @param string $form_name The name of the file input form element + * + * @return array The uploaded file's information or an empty array if the + * variable does not exist in _FILES. + */ + public function file($form_name) + { + return $this->variable($form_name, array('name' => 'none'), true, self::FILES); + } + /** * Request POST variable. * @@ -4333,9 +5084,27 @@ public function _read($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false) */ public function post($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false) { - return $this->_read($var, ($type | MX_TYPE_POST_VARS), $dflt, $not_null); + if (!$this->super_globals_disabled()) + { + return $this->_read($var, ($type | MX_TYPE_POST_VARS), $dflt, $not_null); + } + else + { + $super_global = self::POST; + $multibyte = false; //UTF-8 ? + $default = $dflt; + return $this->_variable($var_name, $default, $multibyte, $super_global, true); + } + } - + + /** ** / + public function post($var_name, $default, $multibyte = false, $super_global = self::POST) + { + return $this->_variable($var_name, $default, $multibyte, $super_global, true); + } + /** **/ + /** * Request GET variable. * @@ -4349,9 +5118,27 @@ public function post($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false) */ public function get($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false) { - return $this->_read($var, ($type | MX_TYPE_GET_VARS), $dflt, $not_null); - } + if (!$this->super_globals_disabled()) + { + return $this->_read($var, ($type | MX_TYPE_GET_VARS), $dflt, $not_null); + } + else + { + $super_global = self::GET; + $multibyte = false; //UTF-8 ? + $default = $dflt; + return $this->_variable($var_name, $default, $multibyte, $super_global, true); + } + } + + /** ** / + public function get($var_name, $default, $multibyte = false, $super_global = self::GET) + { + return $this->_variable($var_name, $default, $multibyte, $super_global, true); + } + /** **/ + /** * Request GET or POST variable. * @@ -4365,7 +5152,17 @@ public function get($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false) */ public function request($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false) { - return $this->_read($var, ($type | MX_TYPE_POST_VARS | MX_TYPE_GET_VARS), $dflt, $not_null); + if (!$this->super_globals_disabled()) + { + return $this->_read($var, ($type | MX_TYPE_POST_VARS | MX_TYPE_GET_VARS), $dflt, $not_null); + } + else + { + $super_global = self::REQUEST; + $multibyte = false; //UTF-8 ? + $default = $dflt; + return $this->_variable($var_name, $default, $multibyte, $super_global, true); + } } /** @@ -4379,8 +5176,8 @@ public function request($var, $type = MX_TYPE_ANY, $dflt = '', $not_null = false */ public function is_post($var) { - // Note: _x and _y are used by (at least IE) to return the mouse position at onclick of INPUT TYPE="img" elements. - return (isset($_POST[$var]) || ( isset($_POST[$var.'_x']) && isset($_POST[$var.'_y']))) ? 1 : 0; + // Note: _x and _y are used by (at least IE) to return the mouse position at onclick of INPUT TYPE="img" elements. + return ($this->is_set_post($var) || $this->is_set_post($var.'_x') && $this->is_set_post($var.'_y')) ? 1 : 0; } /** @@ -4394,7 +5191,8 @@ public function is_post($var) */ public function is_get($var) { - return isset($_GET[$var]) ? 1 : 0 ; + //return isset($_GET[$var]) ? 1 : 0 ; + return $this->is_set($var, self::GET); } /** @@ -4409,7 +5207,9 @@ public function is_get($var) public function is_request($var) { return ($this->is_get($var) || $this->is_post($var)) ? 1 : 0; - } + //return $this->is_set($var, self::REQUEST); + } + /** * Is POST var empty? * @@ -4422,8 +5222,10 @@ public function is_request($var) */ public function is_empty_post($var) { - return (empty($_POST[$var]) && ( empty($_POST[$var.'_x']) || empty($_POST[$var.'_y']))) ? 1 : 0 ; + //return (empty($_POST[$var]) && ( empty($_POST[$var.'_x']) || empty($_POST[$var.'_y']))) ? 1 : 0 ; + return ($this->is_empty($var, self::POST) && ($this->is_empty($var.'_x', self::POST) || $this->is_empty($var.'_y', self::POST))) ? 1 : 0; } + /** * Is GET var empty? * @@ -4436,7 +5238,8 @@ public function is_empty_post($var) */ public function is_empty_get($var) { - return empty($_GET[$var]) ? 1 : 0 ; + //return empty($_GET[$var]) ? 1 : 0; + return $this->is_empty($var, self::GET); } /** @@ -4452,6 +5255,276 @@ public function is_empty_request($var) { return ($this->is_empty_get($var) && $this->is_empty_post($var)) ? 1 : 0; } + + /** + * Checks whether a certain variable was sent via POST. + * To make sure that a request was sent using POST you should call this function + * on at least one variable. + * + * @param string $name The name of the form variable which should have a + * _p suffix to indicate the check in the code that creates the form too. + * + * @return bool True if the variable was set in a POST request, false otherwise. + */ + public function is_set_post($name) + { + return $this->is_set($name, self::POST); + } + + + /** + * Checks whether a certain variable was sent via GET. + * To make sure that a request was sent using GET you should call this function + * on at least one variable. + * + * @param string $name The name of the form variable which should have a + * _p suffix to indicate the check in the code that creates the form too. + * + * @return bool True if the variable was set in a GET request, false otherwise. + */ + public function is_set_get($name) + { + return $this->is_set($name, self::GET); + } + + /** + * Checks whether a certain variable is empty in one of the super global + * arrays. + * + * @param string $var Name of the variable + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global + * Specifies the super global which shall be checked + * + * @return bool True if the variable was sent as input + */ + public function is_empty($var, $super_global = self::REQUEST) + { + return empty($this->input[$super_global][$var]); + } + + /** + * Checks whether a certain variable is set in one of the super global + * arrays. + * + * @param string $var Name of the variable + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global + * Specifies the super global which shall be checked + * + * @return bool True if the variable was sent as input + */ + public function is_set($var, $super_global = self::REQUEST) + { + return isset($this->input[$super_global][$var]); + } + + /** + * Checks whether the current request is an AJAX request (XMLHttpRequest) + * + * @return bool True if the current request is an ajax request + */ + public function is_ajax() + { + return $this->header('X-Requested-With') == 'XMLHttpRequest'; + } + + /** + * Checks if the current request is happening over HTTPS. + * + * @return bool True if the request is secure. + */ + public function is_secure() + { + $https = $this->server('HTTPS'); + $https = $this->server('HTTP_X_FORWARDED_PROTO') === 'https' ? 'on' : $https; + return !empty($https) && $https !== 'off'; + } + + /** + * Returns all variable names for a given super global + * + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global + * The super global from which names shall be taken + * + * @return array All variable names that are set for the super global. + * Pay attention when using these, they are unsanitised! + */ + public function variable_names($super_global = self::REQUEST) + { + if (!isset($this->input[$super_global])) + { + return array(); + } + + return array_keys($this->input[$super_global]); + } + + /** + * Helper function used by variable() and untrimmed_variable(). + * + * @param string|array $var_name The form variable's name from which data shall be retrieved. + * If the value is an array this may be an array of indizes which will give + * direct access to a value at any depth. E.g. if the value of "var" is array(1 => "a") + * then specifying array("var", 1) as the name will return "a". + * @param mixed $default A default value that is returned if the variable was not set. + * This function will always return a value of the same type as the default. + * @param bool $multibyte If $default is a string this parameter has to be true if the variable may contain any UTF-8 characters + * Default is false, causing all bytes outside the ASCII range (0-127) to be replaced with question marks + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global + * Specifies which super global should be used + * @param bool $trim Indicates whether trim() should be applied to string values. + * + * @return mixed The value of $_REQUEST[$var_name] run through {@link set_var set_var} to ensure that the type is the + * the same as that of $default. If the variable is not set $default is returned. + */ + protected function _variable($var_name, $default, $multibyte = false, $super_global = self::REQUEST, $trim = true) + { + $var = $this->raw_variable($var_name, $default, $super_global); + + // Return prematurely if raw variable is empty array or the same as + // the default. Using strict comparison to ensure that one can't + // prevent proper type checking on any input variable + if ($var === array() || $var === $default) + { + return $var; + } + + //$this->type_cast_helper->recursive_set_var($var, $default, $multibyte, $trim); + + return $var; + } + + /** + * {@inheritdoc} + */ + public function get_super_global($super_global = self::REQUEST) + { + return $this->input[$super_global]; + } + + /** + * {@inheritdoc} + */ + public function escape($var, $multibyte) + { + if (is_array($var)) + { + $result = array(); + foreach ($var as $key => $value) + { + //$this->type_cast_helper->set_var($key, $key, gettype($key), $multibyte); + $result[$key] = $this->escape($value, $multibyte); + } + $var = $result; + } + else + { + //$this->type_cast_helper->set_var($var, $var, 'string', $multibyte); + } + + return $var; + } } // class mx_request_vars + +/** +* Replacement for a superglobal (like $_GET or $_POST) which calls +* trigger_error on all operations but isset, overloads the [] operator with SPL. +*/ +class deactivated_super_global implements \ArrayAccess, \Countable, \IteratorAggregate +{ + /** + * @var string Holds the name of the superglobal this is replacing. + */ + private $name; + + /** + * @var \phpbb\request\request_interface::POST|GET|REQUEST|COOKIE Super global constant. + */ + private $super_global; + + /** + * @var mx_request_vars The request class instance holding the actual request data. + */ + private $request; + + /** + * Constructor generates an error message fitting the super global to be used within the other functions. + * + * @param mx_request_vars $request A request class instance holding the real super global data. + * @param string $name Name of the super global this is a replacement for - e.g. '_GET'. + * @param mx_request_vars::POST|GET|REQUEST|COOKIE $super_global The variable's super global constant. + */ + public function __construct(mx_request_vars $request, $name, $super_global) + { + $this->request = $request; + $this->name = $name; + $this->super_global = $super_global; + } + + /** + * Calls trigger_error with the file and line number the super global was used in. + */ + private function error() + { + $file = ''; + $line = 0; + + $message = 'Illegal use of $' . $this->name . '. You must use the request class to access input data. Found in %s on line %d. This error message was generated by deactivated_super_global.'; + + $backtrace = debug_backtrace(); + if (isset($backtrace[1])) + { + $file = $backtrace[1]['file']; + $line = $backtrace[1]['line']; + } + trigger_error(sprintf($message, $file, $line), E_USER_ERROR); + } + + /** + * Redirects isset to the correct request class call. + * + * @param string $offset The key of the super global being accessed. + * + * @return bool Whether the key on the super global exists. + */ + public function offsetExists($offset) + { + return $this->request->is_set($offset, $this->super_global); + } + + /**#@+ + * Part of the \ArrayAccess implementation, will always result in a FATAL error. + */ + public function offsetGet($offset) + { + $this->error(); + } + + public function offsetSet($offset, $value) + { + $this->error(); + } + + public function offsetUnset($offset) + { + $this->error(); + } + /**#@-*/ + + /** + * Part of the \Countable implementation, will always result in a FATAL error + */ + public function count() + { + $this->error(); + } + + /** + * Part of the Traversable/IteratorAggregate implementation, will always result in a FATAL error + */ + public function getIterator() + { + $this->error(); + } +} // class deactivated_super_global ?> \ No newline at end of file diff --git a/includes/mx_functions_style.php b/includes/mx_functions_style.php index ce692625..0a39e487 100644 --- a/includes/mx_functions_style.php +++ b/includes/mx_functions_style.php @@ -69,7 +69,20 @@ function mx_session_begin() * @access public */ class mx_Template extends Template -{ +{ + var $inherit_root = ''; + var $css_style_include = array(); + var $css_include = array(); + var $js_include = array(); + + var $cloned_template_name = 'subSilver'; + var $default_template_name = 'subsilver2'; + + var $template_path = 'templates/'; + var $style_path = 'templates/'; + + var $debug_paths; + /** * Constructor. * @@ -89,6 +102,16 @@ function mx_Template($root = '.') { $this->root = $root; } + + if (empty($this->template_path)) + { + $this->template_path = $this->style_path; + } + + if (empty($this->style_path)) + { + $this->style_path = $this->template_path; + } } var $module_template_path = ''; @@ -106,22 +129,28 @@ function mx_Template($root = '.') function make_filename($filename, $xs_include = false) { global $module_root_path, $mx_root_path, $phpbb_root_path, $theme, $mx_user, $mx_block; - + // ? if($this->subtemplates) { $filename = $this->subtemplates_make_filename($filename); } + // // Check replacements list + // if(!$xs_include && isset($this->replace[$filename])) { $filename = $this->replace[$filename]; } $style_path = $mx_user->template_name; - + $this->styles_path = $mx_root_path . $this->template_path; + + // // Also search for "the other" file extension + // + $filename = substr_count($filename, 'tpl') ? str_replace(".tpl", ".html", $filename) : str_replace(".html", ".tpl", $filename); $filename2 = substr_count($filename, 'html') ? str_replace(".html", ".tpl", $filename) : str_replace(".tpl", ".html", $filename); // @@ -151,8 +180,59 @@ function make_filename($filename, $xs_include = false) return $temppath; } } + + // + // Look for new template files at MX-Publisher-Module folder.........................................................................MX-Publisher-module + // + if (!empty($module_root_path)) + { + if (isset($mx_block->module_root_path)) + { + $moduleDefault = !empty($mx_user->loaded_default_styles[$mx_block->module_root_path]) ? $mx_user->loaded_default_styles[$mx_block->module_root_path] : $mx_user->default_template_name; + } + else + { + $moduleDefault = !empty($mx_user->loaded_default_styles[$module_root_path]) ? $mx_user->loaded_default_styles[$module_root_path] : $mx_user->default_template_name; + } + + $this->debug_paths .= '
Module'; + $fileSearch = array(); + $fileSearch[] = $style_path . '/template'; // First check current template + $fileSearch[] = $mx_user->cloned_template_name . '/template'; // Then check Cloned template + $fileSearch[] = $moduleDefault . '/template'; // Finally check Default template + $fileSearch[] = './'; // Compatibility with primitive modules + $temppath = $this->doFileSearch($fileSearch, $filename2, $filename, 'templates/', $module_root_path); + if (!empty($this->module_template_path)) + { + return $temppath; + } + } + + // + // Look at Root folder + // + if (!empty($phpbb_root_path)) + { + $moduleDefault = $this->default_template_name; + + + $this->debug_paths .= '
xs_mod'; + $fileSearch = array(); + $fileSearch[] = 'tpl'; + $fileSearch[] = $this->tpldir; + //$fileSearch[] = $style_path; // First check current template + //$fileSearch[] = $this->cloned_template_name; // Then check Cloned template + //$fileSearch[] = $moduleDefault; // Finally check Default template + $fileSearch[] = './'; // Compatibility with primitive modules + $temppath = $this->doFileSearch($fileSearch, $filename, $filename2, 'xs_mod/', $phpbb_root_path); + if (!empty($this->module_template_path)) + { + return $temppath; + } + } + // // Look at MX-Publisher-Root folder.........................................................................MX-Publisher-Root // @@ -168,7 +248,23 @@ function make_filename($filename, $xs_include = false) { return $temppath; } + + // + // Look at MX-Publisher-Root folder.........................................................................MX-Publisher-Root + // + $this->debug_paths .= '
CORE'; + $fileSearch = array(); + $fileSearch[] = $style_path . '/template'; // First check current template + $fileSearch[] = $mx_user->cloned_template_name . '/template'; // Then check Cloned template + $fileSearch[] = $mx_user->default_template_name . '/template'; // Then check Default template + $fileSearch[] = './'; + $temppath = $this->doFileSearch($fileSearch, $filename2, $filename, 'templates/', $mx_root_path); + if (!empty($this->module_template_path)) + { + return $temppath; + } + // // Look at Custom Root folder..............this is used my mx_mod installers too.......this does not use standard templates folders wich are set when the template was re-initialized and defined as custom var // @@ -180,13 +276,14 @@ function make_filename($filename, $xs_include = false) $fileSearch[] = $mx_user->default_template_name; // Then check Default template $temppath = $this->doFileSearch($fileSearch, $filename, $filename2, $this->root, $mx_root_path); + if (!empty($this->module_template_path)) { return $temppath; } // - // phpBB.........................................................................phpBB + // Look at Forums for new styles // switch (PORTAL_BACKEND) { @@ -196,13 +293,18 @@ function make_filename($filename, $xs_include = false) case 'mybb': case 'phpbb2': $this->debug_paths .= '
phpbb2'; - $fileSearch = array(); + $fileSearch = array(); + $fileSearch[] = $style_path; // First check current template $fileSearch[] = $mx_user->cloned_template_name; // Then check Cloned template $fileSearch[] = $mx_user->default_template_name; // Then check Default template + + $fileSearch[] = $style_path . '/template'; // First check current template + $fileSearch[] = $mx_user->cloned_template_name . '/template'; // Then check Cloned template + $fileSearch[] = $mx_user->default_template_name . '/template'; // Then check Default template $fileSearch[] = './'; - - $temppath = $this->doFileSearch($fileSearch, $filename, $filename2, 'templates/', $phpbb_root_path, false); + + $temppath = $this->doFileSearch($fileSearch, $filename2, $filename, 'templates/', $phpbb_root_path, true); if (!empty($this->module_template_path)) { return $temppath; @@ -219,7 +321,7 @@ function make_filename($filename, $xs_include = false) $fileSearch[] = $mx_user->cloned_template_name . '/' . 'template'; // Then check Cloned template $fileSearch[] = $mx_user->default_template_name . '/' . 'template'; // Then check Default template $fileSearch[] = './'; - $temppath = $this->doFileSearch($fileSearch, $filename, $filename2, 'styles/', $phpbb_root_path, false); + $temppath = $this->doFileSearch($fileSearch, $filename, $filename2, 'styles/', $phpbb_root_path, true); /* if (!empty($this->module_template_path)) { @@ -290,8 +392,9 @@ function make_filename($filename, $xs_include = false) } break; - case 'rhea': - $this->debug_paths .= '
phpbb4'; + case 'rhea': + case 'proteus': + $this->debug_paths .= '
phpbb3'; $fileSearch = array(); $fileSearch[] = $style_path . '/' . 'template'; // First check current template $fileSearch[] = $mx_user->cloned_template_name . '/' . 'template'; // Then check Cloned template @@ -318,7 +421,12 @@ function make_filename($filename, $xs_include = false) break; } - + + if( !file_exists($filename) ) + { + die("Template->make_filename(): Error - file $filename does not exist.
Class-Root: $this->root
$this->debug_paths"); + } + echo($this->debug_paths); die("Template->make_filename(): Error - file $filename does not exist.
Class-Root: $this->root
Module: $module_root_path
Current style: $style_path
Cloned style: $mx_user->cloned_template_name
Default style: $mx_user->default_template_name
Custom module default style: $moduleDefault"); } @@ -495,12 +603,22 @@ function doFileSearch($fileSearch, $filename, $filename2, $root, $root_path = '' $this->module_template_path = $root . $path . '/'; return $root_path . $root . $path . '/' . $filename; } - + else if( file_exists($root . '/' . $filename) ) + { + $this->module_template_path = $root . '/'; + return $root . '/' . $filename; + } + if ($check_file2 && @file_exists($root_path . $root . $path . '/' . $filename2)) { $this->module_template_path = $root . $path . '/'; return $root_path . $root . $path . '/' . $filename2; } + else if ($check_file2 && file_exists($root . '/' . $filename2)) + { + $this->module_template_path = $root . '/'; + return $root . '/' . $filename2; + } } else if ($path == './') { @@ -522,22 +640,188 @@ function doFileSearch($fileSearch, $filename, $filename2, $root, $root_path = '' } /** - * Set template location - * phpBB3 - * @access public - */ + * set_template + * + * This set_template implementation overrides parent method. + * Generates a full path, which can either + * be an absolute, or relative to the rootdir for this Template + * object. + * + * @access public + */ function set_template() { - global $phpbb_root_path, $mx_root_path, $mx_user; + global $module_root_path, $mx_root_path, $phpbb_root_path, $theme, $mx_user, $mx_block; + + $style_path = $theme['template_name'] . '/'; + + // + // Look at mxBB-Module folder.........................................................................mxBB-module + // + if (!empty($module_root_path)) + { + $this->module_template_path = ''; + $moduleDefault = !empty($mx_user->loaded_default_styles[$mx_block->module_root_path]) ? $mx_user->loaded_default_styles[$mx_block->module_root_path] : $mx_user->default_template_name; + + if( file_exists($module_root_path . 'templates/' . $style_path . '/') ) + { + // + // First check current template + // + $this->root = $module_root_path . 'templates/' . $style_path . '/'; + $this->module_template_path = 'templates/' . $style_path . '/'; + } + else if( file_exists($module_root_path . 'templates/' . $mx_user->cloned_template_name . '/') && !empty($mx_user->cloned_template_name)) + { + // + // Then check Cloned template + // + $this->root = $module_root_path . 'templates/' . $mx_user->cloned_template_name . '/'; + $this->module_template_path = 'templates/' . $mx_user->cloned_template_name . '/'; + } + else if( file_exists($module_root_path . 'templates/' . $moduleDefault . '/') ) + { + // + // Then check default template + // + $this->root = $module_root_path . 'templates/' . $moduleDefault . '/'; + $this->module_template_path = 'templates/' . $moduleDefault . '/'; + } + else if( file_exists($module_root_path . 'templates/') ) + { + // + // Finally check the template root (for compatibility with some old modules) + // + $this->root = $module_root_path . 'templates/'; + $this->module_template_path = 'templates/'; + } + + if (!empty($this->module_template_path)) + { + return ''; + } + } - if (file_exists($phpbb_root_path . 'styles/' . $mx_user->theme['template_path'] . '/template')) + // + // Look at mxBB-Root folder.........................................................................mxBB-Root + // + if( file_exists($mx_root_path . 'templates/' . $style_path . '/') ) + { + // + // First check current template + // + $this->root = $mx_root_path . 'templates/' . $style_path . '/'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . $style_path . '_'; + } + else if( file_exists($mx_root_path . 'templates/' . $mx_user->cloned_template_name . '/') && !empty($mx_user->cloned_template_name)) + { + // + // Then check Cloned template + // + $this->root = $mx_root_path . 'templates/' . $mx_user->cloned_template_name . '/'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . $mx_user->cloned_template_name . '_'; + } + else if( file_exists($mx_root_path . 'templates/' . $mx_user->default_template_name . '/') ) + { + // + // Then check Default template + // + $this->root = $mx_root_path . 'templates/' . $mx_user->default_template_name . '/'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . $mx_user->default_template_name . '_'; + } + // + // Look at Custom Root folder..............this is used my mx_mod installers too.......this does not use standard templates folders wich are set when the template was re-initialized and defined as custom var + // + else if( file_exists( $this->root . '/') ) + { + $this->root = $this->root . '/'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . $this->root . '_'; + } + else if( file_exists($this->root . '/' . $style_path . '/') ) + { + // + // First check current template + // + $this->root = $this->root . '/' . $style_path . '/'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . $style_path . '_'; + } + else if( file_exists($this->root . '/' . $style_path . '/') ) { - $this->root = $phpbb_root_path . 'styles/' . $mx_user->theme['template_path'] . '/template'; - $this->cachepath = $phpbb_root_path . 'cache/tpl_' . $mx_user->theme['template_path'] . '_'; + // + // tpl - html + // + $this->root = $this->root. '/' . $style_path . '/'; + } + else if( file_exists($this->root . '/' . $mx_user->default_template_name . '/') ) + { + // + // Then check current template + // + $this->root = $mx_root_path . '/' . $mx_user->default_template_name . '/'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . $mx_user->default_template_name . '_'; + } + else if( file_exists($this->root . '/' . $moduleDefault . '/') ) + { + // + // Finally check the Custom Root folde(for compatibility with some old modules) + // + $this->root = $this->root . '/' . $moduleDefault . '/'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . $moduleDefault . '_'; } else { - print_r('Template path could not be found: styles/' . $mx_user->theme['template_path'] . '/template', E_USER_ERROR); + // + // phpBB.........................................................................phpBB + // + if( file_exists($phpbb_root_path . 'templates/' . $style_path . '/') ) + { + // + // First check current template + // + $this->root = $phpbb_root_path . 'templates/' . $style_path . '/'; + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . $style_path. '_'; + } + else if( file_exists($phpbb_root_path . 'templates/' . $mx_user->cloned_template_name . '/') && !empty($mx_user->cloned_template_name)) + { + // + // Then check Cloned + // + $this->root = $phpbb_root_path . 'templates/' . $mx_user->cloned_template_name . '/'; + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . $mx_user->cloned_template_name . '_'; + } + else if( file_exists($phpbb_root_path . 'templates/' . $mx_user->default_template_name . '/') && !empty($mx_user->default_template_name)) + { + // + // Then check Default + // + $this->root = $phpbb_root_path . 'templates/' . $mx_user->default_template_name . '/'; + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . $mx_user->default_template_name . '_'; + } + else if (file_exists($phpbb_root_path . 'styles/' . $mx_user->theme['template_path'] . '/template')) + { + // + // Then check phpBB3 style + // + $this->root = $phpbb_root_path . 'styles/' . $mx_user->theme['template_path'] . '/template'; + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . $mx_user->theme['template_path'] . '_'; + } + else if( file_exists($phpbb_root_path . $this->root . '/') ) + { + $this->root = $phpbb_root_path . $this->root . '/'; + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . $this->root . '_'; + } + else if( file_exists($this->root . '/') ) + { + // + // Check if it's an absolute or relative path. + // + $this->root = phpbb_realpath($this->root . '/'); + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . phpbb_realpath($this->root . '/') . '_'; + } + else + { + trigger_error('Template path could not be found: styles/' . $mx_user->theme['template_path'] . '/template', E_USER_ERROR); + } } $this->_rootref = &$this->_tpldata['.'][0]; @@ -548,9 +832,24 @@ function set_template() } // class mx_Template /**#@+ - * mx_user class specific definitions - * - */ +| Class: mx_user +| The mx_user class +| +| // +| // Properties +| // +| +| // +| // Methods +| // +| +| +| // +| // Usage examples: +| // +| +| +\** **/ define('MX_LANG_MAIN' , 10); define('MX_LANG_ADMIN' , 20); define('MX_LANG_ALL' , 30); @@ -588,21 +887,68 @@ class mx_user extends mx_session var $loaded_langs = array(); var $loaded_styles = array(); var $loaded_default_styles = array(); - + + var $lang_path = 'language/'; var $template_path = 'templates/'; - var $theme = array(); + var $styles_path = 'templates/'; + var $template_name = ''; var $template_names = array(); - var $current_template_path = ''; + var $current_template_path = ''; + + /** + * @var string ISO code of the default board language + */ + var $default_language; + var $default_language_name; + /** + * @var string ISO code of the User's language + */ + var $user_language; + var $user_language_name; + + var $lang; + var $lang_iso = 'en'; + var $lang_dir = 'lang_english'; + + protected $common_language_files_loaded; + + var $img_lang_dir = 'en'; + var $lang_english_name = 'English'; + var $lang_local_name = 'English United Kingdom'; + var $language_list = array(); + + /**** / + var $cloned_template_name = 'subSilver'; + var $default_template_name = 'subsilver2'; + + var $cloned_current_template_name = 'prosilver'; + var $default_current_template_name = ''; + + var $cloned_current_template_path = 'templates/subSilver'; + var $default_current_template_path = 'templates/subsilver2'; + /****/ + + var $block_border_graphics = ''; + + var $parent_template_name = ''; + var $parent_template_path = ''; var $cloned_template_name = ''; var $cloned_current_template_path = ''; var $current_template_phpbb_path = ''; - var $current_template_phpbb_images = ''; + var $current_template_phpbb_images = ''; var $default_template_name = '_core'; var $default_current_template_path = ''; + var $imageset_backend = PORTAL_BACKEND; + var $ext_imageset_backend = PORTAL_BACKEND; + + var $imageset_path = '/theme/images/'; + var $img_array = array(); + var $images; + var $style_name = ''; var $style_path = 'styles/'; @@ -614,21 +960,82 @@ class mx_user extends mx_session var $default_style_phpbb_path = ''; var $default_module_style = ''; + var $module_lang_path = array(); + + var $style = array(); + var $theme = array(); + // Able to add new options (up to id 31) + var $keyoptions = array('viewimg' => 0, 'viewflash' => 1, 'viewsmilies' => 2, 'viewsigs' => 3, 'viewavatars' => 4, 'viewcensors' => 5, 'attachsig' => 6, 'bbcode' => 8, 'smilies' => 9, 'sig_bbcode' => 15, 'sig_smilies' => 16, 'sig_links' => 17); + var $is_admin = false; - var $keyoptions = false; + var $page_id = ''; + var $user_ip = ''; + + /** @var \phpbb\cache\driver\driver_interface */ + protected $cache; + /** @var \phpbb\config\config */ + protected $config; + /** @var \phpbb\db\driver\driver_interface */ + protected $db; + + var $cookie_data = array(); + var $page = array(); + var $data = array(); // For future Olympus comp. + var $service_providers; // For future Ascraeus comp. + var $browser = ''; + var $forwarded_for = ''; + var $host = ''; + var $session_id = ''; + var $ip = ''; + var $datetime = ''; + var $load = 0; + var $time_now = 0; + var $update_session_page = true; + + //var $phpbb_root_path; + //var $mx_root_path; /**#@-*/ // ------------------------------ // Properties // - // ------------------------------ - // Constructor - // - + /** + * ------------------------------ + * Constructor to set the lang path + * + * @param \phpbb\language\language $lang phpBB's Language loader + * @param string $datetime_class Class name of datetime class + */ + function __construct() + { + global $mx_cache, $db, $mx_root_path, $module_root_path, $phpbb_root_path; + global $lang, $language, $board_config, $phpbb_auth; + + $this->cache = $mx_cache; + $this->mx_root_path = $mx_root_path; + $this->phpbb_root_path = $phpbb_root_path; + $this->module_root_path = $module_root_path; + + + $this->language = $language; + $this->common_language_files_loaded = false; + + $this->lang_path = $mx_root_path . 'language/'; + $this->phpbb_lang_path = $phpbb_root_path . 'language/'; + $this->shared_lang_path = $mx_root_path . 'includes/shared/phpbb2/'; + $this->language = $lang; + $this->config = $board_config; + $this->db = $db; + $this->auth = $phpbb_auth; + $this->phpEx = substr(strrchr(__FILE__, '.'), 1); + $this->php_ext = substr(strrchr(__FILE__, '.'), 1); + + } + // ------------------------------ // Private Methods // @@ -645,92 +1052,178 @@ class mx_user extends mx_session */ function _init_session() { - $this->mx_session_begin(); + global $userdata; + $this->mx_session_begin(); + $this->data = $userdata; //for compatibility with Olympus style modules + + // Give us some basic information + //$this->time_now = time(); + + //$this->browser = $_SERVER['HTTP_USER_AGENT']; + //$this->referer = $_SERVER['Referer']; + //$this->forwarded_for = $_SERVER['X-Forwarded-For']; + + //$this->host = extract_current_hostname(); + //$this->page = extract_current_page($mx_root_path); + $this->is_admin = $this->data['user_level'] == ADMIN && $this->data['session_logged_in']; } + + // ------------------------------ + // Public Methods + // /** - * Init userprefs. - * - * Initialise user settings on page load. - * - populate $lang, $theme, $images and initiate $template + * Init user class. + * Populate $userdata, $lang * - * @access private + * @access public + * @param unknown_type $user_ip + * @param unknown_type $page_id */ - function _init_userprefs() + function init($user_ip, $page_id, $init_style = true) { - global $userdata, $board_config, $portal_config, $theme, $images; - global $template, $lang, $phpEx, $phpbb_root_path, $mx_root_path, $db; - global $nav_links; + // + // Define basic constants + // + $this->page_id = $page_id; + $this->user_ip = $user_ip; // - // Clean up and ensure we are using mxp internal (long) lang format + // Inititate User data // - $board_config['phpbb_lang'] = $board_config['default_lang']; // Handy switch - $this->lang['default_lang'] = phpBB2::phpbb_ltrim(basename(phpBB2::phpbb_rtrim($this->decode_lang($board_config['default_lang']))), "'"); - $this->data['user_lang'] = phpBB2::phpbb_ltrim(basename(phpBB2::phpbb_rtrim($this->decode_lang($this->data['user_lang']))), "'"); + $this->_init_session($user_ip, $page_id); + $this->_init_userprefs(); - //if ( $this->data['session_logged_in'] ) // Old code - if ( $this->data['user_id'] != ANONYMOUS ) + // + // Inititate User style + // + if ($init_style) { - if ( !empty($this->data['user_lang'])) - { - $this->lang['default_lang'] = $this->data['user_lang']; - } + $this->_init_style(); + } + } + + // ------------------------------ + // Public Methods + // + /** + * Init userprefs. + * + * Initialise user settings on page load. + * - populate $lang, $theme, $images and initiate $template + * + * @access private + */ + function _init_userprefs($lang_set = false) + { + global $mx_cache, $mx_user, $userdata, $board_config, $portal_config, $theme, $images; + global $template, $lang, $phpEx, $phpbb_root_path, $mx_root_path, $db; + global $phpBB2, $phpBB3, $nav_links; + + $this->data = !empty($this->data['user_id']) ? $this->data : $this->session_pagestart($this->user_ip, $this->page_id); + + $this->cache = is_object($mx_cache) ? $mx_cache : new mx_cache(); + + if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) + { + $this->data['is_bot'] = true; + } + else + { + $this->data['is_bot'] = false; + } + + $this->data['user_options'] = isset($this->data['user_options']) ? $this->data['user_options'] : '230271'; // + + // + // Populate session_id + // + $this->session_id = $this->data['session_id']; + + $this->lang_path = $mx_root_path . 'language/'; + + $lang_set = !isset($lang_set) ? ((defined('IN_ADMIN') ? 'lang_admin' : 'lang_main')) : $lang_set; + + // + // Send a proper content-language to the output in phpBB2 format i.e english + // Clean up and ensure we are using mxp internal (long) lang format + // + $img_lang = $board_config['phpbb_lang'] = $board_config['default_lang']; // Handy switch + $this->lang['default_lang'] = $phpBB2->phpbb_ltrim(basename($phpBB2->phpbb_rtrim($this->decode_lang($board_config['default_lang']))), "'"); + $this->data['user_lang'] = $phpBB2->phpbb_ltrim(basename($phpBB2->phpbb_rtrim($this->decode_lang($this->data['user_lang']))), "'"); + + // + // Old code: $this->data['session_logged_in'] + // It is not important watever is session_logged_in but if userdata array keys are populated + // + if ( $this->data['user_id'] != ANONYMOUS ) + { + if ( !empty($this->data['user_lang'])) + { + $img_lang = $this->lang['default_lang'] = $this->data['user_lang']; + } + if ( !empty($this->data['user_dateformat']) ) { $board_config['default_dateformat'] = $this->data['user_dateformat']; } - + if ( isset($this->data['user_timezone']) ) { $board_config['board_timezone'] = $this->data['user_timezone']; } } + //Enable URL Language Detection if (isset($_GET['lang'])) { - $this->lang['default_lang'] = ((file_exists($mx_root_path . 'language/lang_' . $this->decode_lang(strval(phpBB3::request_var('lang', ''))) . "/lang_main.$phpEx")) ? strval(phpBB3::request_var('lang', '')) : ((file_exists($mx_root_path . 'language/lang_' . strval(phpBB3::request_var('lang', '')) . "/lang_main.$phpEx")) ? strval(phpBB3::request_var('lang', '')) : $this->lang['default_lang'])); + $img_lang = $this->lang['default_lang'] = ((file_exists($mx_root_path . 'language/lang_' . $this->decode_lang(strval($phpBB3->request_var('lang', ''))) . "/lang_main.$phpEx")) ? $this->decode_lang(strval($phpBB3->request_var('lang', ''))) : ((file_exists($mx_root_path . 'language/lang_' . strval($phpBB3->request_var('lang', '')) . "/lang_main.$phpEx")) ? strval($phpBB3->request_var('lang', '')) : $this->lang['default_lang'])); } + // Now, $this->lang['default_lang'] is populated, but do we have a mathing MX-Publisher lang file installed? - if ( !file_exists(@phpBB2::phpbb_realpath($mx_root_path . 'language/lang_' . $this->lang['default_lang'] . '/lang_main.'.$phpEx)) ) + if ( !file_exists($phpBB2->phpbb_realpath($mx_root_path . 'language/lang_' . $this->lang['default_lang'] . '/lang_main.'.$phpEx)) ) { // If not, try english (desperate try) $this->lang['default_lang'] = 'english'; - if ( !file_exists(@phpBB2::phpbb_realpath($mx_root_path . 'language/lang_' . $this->lang['default_lang'] . '/lang_main.'.$phpEx)) ) + if ( !file_exists($phpBB2->phpbb_realpath($mx_root_path . 'language/lang_' . $this->lang['default_lang'] . '/lang_main.'.$phpEx)) ) { mx_message_die(CRITICAL_ERROR, 'Could not locate valid language pack: ' . $mx_root_path . 'language/lang_' . $this->lang['default_lang'] . '/lang_main.'.$phpEx); } } + // Language DataBase switch (PORTAL_BACKEND) { - //Load vanilla phpBB lang files if is possible - case 'internal': + case 'internal': + case 'phpbb2': + case 'mybb': $sql_users = 'UPDATE ' . USERS_TABLE . " - SET user_lang = '" . $this->encode_lang($this->lang['default_lang']) . "' - WHERE user_lang = '" . $this->encode_lang($this->data['user_lang']) . "'"; + SET user_lang = '" . $this->decode_lang($this->lang['default_lang']) . "' + WHERE user_lang = '" . $this->decode_lang($this->data['user_lang']) . "'"; $sql_config = "UPDATE " . PORTAL_TABLE . " SET default_lang = '" . $this->decode_lang($this->lang['default_lang']) . "' WHERE portal_id = '1'"; - break; - case 'mybb': + break; + case 'phpbb3': case 'olympus': case 'ascraeus': - case 'rhea': - case 'phpbb2': + case 'rhea': + case 'proteus': + $sql_users = 'UPDATE ' . USERS_TABLE . " SET user_lang = '" . $this->encode_lang($this->lang['default_lang']) . "' WHERE user_lang = '" . $this->encode_lang($this->data['user_lang']) . "'"; $sql_config = 'UPDATE ' . CONFIG_TABLE . " SET config_value = '" . $this->encode_lang($this->lang['default_lang']) . "' - WHERE config_name = 'default_lang'"; - + WHERE config_name = 'default_lang'"; break; + + case 'smf2': $sql_users = 'UPDATE ' . USERS_TABLE . " SET lng_file = '" . $this->decode_lang($this->lang['default_lang']) . "' @@ -749,9 +1242,10 @@ function _init_userprefs() //display an error debuging message only if the portal is installed/upgraded if(!@$db->sql_query($sql_users) && !file_exists($mx_root_path.'/install/')) { - mx_message_die(CRITICAL_ERROR, 'Could not update user language info'); + mx_message_die(CRITICAL_ERROR, 'Could not update user language info', '', __LINE__, __FILE__, $sql_users); } - $this->data['user_lang'] = $this->lang['default_lang']; + + $userdata['user_lang'] = $this->data['user_lang'] = $this->lang['default_lang']; } elseif ( !$this->data['session_logged_in'] && $board_config['default_lang'] !== $this->lang['default_lang'] ) { @@ -762,54 +1256,163 @@ function _init_userprefs() } } + /* * Pointless here, since we do not know watever we have queried language vanilla phpBB2 lang files installed + * Just in case we do fallback on $board_config['phpbb_lang'] * */ + $board_config['default_lang'] = $this->lang['default_lang']; + + $this->lang_name = $this->lang['default_lang'] = $this->lang['default_lang']; + $this->lang_path = 'language/lang_' . $this->lang_name . '/'; + + /* * Load MXP lang keys + * Load vanilla phpBB2 lang files if is possible */ - //Load vanilla phpBB2 lang files if is possible switch (PORTAL_BACKEND) { case 'internal': case 'smf2': case 'mybb': + $shared_lang_path = $mx_root_path . 'includes/shared/phpbb2/language/'; + + break; case 'phpbb3': case 'olympus': case 'ascraeus': case 'rhea': + case 'proteus': $shared_lang_path = $mx_root_path . 'includes/shared/phpbb2/language/'; - //$template_path = 'styles/'; + break; case 'phpbb2': - $shared_lang_path = $phpbb_root_path . 'language/'; + $shared_lang_path = $mx_root_path . 'includes/shared/phpbb2/language/'; + break; } + // + // We setup common user language variables + // We include common language file here with funtion load_common_language_files() to not load it every time a custom language file is included + // + //$this->load_common_language_files(); + //$lang = &$this->lang; + + // + // + // + //$this->lang = &$lang; + + /** Sort of pointless here, since we have already included all main lang files **/ + //this will fix the path for anonymouse users + if ((@include $mx_root_path . $this->lang_path . "lang_main.$phpEx") === false) + { + echo('
'); + echo(filesize($mx_root_path . $this->lang_path . "lang_main.$phpEx") . ''); + echo('
'); + die('Language file ' . $mx_root_path . $this->lang_path . "lang_main.$phpEx" . '' . ' couldn\'t be opened.'); + } + + //$this->lang = &$lang; + + // Shared phpBB keys + if ((@include $shared_lang_path . "lang_" . $this->lang_name . "/lang_main.$phpEx") === false) + { + if ((@include $shared_lang_path . "lang_english/lang_main.$phpEx") === false) + { + mx_message_die(GENERAL_ERROR, 'Language file ' . $shared_lang_path . "lang_" . $this->lang_name . "/lang_main.$phpEx" . ' couldn\'t be opened.'); + } + } + + //$this->lang = &$lang; + + $this->add_lang($lang_set); + + unset($lang_set); + + // // AdminCP + // if (defined('IN_ADMIN')) { // Core - include($mx_root_path . 'language/lang_' . $this->lang['default_lang'] . '/lang_admin.' . $phpEx); + if(!file_exists(@phpbb_realpath($mx_root_path . 'language/lang_' . $this->lang_name . '/lang_admin.'.$phpEx))) + { + $board_config['default_lang'] = 'english'; + } + + include($mx_root_path . 'language/lang_' . $this->lang_name . '/lang_admin.' . $phpEx); + + $this->lang = &$lang; + // Shared phpBB keys - if ((include $shared_lang_path . "lang_" . $this->lang['default_lang'] . "/lang_admin.$phpEx") === false) + if ((include $shared_lang_path . "lang_" . $this->lang_name . "/lang_admin.$phpEx") === false) { if ((@include $shared_lang_path . "lang_english/lang_admin.$phpEx") === false) { - mx_message_die(GENERAL_ERROR, 'Language file ' . $shared_lang_path . "lang_" . $this->lang['default_lang'] . "/lang_admin.$phpEx" . ' couldn\'t be opened.'); + mx_message_die(GENERAL_ERROR, 'Language file ' . $shared_lang_path . "lang_" . $this->lang_name . "/lang_admin.$phpEx" . ' couldn\'t be opened.'); } - } + } } - // Shared phpBB keys - if ((@include $shared_lang_path . "lang_" . $this->lang['default_lang'] . "/lang_main.$phpEx") === false) - { - if ((@include $shared_lang_path . "lang_english/lang_main.$phpEx") === false) + // + // + // We include common language file here to not load it every time a custom language file is included + // + //$lang = &$this->lang; + $this->lang = &$lang; + $this->user_lang = !empty($this->lang['USER_LANG']) ? $this->lang['USER_LANG'] : $this->encode_lang($this->lang_name); + $user_lang = $this->user_lang; + + $this->user_language = $this->encode_lang($this->lang_name); + $this->default_language = $this->encode_lang($board_config['default_lang']); + + $this->user_language_name = $this->decode_lang($this->lang_name); + $this->default_language_name = $this->decode_lang($board_config['default_lang']); + + $counter = 0; //First language pack lang_id + $lang_ids = array(); + + $lang_list = $this->get_lang_list(); + + if (is_array($lang_list)) + { + foreach ($lang_list as $lang_english_name => $lang_local_name) { - mx_message_die(GENERAL_ERROR, 'Language file ' . $shared_lang_path . "lang_" . $this->lang['default_lang'] . "/lang_main.$phpEx" . ' couldn\'t be opened.'); - } - } + $lang_ids[$lang_english_name] = $counter; + $counter++; + } + } + + $lang_entries = array( + 'lang_id' => !empty($lang_ids['lang_' . $this->user_language_name]) ? $lang_ids['lang_' . $this->user_language_name] : $counter, + 'lang_iso' => !empty($lang['USER_LANG']) ? $lang['USER_LANG'] : $this->encode_lang($this->lang_name), + 'lang_dir' => 'lang_' . $this->lang_name, + 'lang_english_name' => $this->user_language_name, + 'lang_local_name' => $this->ucstrreplace('lang_', '', $this->lang_name), + 'lang_author' => !empty($lang['TRANSLATION_INFO']) ? $lang['TRANSLATION_INFO'] : 'Language pack author not set in ACP.' + ); // Core Main Translation after shared phpBB keys so we can overwrite some settings - include($mx_root_path . 'language/lang_' . $this->lang['default_lang'] . '/lang_main.' . $phpEx); + include($mx_root_path . 'language/lang_' . $this->lang_name . '/lang_main.' . $phpEx); + + // + // Finishing setting language variables to ouput + // + $this->lang_iso = $lang_iso = $lang_entries['lang_iso']; + $this->lang_dir = $lang_dir = $lang_entries['lang_dir']; + $this->lang_english_name = $lang_english_name = $lang_entries['lang_english_name']; + + if(file_exists(@phpbb_realpath($phpbb_root_path . $this->lang_path . '/common.'.$phpEx))) + { + //$this->set_lang($this->lang, $this->help, 'common'); + + //this will fix the path for anonymouse users + if ((@include $phpbb_root_path . $this->lang_path . '/common.'.$phpEx) === false) + { + die('Language file (_init_userprefs) ' . $phpbb_root_path . $this->lang_path . '/common.'.$phpEx . ' couldn\'t be opened by _init_userprefs().'); + } + } // // Load backend specific lang defs. @@ -844,6 +1447,8 @@ function _init_userprefs() 'url' => mx_append_sid($phpbb_root_path . 'memberlist.' . $phpEx), 'title' => $lang['Memberlist'] ); + + $this->nav_links = $nav_links; } /** @@ -856,7 +1461,7 @@ function _init_style() { global $userdata, $board_config, $portal_config, $theme, $images; global $template, $lang, $phpEx, $phpbb_root_path, $mx_root_path, $db; - global $mx_page, $mx_request_vars, $_GET, $_COOKIE; + global $mx_page, $mx_request_vars, $_GET, $_COOKIE, $phpBB3; /* * Build Portal style @@ -876,7 +1481,7 @@ function _init_style() } else if (isset($mx_page)) { - $init_style = $mx_page->default_style == -1 ? $portal_config['default_style'] : $mx_page->default_style; + $init_style = $mx_page->default_style == -1 ? $portal_config['default_style'] : $mx_page->default_style; $init_override = intval($mx_page->override_user_style) == -1 ? $portal_config['override_user_style'] : $mx_page->override_user_style; } else @@ -884,132 +1489,210 @@ function _init_style() $init_style = $portal_config['default_style']; $init_override = $portal_config['override_user_style']; } - /**/ - if (!empty($_GET['style']) || isset($_COOKIE['style'])) + + /* + * Setup demo style + */ + if (isset($_GET['style'])) { global $SID, $_EXTRA_URL; - $style = phpBB3::request_var('style', 0); - $SID .= '&style=' . $style; - $_EXTRA_URL = array('style=' . $style); + $init_style = $phpBB3->request_var('style', 0); + $SID .= '&style=' . $init_style; + $_EXTRA_URL = array('style=' . $init_style); - if ( $theme = $this->_setup_style($style) ) - { - setcookie('style', $style, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); - return; - } + //if ( $theme = $this->_setup_style($init_style) ) + //{ + setcookie('style', $init_style, (time() + 21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + // return; + //} } /**/ /* * Setup demo style */ - if ( isset($_GET['demo_theme']) || isset($_COOKIE['demo_theme'])) + if ( isset($_GET['demo_theme'])) { - $style = isset($_GET['demo_theme']) ? intval($_GET['demo_theme']) : intval($_COOKIE['demo_theme']); - if ( $theme = $this->_setup_style($style) ) - { - setcookie('demo_theme', $style, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); - return; - } - } + $init_style = isset($_GET['demo_theme']) ? intval($_GET['demo_theme']) : intval($_COOKIE['demo_theme']); + //if ( $theme = $this->_setup_style($init_style) ) + //{ + setcookie('demo_theme', $init_style, (time() + 21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + // return; + //} + } + /**/ + + /* + * Setup demo style + */ + if ( isset($_GET['demostyle'])) + { + $init_style = isset($_GET['demostyle']) ? intval($_GET['demostyle']) : intval($_COOKIE['demostyle']); + //if ( $theme = $this->_setup_style($init_style) ) + //{ + setcookie('demostyle', $init_style, (time() + 21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + // return; + //} + } + /**/ + + /* + * Request demostyle or style, style_name or themes_id/style_id i.e. for prosilver + */ if (!$mx_request_vars->is_empty_request('demostyle') || !$mx_request_vars->is_empty_request('style') && !defined('IN_ADMIN')) { - $init_style = !$mx_request_vars->is_empty_request('demostyle') ? phpBB3::request_var('demostyle', '') : phpBB3::request_var('style', ''); - if (intval($init_style) == 0) + $init_style = !$mx_request_vars->is_empty_request('demostyle') ? $phpBB3->request_var('demostyle', '') : $phpBB3->request_var('style', ''); + } + + /* + * Query id for default_style, or for demostyle-style, style_name or themes_id + */ + if (!is_numeric($init_style)) + { + switch (PORTAL_BACKEND) { - switch (PORTAL_BACKEND) - { - case 'internal': - case 'smf2': - case 'mybb': - $sql = "SELECT themes_id, style_name - FROM " . MX_THEMES_TABLE . " - WHERE portal_backend = '" . PORTAL_BACKEND . "' - AND style_name = '$init_style'"; - break; - case 'phpbb2': - $sql = "SELECT mxt.themes_id, bbt.style_id, bbt.style_name - FROM " . MX_THEMES_TABLE . " mxt, " . THEMES_TABLE . " bbt - WHERE mxt.style_name = bbt.style_name + case 'internal': + case 'smf2': + case 'mybb': + $sql = "SELECT themes_id, style_name + FROM " . MX_THEMES_TABLE . " + WHERE portal_backend = '" . PORTAL_BACKEND . "' + AND style_name = '$init_style'"; + break; + case 'phpbb2': + $sql = "SELECT s.themes_id as style_id, mxt.themes_id, mxt.template_name as style_path + FROM " . MX_THEMES_TABLE . " mxt, " . THEMES_TABLE . " s + WHERE mxt.template_name = s.template_name + AND mxt.portal_backend = '" . PORTAL_BACKEND . "' + AND s.style_name = '$init_style'"; + break; + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + case 'proteus': + $sql = "SELECT mxt.themes_id, bbt.style_id, bbt.style_name + FROM " . MX_THEMES_TABLE . " AS mxt, " . STYLES_TEMPLATE_TABLE . " AS stt, " . STYLES_TABLE . " AS bbt + WHERE bbt.style_active = 1 AND bbt.style_name = '$init_style' + AND bbt.style_name = mxt.style_name AND mxt.portal_backend = '" . PORTAL_BACKEND . "' - AND mxt.style_name = '$init_style'"; - break; - case 'phpbb3': - case 'olympus': - case 'ascraeus': - case 'rhea': - $sql = "SELECT mxt.themes_id, bbt.style_id, bbt.style_name - FROM " . MX_THEMES_TABLE . " AS mxt, " . STYLES_TEMPLATE_TABLE . " AS stt, " . STYLES_TABLE . " AS bbt - WHERE bbt.style_active = 1 AND bbt.style_name = '$init_style' - AND bbt.style_name = mxt.style_name - AND mxt.portal_backend = '" . PORTAL_BACKEND . "' - AND stt.template_id = bbt.template_id"; - break; - } - if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) - { - $init_style = $row['themes_id']; //Portal Style Id - } - else - { - die('Could not find style name: ' . $init_style . '!'); - } + AND stt.template_id = bbt.template_id"; + break; + } + /* + * Query ed id for default_style, or for demostyle-style, style_name or themes_id from mxt.themes_id + */ + if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) + { + $init_style = $row['themes_id']; //Portal Style Id i.e. 7 } else { + die('Could not find style name: ' . $init_style . '!'); + } + } + else + { + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + case 'mybb': + $sql = "SELECT themes_id, style_name + FROM " . MX_THEMES_TABLE . " + WHERE portal_backend = '" . PORTAL_BACKEND . "' + AND themes_id = " . (int) $init_style; + break; + case 'phpbb2': + $sql = "SELECT s.themes_id as style_id, mxt.themes_id, mxt.template_name as style_path + FROM " . MX_THEMES_TABLE . " mxt, " . THEMES_TABLE . " s + WHERE mxt.template_name = s.template_name + AND mxt.portal_backend = '" . PORTAL_BACKEND . "' + AND mxt.themes_id = " . (int) $init_style; + break; + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + case 'proteus': + $sql = "SELECT mxt.themes_id, bbt.style_id, bbt.style_name + FROM " . MX_THEMES_TABLE . " AS mxt, " . STYLES_TEMPLATE_TABLE . " AS stt, " . STYLES_TABLE . " AS bbt + WHERE bbt.style_active = 1 AND bbt.style_id = " . (int) $init_style . " + AND bbt.style_name = mxt.style_name + AND mxt.portal_backend = '" . PORTAL_BACKEND . "' + AND stt.template_id = bbt.template_id"; + break; + } + + if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) + { + $init_style = $row['themes_id']; //Portal Style Id + } + else + { switch (PORTAL_BACKEND) { case 'internal': case 'smf2': case 'mybb': - $sql = "SELECT themes_id, style_name + $sql2 = "SELECT themes_id, style_name FROM " . MX_THEMES_TABLE . " - WHERE portal_backend = '" . PORTAL_BACKEND . "' - AND themes_id = " . (int) $init_style; + WHERE portal_backend = '" . PORTAL_BACKEND . "'"; break; case 'phpbb2': - $sql = "SELECT mxt.themes_id, bbt.style_id, bbt.style_name - FROM " . MX_THEMES_TABLE . " mxt, " . THEMES_TABLE . " bbt - WHERE mxt.style_name = bbt.style_name - AND mxt.portal_backend = '" . PORTAL_BACKEND . "' - AND bbt.style_id = " . (int) $init_style; + $sql2 = "SELECT s.themes_id as style_id, mxt.themes_id, mxt.template_name as style_path + FROM " . MX_THEMES_TABLE . " mxt, " . THEMES_TABLE . " s + WHERE mxt.template_name = s.template_name + AND mxt.portal_backend = '" . PORTAL_BACKEND . "'"; break; case 'phpbb3': case 'olympus': case 'ascraeus': case 'rhea': - $sql = "SELECT mxt.themes_id, bbt.style_id, bbt.style_name + case 'proteus': + $sql2 = "SELECT mxt.themes_id, bbt.style_id, bbt.style_name FROM " . MX_THEMES_TABLE . " AS mxt, " . STYLES_TEMPLATE_TABLE . " AS stt, " . STYLES_TABLE . " AS bbt - WHERE bbt.style_active = 1 AND bbt.style_id = " . (int) $init_style . " + WHERE bbt.style_active = 1 AND bbt.style_name = mxt.style_name AND mxt.portal_backend = '" . PORTAL_BACKEND . "' AND stt.template_id = bbt.template_id"; break; - } - if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) + } + + if(($result = $db->sql_query_limit($sql2, 1)) && ($row = $db->sql_fetchrow($result))) { $init_style = $row['themes_id']; //Portal Style Id } - else + else { - die('style_id: ' . $init_style . ', no style with this id found ...'); + die('style_id: ' . $init_style . ', no style with this id found ... ' . $sql); } } - if ($theme = $this->_setup_style($init_style, false) ) - { - @setcookie((!$mx_request_vars->is_empty_request('demostyle') ? 'demostyle' : 'style'), $init_style, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); - return; - } + + } + + /* + * Init queried id for demostyle or style, style_name or style_id + */ + if ($theme = $this->_setup_style($init_style, false) ) + { + @setcookie((!$mx_request_vars->is_empty_request('demostyle') ? 'demostyle' : 'style'), $init_style, (time() + 21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + return; } + + /* + * Init overwrite queried + */ if (!$init_style) { $init_style = 1; $init_override = 1; } - // - // Setup MXP Style - // + + /* + * Setup user_style, style_id + */ $user_style = false; if (!$init_override) { @@ -1018,46 +1701,219 @@ function _init_style() $user_style = $mx_request_vars->post('user_style', MX_TYPE_INT, $this->data['user_style']); } } - $init_style = $mx_request_vars->post('default_style', MX_TYPE_INT, $init_style); + + $init_style = isset($_POST['default_style']) ? $mx_request_vars->post('default_style', MX_TYPE_INT, $init_style) : $init_style; $theme = $this->_setup_style($init_style, $user_style); } /** - * Setup style. + * Enter description here... * - * @access private * @param unknown_type $style * @return unknown */ - function _setup_style($init_style, $user_style = false) + function _style_query($style = true) { global $db, $board_config, $portal_config, $template, $phpbb_root_path, $mx_root_path; - global $images, $theme; - - $row = false; + global $mx_request_vars, $theme; - // Are we trying a userstyle? - if ((intval($user_style) !== 0) && !empty($user_style)) + // + // Set up style to output + // + if ($this->data['user_id'] == ANONYMOUS && empty($this->data['user_style'])) { - $row = $this->_style_query($user_style); + $this->data['user_style'] = $board_config['default_style']; } - - // ...or a Custom Page/AdminCP Style - if (!isset($row['style_name'])) + + $style_request = $mx_request_vars->request('style', 0); + + if ($style_request && (!$board_config['override_user_style'] || !defined('IN_ADMIN'))) { - $row = $this->_style_query($init_style); + global $SID, $_EXTRA_URL; + + $style = $style_request; + $SID .= '&style=' . $style; + $_EXTRA_URL = array('style=' . $style); } - - // Seems like we need to try the default style - if (!isset($row['style_name'])) + else { - $row = $this->_style_query($portal_config['default_style']); - } + // Set up style + $style = ($style) ? $style : ((!$board_config['override_user_style']) ? $this->data['user_style'] : $board_config['default_style']); + } + // END Styles_Demo MOD + if (!is_numeric($style)) + { + //Query MX style_name + $sql_and = "style_name"; + } + else + { + //Query MX themes_id + $sql_and = "themes_id"; + } + + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + case 'mybb': + $sql = "SELECT * + FROM " . MX_THEMES_TABLE . " + WHERE portal_backend = '" . PORTAL_BACKEND . "' + AND " . $sql_and . " = '" . $style . "'"; + break; + case 'phpbb2': + $sql = "SELECT s.themes_id as style_id, + mxt.themes_id, + mxt.template_name as style_path, + s.template_name, + s.style_name, + s.head_stylesheet, + s.body_background, + s.body_bgcolor, + s.body_text, + s.body_link, + s.body_vlink, + s.body_alink, + s.body_hlink, + s.tr_color1, + s.tr_color2, + s.tr_color3, + s.tr_class1, + s.tr_class2, + s.tr_class3, + s.th_color1, + s.th_color2, + s.th_color3, + s.th_class1, + s.th_class2, + s.th_class3, + s.td_color1, + s.td_color2, + s.td_color3, + s.td_class1, + s.td_class2, + s.td_class3, + s.fontface1, + s.fontface2, + s.fontface3, + s.fontsize1, + s.fontsize2, + s.fontsize3, + s.fontcolor1, + s.fontcolor2, + s.fontcolor3, + s.span_class1, + s.span_class2, + s.span_class3, + s.img_size_poll, + s.img_size_privmsg + FROM " . MX_THEMES_TABLE . " mxt, " . THEMES_TABLE . " s + WHERE mxt.style_name = s.style_name + AND mxt.portal_backend = '" . PORTAL_BACKEND . "' + AND mxt." . $sql_and . " = '" . $style . "'"; + break; + case 'phpbb3': + case 'olympus': + case 'ascraeus': + #1146 - Table STYLES_TEMPLATE_TABLE 'rhea.phpbb_styles_template' doesn't exist + case 'rhea': + case 'proteus': + $sql = "SELECT t.* , s.* + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t, " . STYLES_THEME_TABLE . " AS c, " . STYLES_IMAGESET_TABLE . " i + WHERE m.style_name = s.style_name + AND m.portal_backend = '" . PORTAL_BACKEND . "' + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id + AND m." . $sql_and . " = '" . $style . "'"; + break; + } + if (!$result = $db->sql_query_limit($sql, 1)) + { + mx_message_die(CRITICAL_ERROR, "Could not query database for theme info '$style'", '', __LINE__, __FILE__, $sql); + } + + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + $style_value = !isset($row['style_name']) ? $row['style_name'] : $style; + + return $row; + } + + /** + * Setup style. + * + * @access private + * @param unknown_type $style + * @return unknown + */ + function _setup_style($init_style, $user_style = false) + { + global $db, $board_config, $portal_config, $template, $phpbb_root_path, $mx_root_path; + + global $mx_request_vars, $images, $theme; + + $row = false; + + // + // Are we trying a userstyle? + // + if (@is_numeric($user_style) && ($user_style !== false)) + { + $row = $this->style = $this->theme = $theme = $this->_style_query($user_style); + } + + // + // ...or a Custom Page/AdminCP Style + // + if (!$row) + { + $row = $this->style = $this->theme = $theme = $this->_style_query($init_style); + } + + // + // Seems like we need to try the default style + // + if (!$row) + { + $row = $this->style = $this->theme = $theme = $this->_style_query($portal_config['default_style']); + } + + // // Last desperate try... + // if (!isset($row['style_name'])) - { + { + // + // Set up style to output + // + if ($this->data['user_id'] == ANONYMOUS && empty($this->data['user_style'])) + { + $this->data['user_style'] = $board_config['default_style']; + } + + $style_request = $mx_request_vars->request('style', 1); + + if ($style_request && (!$board_config['override_user_style'] || !defined('IN_ADMIN'))) + { + global $SID, $_EXTRA_URL; + + $init_style = $style_request; + $SID .= '&style=' . $init_style; + $_EXTRA_URL = array('style=' . $init_style); + } + else + { + // Set up style + $init_style = ($init_style) ? $init_style : ((!$board_config['override_user_style']) ? $this->data['user_style'] : $board_config['default_style']); + } + + + switch (PORTAL_BACKEND) { case 'internal': @@ -1067,28 +1923,29 @@ function _setup_style($init_style, $user_style = false) FROM ' . MX_THEMES_TABLE; break; case 'phpbb2': - $sql = 'SELECT * - FROM ' . THEMES_TABLE; + $sql = "SELECT s.*, mxt.*, mxt.template_name as style_path + FROM " . MX_THEMES_TABLE . " AS mxt, " . THEMES_TABLE . " AS s + WHERE mxt.themes_id = " . (int) $init_style . " + AND s.template_name = mxt.template_name"; break; case 'phpbb3': case 'olympus': case 'ascraeus': case 'rhea': + case 'proteus': $sql = "SELECT bbt.*, stt.* FROM " . MX_THEMES_TABLE . " mxt, " . STYLES_TABLE . " bbt, " . STYLES_TEMPLATE_TABLE . " stt WHERE mxt.template_name = stt.template_path"; break; } - if ( !($result = $db->sql_query_limit($sql, 1)) ) - { - mx_message_die(CRITICAL_ERROR, 'Could not query database for theme info - desperate try'); - } - if ( !($row = $db->sql_fetchrow($result)) ) + $result = $db->sql_query($sql, 3600); + $row = $this->style = $this->theme = $theme = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + if (!isset($row)) { mx_message_die(CRITICAL_ERROR, "Could not get MX-Publisher style data for themes_id [$init_style]"); - } - + } $db->sql_freeresult($result); } @@ -1109,6 +1966,7 @@ function _setup_style($init_style, $user_style = false) case 'olympus': case 'ascraeus': case 'rhea': + case 'proteus': $this->template_name = $row['template_path']; $this->style_name = $row['style_name']; $style = $row['style_id']; @@ -1160,6 +2018,7 @@ function _setup_style($init_style, $user_style = false) case 'olympus': case 'ascraeus': case 'rhea': + case 'proteus': $row['style_copy'] = $template_config_row['template_copy']; $row['head_stylesheet'] = $row['template_path'] . '.css'; break; @@ -1182,83 +2041,25 @@ function _setup_style($init_style, $user_style = false) case 'phpbb2': $this->_load_phpbb_images(); $this->_load_mxbb_images(); - break; + break; case 'internal': case 'smf2': case 'mybb': + $this->_load_mxbb_images(); + break; case 'phpbb3': case 'olympus': case 'ascraeus': - case 'rhea': + case 'rhea': + case 'proteus': $this->_load_mxbb_images(); - break; + $this->_load_phpbb_images(); + break; } // Load backend specific style defs. - $this->setup_style(); + //$this->setup_style(); return $row; - } - - /** - * Enter description here... - * - * @param unknown_type $style - * @return unknown - */ - function _style_query($style = true) - { - global $db, $board_config, $portal_config, $template, $phpbb_root_path, $mx_root_path, $theme; - // END Styles_Demo MOD - if (intval($style) == 0) - { - //Query MX style_name - $sql_and = "style_name"; - } - else - { - //Query MX themes_id - $sql_and = "themes_id"; - } - switch (PORTAL_BACKEND) - { - case 'internal': - case 'smf2': - case 'mybb': - $sql = "SELECT * - FROM " . MX_THEMES_TABLE . " - WHERE portal_backend = '" . PORTAL_BACKEND . "' - AND " . $sql_and . " = " . (int) $style; - break; - case 'phpbb2': - $sql = "SELECT bbt.* - FROM " . MX_THEMES_TABLE . " mxt, " . THEMES_TABLE . " bbt - WHERE mxt.style_name = bbt.style_name - AND mxt.portal_backend = '" . PORTAL_BACKEND . "' - AND mxt." . $sql_and . " = " . (int) $style; - break; - case 'phpbb3': - case 'olympus': - case 'ascraeus': - case 'rhea': - $sql = "SELECT t . * , s . * - FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t, " . STYLES_THEME_TABLE . " AS c, " . STYLES_IMAGESET_TABLE . " i - WHERE m.style_name = s.style_name - AND m.portal_backend = '" . PORTAL_BACKEND . "' - AND t.template_id = s.template_id - AND c.theme_id = s.theme_id - AND i.imageset_id = s.imageset_id - AND m." . $sql_and . " = " . (int) $style; - break; - } - if (!$result = $db->sql_query_limit($sql, 1)) - { - mx_message_die(CRITICAL_ERROR, "Could not query database for theme info '$style_id'", '', __LINE__, __FILE__, $sql); - } - $row = $db->sql_fetchrow($result); - $db->sql_freeresult($result); - //$style_value = $row['style_name']; - //print_R($style_value); - return $row; } /** @@ -1271,7 +2072,7 @@ function _load_template_config() { global $board_config, $images, $theme, $template, $phpbb_root_path, $mx_root_path; - //unset($GLOBALS['MX_TEMPLATE_CONFIG']); + unset($GLOBALS['MX_TEMPLATE_CONFIG']); $mx_template_config = false; // Load MX-Publisher Template configuration data @@ -1288,25 +2089,42 @@ function _load_template_config() case 'internal': case 'smf2': case 'mybb': + //$phpbb_images = $images; + break; case 'phpbb2': - $phpbb_images = $images; + //$phpbb_images = $this->_load_phpbb_images(); break; case 'phpbb3': case 'olympus': case 'ascraeus': case 'rhea': - $phpbb_images = $this->_load_phpbb_images(); + //$phpbb_images = $this->_load_phpbb_images(); break; } - $images = (is_array($phpbb_images) && is_array($images)) ? array_merge($phpbb_images, @$images) : (is_array($images) ? $images: $phpbb_images); - $template_config_filename = $mx_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg'; + + //$images = (is_array($phpbb_images) && is_array($images)) ? array_merge($phpbb_images, @$images) : (is_array($images) ? $images: $phpbb_images); + + // + // Load mxBB Template configuration data + // + $template_config_filename = $mx_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg'; /* *fix for mxp **/ - if ((include $template_config_filename) === false) + if ((@include $template_config_filename) === false) { - print('template config filename ' . $template_config_filename . ' couldn\'t be opened.'); + print('The files for ' . $this->template_name . ' are missing. The template configuration filename ' . $template_config_filename . ' couldn\'t be opened.

'); + // + // Since we have no Template Config file, use default (subSilver) instead + // + @include($mx_root_path . $this->default_current_template_path . '/' . $this->default_template_name . '.cfg'); + + // + // Make default template -> current template + // + $this->template_name = $this->default_template_name; + $this->current_template_path = $this->default_current_template_path; } $this->theme = (is_array($this->theme) && is_array($theme)) ? array_merge($this->theme, @$theme) : (is_array($theme) ? $theme: $this->theme); @@ -1341,10 +2159,7 @@ function _load_template_config() return $template_config_row; } - /** - * Enter description here... - * @access private - */ + /** * Enter description here... * @access private @@ -1361,392 +2176,533 @@ function _load_phpbb_images() case 'smf2': case 'mybb': @define(TEMPLATE_CONFIG, TRUE); + return $images; break; - case 'phpbb2': - /* - * Load phpBB Template configuration data - * - First try current template - */ - if ( file_exists( $phpbb_root_path . $this->current_template_path . "/images" ) ) - { - $current_template_path = $current_template_phpbb_path = $this->current_template_path; - $current_template_phpbb_images = $current_template_path . $this->template_name . "/images"; - $template_name = $this->template_name; - - @include($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg'); - } - - /* - * Since we have no current Template Config file, try the cloned template instead - */ - if ( file_exists( $phpbb_root_path . $this->cloned_current_template_path . "/images" ) && !defined('TEMPLATE_CONFIG') ) - { - $current_template_path = $current_template_phpbb_path = $this->cloned_current_template_path; - $current_template_phpbb_images = $current_template_path . "/images"; - $template_name = $this->cloned_template_name; - - @include($phpbb_root_path . $this->cloned_current_template_path . '/' . $this->cloned_template_name . '.cfg'); - } - /* - * Last attempt, use default template intead - */ - if ( file_exists( $phpbb_root_path . $this->default_current_template_path . "/images" ) && !defined('TEMPLATE_CONFIG') ) - { - $current_template_path = $current_template_phpbb_path = $this->default_current_template_path; - $current_template_phpbb_images = $this->default_current_template_path . "/images"; - $template_name = $this->default_template_name; - @include($phpbb_root_path . $this->default_current_template_path . '/' . $this->default_template_name . '.cfg'); - } - break; - case 'phpbb3': - case 'olympus': + default: /* * Load phpBB Template configuration data - * - First prepare the variables - */ - $this->setup_style(); - if (!$this->template_name) - { - trigger_error("Could not get style data: $this->template_name", E_USER_ERROR); - } - if ($this->data['session_logged_in']) - { - $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->data['user_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->data['user_lang']) : ((file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'); - $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; + */ + break; + } + + $style_found = ''; //default + + // + // Load phpBB Template configuration data + // - First try current template + // + if (is_dir($phpbb_root_path . $this->current_template_path . "/images/") || is_dir($phpbb_root_path . $this->current_template_path . "/theme/images/")) + { + $current_template_path = $this->current_template_path; + $template_name = $this->template_name; + + $style_found = '_'; //default + } + + // + // Since we have no current Template Config file, try the cloned template instead + // + if ((is_dir($phpbb_root_path . $this->cloned_current_template_path . "/images/") || is_dir($phpbb_root_path . $this->cloned_current_template_path . "/theme/images/")) && empty($style_found) ) + { + $current_template_path = $this->cloned_current_template_path; + $template_name = $this->cloned_template_name; + + $style_found = 'cloned_'; //default + } - $this->date_format = $this->data['user_dateformat']; - $this->timezone = $this->data['user_timezone'] * 3600; - $this->dst = $this->data['user_dst'] * 3600; - } - else - { - $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'; - $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; - $this->date_format = $board_config['default_dateformat']; - $this->timezone = $board_config['board_timezone'] * 3600; - $this->dst = $board_config['board_dst'] * 3600; - } - $this->img_lang = (@file_exists($phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . $this->lang_name)) ? $this->lang_name : $this->encode_lang($board_config['default_lang']); - //$this->template_name = $this->theme['imageset_path']; - //trigger_error("Could not get style data: $this->template_name", E_USER_ERROR); + // + // Last attempt, use default template intead + // + if ((is_dir($phpbb_root_path . $this->default_current_template_path . "/images/") || is_dir($phpbb_root_path . $this->default_current_template_path . "/theme/images/")) && empty($style_found) ) + { + $current_template_path = $this->default_current_template_path; + $template_name = $this->default_template_name; + + $style_found = 'default_'; //default + } + + if(is_dir($phpbb_root_path . $current_template_path . '/theme/images/')) + { + $current_template_images = $this->current_template_images = $current_template_path . "/theme/images"; + } + elseif(is_dir($phpbb_root_path . $this->current_template_path . '/images/')) + { + $current_template_images = $this->current_template_images = $current_template_path . "/images"; + } + + /** + /* Try phpBB2 then phpBB3 style + /* mx_user->_load_phpbb_images( ) + /* Icludes here old phpBB styles configuration file + /* include( 'www\phpbb2\templates\prosilver2\prosilver2.cfg' ) + **/ + if(@file_exists(@phpbb_realpath($phpbb_root_path . $current_template_path . '/' . $template_name . '.cfg')) ) + { + @include($phpbb_root_path . $current_template_path . '/' . $template_name . '.cfg'); + if (!defined('TEMPLATE_CONFIG')) + { // - // Load phpBB Template configuration data - // - Try current template - // - if (file_exists("{$phpbb_root_path}styles/{$this->template_name}/imageset/{$this->img_lang}/imageset.cfg")) - { - $cfg_data_imageset_data = phpBB3::parse_cfg_file("{$phpbb_root_path}styles/{$this->template_name}/imageset/{$this->img_lang}/imageset.cfg"); - - $template_name = $this->template_name; - $default_style_name = $this->default_style_name; - - $current_style_phpbb_path = $this->current_style_phpbb_path = $this->style_path . $this->template_name; //new - $current_template_phpbb_path = $current_style_phpbb_path . "/template"; - $current_template_phpbb_images = @file_exists($phpbb_root_path . $current_style_phpbb_path . "/imageset") ? $current_style_phpbb_path. "/imageset" : (@file_exists($phpbb_root_path . $this->default_style2_name . "/imageset") ? $phpbb_root_path . $this->default_style2_name . "/imageset" : $phpbb_root_path . $this->default_template_name . "/imageset"); - //@include($phpbb_root_path . $current_template_phpbb_images . '/imageset.cfg'); - @define('TEMPLATE_CONFIG', true); - } + // Do not alter this line! // - // Since we have no current Template Config file, try the cloned template instead - /**/ - else if (@file_exists($phpbb_root_path . $this->style_path . $this->cloned_template_name . "/imageset" )) - { - $cfg_data_imageset_data = phpBB3::parse_cfg_file("{$phpbb_root_path}styles/{$this->cloned_template_name}/imageset/{$this->img_lang}/imageset.cfg"); - - $template_name = $this->cloned_template_name; - $default_style_name = $this->default_style_name; - - $cloned_style_phpbb_path = $this->cloned_style_phpbb_path = $this->style_path . $this->cloned_template_name; //new - $current_template_phpbb_path = $cloned_style_phpbb_path . "/template"; - $current_template_phpbb_images = @file_exists($phpbb_root_path . $cloned_style_phpbb_path . "/imageset") ? $this->style_path . $this->cloned_template_name . "/imageset" : (@file_exists($phpbb_root_path . $this->default_style2_name . "/imageset") ? $phpbb_root_path . $this->default_style2_name . "/imageset" : $phpbb_root_path . $this->default_template_name . "/imageset"); - //@include($phpbb_root_path . $this->cloned_current_template_path . '/imageset.cfg'); - @define('TEMPLATE_CONFIG', file_exists($phpbb_root_path . $current_template_phpbb_images . '/imageset.cfg') ? $phpbb_root_path . $current_template_phpbb_images . '/imageset.cfg' : false); - } - /**/ - // Last attempt, use default template intead - /**/ - else if (@file_exists($phpbb_root_path . $this->style_path . $this->default_style_name . "/imageset" )) - { - $cfg_data_imageset_data = phpBB3::parse_cfg_file("{$phpbb_root_path}styles/{$this->default_template_name}/imageset/{$this->img_lang}/imageset.cfg"); - - $template_name = $this->default_template_name; - $default_style_name = $this->default_style_name; - - $default_style_phpbb_path = $this->default_style_phpbb_path = $this->style_path . $this->default_style_name; //new - $current_template_phpbb_path = $default_style_phpbb_path . "/template"; - $current_template_phpbb_images = @file_exists($phpbb_root_path . $default_style_phpbb_path . "/imageset") ? $this->style_path . $this->default_style_name . "/imageset" : (@file_exists($phpbb_root_path . $this->default_style2_name . "/imageset") ? $phpbb_root_path . $this->default_style2_name . "/imageset" : $phpbb_root_path . $this->default_template_name . "/imageset"); - //@include($phpbb_root_path . $this->default_current_template_path . '/' . $this->default_template_name . '.cfg'); - @define('TEMPLATE_CONFIG', file_exists($phpbb_root_path . $current_template_phpbb_images . '/imageset.cfg') ? $phpbb_root_path . $current_template_phpbb_images . '/imageset.cfg' : false); - } - - foreach ($cfg_data_imageset_data as $image_name => $value) - { - if (strpos($value, '*') !== false) - { - if (substr($value, -1, 1) === '*') - { - list($image_filename, $image_height) = explode('*', $value); - $image_width = 0; - } - else - { - list($image_filename, $image_height, $image_width) = explode('*', $value); - } - } - else + @define(TEMPLATE_CONFIG, TRUE); + } + + } + elseif( @file_exists(@phpbb_realpath($phpbb_root_path . $current_template_path . "/style.cfg")) ) + { + // + // Do not alter this line! + // + @define(TEMPLATE_CONFIG, TRUE); + + // + // - First try phpBB2 then phpBB3 template lang images then old Olympus image sets + // + if (is_dir($phpbb_root_path . $current_template_path . '/images/')) + { + $this->current_template_images = $current_template_path . '/images'; + } + else if (is_dir($phpbb_root_path . $current_template_path . '/theme/images/') ) + { + $this->current_template_images = $current_template_path . '/theme/images'; + } + + if (is_dir($phpbb_root_path . $current_template_path . '/imageset/') ) + { + $this->current_template_images = $current_template_path . '/imageset'; + } + + $current_template_images = $this->current_template_images; + + $images['icon_quote'] = "$current_template_images/{LANG}/" . $this->img('icon_post_quote.gif', '', '', '', 'filename'); + $images['icon_edit'] = "$current_template_images/{LANG}/" . $this->img('icon_post_edit.gif', '', '', '', 'filename'); + $images['icon_search'] = "$current_template_images/{LANG}/" . $this->img('icon_user_search.gif', '', '', '', 'filename'); + $images['icon_profile'] = "$current_template_images/{LANG}/" . $this->img('icon_user_profile.gif', '', '', '', 'filename'); + $images['icon_pm'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_pm.gif', '', '', '', 'filename'); + $images['icon_email'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_email.gif', '', '', '', 'filename'); + $images['icon_delpost'] = "$current_template_images/{LANG}/" . $this->img('icon_post_delete.gif', '', '', '', 'filename'); + $images['icon_ip'] = "$current_template_images/{LANG}/" . $this->img('icon_user_ip.gif', '', '', '', 'filename'); + $images['icon_www'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_www.gif', '', '', '', 'filename'); + $images['icon_icq'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_icq_add.gif', '', '', '', 'filename'); + $images['icon_aim'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_aim.gif', '', '', '', 'filename'); + $images['icon_yim'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_yim.gif', '', '', '', 'filename'); + $images['icon_msnm'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_msnm.gif', '', '', '', 'filename'); + $images['icon_minipost'] = "$current_template_images/" . $this->img('icon_post_target.gif', '', '', '', 'filename'); + $images['icon_gotopost'] = "$current_template_images/" . $this->img('icon_gotopost.gif', '', '', '', 'filename'); + $images['icon_minipost_new'] = "$current_template_images/" . $this->img('icon_post_target_unread.gif', '', '', '', 'filename'); + $images['icon_latest_reply'] = "$current_template_images/" . $this->img('icon_latest_reply.gif', '', '', '', 'filename'); + $images['icon_newest_reply'] = "$current_template_images/" . $this->img('icon_newest_reply.gif', '', '', '', 'filename'); + + $images['forum'] = "$current_template_images/" . $this->img('forum_read.gif', '', '27', '', 'filename'); + $images['forum_new'] = "$current_template_images/" . $this->img('forum_unread.gif', '', '', '', 'filename'); + $images['forum_locked'] = "$current_template_images/" . $this->img('forum_read_locked.gif', '', '', '', 'filename'); + + // Begin Simple Subforums MOD + $images['forums'] = "$current_template_images/" . $this->img('forum_read_subforum.gif', '', '', '', 'filename'); + $images['forums_new'] = "$current_template_images/" . $this->img('forum_unread_subforum.gif', '', '', '', 'filename'); + // End Simple Subforums MOD + + $images['folder'] = "$current_template_images/" . $this->img('topic_read.gif', '', '', '', 'filename'); + $images['folder_new'] = "$current_template_images/" . $this->img('topic_unread.gif', '', '', '', 'filename'); + $images['folder_hot'] = "$current_template_images/" . $this->img('topic_read_hot.gif', '', '', '', 'filename'); + $images['folder_hot_new'] = "$current_template_images/" . $this->img('topic_unread_hot.gif', '', '', '', 'filename'); + $images['folder_locked'] = "$current_template_images/" . $this->img('topic_read_locked.gif', '', '', '', 'filename'); + $images['folder_locked_new'] = "$current_template_images/" . $this->img('topic_unread_locked.gif', '', '', '', 'filename'); + $images['folder_sticky'] = "$current_template_images/" . $this->img('topic_read_mine.gif', '', '', '', 'filename'); + $images['folder_sticky_new'] = "$current_template_images/" . $this->img('topic_unread_mine.gif', '', '', '', 'filename'); + $images['folder_announce'] = "$current_template_images/" . $this->img('announce_read.gif', '', '', '', 'filename'); + $images['folder_announce_new'] = "$current_template_images/" . $this->img('announce_unread.gif', '', '', '', 'filename'); + + $images['post_new'] = "$current_template_images/{LANG}/" . $this->img('button_topic_new.gif', '', '', '', 'filename'); + $images['post_locked'] = "$current_template_images/{LANG}/" . $this->img('button_topic_locked.gif', '', '', '', 'filename'); + $images['reply_new'] = "$current_template_images/{LANG}/" . $this->img('button_topic_reply.gif', '', '', '', 'filename'); + $images['reply_locked'] = "$current_template_images/{LANG}/" . $this->img('icon_post_target_unread.gif', '', '', '', 'filename'); + + $images['pm_inbox'] = "$current_template_images/" . $this->img('msg_inbox.gif', '', '', '', 'filename'); + $images['pm_outbox'] = "$current_template_images/" . $this->img('msg_outbox.gif', '', '', '', 'filename'); + $images['pm_savebox'] = "$current_template_images/" . $this->img('msg_savebox.gif', '', '', '', 'filename'); + $images['pm_sentbox'] = "$current_template_images/" . $this->img('msg_sentbox.gif', '', '', '', 'filename'); + $images['pm_readmsg'] = "$current_template_images/" . $this->img('topic_read.gif', '', '', '', 'filename'); + $images['pm_unreadmsg'] = "$current_template_images/" . $this->img('topic_unread.gif', '', '', '', 'filename'); + $images['pm_replymsg'] = "$current_template_images/{LANG}/" . $this->img('reply.gif', '', '', '', 'filename'); + $images['pm_postmsg'] = "$current_template_images/{LANG}/" . $this->img('msg_newpost.gif', '', '', '', 'filename'); + $images['pm_quotemsg'] = "$current_template_images/{LANG}/" . $this->img('icon_quote.gif', '', '', '', 'filename'); + $images['pm_editmsg'] = "$current_template_images/{LANG}/" . $this->img('icon_edit.gif', '', '', '', 'filename'); + $images['pm_new_msg'] = ""; + $images['pm_no_new_msg'] = ""; + + $images['Topic_watch'] = ""; + $images['topic_un_watch'] = ""; + $images['topic_mod_lock'] = "$current_template_images/" . $this->img('topic_lock.gif', '', '', '', 'filename'); + $images['topic_mod_unlock'] = "$current_template_images/" . $this->img('topic_unlock.gif', '', '', '', 'filename'); + $images['topic_mod_split'] = "$current_template_images/" . $this->img('topic_split.gif', '', '', '', 'filename'); + $images['topic_mod_move'] = "$current_template_images/" . $this->img('topic_move.gif', '', '', '', 'filename'); + $images['topic_mod_delete'] = "$current_template_images/" . $this->img('topic_delete.gif', '', '', '', 'filename'); + + $images['voting_graphic'][0] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][1] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][2] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][3] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][4] = "$current_template_images/voting_bar.gif"; + + @include($phpbb_root_path . $this->cloned_current_template_path . '/' . $this->cloned_template_name . '.cfg'); + + // + // Vote graphic length defines the maximum length of a vote result + // graphic, ie. 100% = this length + // + $board_config['vote_graphic_length'] = 205; + $board_config['privmsg_graphic_length'] = 175; + } + else + { + if ((@include $phpbb_root_path . $this->template_path . "prosilver2/prosilver2.cfg") === false) + { + mx_message_die(CRITICAL_ERROR, "Could not open phpBB $this->template_name template config file", '', __LINE__, __FILE__); + } + else + { + print_r("Could not open phpBB $this->template_name template config file"); + } + } + + // + // We have no template to use - die + // + if ( !defined('TEMPLATE_CONFIG') ) + { + // + // Load phpBB Template configuration data + // - Last try current template + // + if ((@include $phpbb_root_path . $this->template_path . $this->template_name . '/' . $this->template_name . '.cfg') === false) + { + mx_message_die(CRITICAL_ERROR, "Could not open phpBB $this->template_name template config file", '', __LINE__, __FILE__); + } + } + + $parsed_array = $this->cache->get('_cfg_' . $this->template_path); + + if ($parsed_array === false) + { + $parsed_array = array(); + } + + // + // Try phpBB2 then phpBB3 style configuration file + // + if(@file_exists(@phpbb_realpath($phpbb_root_path . $current_template_path . '/' . $template_name . '.cfg')) ) + { + //parse phpBB2 style cfg file + $cfg_file_name = $this->template_name . '.cfg'; + $cfg_file = $phpbb_root_path . $this->current_template_path . '/' . $cfg_file_name; + + if (file_exists($phpbb_root_path . $this->current_template_path . '/' . $cfg_file_name)) + { + if (!isset($parsed_array['filetime']) || (@filemtime($cfg_file) > $parsed_array['filetime'])) + { + $parsed_array = parse_cfg_file($cfg_file); + $parsed_array['filetime'] = @filemtime($cfg_file); + $this->cache->put('_cfg_' . $this->template_path, $parsed_array); + } + } + } + elseif( @file_exists(@phpbb_realpath($phpbb_root_path . $this->current_template_path . '/style.cfg')) ) + { + //parse phpBB3 style cfg file + $cfg_file_name = 'style.cfg'; + $cfg_file = $phpbb_root_path . $this->current_template_path . '/style.cfg'; + + if (!isset($parsed_array['filetime']) || (@filemtime($cfg_file) > $parsed_array['filetime'])) + { + // Re-parse cfg file + $parsed_array = parse_cfg_file($cfg_file); + $parsed_array['filetime'] = @filemtime($cfg_file); + $this->cache->put('_cfg_' . $this->template_path, $parsed_array); + } + } + $check_for = array( + 'pagination_sep' => (string) ', ' + ); + + foreach ($check_for as $key => $default_value) + { + //$this->style[$key] = (isset($parsed_array[$key])) ? $parsed_array[$key] : $default_value; + $this->theme[$key] = (isset($parsed_array[$key])) ? $parsed_array[$key] : $default_value; + //settype($this->style[$key], gettype($default_value)); + settype($this->theme[$key], gettype($default_value)); + if (is_string($default_value)) + { + //$this->style[$key] = htmlspecialchars($this->style[$key]); + $this->theme[$key] = htmlspecialchars($this->theme[$key]); + } + } + + // If the style author specified the theme needs to be cached + // (because of the used paths and variables) than make sure it is the case. + // For example, if the theme uses language-specific images it needs to be stored in db. + if (file_exists($phpbb_root_path . $this->template_path . $this->template_name . '/theme/stylesheet.css')) + { + //phpBB3 Style Sheet + $theme_file = 'stylesheet.css'; + $css_file_path = $this->template_path . $this->template_name . '/theme/'; + $stylesheet = file_get_contents("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/stylesheet.css"); + } + else + { + //phpBB2 Style Sheet + $theme_file = !empty($this->theme['head_stylesheet']) ? $this->theme['head_stylesheet'] : $this->template_name . '.css'; + $css_file_path = $this->template_path . $this->template_name . '/'; + if (file_exists($phpbb_root_path . $this->template_path . $this->template_name . '/' . $theme_file)) + { + $stylesheet = file_get_contents("{$phpbb_root_path}{$this->template_path}{$this->template_name}/{$theme_file}"); + } + } + + if (!empty($stylesheet)) + { + // Match CSS imports + $matches = array(); + preg_match_all('/@import url\(["\'](.*)["\']\);/i', $stylesheet, $matches); + + if (sizeof($matches)) + { + $content = ''; + foreach ($matches[0] as $idx => $match) + { + if ($content = @file_get_contents("{$phpbb_root_path}{$css_file_path}" . $matches[1][$idx])) { - $image_filename = $value; - $image_height = $image_width = 0; + $content = trim($content); } - - if (strpos($image_name, 'img_') === 0 && $image_filename) + else { - $image_name = substr($image_name, 4); - /* - $image_ary[] = array( - 'image_name' => (string) $image_name, - 'image_filename' => (string) $image_filename, - 'image_height' => (int) $image_height, - 'image_width' => (int) $image_width, - 'imageset_id' => (int) $this->theme['imageset_id'], - 'image_lang' => (string) $this->img_lang, - ); - */ - //Here we overwrite phpBB3 images names from the template configuration file with images file names from database - //$phpbb_images[$image_name] = $image_filename; - $images[$image_name] = $this->images($image_name); - //$images = is_array($images) ? array_merge($phpbb_images, $images) : $phpbb_images; - } + $content = ''; + } + $stylesheet = str_replace($match, $content, $stylesheet); } - - /**/ - //Here we overwrite phpBB images from the template configuration file with images from database - $images['icon_quote'] = $this->images('img_icon_post_quote'); - $images['icon_edit'] = $this->images('img_icon_post_edit'); - $images['icon_search'] = $this->images('img_icon_user_search'); - $images['icon_profile'] = $this->images('img_icon_user_profile'); - $images['icon_pm'] = $this->images('img_icon_contact_pm'); - $images['icon_email'] = $this->images('img_icon_contact_email'); - $images['icon_delpost'] = $this->images('img_icon_post_delete'); - //$images['icon_ip'] = $this->images('icon_ip'); - $images['icon_www'] = $this->images('img_icon_contact_www'); - $images['icon_icq'] = $this->images('img_icon_contact_icq'); - $images['icon_aim'] = $this->images('img_icon_contact_aim'); - $images['icon_yim'] = $this->images('img_icon_contact_yahoo'); - $images['icon_msnm'] = $this->images('img_icon_contact_msnm'); - $images['icon_minipost'] = $this->images('img_icon_minipost'); - $images['icon_gotopost'] = $this->images('img_icon_gotopost'); - $images['icon_minipost_new'] = $this->images('img_icon_minipost_new'); - $images['icon_latest_reply'] = $images['img_icon_topic_latest'] = $this->images('img_icon_topic_latest'); - $images['icon_newest_reply'] = $this->images('img_icon_newest_reply'); - - $images['forum'] = $this->images('img_forum_read'); - $images['forums'] = $this->images('img_forum_read_subforum'); - $images['forum_new'] = $this->images('img_forum_unread'); - $images['forum_locked'] = $this->images('img_forum_read_locked'); - - $images['folder'] = $images['topic_read'] = $this->images('img_topic_read'); - $images['folder_new'] = $images['topic_unread'] = $this->images('img_topic_unread'); - $images['folder_hot'] = $images['topic_hot'] = $this->images('img_topic_read_hot'); - $images['folder_hot_new'] = $images['topic_hot_unread'] = $this->images('img_topic_unread_hot'); - $images['folder_locked'] = $images['topic_locked'] = $this->images('img_topic_unread_locked'); - $images['folder_locked_new'] = $images['topic_locked_unread'] = $this->images('img_topic_locked_unread'); - $images['folder_sticky'] = $images['topic_sticky'] = $this->images('img_topic_read_mine'); - $images['folder_sticky_new'] = $images['topic_sticky_unread'] = $this->images('img_topic_unread_mine'); - $images['folder_announce'] = $images['topic_announce'] = $this->images('img_announce_read'); - $images['folder_announce_new'] = $images['topic_announce_unread'] = $this->images('img_announce_unread'); - - $images['post_new'] = $this->images('img_button_topic_new'); - $images['post_locked'] = $this->images('img_button_topic_locked'); - $images['reply_new'] = $this->images('img_button_topic_reply'); - $images['reply_locked'] = $this->images('img_icon_post_target_unread'); - - /* - $images['pm_inbox'] = $this->images('pm_inbox'); - $images['pm_outbox'] = $this->images('pm_outbox'); - $images['pm_savebox'] = $this->images('pm_savebox'); - $images['pm_sentbox'] = $this->images('pm_sentbox'); - $images['pm_readmsg'] = $this->images('pm_readmsg'); - $images['pm_unreadmsg'] = $this->images('pm_unreadmsg'); - $images['pm_replymsg'] = $this->images('pm_replymsg'); - $images['pm_postmsg'] = $this->images('pm_postmsg'); - $images['pm_quotemsg'] = $this->images('pm_quotemsg'); - $images['pm_editmsg'] = $this->images('pm_editmsg'); - $images['pm_new_msg'] = $this->images('pm_new_msg'); - $images['pm_no_new_msg'] = $this->images('pm_no_new_msg'); - - $images['Topic_watch'] = $this->images('Topic_watch'); - $images['topic_un_watch'] = $this->images('topic_un_watch'); - $images['topic_mod_lock'] = $this->images('topic_mod_lock'); - $images['topic_mod_unlock'] = $this->images('topic_mod_unlock'); - $images['topic_mod_split'] = $this->images('topic_mod_split'); - $images['topic_mod_move'] = $this->images('topic_mod_move'); - $images['topic_mod_delete'] = $this->images('topic_mod_delete'); - - $images['voting_graphic'] = $this->images('voting_graphic'); - /**/ - - @define('TEMPLATE_CONFIG', TRUE); - // We include common temlate config file here to not load it every time a module template config file is included - //$this->theme = is_array($this->theme) ? array_merge($this->theme, $theme) : $theme; - //$this->theme = &$theme; - - break; - case 'ascraeus': - case 'rhea': - /* - * Load phpBB Template configuration data - * - First prepare the variables - */ - $this->setup_style(); - if (!$this->template_name) + unset($content); + } + + $stylesheet = str_replace('./', $css_file_path, $stylesheet); + + $theme_info = array( + 'theme_data' => $stylesheet, + 'theme_mtime' => time(), + 'theme_storedb' => 0 + ); + $theme_data = &$theme_info['theme_data']; + } + + // + // - First try old Olympus image sets then phpBB2 and phpBB3 Proteus template lang images + // + if (is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/imageset/")) + { + $this->imageset_path = '/imageset/'; //Olympus ImageSet + $this->img_lang = (file_exists($phpbb_root_path . $this->template_path . $this->template_name . $this->imageset_path . $this->lang_iso)) ? $this->lang_iso : $this->default_language; + $this->img_lang_dir = $this->img_lang; + $this->imageset_backend = 'olympus'; + } + elseif (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/images/")) + { + if ((@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/lang_{$this->user_language_name}")) || (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/lang_{$this->default_language_name}"))) + { + $this->imageset_path = '/theme/images/'; //phpBB3 Images + $this->img_lang = (file_exists($phpbb_root_path . $this->template_path . $this->template_name . '/theme/' . 'lang_' . $this->user_language_name)) ? $this->user_language_name : $this->default_language_name; + $this->img_lang_dir = 'lang_' . $this->img_lang; + $this->imageset_backend = 'phpbb2'; + } + if ((@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/{$this->user_language}")) || (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/{$this->default_language}"))) + { + $this->imageset_path = '/theme/images/'; //phpBB3 Images + $this->img_lang = (file_exists($phpbb_root_path . $this->template_path . $this->template_name . '/theme/' . $this->user_language_name)) ? $this->user_language : $this->default_language; + $this->img_lang_dir = $this->img_lang; + $this->imageset_backend = 'phpbb3'; + } + } + elseif (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/images/")) + { + $this->imageset_path = '/images/'; //phpBB2 Images + $this->img_lang = (is_dir($phpbb_root_path . $this->template_path . $this->template_name . $this->imageset_path . '/images/lang_' . $this->user_language_name)) ? $this->user_language_name : $this->default_language_name; + $this->img_lang_dir = 'lang_' . $this->img_lang; + $this->imageset_backend = 'phpbb2'; + } + + // + // phpBB2 image sets main images + // + $img_lang = ( is_dir($phpbb_root_path . $this->current_template_path . $this->img_lang_dir) ) ? $this->img_lang : $this->default_language_name; + + // + // Import phpBB Graphics, prefix with PHPBB_URL, and apply LANG info + // + while( list($key, $value) = @each($images) ) + { + if (is_array($value)) + { + foreach( $value as $key2 => $val2 ) { - trigger_error("Could not get style data: $this->template_name", E_USER_ERROR); + $this->images[$key][$key2] = $images[$key][$key2] = PHPBB_URL . $val2; } + } + else + { + $this->images[$key] = $images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value); + $this->images[$key] = $images[$key] = PHPBB_URL . $images[$key]; + } + + if(empty($images['forum'])) + { + //print_r('Your style configuration file has a typo! '); + //print_r($images); + $images['forum'] = 'folder.gif'; + } + + /* Here we overwrite phpBB images from the template db or configuration file */ + $rows = $this->image_rows($images); + + foreach ($rows as $row) + { + $row['image_filename'] = rawurlencode($row['image_filename']); - if ($this->data['session_logged_in']) + if(empty($row['image_name'])) { - $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->data['user_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->data['user_lang']) : ((file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'); - $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; - - $this->date_format = $this->data['user_dateformat']; - $this->timezone = $this->data['user_timezone'] * 3600; - $this->dst = $this->data['user_dst'] * 3600; + //print_r('Your style configuration file has a typo! '); + //print_r($row); + $row['image_name'] = 'spacer.gif'; + } + + $this->img_array[$row['image_name']] = $row; + } + } + + //print_r($images); + // Import phpBB Olympus image sets main images + // + if (@file_exists("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}/imageset.cfg")) + { + $cfg_data_imageset = parse_cfg_file("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}/imageset.cfg"); + + foreach ($cfg_data_imageset as $image_name => $value) + { + if (strpos($value, '*') !== false) + { + if (substr($value, -1, 1) === '*') + { + list($image_filename, $image_height) = explode('*', $value); + $image_width = 0; + } + else + { + list($image_filename, $image_height, $image_width) = explode('*', $value); + } } else { - $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'; - $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; - $this->date_format = $board_config['default_dateformat']; - $this->timezone = $board_config['board_timezone'] * 3600; - $this->dst = $board_config['board_dst'] * 3600; + $image_filename = $value; + $image_height = $image_width = 0; } - $this->img_lang = (@file_exists($phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/theme/' . $this->lang_name)) ? $this->lang_name : $this->encode_lang($board_config['default_lang']); - //$this->template_name = $this->theme['imageset_path']; - //trigger_error("Could not get style data: $this->template_name", E_USER_ERROR); - - // - // Load phpBB Template configuration data - // - Try current template - // - if (file_exists("{$phpbb_root_path}styles/{$this->template_name}/style.cfg")) - { - $template_name = $this->template_name; - $default_style_name = $this->default_style_name; - - $current_style_phpbb_path = $this->current_style_phpbb_path = $this->style_path . $this->template_name; //new - $current_template_phpbb_path = $current_style_phpbb_path . "/template"; - $current_template_phpbb_images = @file_exists($phpbb_root_path . $current_style_phpbb_path . "/theme/images") ? $current_style_phpbb_path. "/theme/images" : (@file_exists($phpbb_root_path . $this->default_style2_name . "/theme/images") ? $phpbb_root_path . $this->default_style2_name . "/theme/images" : $phpbb_root_path . $this->default_template_name . "/theme/images"); - @define('TEMPLATE_CONFIG', true); - } - // - // Since we have no cloned Template Config file, try the cloned template instead - /**/ - else if (@file_exists($phpbb_root_path . $this->style_path . $this->cloned_template_name . "/style.cfg")) - { - $template_name = $this->cloned_template_name; - $default_style_name = $this->default_style_name; - - $cloned_style_phpbb_path = $this->cloned_style_phpbb_path = $this->style_path . $this->cloned_template_name; //new - $current_template_phpbb_path = $cloned_style_phpbb_path . "/template"; - $current_template_phpbb_images = @file_exists($phpbb_root_path . $cloned_style_phpbb_path . "/theme/images") ? $this->style_path . $this->cloned_template_name . "/theme/images" : (@file_exists($phpbb_root_path . $this->default_style2_name . "/theme/images") ? $phpbb_root_path . $this->default_style2_name . "/theme/images" : $phpbb_root_path . $this->default_template_name . "/theme/images"); - @define('TEMPLATE_CONFIG', true); - } - /**/ - // Last attempt, use default template intead - /**/ - else if (@file_exists($phpbb_root_path . $this->style_path . $this->default_style_name . "/style.cfg" )) - { - $template_name = $this->default_template_name; - $default_style_name = $this->default_style_name; + if (strpos($image_name, 'img_') === 0 && $image_filename) + { + $image_name = substr($image_name, 4); + $row[] = array( + 'image_name' => (string) $image_name, + 'image_filename' => (string) $image_filename, + 'image_height' => (int) $image_height, + 'image_width' => (int) $image_width, + 'imageset_id' => (int) $style_id, + 'image_lang' => '', + ); - $default_style_phpbb_path = $this->default_style_phpbb_path = $this->style_path . $this->default_style_name; //new - $current_template_phpbb_path = $default_style_phpbb_path . "/template"; - $current_template_phpbb_images = @file_exists($phpbb_root_path . $default_style_phpbb_path . "/theme/images") ? $this->style_path . $this->default_style_name . "/imageset" : (@file_exists($phpbb_root_path . $this->default_style2_name . "/imageset") ? $phpbb_root_path . $this->default_style2_name . "/imageset" : $phpbb_root_path . $this->default_template_name . "/imageset"); - @define('TEMPLATE_CONFIG', true); + if (!empty($row['image_lang'])) + { + $localised_images = true; + } + $row['image_filename'] = !empty($row['image_filename']) ? rawurlencode($row['image_filename']) : ''; + $row['image_name'] = !empty($row['image_name']) ? rawurlencode($row['image_name']) : ''; + $this->img_array[$row['image_name']] = $row; } - - - /**/ - //Here we overwrite phpBB images from the template configuration file with images from css - $images['icon_quote'] = $this->images('img_icon_post_quote'); - $images['icon_edit'] = $this->images('img_icon_post_edit'); - $images['icon_search'] = $this->images('img_icon_user_search'); - $images['icon_profile'] = $this->images('img_icon_user_profile'); - $images['icon_pm'] = $this->images('img_icon_contact_pm'); - $images['icon_email'] = $this->images('img_icon_contact_email'); - $images['icon_delpost'] = $this->images('img_icon_post_delete'); - //$images['icon_ip'] = $this->images('icon_ip'); - $images['icon_www'] = $this->images('img_icon_contact_www'); - $images['icon_icq'] = $this->images('img_icon_contact_icq'); - $images['icon_aim'] = $this->images('img_icon_contact_aim'); - $images['icon_yim'] = $this->images('img_icon_contact_yahoo'); - $images['icon_msnm'] = $this->images('img_icon_contact_msnm'); - $images['icon_minipost'] = $this->images('img_icon_minipost'); - $images['icon_gotopost'] = $this->images('img_icon_gotopost'); - $images['icon_minipost_new'] = $this->images('img_icon_minipost_new'); - $images['icon_latest_reply'] = $images['img_icon_topic_latest'] = $this->images('img_icon_topic_latest'); - $images['icon_newest_reply'] = $this->images('img_icon_newest_reply'); - - $images['forum'] = $this->images('img_forum_read'); //images/forum_read.gif - $images['forums'] = $this->images('img_forum_read_subforum'); - $images['forum_new'] = $this->images('img_forum_unread'); - $images['forum_locked'] = $this->images('img_forum_read_locked'); - - $images['folder'] = $images['topic_read'] = $this->images('img_topic_read'); - $images['folder_new'] = $images['topic_unread'] = $this->images('img_topic_unread'); - $images['folder_hot'] = $images['topic_hot'] = $this->images('img_topic_read_hot'); - $images['folder_hot_new'] = $images['topic_hot_unread'] = $this->images('img_topic_unread_hot'); - $images['folder_locked'] = $images['topic_locked'] = $this->images('img_topic_unread_locked'); - $images['folder_locked_new'] = $images['topic_locked_unread'] = $this->images('img_topic_locked_unread'); - $images['folder_sticky'] = $images['topic_sticky'] = $this->images('img_topic_read_mine'); - $images['folder_sticky_new'] = $images['topic_sticky_unread'] = $this->images('img_topic_unread_mine'); - $images['folder_announce'] = $images['topic_announce'] = $this->images('img_announce_read'); - $images['folder_announce_new'] = $images['topic_announce_unread'] = $this->images('img_announce_unread'); - - $images['post_new'] = $this->images('img_button_topic_new'); - $images['post_locked'] = $this->images('img_button_topic_locked'); - $images['reply_new'] = $this->images('img_button_topic_reply'); - $images['reply_locked'] = $this->images('img_icon_post_target_unread'); - - //@define('TEMPLATE_CONFIG', TRUE); - // We include common temlate config file here to not load it every time a module template config file is included - //$this->theme = is_array($this->theme) ? array_merge($this->theme, $theme) : $theme; - //$this->theme = &$theme; - break; + } } - /* - * We have no template to use - die - */ - if ( !defined('TEMPLATE_CONFIG') ) + // + // - Olympus image sets lolalised images + // + if (@file_exists("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}{$this->img_lang}/imageset.cfg")) { - mx_message_die(CRITICAL_ERROR, "Could not open phpBB $this->template_name template config file", '', __LINE__, __FILE__); + $cfg_data_imageset_data = parse_cfg_file("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}{$this->img_lang}/imageset.cfg"); + foreach ($cfg_data_imageset_data as $image_name => $value) + { + if (strpos($value, '*') !== false) + { + if (substr($value, -1, 1) === '*') + { + list($image_filename, $image_height) = explode('*', $value); + $image_width = 0; + } + else + { + list($image_filename, $image_height, $image_width) = explode('*', $value); + } + } + else + { + $image_filename = $value; + $image_height = $image_width = 0; + } + + if (strpos($image_name, 'img_') === 0 && $image_filename) + { + $image_name = substr($image_name, 4); + $row[] = array( + 'image_name' => (string) $image_name, + 'image_filename' => (string) $image_filename, + 'image_height' => (int) $image_height, + 'image_width' => (int) $image_width, + 'imageset_id' => !empty($this->theme['imageset_id']) ? (int) $this->theme['imageset_id'] : 0, + 'image_lang' => (string) $this->img_lang, + ); + + if (!empty($row['image_lang'])) + { + $localised_images = true; + } + $row['image_filename'] = !empty($row['image_filename']) ? rawurlencode($row['image_filename']) : ''; + $row['image_name'] = !empty($row['image_name']) ? rawurlencode($row['image_name']) : ''; + $this->img_array[$row['image_name']] = $row; + } + } } - $img_lang = ( file_exists($phpbb_root_path . $this->current_template_path . '/images/lang_' . $this->encode_lang($this->lang['default_lang'])) ) ? $this->encode_lang($this->lang['default_lang']) : 'english'; - - /* - * Import phpBB Graphics, prefix with PHPBB_URL, and apply LANG info - */ - while( list($key, $value) = @each($images) ) + // + // - Import phpBB phpBB3 Rhea and Proteus images + // + if (empty($this->img_array)) { - if (is_array($value)) + /** + * Now check for the correct existance of all of the images into + * each image of a prosilver based style. + * / + + /* Here we overwrite phpBB images from the template db or configuration file */ + $rows = $this->image_rows($this->images); + + foreach ($rows as $row) { - foreach( $value as $key2 => $val2 ) + $row['image_filename'] = rawurlencode($row['image_filename']); + + if(empty($row['image_name'])) { - $images[$key][$key2] = str_replace(PORTAL_URL . PHPBB_URL, PHPBB_URL, $val2); + //print_r('Your style configuration file has a typo! '); + //print_r($row); + $row['image_name'] = 'spacer.gif'; } - } - else - { - $images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value); - $images[$key] = str_replace(PORTAL_URL . PHPBB_URL, PHPBB_URL, $images[$key]); - } - } - return $images; + + $this->img_array[$row['image_name']] = $row; + } + } } /** @@ -1776,16 +2732,19 @@ function _load_mxbb_images($module_root_path = '') case 'internal': case 'smf2': case 'mybb': + $template_name2 = 'mxSilver'; @define(TEMPLATE_CONFIG, TRUE); break; - case 'phpbb2': + case 'phpbb2': + $template_name2 = 'subSilver'; break; case 'phpbb3': case 'olympus': case 'ascraeus': - case 'rhea': + case 'rhea': + $template_name2 = 'subsilver2'; /**/ // Here we overwrite phpBB images from the template configuration file with images from database $images['icon_quote'] = $this->images('icon_quote'); @@ -1863,18 +2822,41 @@ function _load_mxbb_images($module_root_path = '') $default_template_path = $default_template_path_d = $module_root_path . $this->default_current_template_path; $template_name = $template_name_d = $this->template_name; $template_config_d = TEMPLATE_CONFIG; - - //@define('MX_TEMPLATE_CONFIG', false); + + /** + /* Try phpBB2 then phpBB3 style + /* mx_user->_load_mxbb_images( ) + /* Icludes here MXP styles configuration file + /* include( 'www\templates\prosilver2\prosilver2.cfg' ) + **/ + unset($GLOBALS['MX_TEMPLATE_CONFIG']); $mx_template_config = false; if (@file_exists($mx_root_path . $module_root_path . $this->current_template_path . '/' . $template_name . '.cfg')) - { + { include($mx_root_path . $module_root_path . $this->current_template_path . '/' . $template_name . '.cfg'); } + if ($module_root_path == 'modules/mx_coreblocks/') + { + // - default module already populated in root core folder + $mx_template_config = true; + } + if (!$mx_template_config) { - include($mx_root_path . $module_root_path . $this->current_template_path . '/' . $moduleCfgFile . '.cfg'); - } + if (@file_exists($mx_root_path . $module_root_path . $this->current_template_path . '/' . $moduleCfgFile . '.cfg')) + { + include($mx_root_path . $module_root_path . $this->current_template_path . '/' . $moduleCfgFile . '.cfg'); + } + } + + if (!$mx_template_config) + { + if (@file_exists($mx_root_path . $module_root_path . $this->current_template_path . '/_core.cfg')) + { + include($mx_root_path . $module_root_path . $this->current_template_path . '/_core.cfg'); + } + } /* * Since we have no current Template Config file, try the cloned template instead @@ -1911,8 +2893,6 @@ function _load_mxbb_images($module_root_path = '') */ if (!$mx_template_config) { - $template_name2 = 'subSilver'; - $current_template_path = $module_root_path . $this->default_current_template_path; $template_name = $this->default_template_name; @@ -1955,41 +2935,244 @@ function _load_mxbb_images($module_root_path = '') $this->template_names[$module_key] = $template_name; //This will keep loaded images - $images = &$mx3_images; + $this->images = $images = &$mx3_images; // We include common temlate config file here to not load it every time a module template config file is included //$this->theme = is_array($this->theme) ? array_merge($this->theme, $theme) : $theme; $this->theme = &$theme; unset($mx_images); } - + /** * Enter description here... * * @access private * @param unknown_type $lang_mode - */ - function _load_module_lang($lang_mode = MX_LANG_MAIN) + */ + function _load_lang($path, $filename, $require = true) { - global $lang, $board_config, $mx_block, $phpEx, $mx_root_path; - $default_lang = ($this->lang['default_lang']) ? $this->decode_lang($this->lang['default_lang']) : $board_config['default_lang']; - if (empty($default_lang)) + $lang = array(); + + $board_config = $this->config; + $php_ext = $this->php_ext; + + // Now only the root for mxp blocks + $user_path = $path . 'language/lang_' . $this->data['user_lang'] . '/' . $filename . '.' . $php_ext; + $board_path = $path . 'language/lang_' . $board_config['default_lang'] . '/' . $filename . '.' . $php_ext; + $default_path = $path . 'language/lang_english/' . $filename . '.' . $php_ext; + + // phpBB + if (($path != 'phpbb2') && ($path != 'phpbb3')) { - // - populate $default_lang - $default_lang= 'english'; - } - if (!isset($this->loaded_langs[$mx_block->module_root_path])) + $phpbb_user_path = $path . 'language/' . $this->data['user_lang'] . '/' . $filename . '.' . $php_ext; + $phpbb_board_path = $path . 'language/' . $board_config['default_lang'] . '/' . $filename . '.' . $php_ext; + $phpbb_default_path = $path . 'language/en/' . $filename . '.' . $php_ext; + } + + // Shared phpBB2 + if ($path = 'phpbb2') { - if ($lang_mode == MX_LANG_MAIN || $lang_mode == MX_LANG_ALL) - { - if (!empty($this->module_lang_path[$mx_block->module_root_path])) - { - $module_lang_path = $this->module_lang_path[$mx_block->module_root_path]; - } + $phpbb2_shared_path = $this->mx_root_path . 'includes/shared/phpbb2/'; + + $phpbb_user_path = $phpbb2_shared_path . 'language/lang_' . $this->data['user_lang'] . '/' . $filename . '.' . $php_ext; + $phpbb_board_path = $phpbb2_shared_path . 'language/lang_' . $board_config['default_lang'] . '/' . $filename . '.' . $php_ext; + $phpbb_default_path = $phpbb2_shared_path . 'language/lang_english/' . $filename . '.' . $php_ext; + } + + // Shared phpBB3 + if ($path = 'phpbb3') + { + $phpbb3_shared_path = $this->mx_root_path . 'includes/shared/phpbb3/'; + + $phpbb_user_path = $phpbb3_shared_path . 'language/lang_' . $this->data['user_lang'] . '/' . $filename . '.' . $php_ext; + $phpbb_board_path = $phpbb3_shared_path . 'language/lang_' . $board_config['default_lang'] . '/' . $filename . '.' . $php_ext; + $phpbb_default_path = $phpbb3_shared_path . 'language/lang_english/' . $filename . '.' . $php_ext; + } + + if (file_exists($user_path)) + { + include_once($user_path); + } + else if ($require) + { + if (file_exists($board_path)) + { + include_once($board_path); + } + else if (file_exists($default_path)) + { + include_once($default_path); + } + } + else if (is_file($phpbb_user_path)) + { + include_once($phpbb_user_path); + } + if ((@include $phpbb_user_path) === false) + { + if ($require) + { + if ((@include $phpbb_board_path) === false) + { + if ((@include $phpbb_default_path) === false) + { + continue; + } + } + } + } + + if (count($lang) == 0) + { + // If the language entry is an empty array, we just return the language key $this->lang = $this->lang; + // The language file is not exist throw new language_file_not_found( + print_r('Language file ' . $path . '|' . $filename . '.' . $php_ext . '|' . ($require ? $phpbb_user_path : $phpbb_board_path) . ' couldn\'t be opened.'); + } + else + { + // If the language entry is not an empty array, we merge the language keys + $this->lang = array_merge($this->lang, $lang); + } + } + + /** + * Loads common language files + */ + protected function load_common_language_files() + { + if (!$this->common_language_files_loaded) + { + /* + * Load MXP lang keys + * Load vanilla phpBB2 lang files for old modules if is possible + */ + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + case 'mybb': + + //Load shared phpBB2 language files for old modules + $shared_lang_path = $this->mx_root_path . 'includes/shared/phpbb2/language/'; + + // AdminCP + if (defined('IN_ADMIN')) + { + // Shared phpBB2 AdminCP keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_admin'); + // Core MXP AdminCP + $this->_load_lang($this->mx_root_path, 'lang_admin'); + //Load Shared phpBB3 common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'acp/common'); + } + // Shared phpBB keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_main'); + // Core Main Translation after shared phpBB keys so we can overwrite some settings + $this->_load_lang($this->mx_root_path, 'lang_main'); + //Load Shared phpBB3 common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'common'); + break; + + case 'phpbb2': + + //Load vanilla phpBB2 language files for old modules if is possible + $shared_lang_path = $this->mx_root_path . 'includes/shared/phpbb2/language/'; + + // AdminCP + if (defined('IN_ADMIN')) + { + // Load vanilla phpBB2 AdminCP keys + $this->_load_lang($this->phpbb_root_path, 'lang_admin'); + // Core MXP AdminCP + $this->_load_lang($this->mx_root_path, 'lang_admin'); + //Load Shared phpBB3 AdminCP common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'acp/common'); + } + // Load vanilla phpBB2 keys + $this->_load_lang($this->phpbb_root_path, 'lang_main'); + // Core Main Translation after shared phpBB keys so we can overwrite some settings + $this->_load_lang($this->mx_root_path, 'lang_main'); + //Load Shared phpBB3 common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'common'); + break; + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + case 'proteus': + + //Load vanilla phpBB3 common language files for new modules if is possible + $shared_lang_path = $this->mx_root_path . 'includes/shared/phpbb2/language/'; + + // AdminCP + if (defined('IN_ADMIN')) + { + // Shared phpBB2 AdminCP keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_admin'); + // Core MXP AdminCP + $this->_load_lang($this->mx_root_path, 'lang_admin'); + //Load vanilla phpBB3 AdminCP common language file + $this->_load_lang($this->phpbb_root_path, 'acp/common'); + } + // Shared phpBB keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_main'); + // Core Main Translation after shared phpBB keys so we can overwrite some settings + $this->_load_lang($this->mx_root_path, 'lang_main'); + //Load vanilla phpBB3 common language file + $this->_load_lang($this->phpbb_root_path, 'common'); + break; + } + + // + // backend specific common language defs loaded. + // + $this->common_language_files_loaded = true; + } + } + + /** + * Enter description here... + * + * @access private + * @param unknown_type $lang_mode + */ + function _load_module_lang($lang_mode = MX_LANG_MAIN) + { + global $lang, $board_config, $mx_block, $phpEx, $mx_root_path; + + $default_lang = ($this->lang['default_lang']) ? $this->decode_lang($this->lang['default_lang']) : $board_config['default_lang']; + + if ($mx_block->module_root_path == 'modules/mx_coreblocks/') + { + // - default module already populated in root core language pack + $this->loaded_langs[$mx_block->module_root_path] = '1'; + } + + if (empty($mx_block->module_root_path)) + { + global $module_root_path; + $mx_block->module_root_path = $module_root_path; + } + + if (empty($default_lang)) + { + // - populate $default_lang + $default_lang = 'english'; + } + + if (!isset($this->loaded_langs[$mx_block->module_root_path])) + { + if ($lang_mode == MX_LANG_MAIN || $lang_mode == MX_LANG_ALL) + { + if (!empty($this->module_lang_path[$mx_block->module_root_path])) + { + $module_lang_path = $this->module_lang_path[$mx_block->module_root_path]; + } else { $module_lang_path = $mx_root_path . $mx_block->module_root_path; } + // ------------------------------------------------------------------------- // Read Module Main Language Definition // ------------------------------------------------------------------------- @@ -2011,7 +3194,7 @@ function _load_module_lang($lang_mode = MX_LANG_MAIN) { if ((@include $module_lang_path . "language/lang_english/lang_admin.$phpEx") === false) { - mx_message_die(CRITICAL_ERROR, 'Modiule admin language file ' . $mx_root_path . $module_lang_path . "language/lang_" . $default_lang . "/lang_admin.$phpEx" . ' couldn\'t be opened.'); + mx_message_die(CRITICAL_ERROR, 'Module admin language file ' . $mx_root_path . $module_lang_path . "language/lang_" . $default_lang . "/lang_admin.$phpEx" . ' couldn\'t be opened.'); } } } @@ -2026,14 +3209,14 @@ function _load_module_lang($lang_mode = MX_LANG_MAIN) function _load_module_style() { global $mx_block, $phpEx; - + if (!isset($this->loaded_styles[$mx_block->module_root_path])) { // ------------------------------------------------------------------------- // Read Module Style Definition // ------------------------------------------------------------------------- $this->_load_mxbb_images($mx_block->module_root_path); - + $this->loaded_styles[$mx_block->module_root_path] = '1'; $this->loaded_default_styles[$mx_block->module_root_path] = $this->default_module_style; } @@ -2052,35 +3235,47 @@ function optionget($key, $data = false) return $this->keyvalues[$key]; } - - // ------------------------------ - // Public Methods - // - + /** - * Init user class. - * Populate $userdata, $lang - * - * @access public - * @param unknown_type $user_ip - * @param unknown_type $page_id + * Load available languages list + * author: Jan Kalah aka culprit_cz + * @return array available languages list: KEY = folder name */ - function init($user_ip, $page_id, $init_style = true) + function get_lang_list($ext_root_path = '') { - // Define basic constants - $this->page_id = $page_id; - $this->user_ip = $user_ip; - - // Inititate User data - $this->_init_session($user_ip, $this->page_id); - $this->_init_userprefs(); - - // Inititate User style - if ($init_style) + if (count($this->language_list)) { - $this->_init_style(); + return $this->language_list; + } + /* c:\Wamp\www\Rhea\language\ */ + $dir = opendir($this->mx_root_path . 'language/'); + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($this->mx_root_path . 'language/' . $f)) + { + continue; + } + $this->language_list[$f] = $this->ucstrreplace('lang_', '', $f); } + closedir($dir); + if (is_dir($this->phpbb_root_path . 'language/')) + { + $dir = opendir($this->phpbb_root_path . 'language/'); + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($this->phpbb_root_path . 'language/' . $f)) + { + continue; + } + $this->phpbb_language_list[$f] = $this->ucstrreplace('lang_', '', $f); + } + closedir($dir); + return $this->language_list = array_merge($this->phpbb_language_list, $this->language_list); + } + return $this->language_list; } + + /** * Init user style. @@ -2121,7 +3316,8 @@ function init_style() case 'phpbb3': case 'olympus': case 'ascraeus': - case 'rhea': + case 'rhea': + case 'proteus': $this->_load_phpbb_images(); break; } @@ -2150,24 +3346,26 @@ function init_style() * @param unknown_type $lang_mode * @param unknown_type $image_mode */ - function extend($lang_mode = MX_LANG_MAIN, $image_mode = MX_IMAGES) + function extend($lang_mode = MX_LANG_MAIN, $image_mode = MX_IMAGES, $module_root_path = '') { - global $mx_block; - - if (defined('IN_ADMIN')) - { - return; - } - + global $mx_root_path, $mx_block; + + + if (defined('IN_ADMIN') && !empty($module_root_path) && (empty($mx_block->module_root_path) || ($mx_block->module_root_path == 'modules/mx_coreblocks/'))) + { + + $mx_block->module_root_path = $module_root_path; + } + if (!empty($this->loaded_default_styles[$mx_block->module_root_path])) { $this->default_module_style = $this->loaded_default_styles[$mx_block->module_root_path]; $this->default_template_name = $this->default_module_style; $this->default_current_template_path = 'templates/' . $this->default_template_name; - } - + } + if ($lang_mode != MX_LANG_NONE) - { + { $this->_load_module_lang($lang_mode); } @@ -2181,9 +3379,21 @@ function extend($lang_mode = MX_LANG_MAIN, $image_mode = MX_IMAGES) // if (!empty($this->default_module_style)) { - $this->default_template_name = '_core'; - $this->default_current_template_path = 'templates/' . $this->default_template_name; - $this->default_module_style = ''; + if(@is_dir($mx_root_path . 'templates/' . '_core' . '/') ) + { + $this->default_template_name = '_core'; + $this->default_current_template_path = 'templates/' . $this->default_template_name; + } + elseif(@is_dir($mx_root_path . 'styles/' . 'all' . '/') ) + { + $this->default_template_name = 'all'; + $this->default_current_template_path = 'styles/' . $this->default_template_name; + } + elseif(@is_dir($mx_root_path . 'templates/' . 'all' . '/') ) + { + $this->default_template_name = 'all'; + $this->default_current_template_path = 'templates/' . $this->default_template_name; + } } } @@ -2191,7 +3401,7 @@ function set_module_default_style($default_module_style = '') { global $mx_block; - $this->loaded_default_styles[$mx_block->module_root_path] = $default_module_style; + $this->loaded_default_styles[$mx_block->module_root_path] = $default_module_style; } function set_module_lang_path($module_lang_path = '') @@ -2200,6 +3410,84 @@ function set_module_lang_path($module_lang_path = '') $this->module_lang_path[$mx_block->module_root_path] = $module_lang_path; } + + /** + * Loads all extension information from the database + * + * @return null + */ + public function load_extensions() + { + $this->extensions = array(); + + // Do not try to load any extensions if the extension table + // does not exist or when installing or updating. + // Note: database updater invokes this code, and in 3.0 + // there is no extension table therefore the rest of this function + // fails + if (defined('IN_INSTALL') || version_compare($this->config['version'], '3.1.0-dev', '<')) + { + return; + } + + $sql = 'SELECT * + FROM ' . $this->extension_table; + + $result = $this->db->sql_query($sql); + $extensions = $this->db->sql_fetchrowset($result); + $this->db->sql_freeresult($result); + + foreach ($extensions as $extension) + { + $extension['ext_path'] = $this->get_extension_path($extension['ext_name']); + $this->extensions[$extension['ext_name']] = $extension; + } + + ksort($this->extensions); + + if ($this->cache) + { + $this->cache->put($this->cache_name, $this->extensions); + } + } + + /** + * Generates the path to an extension + * + * @param string $name The name of the extension + * @param bool $phpbb_relative Whether the path should be relative to phpbb root + * @return string Path to an extension + */ + public function get_extension_path($name, $phpbb_relative = false) + { + $name = str_replace('.', '', $name); + + return (($phpbb_relative) ? $this->phpbb_root_path : '') . 'ext/' . $name . '/'; + } + + /** + * Instantiates the extension meta class for the extension with the given name + * + * @param string $name The extension name + * @return \phpbb\extension\extension_interface Instance of the extension meta class or + * \phpbb\extension\base if the class does not exist + */ + public function get_extension($name) + { + $extension_class_name = str_replace('/', '\\', $name) . '\\ext'; + + //Not implemented yet + $migrator = new mx_nothing(); + + if (class_exists($extension_class_name)) + { + return new $extension_class_name($this->cache, $this->get_finder(), $migrator, $name, $this->get_extension_path($name, true)); + } + else + { + return new \phpbb\extension\base($this->container, $this->get_finder(), $migrator, $name, $this->get_extension_path($name, true)); + } + } /** * Create buttons. @@ -2224,19 +3512,19 @@ function create_button($key, $label, $url) { case MX_BUTTON_TEXT: return '' . $label . ''; - break; + break; case MX_BUTTON_IMAGE: return '' . $label . ''; - break; + break; case MX_BUTTON_GENERIC: return '' . $label . ''; - break; + break; default: return '' . $label . ''; - break; + break; } } @@ -2263,21 +3551,2192 @@ function create_icon($key, $label, $url) { case MX_BUTTON_TEXT: return '' . $label . ''; - break; + break; case MX_BUTTON_IMAGE: return '' . $label . ''; - break; + break; case MX_BUTTON_GENERIC: return '' . $label . ''; - break; + break; default: return '' . $label . ''; - break; + break; } } +} // class mx_user +/** + * Language file loader + */ +class mx_language_file_loader +{ + /** + * @var string Path to MXP root + */ + protected $mx_root_path; + /** + * @var string Path to phpBB's root + */ + protected $phpbb_root_path; + /** + * @var string Path to Module root + */ + protected $module_root_path; + /** + * @var string Extension of PHP files + */ + protected $php_ext; + + /** + * @var \phpbb\extension\manager Extension manager + */ + protected $extension_manager; + + /** + * Constructor + * + * @param string $phpbb_root_path Path to phpBB's root + * @param string $php_ext Extension of PHP files + */ + public function __construct() + { + global $mx_root_path, $phpbb_root_path, $module_root_path; + + $this->mx_root_path = $mx_root_path; + $this->phpbb_root_path = $phpbb_root_path; + $this->module_root_path = $module_root_path; + $this->php_ext = substr(strrchr(__FILE__, '.'), 1); + + $this->extension_manager = null; + } + + /** + * Extension manager setter + * + * @param \phpbb\extension\manager $extension_manager Extension manager + */ + public function set_extension_manager() + { + $extension_manager = new mx_user(); + $this->extension_manager = $extension_manager; + } + + /** + * Loads language array for the given component + * + * @param string $component Name of the language component + * @param string|array $locale ISO code of the language to load, or array of ISO codes if you want to + * specify additional language fallback steps + * @param array $lang Array reference containing language strings + */ + public function load($component, $locale, &$lang) + { + $locale = (array) $locale; + + // Determine path to language directory + $path = $this->phpbb_root_path . 'language/'; + + $this->load_file($path, $component, $locale, $lang); + } + /** + * Load core language file + * + * @param string $component Name of the component to load + */ + protected function load_core_file($component) + { + // Check if the component is already loaded + if (isset($this->loaded_language_sets['PHPBB'][$component])) + { + return; + } -} // class mx_user + $this->loader->load($component, $this->language_fallback, $this->lang); + $this->loaded_language_sets['PHPBB'][$component] = true; + } + /** + * Loads language array for the given extension component + * + * @param string $extension Name of the extension + * @param string $component Name of the language component + * @param string|array $locale ISO code of the language to load, or array of ISO codes if you want to + * specify additional language fallback steps + * @param array $lang Array reference containing language strings + */ + public function load_extension($extension, $component, $locale = '', &$lang = '') + { + // Check if extension manager was loaded + if ($this->extension_manager === null) + { + // If not, let's return + return; + } + $locale = !empty($locale) ? (array) $locale : $this->language_fallback; + + $lang = !empty($lang) ? $lang : $this->lang; + + // Determine path to language directory + $path = $this->extension_manager->get_extension_path($extension, true) . 'language/'; + + $this->load_file($path, $component, $locale, $lang); + } + + /** + * Prepares language file loading + * + * @param string $path Path to search for file in + * @param string $component Name of the language component + * @param array $locale Array containing language fallback options + * @param array $lang Array reference of language strings + */ + protected function load_file($path, $component, $locale, &$lang) + { + // This is BC stuff and not the best idea as it makes language fallback + // implementation quite hard like below. + if (strpos($this->phpbb_root_path . $component, $path) === 0) + { + // Filter out the path + $path_diff = str_replace($path, '', dirname($this->phpbb_root_path . $component)); + $language_file = basename($component, '.' . $this->php_ext); + $component = ''; + + // This step is needed to resolve language/en/subdir style $component + // $path already points to the language base directory so we need to eliminate + // the first directory from the path (that should be the language directory) + $path_diff_parts = explode('/', $path_diff); + + if (count($path_diff_parts) > 1) + { + array_shift($path_diff_parts); + $component = implode('/', $path_diff_parts) . '/'; + } + + $component .= $language_file; + } + + // Determine filename + $filename = $component . '.' . $this->php_ext; + + // Determine path to file + $file_path = $this->get_language_file_path($path, $filename, $locale); + + // Load language array + $this->load_language_file($file_path, $lang); + } + + /** + * This function implements language fallback logic + * + * @param string $path Path to language directory + * @param string $filename Filename to load language strings from + * + * @return string Relative path to language file + * + * @throws language_file_not_found When the path to the file cannot be resolved + */ + protected function get_language_file_path($path, $filename, $locales) + { + $language_file_path = $filename; + + // Language fallback logic + foreach ($locales as $locale) + { + $language_file_path = $path . $locale . '/' . $filename; + + // If we are in install, try to use the updated version, when available + if (defined('IN_INSTALL')) + { + $install_language_path = str_replace('language/', 'install/update/new/language/', $language_file_path); + if (file_exists($install_language_path)) + { + return $install_language_path; + } + } + + if (file_exists($language_file_path)) + { + return $language_file_path; + } + } + + // The language file is not exist throw new language_file_not_found( + print_r('Language file ' . $language_file_path . ' couldn\'t be opened.'); + } + + /** + * Loads language file + * + * @param string $path Path to language file to load + * @param array $lang Reference of the array of language strings + */ + protected function load_language_file($path, &$lang) + { + // Do not suppress error if in DEBUG mode + if (defined('DEBUG')) + { + include $path; + } + else + { + @include $path; + } + } +} +/** + * + */ +interface IException +{ + /* Protected methods inherited from Exception class */ + public function getMessage(); // Exception message + public function getCode(); // User-defined Exception code + public function getFile(); // Source filename + public function getLine(); // Source line + public function getTrace(); // An array of the backtrace() + public function getTraceAsString(); // Formated string of trace + + /* Overrideable methods inherited from Exception class */ + public function __toString(); // formated string for display + public function __construct($message = null, $code = 0); +} +/** + * Class runtime_exception + * + * Define an exception which support a language var as message. + */ +abstract class runtime_exception extends Exception implements IException +{ + /** + * Parameters to use with the language var. + * + * @var array + */ + protected $message = 'Unknown exception'; // Exception message + private $string; // Unknown + protected $code = 0; // User-defined exception code + protected $file; // Source filename of exception + protected $line; // Source line of exception + private $trace; // Unknown + + /** + * Constructor + * + * @param string $message The Exception message to throw (must be a language variable). + * @param integer $code The Exception code. + */ + public function __construct($message = "", $code = 0) + { + if (!empty($message)) + { + //throw new $this('Unknown '. get_class($this)); + print_r($message); + } + //parent::__construct($message, $code); + } + /** + * {@inheritdoc} + */ + public function __toString() + { + return get_class($this) . " '{$this->message}' in {$this->file}({$this->line})\n" . "{$this->getTraceAsString()}"; + } + /** + */ +} +/** + * + */ +/** + * Wrapper class for loading translations + */ +class mx_language extends mx_language_file_loader +{ + /** + * Global fallback language + * + * ISO code of the language to fallback to when the specified language entries + * cannot be found. + * + * @var string + */ + const FALLBACK_LANGUAGE = 'en'; + + /** + * @var array List of common language files + */ + protected $common_language_files; + + /** + * @var bool + */ + protected $common_language_files_loaded; + + /** + * @var string ISO code of the default board language + */ + protected $default_language; + + /** + * @var string ISO code of the User's language + */ + protected $user_language; + + /** + * @var array Language fallback array (the order is important) + */ + protected $language_fallback; + + /** + * @var array Array of language variables + */ + protected $lang; + + /** + * @var array Loaded language sets + */ + protected $loaded_language_sets; + + /** + * @var \phpbb\language\language_file_loader Language file loader + */ + protected $loader; + + /** + * Constructor + * + * @param \phpbb\language\language_file_loader $loader Language file loader + * @param array|null $common_modules Array of common language modules to load (optional) + */ + public function __construct($common_modules = null) + { + $this->loader = $this; + + global $board_config, $mx_user; + global $mx_root_path, $phpbb_root_path, $module_root_path; + + $this->mx_root_path = $mx_root_path; + $this->phpbb_root_path = $phpbb_root_path; + $this->module_root_path = $module_root_path; + + $this->user = $mx_user; + $this->config = $board_config; + $this->backend = PORTAL_BACKEND; + $this->php_ext = substr(strrchr(__FILE__, '.'), 1); + // Set up default information + $this->user_language = false; + $this->default_language = false; + $this->lang = array(); + $this->loaded_language_sets = array( + 'MXP' => array(), //mxp_core + 'MODS' => array(), //mxp_modules + 'PHPBB' => array(), //phpbb_core + 'phpbb_ext' => array(), //phpbb_ext + ); + // Common language files + if (is_array($common_modules)) + { + $this->common_language_files = $common_modules; + } + else + { + $this->common_language_files = array( + 'common', + ); + } + $this->common_language_files_loaded = false; + $this->language_fallback = array(self::FALLBACK_LANGUAGE); + } + /** + * encode_lang + * + * $default_lang = $language->encode_lang($config['default_lang']); + * + * @param unknown_type $lang + * @return unknown + */ + function encode_lang($lang) + { + if ($this->backend == 'phpbb2') + { + return $lang; + } + else + { + $lang = str_replace('lang_', '', $lang); + } + + switch($lang) + { + case 'afar': + $lang_name = 'aa'; + break; + case 'abkhazian': + $lang_name = 'ab'; + break; + case 'avestan': + $lang_name = 'ae'; + break; + case 'afrikaans': + $lang_name = 'af'; + break; + case 'akan': + $lang_name = 'ak'; + break; + case 'amharic': + $lang_name = 'am'; + break; + case 'aragonese': + $lang_name = 'an'; + break; + case 'arabic': + $lang_name = 'ar'; + break; + case 'assamese': + $lang_name = 'as'; + break; + case 'avaric': + $lang_name = 'av'; + break; + case 'aymara': + $lang_name = 'ay'; + break; + case 'azerbaijani': + $lang_name = 'az'; + break; + case 'bashkir': + $lang_name = 'ba'; + break; + case 'belarusian': + $lang_name = 'be'; + break; + case 'bulgarian': + $lang_name = 'bg'; + break; + case 'bihari': + $lang_name = 'bh'; + break; + case 'bislama': + $lang_name = 'bi'; + break; + case 'bambara': + $lang_name = 'bm'; + break; + case 'bengali': + $lang_name = 'bn'; + break; + case 'tibetan': + $lang_name = 'bo'; + break; + case 'breton': + $lang_name = 'br'; + break; + case 'bosnian': + $lang_name = 'bs'; + break; + case 'catalan': + $lang_name = 'ca'; + break; + case 'chechen': + $lang_name = 'ce'; + break; + case 'chamorro': + $lang_name = 'ch'; + break; + case 'corsican': + $lang_name = 'co'; + break; + case 'cree': + $lang_name = 'cr'; + break; + case 'czech': + $lang_name = 'cs'; + break; + case 'slavonic': + $lang_name = 'cu'; + break; + case 'chuvash': + $lang_name = 'cv'; + break; + case 'welsh_cymraeg': + $lang_name = 'cy'; + break; + case 'danish': + $lang_name = 'da'; + break; + case 'german': + $lang_name = 'de'; + break; + case 'divehi': + $lang_name = 'dv'; + break; + case 'dzongkha': + $lang_name = 'dz'; + break; + case 'ewe': + $lang_name = 'ee'; + break; + case 'greek': + $lang_name = 'el'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'english': + $lang_name = 'en'; + break; + case 'english_us': + $lang_name = 'en_us'; + break; + case 'esperanto': + $lang_name = 'eo'; + break; + case 'spanish': + $lang_name = 'es'; + break; + case 'estonian': + $lang_name = 'et'; + break; + case 'basque': + $lang_name = 'eu'; + break; + case 'persian': + $lang_name = 'fa'; + break; + case 'fulah': + $lang_name = 'ff'; + break; + case 'finnish': + $lang_name = 'fi'; + break; + case 'fijian': + $lang_name = 'fj'; + break; + case 'faroese': + $lang_name = 'fo'; + break; + case 'french': + $lang_name = 'fr'; + break; + case 'frisian': + $lang_name = 'fy'; + break; + case 'irish': + $lang_name = 'ga'; + break; + case 'scottish': + $lang_name = 'gd'; + break; + case 'galician': + $lang_name = 'gl'; + break; + case 'guaraní': + $lang_name = 'gn'; + break; + case 'gujarati': + $lang_name = 'gu'; + break; + case 'manx': + $lang_name = 'gv'; + break; + case 'hausa': + $lang_name = 'ha'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'hindi': + $lang_name = 'hi'; + break; + case 'hiri_motu': + $lang_name = 'ho'; + break; + case 'croatian': + $lang_name = 'hr'; + break; + case 'haitian': + $lang_name = 'ht'; + break; + case 'hungarian': + $lang_name = 'hu'; + break; + case 'armenian': + $lang_name = 'hy'; + break; + case 'herero': + $lang_name = 'hz'; + break; + case 'interlingua': + $lang_name = 'ia'; + break; + case 'indonesian': + $lang_name = 'id'; + break; + case 'interlingue': + $lang_name = 'ie'; + break; + case 'igbo': + $lang_name = 'ig'; + break; + case 'sichuan_yi': + $lang_name = 'ii'; + break; + case 'inupiaq': + $lang_name = 'ik'; + break; + case 'ido': + $lang_name = 'io'; + break; + case 'icelandic': + $lang_name = 'is'; + break; + case 'italian': + $lang_name = 'it'; + break; + case 'inuktitut': + $lang_name = 'iu'; + break; + case 'japanese': + $lang_name = 'ja'; + break; + case 'javanese': + $lang_name = 'jv'; + break; + case 'georgian': + $lang_name = 'ka'; + break; + case 'kongo': + $lang_name = 'kg'; + break; + case 'kikuyu': + $lang_name = 'ki'; + break; + case 'kwanyama': + $lang_name = 'kj'; + break; + case 'kazakh': + $lang_name = 'kk'; + break; + case 'kalaallisut': + $lang_name = 'kl'; + break; + case 'khmer': + $lang_name = 'km'; + break; + case 'kannada': + $lang_name = 'kn'; + break; + case 'korean': + $lang_name = 'ko'; + break; + case 'kanuri': + $lang_name = 'kr'; + break; + case 'kashmiri': + $lang_name = 'ks'; + break; + case 'kurdish': + $lang_name = 'ku'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'cornish_kernewek': + $lang_name = 'kw'; + break; + case 'kirghiz': + $lang_name = 'ky'; + break; + case 'latin': + $lang_name = 'la'; + break; + case 'luxembourgish': + $lang_name = 'lb'; + break; + case 'ganda': + $lang_name = 'lg'; + break; + case 'limburgish': + $lang_name = 'li'; + break; + case 'lingala': + $lang_name = 'ln'; + break; + case 'lao': + $lang_name = 'lo'; + break; + case 'lithuanian': + $lang_name = 'lt'; + break; + case 'luba-katanga': + $lang_name = 'lu'; + break; + case 'latvian': + $lang_name = 'lv'; + break; + case 'malagasy': + $lang_name = 'mg'; + break; + case 'marshallese': + $lang_name = 'mh'; + break; + case 'maori': + $lang_name = 'mi'; + break; + case 'macedonian': + $lang_name = 'mk'; + break; + case 'malayalam': + $lang_name = 'ml'; + break; + case 'mongolian': + $lang_name = 'mn'; + break; + case 'moldavian': + $lang_name = 'mo'; + break; + case 'marathi': + $lang_name = 'mr'; + break; + case 'malay': + $lang_name = 'ms'; + break; + case 'maltese': + $lang_name = 'mt'; + break; + case 'burmese': + $lang_name = 'my'; + break; + case 'nauruan': + $lang_name = 'na'; + break; + case 'norwegian': + $lang_name = 'nb'; + break; + case 'ndebele': + $lang_name = 'nd'; + break; + case 'nepali': + $lang_name = 'ne'; + break; + case 'ndonga': + $lang_name = 'ng'; + break; + case 'dutch': + $lang_name = 'nl'; + break; + case 'norwegian_nynorsk': + $lang_name = 'nn'; + break; + case 'norwegian': + $lang_name = 'no'; + break; + case 'southern_ndebele': + $lang_name = 'nr'; + break; + case 'navajo': + $lang_name = 'nv'; + break; + case 'chichewa': + $lang_name = 'ny'; + break; + case 'occitan': + $lang_name = 'oc'; + break; + case 'ojibwa': + $lang_name = 'oj'; + break; + case 'oromo': + $lang_name = 'om'; + break; + case 'oriya': + $lang_name = 'or'; + break; + case 'ossetian': + $lang_name = 'os'; + break; + case 'panjabi': + $lang_name = 'pa'; + break; + case 'pali': + $lang_name = 'pi'; + break; + case 'polish': + $lang_name = 'pl'; + break; + case 'pashto': + $lang_name = 'ps'; + break; + case 'portuguese': + $lang_name = 'pt'; + break; + case 'portuguese_brasil': + $lang_name = 'pt_br'; + break; + case 'quechua': + $lang_name = 'qu'; + break; + case 'romansh': + $lang_name = 'rm'; + break; + case 'kirundi': + $lang_name = 'rn'; + break; + case 'romanian': + $lang_name = 'ro'; + break; + case 'russian': + $lang_name = 'ru'; + break; + case 'kinyarwanda': + $lang_name = 'rw'; + break; + case 'sanskrit': + $lang_name = 'sa'; + break; + case 'sardinian': + $lang_name = 'sc'; + break; + case 'sindhi': + $lang_name = 'sd'; + break; + case 'northern_sami': + $lang_name = 'se'; + break; + case 'sango': + $lang_name = 'sg'; + break; + case 'serbo-croatian': + $lang_name = 'sh'; + break; + case 'sinhala': + $lang_name = 'si'; + break; + case 'slovak': + $lang_name = 'sk'; + break; + case 'slovenian': + $lang_name = 'sl'; + break; + case 'samoan': + $lang_name = 'sm'; + break; + case 'shona': + $lang_name = 'sn'; + break; + case 'somali': + $lang_name = 'so'; + break; + case 'albanian': + $lang_name = 'sq'; + break; + case 'serbian': + $lang_name = 'sr'; + break; + case 'swati': + $lang_name = 'ss'; + break; + case 'sotho': + $lang_name = 'st'; + break; + case 'sundanese': + $lang_name = 'su'; + break; + case 'swedish': + $lang_name = 'sv'; + break; + case 'swahili': + $lang_name = 'sw'; + break; + case 'tamil': + $lang_name = 'ta'; + break; + case 'telugu': + $lang_name = 'te'; + break; + case 'tajik': + $lang_name = 'tg'; + break; + case 'thai': + $lang_name = 'th'; + break; + case 'tigrinya': + $lang_name = 'ti'; + break; + case 'turkmen': + $lang_name = 'tk'; + break; + case 'tagalog': + $lang_name = 'tl'; + break; + case 'tswana': + $lang_name = 'tn'; + break; + case 'tonga': + $lang_name = 'to'; + break; + case 'turkish': + $lang_name = 'tr'; + break; + case 'tsonga': + $lang_name = 'ts'; + break; + case 'tatar': + $lang_name = 'tt'; + break; + case 'twi': + $lang_name = 'tw'; + break; + case 'tahitian': + $lang_name = 'ty'; + break; + case 'uighur': + $lang_name = 'ug'; + break; + case 'ukrainian': + $lang_name = 'uk'; + break; + case 'urdu': + $lang_name = 'ur'; + break; + case 'uzbek': + $lang_name = 'uz'; + break; + case 'venda': + $lang_name = 've'; + break; + case 'vietnamese': + $lang_name = 'vi'; + break; + case 'volapuk': + $lang_name = 'vo'; + break; + case 'walloon': + $lang_name = 'wa'; + break; + case 'wolof': + $lang_name = 'wo'; + break; + case 'xhosa': + $lang_name = 'xh'; + break; + case 'yiddish': + $lang_name = 'yi'; + break; + case 'yoruba': + $lang_name = 'yo'; + break; + case 'zhuang': + $lang_name = 'za'; + break; + case 'chinese': + $lang_name = 'zh'; + break; + case 'chinese_simplified': + $lang_name = 'zh_cmn_hans'; + break; + case 'chinese_traditional': + $lang_name = 'zh_cmn_hant'; + break; + case 'zulu': + $lang_name = 'zu'; + break; + default: + $lang_name = (strlen($lang) > 2) ? substr($lang, 0, 2) : $lang; + break; + } + return $lang_name; + } + + function ucstrreplace($pattern = '%{$regex}%i', $matches = '', $string) + { + /* return with no uppercase if patern not in string */ + if (strpos($string, $pattern) === false) + { + /* known languages */ + switch($string) + { + case 'aa': + $lang_name = 'afar'; + break; + case 'ab': + $lang_name = 'abkhazian'; + break; + case 'ae': + $lang_name = 'avestan'; + break; + case 'af': + $lang_name = 'afrikaans'; + break; + case 'ak': + $lang_name = 'akan'; + break; + case 'am': + $lang_name = 'amharic'; + break; + case 'an': + $lang_name = 'aragonese'; + break; + case 'ar': + $lang_name = 'arabic'; + break; + case 'as': + $lang_name = 'assamese'; + break; + case 'av': + $lang_name = 'avaric'; + break; + case 'ay': + $lang_name = 'aymara'; + break; + case 'az': + $lang_name = 'azerbaijani'; + break; + case 'ba': + $lang_name = 'bashkir'; + break; + case 'be': + $lang_name = 'belarusian'; + break; + case 'bg': + $lang_name = 'bulgarian'; + break; + case 'bh': + $lang_name = 'bihari'; + break; + case 'bi': + $lang_name = 'bislama'; + break; + case 'bm': + $lang_name = 'bambara'; + break; + case 'bn': + $lang_name = 'bengali'; + break; + case 'bo': + $lang_name = 'tibetan'; + break; + case 'br': + $lang_name = 'breton'; + break; + case 'bs': + $lang_name = 'bosnian'; + break; + case 'ca': + $lang_name = 'catalan'; + break; + case 'ce': + $lang_name = 'chechen'; + break; + case 'ch': + $lang_name = 'chamorro'; + break; + case 'co': + $lang_name = 'corsican'; + break; + case 'cr': + $lang_name = 'cree'; + break; + case 'cs': + $lang_name = 'czech'; + break; + case 'cu': + $lang_name = 'slavonic'; + break; + case 'cv': + $lang_name = 'chuvash'; + break; + case 'cy': + $lang_name = 'welsh_cymraeg'; + break; + case 'da': + $lang_name = 'danish'; + break; + case 'de': + $lang_name = 'german'; + break; + case 'dv': + $lang_name = 'divehi'; + break; + case 'dz': + $lang_name = 'dzongkha'; + break; + case 'ee': + $lang_name = 'ewe'; + break; + case 'el': + $lang_name = 'greek'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'en': + $lang_name = 'english'; + break; + case 'en_us': + $lang_name = 'english'; + break; + case 'eo': + $lang_name = 'esperanto'; + break; + case 'es': + $lang_name = 'spanish'; + break; + case 'et': + $lang_name = 'estonian'; + break; + case 'eu': + $lang_name = 'basque'; + break; + case 'fa': + $lang_name = 'persian'; + break; + case 'ff': + $lang_name = 'fulah'; + break; + case 'fi': + $lang_name = 'finnish'; + break; + case 'fj': + $lang_name = 'fijian'; + break; + case 'fo': + $lang_name = 'faroese'; + break; + case 'fr': + $lang_name = 'french'; + break; + case 'fy': + $lang_name = 'frisian'; + break; + case 'ga': + $lang_name = 'irish'; + break; + case 'gd': + $lang_name = 'scottish'; + break; + case 'gl': + $lang_name = 'galician'; + break; + case 'gn': + $lang_name = 'guaraní'; + break; + case 'gu': + $lang_name = 'gujarati'; + break; + case 'gv': + $lang_name = 'manx'; + break; + case 'ha': + $lang_name = 'hausa'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'hi': + $lang_name = 'hindi'; + break; + case 'ho': + $lang_name = 'hiri_motu'; + break; + case 'hr': + $lang_name = 'croatian'; + break; + case 'ht': + $lang_name = 'haitian'; + break; + case 'hu': + $lang_name = 'hungarian'; + break; + case 'hy': + $lang_name = 'armenian'; + break; + case 'hz': + $lang_name = 'herero'; + break; + case 'ia': + $lang_name = 'interlingua'; + break; + case 'id': + $lang_name = 'indonesian'; + break; + case 'ie': + $lang_name = 'interlingue'; + break; + case 'ig': + $lang_name = 'igbo'; + break; + case 'ii': + $lang_name = 'sichuan_yi'; + break; + case 'ik': + $lang_name = 'inupiaq'; + break; + case 'io': + $lang_name = 'ido'; + break; + case 'is': + $lang_name = 'icelandic'; + break; + case 'it': + $lang_name = 'italian'; + break; + case 'iu': + $lang_name = 'inuktitut'; + break; + case 'ja': + $lang_name = 'japanese'; + break; + case 'jv': + $lang_name = 'javanese'; + break; + case 'ka': + $lang_name = 'georgian'; + break; + case 'kg': + $lang_name = 'kongo'; + break; + case 'ki': + $lang_name = 'kikuyu'; + break; + case 'kj': + $lang_name = 'kwanyama'; + break; + case 'kk': + $lang_name = 'kazakh'; + break; + case 'kl': + $lang_name = 'kalaallisut'; + break; + case 'km': + $lang_name = 'khmer'; + break; + case 'kn': + $lang_name = 'kannada'; + break; + case 'ko': + $lang_name = 'korean'; + break; + case 'kr': + $lang_name = 'kanuri'; + break; + case 'ks': + $lang_name = 'kashmiri'; + break; + case 'ku': + $lang_name = 'kurdish'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'kw': + $lang_name = 'cornish_kernewek'; + break; + case 'ky': + $lang_name = 'kirghiz'; + break; + case 'la': + $lang_name = 'latin'; + break; + case 'lb': + $lang_name = 'luxembourgish'; + break; + case 'lg': + $lang_name = 'ganda'; + break; + case 'li': + $lang_name = 'limburgish'; + break; + case 'ln': + $lang_name = 'lingala'; + break; + case 'lo': + $lang_name = 'lao'; + break; + case 'lt': + $lang_name = 'lithuanian'; + break; + case 'lu': + $lang_name = 'luba-katanga'; + break; + case 'lv': + $lang_name = 'latvian'; + break; + case 'mg': + $lang_name = 'malagasy'; + break; + case 'mh': + $lang_name = 'marshallese'; + break; + case 'mi': + $lang_name = 'maori'; + break; + case 'mk': + $lang_name = 'macedonian'; + break; + case 'ml': + $lang_name = 'malayalam'; + break; + case 'mn': + $lang_name = 'mongolian'; + break; + case 'mo': + $lang_name = 'moldavian'; + break; + case 'mr': + $lang_name = 'marathi'; + break; + case 'ms': + $lang_name = 'malay'; + break; + case 'mt': + $lang_name = 'maltese'; + break; + case 'my': + $lang_name = 'burmese'; + break; + case 'na': + $lang_name = 'nauruan'; + break; + case 'nb': + $lang_name = 'norwegian'; + break; + case 'nd': + $lang_name = 'ndebele'; + break; + case 'ne': + $lang_name = 'nepali'; + break; + case 'ng': + $lang_name = 'ndonga'; + break; + case 'nl': + $lang_name = 'dutch'; + break; + case 'nn': + $lang_name = 'norwegian_nynorsk'; + break; + case 'no': + $lang_name = 'norwegian'; + break; + case 'nr': + $lang_name = 'southern_ndebele'; + break; + case 'nv': + $lang_name = 'navajo'; + break; + case 'ny': + $lang_name = 'chichewa'; + break; + case 'oc': + $lang_name = 'occitan'; + break; + case 'oj': + $lang_name = 'ojibwa'; + break; + case 'om': + $lang_name = 'oromo'; + break; + case 'or': + $lang_name = 'oriya'; + break; + case 'os': + $lang_name = 'ossetian'; + break; + case 'pa': + $lang_name = 'panjabi'; + break; + case 'pi': + $lang_name = 'pali'; + break; + case 'pl': + $lang_name = 'polish'; + break; + case 'ps': + $lang_name = 'pashto'; + break; + case 'pt': + $lang_name = 'portuguese'; + break; + case 'pt_br': + $lang_name = 'portuguese_brasil'; + break; + case 'qu': + $lang_name = 'quechua'; + break; + case 'rm': + $lang_name = 'romansh'; + break; + case 'rn': + $lang_name = 'kirundi'; + break; + case 'ro': + $lang_name = 'romanian'; + break; + case 'ru': + $lang_name = 'russian'; + break; + case 'rw': + $lang_name = 'kinyarwanda'; + break; + case 'sa': + $lang_name = 'sanskrit'; + break; + case 'sc': + $lang_name = 'sardinian'; + break; + case 'sd': + $lang_name = 'sindhi'; + break; + case 'se': + $lang_name = 'northern_sami'; + break; + case 'sg': + $lang_name = 'sango'; + break; + case 'sh': + $lang_name = 'serbo-croatian'; + break; + case 'si': + $lang_name = 'sinhala'; + break; + case 'sk': + $lang_name = 'slovak'; + break; + case 'sl': + $lang_name = 'slovenian'; + break; + case 'sm': + $lang_name = 'samoan'; + break; + case 'sn': + $lang_name = 'shona'; + break; + case 'so': + $lang_name = 'somali'; + break; + case 'sq': + $lang_name = 'albanian'; + break; + case 'sr': + $lang_name = 'serbian'; + break; + case 'ss': + $lang_name = 'swati'; + break; + case 'st': + $lang_name = 'sotho'; + break; + case 'su': + $lang_name = 'sundanese'; + break; + case 'sv': + $lang_name = 'swedish'; + break; + case 'sw': + $lang_name = 'swahili'; + break; + case 'ta': + $lang_name = 'tamil'; + break; + case 'te': + $lang_name = 'telugu'; + break; + case 'tg': + $lang_name = 'tajik'; + break; + case 'th': + $lang_name = 'thai'; + break; + case 'ti': + $lang_name = 'tigrinya'; + break; + case 'tk': + $lang_name = 'turkmen'; + break; + case 'tl': + $lang_name = 'tagalog'; + break; + case 'tn': + $lang_name = 'tswana'; + break; + case 'to': + $lang_name = 'tonga'; + break; + case 'tr': + $lang_name = 'turkish'; + break; + case 'ts': + $lang_name = 'tsonga'; + break; + case 'tt': + $lang_name = 'tatar'; + break; + case 'tw': + $lang_name = 'twi'; + break; + case 'ty': + $lang_name = 'tahitian'; + break; + case 'ug': + $lang_name = 'uighur'; + break; + case 'uk': + $lang_name = 'ukrainian'; + break; + case 'ur': + $lang_name = 'urdu'; + break; + case 'uz': + $lang_name = 'uzbek'; + break; + case 've': + $lang_name = 'venda'; + break; + case 'vi': + $lang_name = 'vietnamese'; + break; + case 'vo': + $lang_name = 'volapuk'; + break; + case 'wa': + $lang_name = 'walloon'; + break; + case 'wo': + $lang_name = 'wolof'; + break; + case 'xh': + $lang_name = 'xhosa'; + break; + case 'yi': + $lang_name = 'yiddish'; + break; + case 'yo': + $lang_name = 'yoruba'; + break; + case 'za': + $lang_name = 'zhuang'; + break; + case 'zh': + $lang_name = 'chinese'; + break; + case 'zh_cmn_hans': + $lang_name = 'chinese_simplified'; + break; + case 'zh_cmn_hant': + $lang_name = 'chinese_traditional'; + break; + case 'zu': + $lang_name = 'zulu'; + break; + default: + $lang_name = (strlen($string) > 2) ? ucfirst(str_replace($pattern, '', $string)) : $string; + break; + } + return ucwords(str_replace(array(" ","-","_"), ' ', $lang_name)); + } + return ucwords(str_replace(array(" ","-","_"), ' ', str_replace($pattern, '', $string))); + } + + /* replacement for eregi($pattern, $string); outputs 0 or 1*/ + function trisstr($pattern = '%{$regex}%i', $string, $matches = '') + { + return preg_match('/' . $pattern . '/i', $string, $matches); + } + + /** + * Enter description here... + * + * @access private + * @param unknown_type $lang_mode + */ + function _load_lang($path, $filename, $require = true, $user_lang = '') + { + $board_config = $this->config; + $php_ext = $this->php_ext; + + // Now only the root for mxp blocks + $board_path = $path . 'language/lang_' . $board_config['default_lang'] . '/' . $filename . '.' . $php_ext; + $default_path = $path . 'language/lang_english/' . $filename . '.' . $php_ext; + $user_path = !empty($user_lang) ? $path . 'language/lang_' . $user_lang . '/' . $filename . '.' . $php_ext : $board_path; + + $phpbb_board_path = $path . 'language/' . $board_config['default_lang'] . '/' . $filename . '.' . $php_ext; + $phpbb_default_path = $path . 'language/en/' . $filename . '.' . $php_ext; + $phpbb_user_path = !empty($user_lang) ? $path . 'language/' . $user_lang . '/' . $filename . '.' . $php_ext : $board_path; + + $lang = array(); + if (file_exists($user_path)) + { + include_once($user_path); + } + else if ($require) + { + if (file_exists($board_path)) + { + include_once($board_path); + } + else if (file_exists($default_path)) + { + include_once($default_path); + } + } + else if (file_exists($phpbb_user_path)) + { + include_once($phpbb_user_path); + } + else if ($require) + { + if (file_exists($phpbb_board_path)) + { + include_once($phpbb_board_path); + } + else if (file_exists($phpbb_default_path)) + { + include_once($phpbb_default_path); + } + } + $this->lang = array_merge($this->lang, $lang); + } + + /** + * Loads common language files + */ + protected function load_common_language_files() + { + if (!$this->common_language_files_loaded) + { + /* + * Load MXP lang keys + * Load vanilla phpBB2 lang files for old modules if is possible + */ + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + case 'mybb': + + //Load shared phpBB2 language files for old modules + $shared_lang_path = $this->mx_root_path . 'includes/shared/phpbb2/language/'; + + // AdminCP + if (defined('IN_ADMIN')) + { + // Shared phpBB2 AdminCP keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_admin'); + // Core MXP AdminCP + $this->_load_lang($this->mx_root_path, 'lang_admin'); + //Load Shared phpBB3 common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'acp/common'); + } + // Shared phpBB keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_main'); + // Core Main Translation after shared phpBB keys so we can overwrite some settings + $this->_load_lang($this->mx_root_path, 'lang_main'); + //Load Shared phpBB3 common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'common'); + break; + + case 'phpbb2': + + //Load vanilla phpBB2 language files for old modules if is possible + $shared_lang_path = $this->mx_root_path . 'includes/shared/phpbb2/language/'; + + // AdminCP + if (defined('IN_ADMIN')) + { + // Load vanilla phpBB2 AdminCP keys + $this->_load_lang($this->phpbb_root_path, 'lang_admin'); + // Core MXP AdminCP + $this->_load_lang($this->mx_root_path, 'lang_admin'); + //Load Shared phpBB3 AdminCP common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'acp/common'); + } + // Load vanilla phpBB2 keys + $this->_load_lang($this->phpbb_root_path, 'lang_main'); + // Core Main Translation after shared phpBB keys so we can overwrite some settings + $this->_load_lang($this->mx_root_path, 'lang_main'); + //Load Shared phpBB3 common language file + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb3/', 'common'); + break; + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + case 'proteus': + + //Load vanilla phpBB3 common language files for new modules if is possible + $shared_lang_path = $this->mx_root_path . 'includes/shared/phpbb2/language/'; + + // AdminCP + if (defined('IN_ADMIN')) + { + // Shared phpBB2 AdminCP keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_admin'); + // Core MXP AdminCP + $this->_load_lang($this->mx_root_path, 'lang_admin'); + //Load vanilla phpBB3 AdminCP common language file + $this->_load_lang($this->phpbb_root_path, 'acp/common'); + } + // Shared phpBB keys + $this->_load_lang($this->mx_root_path . 'includes/shared/phpbb2/', 'lang_main'); + // Core Main Translation after shared phpBB keys so we can overwrite some settings + $this->_load_lang($this->mx_root_path, 'lang_main'); + //Load vanilla phpBB3 common language file + $this->_load_lang($this->phpbb_root_path, 'common'); + break; + } + + // + // Load backend specific lang defs. + // + //$this->user->setup(); + $this->common_language_files_loaded = true; + } + } + + /** + * Returns the raw value associated to a language key or the language key no translation is available. + * No parameter substitution is performed, can be a string or an array. + * + * @param string|array $key Language key + * + * @return array|string + */ + public function lang_raw($key) + { + // Load common language files if they not loaded yet + if (!$this->common_language_files_loaded) + { + $this->load_common_language_files(); + } + + if (is_array($key)) + { + $lang = &$this->lang[array_shift($key)]; + foreach ($key as $_key) + { + $lang = &$lang[$_key]; + } + } + else + { + $lang = &$this->lang[$key]; + } + + // Return if language string does not exist + if (!isset($lang) || (!is_string($lang) && !is_array($lang))) + { + return $key; + } + return $lang; + } + + /** + * Act like lang() but takes a key and an array of parameters instead of using variadic + * + * @param string|array $key Language key + * @param array $args Parameters + * + * @return string + */ + public function lang_array($key, $args = array()) + { + $lang = $this->lang_raw($key); + + if ($lang === $key) + { + return $key; + } + + // If the language entry is a string, we simply mimic sprintf() behaviour + if (is_string($lang)) + { + if (count($args) === 0) + { + return $lang; + } + // Replace key with language entry and simply pass along... + return vsprintf($lang, $args); + } + else if (count($lang) == 0) + { + // If the language entry is an empty array, we just return the language key + return $key; + } + + // It is an array... now handle different nullar/singular/plural forms + $key_found = false; + + // We now get the first number passed and will select the key based upon this number + for ($i = 0, $num_args = count($args); $i < $num_args; $i++) + { + if (is_int($args[$i]) || is_float($args[$i])) + { + if ($args[$i] == 0 && isset($lang[0])) + { + // We allow each translation using plural forms to specify a version for the case of 0 things, + // so that "0 users" may be displayed as "No users". + $key_found = 0; + break; + } + else + { + $use_plural_form = $this->get_plural_form($args[$i]); + if (isset($lang[$use_plural_form])) + { + // The key we should use exists, so we use it. + $key_found = $use_plural_form; + } + else + { + // If the key we need to use does not exist, we fall back to the previous one. + $numbers = array_keys($lang); + + foreach ($numbers as $num) + { + if ($num > $use_plural_form) + { + break; + } + $key_found = $num; + } + } + break; + } + } + } + + // Ok, let's check if the key was found, else use the last entry (because it is mostly the plural form) + if ($key_found === false) + { + $numbers = array_keys($lang); + $key_found = end($numbers); + } + // Use the language string we determined and pass it to sprintf() + return vsprintf($lang[$key_found], $args); + } + /** + * Determine which plural form we should use. + * + * For some languages this is not as simple as for English. + * + * @param int|float $number The number we want to get the plural case for. Float numbers are floored. + * @param int|bool $force_rule False to use the plural rule of the language package + * or an integer to force a certain plural rule + * + * @return int The plural-case we need to use for the number plural-rule combination + * + * @throws \phpbb\language\exception\invalid_plural_rule_exception When $force_rule has an invalid value + */ + public function get_plural_form($number, $force_rule = false) + { + $number = (int) $number; + $plural_rule = ($force_rule !== false) ? $force_rule : ((isset($this->lang['PLURAL_RULE'])) ? $this->lang['PLURAL_RULE'] : 1); + + if ($plural_rule > 15 || $plural_rule < 0) + { + throw new invalid_plural_rule_exception('INVALID_PLURAL_RULE', array( + 'plural_rule' => $plural_rule, + )); + } + + /** + * The following plural rules are based on a list published by the Mozilla Developer Network + * https://developer.mozilla.org/en/Localization_and_Plurals + */ + switch ($plural_rule) + { + case 0: + /** + * Families: Asian (Chinese, Japanese, Korean, Vietnamese), Persian, Turkic/Altaic (Turkish), Thai, Lao + * 1 - everything: 0, 1, 2, ... + */ + return 1; + case 1: + /** + * Families: Germanic (Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish), Finno-Ugric (Estonian, Finnish, Hungarian), Language isolate (Basque), Latin/Greek (Greek), Semitic (Hebrew), Romanic (Italian, Portuguese, Spanish, Catalan) + * 1 - 1 + * 2 - everything else: 0, 2, 3, ... + */ + return ($number === 1) ? 1 : 2; + case 2: + /** + * Families: Romanic (French, Brazilian Portuguese) + * 1 - 0, 1 + * 2 - everything else: 2, 3, ... + */ + return (($number === 0) || ($number === 1)) ? 1 : 2; + case 3: + /** + * Families: Baltic (Latvian) + * 1 - 0 + * 2 - ends in 1, not 11: 1, 21, ... 101, 121, ... + * 3 - everything else: 2, 3, ... 10, 11, 12, ... 20, 22, ... + */ + return ($number === 0) ? 1 : ((($number % 10 === 1) && ($number % 100 != 11)) ? 2 : 3); + case 4: + /** + * Families: Celtic (Scottish Gaelic) + * 1 - is 1 or 11: 1, 11 + * 2 - is 2 or 12: 2, 12 + * 3 - others between 3 and 19: 3, 4, ... 10, 13, ... 18, 19 + * 4 - everything else: 0, 20, 21, ... + */ + return ($number === 1 || $number === 11) ? 1 : (($number === 2 || $number === 12) ? 2 : (($number >= 3 && $number <= 19) ? 3 : 4)); + case 5: + /** + * Families: Romanic (Romanian) + * 1 - 1 + * 2 - is 0 or ends in 01-19: 0, 2, 3, ... 19, 101, 102, ... 119, 201, ... + * 3 - everything else: 20, 21, ... + */ + return ($number === 1) ? 1 : ((($number === 0) || (($number % 100 > 0) && ($number % 100 < 20))) ? 2 : 3); + case 6: + /** + * Families: Baltic (Lithuanian) + * 1 - ends in 1, not 11: 1, 21, 31, ... 101, 121, ... + * 2 - ends in 0 or ends in 10-20: 0, 10, 11, 12, ... 19, 20, 30, 40, ... + * 3 - everything else: 2, 3, ... 8, 9, 22, 23, ... 29, 32, 33, ... + */ + return (($number % 10 === 1) && ($number % 100 != 11)) ? 1 : ((($number % 10 < 2) || (($number % 100 >= 10) && ($number % 100 < 20))) ? 2 : 3); + case 7: + /** + * Families: Slavic (Croatian, Serbian, Russian, Ukrainian) + * 1 - ends in 1, not 11: 1, 21, 31, ... 101, 121, ... + * 2 - ends in 2-4, not 12-14: 2, 3, 4, 22, 23, 24, 32, ... + * 3 - everything else: 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, ... + */ + return (($number % 10 === 1) && ($number % 100 != 11)) ? 1 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 2 : 3); + case 8: + /** + * Families: Slavic (Slovak, Czech) + * 1 - 1 + * 2 - 2, 3, 4 + * 3 - everything else: 0, 5, 6, 7, ... + */ + return ($number === 1) ? 1 : ((($number >= 2) && ($number <= 4)) ? 2 : 3); + case 9: + /** + * Families: Slavic (Polish) + * 1 - 1 + * 2 - ends in 2-4, not 12-14: 2, 3, 4, 22, 23, 24, 32, ... 104, 122, ... + * 3 - everything else: 0, 5, 6, ... 11, 12, 13, 14, 15, ... 20, 21, 25, ... + */ + return ($number === 1) ? 1 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 12) || ($number % 100 > 14))) ? 2 : 3); + case 10: + /** + * Families: Slavic (Slovenian, Sorbian) + * 1 - ends in 01: 1, 101, 201, ... + * 2 - ends in 02: 2, 102, 202, ... + * 3 - ends in 03-04: 3, 4, 103, 104, 203, 204, ... + * 4 - everything else: 0, 5, 6, 7, 8, 9, 10, 11, ... + */ + return ($number % 100 === 1) ? 1 : (($number % 100 === 2) ? 2 : ((($number % 100 === 3) || ($number % 100 === 4)) ? 3 : 4)); + case 11: + /** + * Families: Celtic (Irish Gaeilge) + * 1 - 1 + * 2 - 2 + * 3 - is 3-6: 3, 4, 5, 6 + * 4 - is 7-10: 7, 8, 9, 10 + * 5 - everything else: 0, 11, 12, ... + */ + return ($number === 1) ? 1 : (($number === 2) ? 2 : (($number >= 3 && $number <= 6) ? 3 : (($number >= 7 && $number <= 10) ? 4 : 5))); + case 12: + /** + * Families: Semitic (Arabic) + * 1 - 1 + * 2 - 2 + * 3 - ends in 03-10: 3, 4, ... 10, 103, 104, ... 110, 203, 204, ... + * 4 - ends in 11-99: 11, ... 99, 111, 112, ... + * 5 - everything else: 100, 101, 102, 200, 201, 202, ... + * 6 - 0 + */ + return ($number === 1) ? 1 : (($number === 2) ? 2 : ((($number % 100 >= 3) && ($number % 100 <= 10)) ? 3 : ((($number % 100 >= 11) && ($number % 100 <= 99)) ? 4 : (($number != 0) ? 5 : 6)))); + case 13: + /** + * Families: Semitic (Maltese) + * 1 - 1 + * 2 - is 0 or ends in 01-10: 0, 2, 3, ... 9, 10, 101, 102, ... + * 3 - ends in 11-19: 11, 12, ... 18, 19, 111, 112, ... + * 4 - everything else: 20, 21, ... + */ + return ($number === 1) ? 1 : ((($number === 0) || (($number % 100 > 1) && ($number % 100 < 11))) ? 2 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 3 : 4)); + case 14: + /** + * Families: Slavic (Macedonian) + * 1 - ends in 1: 1, 11, 21, ... + * 2 - ends in 2: 2, 12, 22, ... + * 3 - everything else: 0, 3, 4, ... 10, 13, 14, ... 20, 23, ... + */ + return ($number % 10 === 1) ? 1 : (($number % 10 === 2) ? 2 : 3); + case 15: + /** + * Families: Icelandic + * 1 - ends in 1, not 11: 1, 21, 31, ... 101, 121, 131, ... + * 2 - everything else: 0, 2, 3, ... 10, 11, 12, ... 20, 22, ... + */ + return (($number % 10 === 1) && ($number % 100 != 11)) ? 1 : 2; + } + } + /** + * Add Language Items + * + * Examples: + * + * $component = array('posting'); + * $component = array('posting', 'viewtopic') + * $component = 'posting' + * + * + * @param string|array $component The name of the language component to load + * @param string|null $extension_name Name of the extension to load component from, or null for core file + */ + public function add_lang($component, $extension_name = null) + { + // Load common language files if they not loaded yet + // This needs to be here to correctly merge language arrays + if (!$this->common_language_files_loaded) + { + $this->load_common_language_files(); + } + + if (!is_array($component)) + { + if (!is_null($extension_name)) + { + $this->load_extension($extension_name, $component); + } + else + { + $this->load_core_file($component); + } + } + else + { + foreach ($component as $lang_file) + { + $this->add_lang($lang_file, $extension_name); + } + } + } + /** + * @param $key array|string The language key we want to know more about. Can be string or array. + * + * @return bool Returns whether the language key is set. + */ + public function is_set($key) + { + // Load common language files if they not loaded yet + if (!$this->common_language_files_loaded) + { + $this->load_common_language_files(); + } + + if (is_array($key)) + { + $lang = &$this->lang[array_shift($key)]; + + foreach ($key as $_key) + { + $lang = &$lang[$_key]; + } + } + else + { + $lang = &$this->lang[$key]; + } + + return isset($lang); + } + + /** + * Advanced language substitution + * + * Function to mimic sprintf() with the possibility of using phpBB's language system to substitute nullar/singular/plural forms. + * Params are the language key and the parameters to be substituted. + * This function/functionality is inspired by SHS` and Ashe. + * + * Example call: $user->lang('NUM_POSTS_IN_QUEUE', 1); + * + * If the first parameter is an array, the elements are used as keys and subkeys to get the language entry: + * Example: $user->lang(array('datetime', 'AGO'), 1) uses $user->lang['datetime']['AGO'] as language entry. + * + * @return string Return localized string or the language key if the translation is not available + */ + public function lang() + { + $args = func_get_args(); + $key = array_shift($args); + + return $this->lang_array($key, $args); + } + /** + * BC function for loading language files + * + * @deprecated 3.2.0-dev (To be removed: 4.0.0) + */ + private function set_lang($lang_set, $use_help, $ext_name) + { + if (empty($ext_name)) + { + $ext_name = null; + } + + if ($use_help && strpos($lang_set, '/') !== false) + { + $component = dirname($lang_set) . '/help_' . basename($lang_set); + if ($component[0] === '/') + { + $component = substr($component, 1); + } + } + else + { + $component = (($use_help) ? 'help_' : '') . $lang_set; + } + + $this->add_lang($component, $ext_name); + + } + + /** + * Add Language Items from an extension - use_db and use_help are assigned where needed (only use them to force inclusion) + * + * @param string $ext_name The extension to load language from, or empty for core files + * @param mixed $lang_set specifies the language entries to include + * @param bool $use_db internal variable for recursion, do not use + * @param bool $use_help internal variable for recursion, do not use + * + * Note: $use_db and $use_help should be removed. Kept for BC purposes. + * + * @deprecated: 3.2.0-dev (To be removed: 4.0.0) + */ + function add_lang_ext($ext_name, $lang_set, $use_db = false, $use_help = false) + { + if ($ext_name === '/') + { + $ext_name = ''; + } + $this->add_lang($lang_set, $use_db, $use_help, $ext_name); + } +} +/** + * Base exception class for language exceptions + */ +class language_exception extends runtime_exception +{ + +} +/** + * This exception is thrown when the language file is not found + */ +class language_file_not_found extends language_exception +{ + +} +/** + * class language + */ ?> \ No newline at end of file diff --git a/includes/mx_functions_tools.php b/includes/mx_functions_tools.php index 330ff620..84dae2e3 100644 --- a/includes/mx_functions_tools.php +++ b/includes/mx_functions_tools.php @@ -2,7 +2,7 @@ /** * * @package Tools -* @version $Id: mx_functions_tools.php,v 1.69 2014/09/24 05:51:47 orynider Exp $ +* @version $Id: mx_functions_tools.php,v 1.67 2014/05/09 07:51:42 orynider Exp $ * @copyright (c) 2002-2008 MX-Publisher Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * @link http://mxpcms.sourceforge.net/ @@ -1080,26 +1080,26 @@ function drawForm() case "text": // text form $item_label = $item[1]; $item_field = ''; - break; + break; case "textarea": // textarea $item_label = $item[1]; $item_field = ''; - break; + break; case "password": // password $item_label = $item[1]; $item_field = ''; - break; + break; case "checkbox": // checkbox button $item_label = $item[1]; if ( isset( $item[3] ) ) $item_field = ''; else $item_field = ''; @@ -1109,7 +1109,7 @@ function drawForm() case "hidden": // hidden fields $item_label = ''; $item_field = ''; - break; + break; case "submit": // defining the label for submit button $submit = $item[1]; $submitname = $item[2]; @@ -1117,14 +1117,14 @@ function drawForm() case "delete": // delete button $item_label = $item[1]; $item_field = $item[2]; - break; + break; } if ( ! empty( $item_field ) ) { $template->assign_block_vars( "rows", array( 'LABEL' => $item_label, 'FIELD' => $item_field, - )); + )); } } $template->pparse( "body" ); @@ -1711,7 +1711,7 @@ function truncate_string($string, $max_length = 60, $max_store_length = 255, $al /* * Includes -*/ +/* if(!function_exists('prepare_message')) { //include_once($mx_root_path . 'includes/shared/phpbb2/includes/functions_post.' . $phpEx); @@ -1723,7 +1723,7 @@ function truncate_string($string, $max_length = 60, $max_store_length = 255, $al //include_once($mx_root_path . 'includes/shared/phpbb2/includes/functions_search.' . $phpEx); mx_cache::load_file('functions_search', 'phpbb2'); } -/*/ +*/ /** * Class: mx_notification. @@ -1946,20 +1946,17 @@ function _insert_pm() $error_msg .= ( ( !empty($error_msg) ) ? '
' : '' ) . $lang['Empty_subject']; } - if (!empty($this->message)) + if ( !empty($this->message) ) { - if (!$error) + if ( !$error ) { - if ($this->bbcode_on) + if ( $this->bbcode_on ) { $bbcode_uid = $mx_bbcode->make_bbcode_uid(); } - - if (method_exists($this, 'lookup')) - { - $privmsg_message = $this->prepare_message(addslashes($this->message), $this->html_on, $this->bbcode_on, $this->smilies_on, $bbcode_uid); - $privmsg_message = str_replace('\\\n', '\n', $privmsg_message); - } + + $privmsg_message = $this->prepare_message(addslashes($this->message), $this->html_on, $this->bbcode_on, $this->smilies_on, $bbcode_uid); + $privmsg_message = str_replace('\\\n', '\n', $privmsg_message); } } else @@ -3344,22 +3341,22 @@ function display_edit( $file_id = false ) { case INPUT: $this->display_edit_input( $file_id, $field_id, $field_data ); - break; + break; case TEXTAREA: $this->display_edit_textarea( $file_id, $field_id, $field_data ); - break; + break; case RADIO: $this->display_edit_radio( $file_id, $field_id, $field_data ); - break; + break; case SELECT: $this->display_edit_select( $file_id, $field_id, $field_data ); - break; + break; case SELECT_MULTIPLE: $this->display_edit_select_multiple( $file_id, $field_id, $field_data ); - break; + break; case CHECKBOX: $this->display_edit_checkbox( $file_id, $field_id, $field_data ); - break; + break; } $return = true; @@ -5757,13 +5754,13 @@ function display_internal_comments() { case USER_AVATAR_UPLOAD: $poster_avatar = ( $board_config['allow_avatar_upload'] ) ? '' : ''; - break; + break; case USER_AVATAR_REMOTE: $poster_avatar = ( $board_config['allow_avatar_remote'] ) ? '' : ''; - break; + break; case USER_AVATAR_GALLERY: $poster_avatar = ( $board_config['allow_avatar_local'] ) ? '' : ''; - break; + break; } } @@ -6026,13 +6023,13 @@ function display_phpbb_comments( ) { case USER_AVATAR_UPLOAD: $poster_avatar = ( $board_config['allow_avatar_upload'] ) ? '' : ''; - break; + break; case USER_AVATAR_REMOTE: $poster_avatar = ( $board_config['allow_avatar_remote'] ) ? '' : ''; - break; + break; case USER_AVATAR_GALLERY: $poster_avatar = ( $board_config['allow_avatar_local'] ) ? '' : ''; - break; + break; } } diff --git a/includes/page_header.php b/includes/page_header.php index d7ce1f97..da6dbc7a 100644 --- a/includes/page_header.php +++ b/includes/page_header.php @@ -22,7 +22,9 @@ The following code related to GZIP initialization has been moved to the new mx_session_start() function, declared in mx_functions.php +// // gzip_compression +// $do_gzip_compress = FALSE; if ( $board_config['gzip_compress'] ) { @@ -59,8 +61,31 @@ if (!is_object($layouttemplate)) { // Initialize template - $layouttemplate = new mx_Template($mx_root_path . 'templates/'. $mx_user->theme['template_name'], $board_config, $db); + // + $layouttemplate = new mx_Template( $mx_root_path . 'templates/'. $theme['template_name'], $board_config, $db ); } + +// +// Obtain number of new private messages +// if user is logged in +if(!isset($mx_user) || !is_object($mx_user)) +{ + $mx_user = new mx_user(); +} + +// +// Obtain number of new private messages +// if cache is logged in +if(!isset($mx_cache) || !is_object($mx_cache)) +{ + $cache = new mx_cache(); +} + +// +// Load common language file from phpBB3 +//$mx_user->set_lang($mx_user->lang, $mx_user->help, 'common'); +$lang = &$mx_user->lang; + // If MX-Publisher page is not set, instantiate it if (!isset($mx_page->page_navigation_block)) { @@ -77,10 +102,609 @@ 'overall_header' => empty($mx_page->page_ov_header) || ( !file_exists($mx_root_path . TEMPLATE_ROOT_PATH . $mx_page->page_ov_header) && !file_exists($mx_root_path . TEMPLATE_ROOT_PATH . $page_ov_header2) ) ? ( empty($gen_simple_header) ? 'overall_header.' . $tplEx : 'simple_header.' . $tplEx ) : $mx_page->page_ov_header )); +// +// Generate logged in/logged out status +// +if ( $mx_user->data['session_logged_in'] ) +{ + $u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $mx_user->data['session_id']; + $l_login_logout = $lang['Logout'] . ' [ ' . $mx_user->data['username'] . ' ]'; +} +else +{ + $u_login_logout = 'login.'.$phpEx; + $l_login_logout = $lang['Login']; +} + +$s_last_visit = ( $mx_user->data['session_logged_in'] ) ? mx_create_date($board_config['default_dateformat'], $mx_user->data['user_lastvisit'], $board_config['board_timezone']) : ''; + // Generate logged in/logged out status +if( !is_object($mx_backend)) +{ + $mx_backend = new mx_backend(); +} + $mx_backend->page_header('generate_login_logout_stats'); + +// ================================================================================ +// The following code is backported from includes/page_header.php (phpBB 2.0.13) +// ================================================================================ + +// +// Get basic (usernames + totals) online +// situation +// +$logged_visible_online = 0; +$logged_hidden_online = 0; +$guests_online = 0; + +// Get users online list ... if required +$l_online_users = $online_userlist = $l_online_record = $l_online_time = ''; + +$l_online_record = $mx_user->lang('RECORD_ONLINE_USERS', (int) $board_config['record_online_users'], $mx_user->format_date($board_config['record_online_date'], false, true)); + +/** +* Load online data: +*/ +if (defined('SHOW_ONLINE')) +{ + switch (PORTAL_BACKEND) + { + case 'internal': + $sql = "SELECT u.username, u.user_id, u.user_level, s.session_logged_in, s.session_ip + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.user_id = s.session_user_id + AND s.session_time >= ".(time() - 300) . " + ORDER BY u.username ASC, s.session_ip ASC"; + break; + case 'smf2': + //To do: + /** a query or we can use a session method + $sql = "SELECT u.id_member as u.user_id, u.member_name as u.username, u.id_group as u.user_level, s.session_id, s.data, + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.id_member > -1 + AND s.last_update >= ".(time() - 300) . " + ORDER BY u.member_name ASC, s.session_id ASC"; + **/ + break; + case 'phpbb2': + $sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.user_id = s.session_user_id + AND s.session_time >= ".(time() - 300) . " + ORDER BY u.username ASC, s.session_ip ASC"; + break; + case 'phpbb3': + default: + $sql = "SELECT u.user_id, u.username, u.user_regdate, u.user_birthday, u.user_allow_viewonline, u.user_type, u.user_colour, s.session_autologin, s.session_ip + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.user_id = s.session_user_id + AND s.session_time >= ".(time() - 300) . " + ORDER BY u.username ASC, s.session_ip ASC"; + break; + } + + if( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not obtain user/online information', '', __LINE__, __FILE__, $sql); + } + + $mx_userlist_ary = array(); + $mx_userlist_visible = array(); + + $prev_user_id = 0; + $prev_user_ip = $prev_session_ip = ''; + + while($row = $db->sql_fetchrow($result)) + { + // User is logged in and therefor not a guest + if ($mx_user->data['user_id'] != ANONYMOUS) + { + // Skip multiple sessions for one user + if ( $row['user_id'] != $prev_user_id ) + { + $style_color = ''; + //switch only supported phpBB backends here + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + case 'phpbb2': + if ( $row['user_level'] == ADMIN ) + { + $row['username'] = '' . $row['username'] . ''; + $style_color = 'style="color:#' . $theme['fontcolor3'] . '"'; + } + else if ( $row['user_level'] == MOD ) + { + $row['username'] = '' . $row['username'] . ''; + $style_color = 'style="color:#' . $theme['fontcolor2'] . '"'; + } + break; + + case 'phpbb3': + case 'olympus': + default: + $style_color = ($row['user_colour']) ? ' style="color:#' . $row['user_colour'] . '" class="username-coloured"' : ''; + break; + } + + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + $mx_user_online_link = '' . $row['username'] . ''; + $logged_hidden_online++; + break; + case 'phpbb2': + $mx_user_online_link = '' . $row['username'] . ''; + $logged_hidden_online++; + break; + + case 'phpbb3': + case 'olympus': + default: + if ($row['user_allow_viewonline']) + { + $mx_user_online_link = $mx_backend->get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']); + $logged_visible_online++; + } + else + { + $mx_user_online_link = ($row['user_type'] != USER_IGNORE) ? mx_get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']) : '' . $row['username'] . ''; + $logged_hidden_online++; + } + break; + } + + if ( $row['user_allow_viewonline'] || $mx_user->data['user_level'] == ADMIN ) + { + $online_userlist .= ( $online_userlist != '' ) ? ', ' . $mx_user_online_link : $mx_user_online_link; + } + } + $prev_user_id = $row['user_id']; + } + else + { + // Skip multiple sessions for one user + if ( $row['session_ip'] != $prev_session_ip ) + { + $guests_online++; + } + } + $prev_session_ip = $row['session_ip']; + } + $db->sql_freeresult($result); + + if ( empty($online_userlist) ) + { + $online_userlist = $lang['None']; + } + + $online_userlist = ((isset($forum_id)) ? $lang['Browsing_forum'] : $lang['Registered_users']) . ' ' . $online_userlist; + $total_online_users = $logged_visible_online + $logged_hidden_online + $guests_online; + + if ($total_online_users > $board_config['record_online_users']) + { + $board_config['record_online_users'] = $total_online_users; + $board_config['record_online_date'] = time(); + + switch (PORTAL_BACKEND) + { + case 'internal': + $sql = "UPDATE " . PORTAL_TABLE . " + SET record_online_users = '$total_online_users', + record_online_date = '" . $board_config['record_online_date'] . "' + WHERE portal_id = 1"; + if (!$db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql); + } + + $portal_config['record_online_users'] = $total_online_users; + $portal_config['record_online_date'] = $board_config['record_online_date']; + $mx_cache->put('mxbb_config', $portal_config); + break; + + case 'phpbb2': + case 'phpbb3': + default: + $sql = "UPDATE " . CONFIG_TABLE . " + SET config_value = '$total_online_users' + WHERE config_name = 'record_online_users'"; + if (!$db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql); + } + $sql = "UPDATE " . CONFIG_TABLE . " + SET config_value = '" . $board_config['record_online_date'] . "' + WHERE config_name = 'record_online_date'"; + + if (!$db->sql_query($sql, 300)) + { + mx_message_die(GENERAL_ERROR, 'Could not update online user record (date)', '', __LINE__, __FILE__, $sql); + } + $board_config['record_online_users'] = $total_online_users; + $board_config['record_online_date'] = $board_config['record_online_date']; + $mx_cache->put('phpbb_config', $board_config); + break; + } + } + + if ( $total_online_users == 0 ) + { + $l_t_user_s = $lang['Online_users_zero_total']; + } + else if ( $total_online_users == 1 ) + { + $l_t_user_s = $lang['Online_user_total']; + } + else + { + $l_t_user_s = $lang['Online_users_total']; + } + + if ( $logged_visible_online == 0 ) + { + $l_r_user_s = $lang['Reg_users_zero_total']; + } + else if ( $logged_visible_online == 1 ) + { + $l_r_user_s = $lang['Reg_user_total']; + } + else + { + $l_r_user_s = $lang['Reg_users_total']; + } + + if ( $logged_hidden_online == 0 ) + { + $l_h_user_s = $lang['Hidden_users_zero_total']; + } + else if ( $logged_hidden_online == 1 ) + { + $l_h_user_s = $lang['Hidden_user_total']; + } + else + { + $l_h_user_s = $lang['Hidden_users_total']; + } + + if ( $guests_online == 0 ) + { + $l_g_user_s = $lang['Guest_users_zero_total']; + } + else if ( $guests_online == 1 ) + { + $l_g_user_s = $lang['Guest_user_total']; + } + else + { + $l_g_user_s = $lang['Guest_users_total']; + } + + $l_online_users = sprintf($l_t_user_s, $total_online_users); + $l_online_users .= sprintf($l_r_user_s, $logged_visible_online); + $l_online_users .= sprintf($l_h_user_s, $logged_hidden_online); + $l_online_users .= sprintf($l_g_user_s, $guests_online); +} + +// +// Obtain number of new private messages +// if user is logged in +// +switch (PORTAL_BACKEND) +{ + case 'internal': + case 'smf2': + case 'mybb': + + break; + + case 'phpbb2': + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + + global $phpbb_auth; + + if(!isset($phpbb_auth) || !is_object($phpbb_auth)) + { + $phpbb_auth = new phpbb_auth(); + } + $phpbb_auth->acl($mx_user->data); + + break; +} + +if( class_exists('phpBB2')) +{ + $phpBB2 = new phpBB2(); +} + +// Output the notifications +$total_msgs = $notifications = false; +$mx_priv_msg = $lang['Private_Messages']; +if ( ($mx_user->data['session_logged_in']) && (PORTAL_BACKEND !== 'internal') && (empty($gen_simple_header)) ) +{ + if ( $mx_user->data['user_new_privmsg'] ) + { + $l_message_new = ( $mx_user->data['user_new_privmsg'] == 1 ) ? $lang['New_pm'] : $lang['New_pms']; + $l_privmsgs_text = sprintf($l_message_new, $mx_user->data['user_new_privmsg']); + + if ( $mx_user->data['user_last_privmsg'] > $mx_user->data['user_lastvisit'] ) + { + $sql = "UPDATE " . USERS_TABLE . " + SET user_last_privmsg = " . $mx_user->data['user_lastvisit'] . " + WHERE user_id = " . $mx_user->data['user_id']; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not update private message new/read time for user', '', __LINE__, __FILE__, $sql); + } + + $s_privmsg_new = 1; + $icon_pm = $images['pm_new_msg']; + } + else + { + $s_privmsg_new = 0; + $icon_pm = $images['pm_no_new_msg']; + } + $mx_priv_msg = $lang['Private_Messages'] . ' (' . $mx_user->data['user_new_privmsg'] . ')'; + } + else + { + $l_privmsgs_text = $lang['No_new_pm']; + + $s_privmsg_new = 0; + $icon_pm = $images['pm_no_new_msg']; + $mx_priv_msg = $lang['Private_Messages']; + } + + if ( $mx_user->data['user_unread_privmsg'] ) + { + $l_message_unread = ( $mx_user->data['user_unread_privmsg'] == 1 ) ? $lang['Unread_pm'] : $lang['Unread_pms']; + $l_privmsgs_text_unread = sprintf($l_message_unread, $mx_user->data['user_unread_privmsg']); + } + else + { + $l_privmsgs_text_unread = $lang['No_unread_pm']; + } + + // + // SQL to pull appropriate message, prevents nosey people + // reading other peoples messages ... hopefully! + // + $privmsgs_id = $phpBB2->request_var(POST_POST_URL, $s_privmsg_new); + $l_box_name = $lang['Inbox']; + + // + // Did the query return any data? + // + $notifications = array(); + + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + case 'mybb': + + + break; + + case 'phpbb2': + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + + $pm_sql_user = "AND pm.privmsgs_to_userid = " . $mx_user->data['user_id'] . " + AND ( pm.privmsgs_type = " . PRIVMSGS_READ_MAIL . " + OR pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . " + OR pm.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )"; + // + // Major query obtains the message ... + // + $sql = "SELECT u.username AS username_1, u.user_id AS user_id_1, u2.username AS username_2, u2.user_id AS user_id_2, u.user_sig_bbcode_uid, u.user_regdate AS user_regdate1,u.user_posts AS user_posts1, u.user_from AS user_from1, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, u.user_viewemail, u.user_rank AS user_rank1, u.user_sig, u.user_avatar AS user_avatar1,u.user_avatar_type AS user_avatar_type1, pm.*, pmt.privmsgs_bbcode_uid, pmt.privmsgs_text + FROM " . PRIVMSGS_TABLE . " pm, " . PRIVMSGS_TEXT_TABLE . " pmt, " . USERS_TABLE . " u, " . USERS_TABLE . " u2 + WHERE pm.privmsgs_id = pmt.privmsgs_text_id + $pm_sql_user + AND u.user_id = pm.privmsgs_from_userid + AND u2.user_id = pm.privmsgs_to_userid"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not query private message post information', '', __LINE__, __FILE__, $sql); + } + if ( $privmsg = $db->sql_fetchrow($result) ) + { + $notifications[] = $privmsg; + $privmsg_id = $privmsg['privmsgs_id']; + } + else + { + $privmsg_id = request_var(POST_POST_URL, $s_privmsg_new); + } + $db->sql_freeresult($result); + break; + } + + if ( !($total_msgs = count($notifications)) ) + { + $total_msgs = 0; + + // Merge default options + $notifications = array_merge(array( + 'notification_id' => 0, + 'notification_time' => time(), + 'user_id' => $mx_user->data['user_id'], + 'order_by' => 'notification_time', + 'older_unread' => 1, + 'order_dir' => 'DESC', + 'all_unread' => 0, + 'unread_count' => 0, + 'limit' => 5, + 'start' => 0, + 'REASON' => 'Could not query private message post information', + 'count_unread' => 0, + 'count_total' => $total_msgs, + ), $notifications); + } + + // Merge default options + $notifications = array_merge(array( + 'notification_id' => $privmsg_id, + 'notification_time' => !empty($privmsg['privmsgs_date']) ? $privmsg['privmsgs_date'] : time(), + 'user_id' => $mx_user->data['user_id'], + 'order_by' => 'notification_time', + 'older_unread' => $s_privmsg_new, + 'order_dir' => 'DESC', + 'all_unread' => $s_privmsg_new, + 'unread_count' => $s_privmsg_new, + 'limit' => 5, + 'start' => 0, + 'REASON' => $privmsg['privmsgs_text'], + 'count_unread' => $s_privmsg_new, + 'count_total' => $total_msgs, + ), $notifications); +} +else +{ + $icon_pm = !empty($images['pm_no_new_msg']) ? $images['pm_no_new_msg'] : 'no_new_msg'; + $l_privmsgs_text = $lang['Login_check_pm']; + $l_privmsgs_text_unread = ''; + $s_privmsg_new = 0; + $privmsg_id = 0; + + $notifications = array( + 'all_unread' => $s_privmsg_new, + 'unread_count' => $s_privmsg_new, + 'limit' => 5, + ); + // Merge default options + $notifications = array_merge(array( + 'notification_id' => false, + 'notification_time' => time(), + 'user_id' => $mx_user->data['user_id'], + 'order_by' => 'notification_time', + 'order_dir' => 'DESC', + 'limit' => 5, + 'start' => 0, + 'all_unread' => $s_privmsg_new, + 'count_unread' => $s_privmsg_new, + 'count_total' => false, + 'S_ROW_COUNT' => 0, + 'S_NUM_ROWS' => 0, + 'UNREAD' => 0, + 'STYLING' => 0, + 'URL' => 0, + 'U_MARK_READ' => 0, + 'AVATAR' => 0, + 'T_THEME_PATH' => 0, + 'FORMATTED_TITLE' => 0, + 'REFERENCE' => 0, + 'FORUM' => 0, + 'REASON' => 0, + 'TIME' => 0, + 'U_MARK_READ' => 0, + ), $notifications); +} +$notification_mark_hash = mx_generate_link_hash('mark_all_notifications_read'); +$mark_hash = mx_generate_link_hash('mark_notification_read'); +$u_mark_read = mx_append_sid($phpbb_root_path . 'privmsg.' . $phpEx . '?mark_notification=' . $notifications['notification_id'] . '&folder=inbox&hash=' . $mark_hash); + +// Login box? +// +if ( !$mx_user->data['session_logged_in'] ) +{ + $template->assign_block_vars('switch_user_logged_out', array()); + // + // Allow autologin? + // + if (!isset($board_config['allow_autologin']) || $board_config['allow_autologin'] ) + { + $template->assign_block_vars('switch_allow_autologin', array()); + $template->assign_block_vars('switch_user_logged_out.switch_allow_autologin', array()); + } + $template->assign_block_vars('notifications', array()); +} +else +{ + $template->assign_block_vars('switch_user_logged_in', array()); + + //if ( !empty($mx_userdata['user_popup_pm']) ) + //{ + $template->assign_block_vars('switch_enable_pm_popup', array()); + + $template->assign_block_vars('notifications', array( + 'NOTIFICATION_ID' => $notifications['notification_id'], + + 'USER_ID' => $notifications['user_id'], + 'ORDER_BY' => $notifications['order_by'], + 'ORDER_DIR' => $notifications['order_dir'], + 'ALL_UNREAD' => $notifications['all_unread'], + 'UNREAD_COUNT' => $notifications['unread_count'], + 'LIMIT' => $notifications['limit'], + 'START' => $notifications['start'], + 'COUNT_UNREAD' => $notifications['count_unread'], + 'COUNT_TOTAL' => $notifications['count_total'], + + 'STYLING' => 'notification-reported', + 'AVATAR' => mx_get_user_avatar($mx_user->data), + 'FORMATTED_TITLE' => $mx_user->lang('NOTIFICATION', $mx_user->data['username'], false), + + 'REFERENCE' => $mx_user->lang('NOTIFICATION_REFERENCE', mx_censor_text($l_privmsgs_text)), + 'FORUM' => mx_append_sid('privmsg.'.$phpEx.'?folder=inbox'), //$this->get_forum(), + 'REASON' => $notifications['REASON'], //$this->get_reason(), + 'URL' => mx_append_sid('privmsg.'.$phpEx.'?folder=inbox'), //$this->get_url(), + + 'TIME' => $mx_user->format_date($notifications['notification_time']), + + 'UNREAD' => $l_privmsgs_text_unread, + 'U_MARK_READ' => (!$mx_user->data['user_unread_privmsg']) ? $u_mark_read : '', + )); + //} +} + +switch (PORTAL_BACKEND) +{ + case 'internal': + case 'smf2': + case 'mybb': + + if ( !defined('PHPBB_VERSION') ) + { + define('PHPBB_VERSION', $board_config['portal_version']); + } + + break; + + case 'phpbb2': + + if ( !defined('PHPBB_VERSION') ) + { + define('PHPBB_VERSION', '2'.$board_config['version']); + } + + break; + + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + + if ( !defined('PHPBB_VERSION') ) + { + define('PHPBB_VERSION', $board_config['version']); + } + + break; +} + +// // Generate HTML required for Mozilla Navigation bar +// if ( !isset( $nav_links ) ) { $nav_links = array(); @@ -104,7 +728,14 @@ } } +$forum_id = $phpBB2->request_var('f', (isset($forum_id) ? $forum_id : 0)); +$topic_id = $phpBB2->request_var('t', (isset($topic_id) ? $topic_id : 0)); + +$s_feed_news = isset($s_feed_news) ? $s_feed_news : false; + +// // Format Timezone. We are unable to use array_pop here, because of PHP3 compatibility +// $l_timezone = explode( '.', $board_config['board_timezone'] ); $l_timezone = ( count( $l_timezone ) > 1 && $l_timezone[count( $l_timezone )-1] != 0 ) ? $lang[sprintf( '%.1f', $board_config['board_timezone'] )] : $lang[number_format( $board_config['board_timezone'] )]; @@ -118,17 +749,21 @@ } // Search box -$search_page_id_pafiledb = get_page_id('dload.' . $phpEx, true); -$search_page_id_kb = get_page_id('kb.' . $phpEx, true); $search_page_id_site = get_page_id('mx_search.' . $phpEx, true); - $option_search_site = !empty($search_page_id_site) ? '' : ''; + $option_search_forum = ''; +$option_search_google = ''; + +$search_page_id_kb = get_page_id('kb.' . $phpEx, true); $option_search_kb = !empty($search_page_id_kb) ? '' : ''; + +$search_page_id_pafiledb = get_page_id('dload.' . $phpEx, true); $option_search_pafiledb = !empty($search_page_id_pafiledb) ? '' : ''; -$option_search_google = ''; +// // Generate list of additional css files to include (defined by modules) +// $mx_addional_css_files = ''; if (isset($mx_page->mxbb_css_addup) && (count($mx_page->mxbb_css_addup) > 0)) { @@ -138,7 +773,9 @@ } } +// // Generate list of additional js files to include (defined by modules) +// $mx_addional_js_files = ''; if (isset($mx_page->mxbb_js_addup) && (count($mx_page->mxbb_js_addup) > 0)) { @@ -148,7 +785,9 @@ } } +// // Generate additional header code (defined by modules) +// $mx_addional_header_text = ''; if (isset($mx_page->mxbb_header_addup) && (count($mx_page->mxbb_header_addup) > 0)) { @@ -158,15 +797,52 @@ } } +// Send a proper content-language to the output +$user_lang = isset($mx_user->lang['USER_LANG']) ? $mx_user->lang['USER_LANG'] : $mx_user->encode_lang($mx_user->lang_name); +if (strpos($user_lang, '-x-') !== false) +{ + $user_lang = substr($user_lang, 0, strpos($user_lang, '-x-')); +} + +$phpbb_version_parts = explode('.', PHPBB_VERSION, 3); +$phpbb_major = $phpbb_version_parts[0] . '.' . $phpbb_version_parts[1]; + +@define('USER_ACTIVATION_NONE', 0); +@define('USER_ACTIVATION_SELF', 1); +@define('USER_ACTIVATION_ADMIN', 2); +@define('USER_ACTIVATION_DISABLE', 3); + +// +// Show the overall footer. +// +$admin_link = ($mx_user->data['user_level'] == ADMIN) ? '' . $lang['Admin_panel'] . '

' : ''; + +// Forum rules and subscription info +$s_watching_forum = array( + 'link' => '', + 'link_toggle' => '', + 'title' => '', + 'title_toggle' => '', + 'is_watching' => false, +); + +$default_lang = ($mx_user->data['user_lang']) ? $mx_user->data['user_lang'] : $portal_config['default_lang']; +if (empty($default_lang)) +{ + // - populate $default_lang + $default_lang= 'english'; +} + $useragent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT'); + switch (PORTAL_BACKEND) { case 'internal': case 'smf2': case 'mybb': case 'phpbb2': - $admin = ($userdata['session_logged_in'] && $userdata['user_level'] == ADMIN) ? true : false; + $admin = ($mx_user->data['session_logged_in'] && $mx_user->data['user_level'] == ADMIN) ? true : false; break; case 'phpbb3': @@ -178,22 +854,88 @@ break; } +// +// Grab MXP global variables, re-cache if necessary +// - optional parameter to enable/disable cache for config data. If enabled, remember to refresh the MX-Publisher cache whenever updating MXP config settings +// - true: enable cache, false: disable cache +if (empty($portal_config['portal_status'])) +{ + $portal_config = $mx_cache->obtain_mxbb_config(false); +} + +$web_path = (!empty($portal_config['portal_url'])) ? PORTAL_URL : BOARD_URL; +$https_path = str_replace("http://", "https://", $web_path); +$web_path = str_replace("https://", "http://", $web_path); + +// +// The following assigns all _common_ variables that may be used at any point +// in a template. +// $layouttemplate->assign_vars(array( - 'SITENAME' => $board_config['sitename'], - 'SITE_DESCRIPTION' => $board_config['site_desc'], - 'PAGE_TITLE' => $mx_page->page_title, - 'CURRENT_TIME' => sprintf($lang['Current_time'], phpBB2::create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), - 'RECORD_USERS' => sprintf($lang['Record_online_users'], $board_config['record_online_users'], phpBB2::create_date($board_config['default_dateformat'], $board_config['record_online_date'], $board_config['board_timezone'])), + 'SITENAME' => $board_config['sitename'], + 'SITE_DESCRIPTION' => $board_config['site_desc'], + 'PAGE_TITLE' => $mx_page->page_title, + 'LANG' => $mx_user->img_lang, + 'SCRIPT_NAME' => str_replace('.' . $phpEx, '', basename(__FILE__)), + 'LAST_VISIT_DATE' => sprintf($lang['You_last_visit'], $s_last_visit), + 'LAST_VISIT_YOU' => $s_last_visit, + 'CURRENT_TIME' => sprintf($lang['Current_time'], mx_create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), + 'TOTAL_USERS_ONLINE' => $l_online_users, + 'RECORD_USERS' => $l_online_record, + 'LOGGED_IN_USER_LIST' => $online_userlist, + 'RECORD_USERS' => sprintf($lang['Record_online_users'], $board_config['record_online_users'], mx_create_date($board_config['default_dateformat'], $board_config['record_online_date'], $board_config['board_timezone'])), + + 'CURRENT_USER_AVATAR' => mx_get_user_avatar($mx_user->data), + 'CURRENT_USERNAME_SIMPLE' => mx_get_username_string('no_profile', $mx_user->data['user_id'], $mx_user->data['username'], $mx_user->data['user_colour']), + 'CURRENT_USERNAME_FULL' => mx_get_username_string('full', $mx_user->data['user_id'], $mx_user->data['username'], $mx_user->data['user_colour']), + + 'S_NOTIFICATIONS_DISPLAY' => true, + 'S_SHOW_COPPA' => false, + 'S_REGISTRATION' => true, + + 'UNREAD_NOTIFICATIONS_COUNT' => ($notifications !== false) ? $notifications['unread_count'] : '', + 'NOTIFICATIONS_COUNT' => ($notifications !== false) ? $notifications['unread_count'] : '', + 'U_VIEW_ALL_NOTIFICATIONS' => mx_append_sid("{$phpbb_root_path}profile.$phpEx?i=ucp_notifications"), + 'U_MARK_ALL_NOTIFICATIONS' => mx_append_sid("{$phpbb_root_path}profile.$phpEx?i=ucp_notifications&mode=notification_list&mark=all&token=" . $notification_mark_hash), + 'U_NOTIFICATION_SETTINGS' => mx_append_sid("{$phpbb_root_path}profile.$phpEx?i=ucp_notifications&mode=notification_options"), + 'S_NOTIFICATIONS_DISPLAY' => $mx_user->data['user_active'], + + 'loops' => '', // To get loops + + // 'L_CHANGE_FONT_SIZE' => '', + 'FONT_SIZE_CHANGE' => '- -- -', + + 'S_PLUPLOAD' => false, + 'S_IN_SEARCH' => false, + 'S_DISPLAY_QUICK_LINKS' => true, + + 'S_USER_NEW_PRIVMSG' => $mx_user->data['user_new_privmsg'], + 'S_USER_UNREAD_PRIVMSG' => $mx_user->data['user_unread_privmsg'], + 'S_USER_NEW' => ($mx_user->data['user_active'] == 0) ? true : false, + + 'RECORD_USERS' => sprintf($lang['Record_online_users'], $board_config['record_online_users'], mx_create_date($board_config['default_dateformat'], $board_config['record_online_date'], $board_config['board_timezone'])), + + 'PRIVATE_MESSAGE_COUNT' => (!empty($mx_user->data['user_unread_privmsg'])) ? $mx_user->data['user_unread_privmsg'] : 0, + 'PRIVATE_MESSAGE_INFO' => $l_privmsgs_text, + 'PRIVATE_MESSAGE_INFO_UNREAD' => $l_privmsgs_text_unread, + 'PRIVATE_MESSAGE_NEW_FLAG' => $s_privmsg_new, + + 'PRIVMSG_IMG' => $icon_pm, 'L_USERNAME' => $lang['Username'], 'L_PASSWORD' => $lang['Password'], + 'L_LOGIN_LOGOUT' => $l_login_logout, 'L_LOGIN' => $lang['Login'], 'L_LOG_ME_IN' => $lang['Log_me_in'], 'L_AUTO_LOGIN' => $lang['Log_me_in'], + 'L_HOME' => $lang['MX_home'], + 'L_FORUM' => $lang['MX_forum'], 'L_INDEX' => $board_config['sitename'], + 'L_SITE_HOME' => ($board_config['sitename'] !== '') ? $board_config['sitename'] : $mx_user->lang['HOME'], 'L_REGISTER' => $lang['Register'], 'L_PROFILE' => $lang['Profile'], 'L_SEARCH' => $lang['Search'], + 'L_PRIVATEMSGS' => $mx_priv_msg, 'L_WHO_IS_ONLINE' => $lang['Who_is_Online'], 'L_MEMBERLIST' => $lang['Memberlist'], 'L_FAQ' => $lang['FAQ'], @@ -223,29 +965,153 @@ 'NAV_IMAGES_LOGIN_LOGOUT' => $images['mx_nav_login'], 'NAV_IMAGES_REGISTER' => $images['mx_nav_register'], + 'L_POST_BY_AUTHOR' => $lang['Post_by_author'], + 'L_POSTED_ON_DATE' => $lang['Posted_on_date'], + 'L_IN' => $lang['In'], + + //navbar_footer + 'U_WATCH_FORUM_LINK' => $s_watching_forum['link'], + 'U_WATCH_FORUM_TOGGLE' => $s_watching_forum['link_toggle'], + 'S_WATCH_FORUM_TITLE' => $s_watching_forum['title'], + 'S_WATCH_FORUM_TOGGLE' => $s_watching_forum['title_toggle'], + 'S_WATCHING_FORUM' => $s_watching_forum['is_watching'], + + 'U_SEARCH_SELF' => mx_append_sid("{$phpbb_root_path}search.$phpEx?search_id=egosearch"), + 'U_SEARCH_NEW' => mx_append_sid("{$phpbb_root_path}search.$phpEx?search_id=newposts"), + 'U_SEARCH_UNANSWERED' => mx_append_sid("{$phpbb_root_path}search.$phpEx?search_id=unanswered"), + 'U_SEARCH_UNREAD' => mx_append_sid("{$phpbb_root_path}search.$phpEx?search_id=unreadposts"), + 'U_SEARCH_ACTIVE_TOPICS'=> mx_append_sid("{$phpbb_root_path}search.$phpEx?search_id=active_topics"), + + 'U_INDEX' => mx_append_sid("{$phpbb_root_path}index.$phpEx"), + 'U_CANONICAL' => mx_append_sid(PORTAL_URL . "index.$phpEx"), + 'U_SITE_HOME' => (!empty($board_config['site_home_url'])) ? $board_config['site_home_url'] : mx_append_sid('./../index.'.$phpEx), + 'U_REGISTER' => mx_append_sid('profile.'.$phpEx.'?mode=register'), + 'U_PROFILE' => mx_append_sid('profile.'.$phpEx.'?mode=editprofile'), + 'U_RESTORE_PERMISSIONS' => mx_append_sid("{$phpbb_root_path}memberlist.$phpEx?mode=restore_perm"), + 'U_USER_PROFILE' => mx_get_username_string('profile_url', $mx_user->data['user_id'], $mx_user->data['username'], false), + 'U_PRIVATEMSGS' => mx_append_sid('privmsg.'.$phpEx.'?folder=inbox'), + 'U_PRIVATEMSGS_POPUP' => mx_append_sid('privmsg.'.$phpEx.'?mode=newpm'), + 'U_SEARCH' => mx_append_sid('search.'.$phpEx), + 'U_MEMBERLIST' => mx_append_sid('memberlist.'.$phpEx), + 'U_MODCP' => mx_append_sid('modcp.'.$phpEx), + 'U_MCP' => (((PORTAL_BACKEND !== 'internal') && ($phpbb_auth->acl_get('m_') || $phpbb_auth->acl_getf_global('m_'))) ? mx_append_sid("{$phpbb_root_path}modcp.$phpEx?i=main&mode=front" . $mx_user->session_id) : ''), + 'U_FAQ' => mx_append_sid('faq.'.$phpEx), + 'U_VIEWONLINE' => mx_append_sid('viewonline.'.$phpEx), + 'U_LOGIN_LOGOUT' => mx_append_sid($u_login_logout), + 'U_GROUP_CP' => mx_append_sid('groupcp.'.$phpEx), + + 'U_SEND_PASSWORD' => ($mx_user->data['user_email']) ? mx_append_sid("{$phpbb_root_path}profile.$phpEx?mode=sendpassword") : '', + + 'S_VIEWTOPIC' => mx_append_sid("viewtopic.$phpEx?" . "f=" . $forum_id . "&t=" . $topic_id), + 'S_VIEWFORUM' => mx_append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"), + 'S_IN_MCP' => defined('IN_MCP') ? true : false, + 'S_IN_PROFILE' => defined('IN_PROFILE') ? true : false, + 'S_IN_UCP' => defined('IN_UCP') ? true : false, + + 'U_CONTACT_US' => ($mx_user->data['user_last_privmsg']) ? mx_append_sid("{$phpbb_root_path}memberlist.$phpEx?mode=contactadmin") : '', + 'U_TEAM' => ($mx_user->data['user_id'] != ANONYMOUS && (PORTAL_BACKEND !== 'internal') && $phpbb_auth->acl_get('u_viewprofile')) ? mx_append_sid("{$phpbb_root_path}memberlist.$phpEx?mode=team") : '', + 'U_TERMS_USE' => mx_append_sid("{$phpbb_root_path}profile.$phpEx?mode=terms"), + 'U_PRIVACY' => mx_append_sid("{$phpbb_root_path}profile.$phpEx?mode=privacy"), + 'U_RESTORE_PERMISSIONS' => ($mx_user->data['user_perm_from'] && (PORTAL_BACKEND !== 'internal') && $phpbb_auth->acl_get('a_switchperm')) ? mx_append_sid("{$phpbb_root_path}profile.$phpEx?mode=restore_perm") : '', + 'U_FEED' => '', + 'S_CONTENT_DIRECTION' => $lang['DIRECTION'] ? $lang['DIRECTION'] : $mx_user->lang['DIRECTION'], - 'S_CONTENT_DIR_LEFT' => $lang['LEFT'], - 'S_CONTENT_DIR_RIGHT' => $lang['RIGHT'], 'S_CONTENT_FLOW_BEGIN' => ($lang['DIRECTION'] == 'ltr') ? 'left' : 'right', 'S_CONTENT_FLOW_END' => ($lang['DIRECTION'] == 'ltr') ? 'right' : 'left', 'S_CONTENT_ENCODING' => $lang['ENCODING'] ? $lang['ENCODING'] : 'UTF-8', - - 'S_USER_LANG' => isset($lang['USER_LANG']) ? $lang['USER_LANG'] : $mx_user->encode_lang($board_config['default_lang']), - 'S_TIMEZONE' => sprintf($lang['All_times'], $l_timezone), - 'S_LOGIN_ACTION' => mx_append_sid(PORTAL_URL . 'login.'.$phpEx), - 'S_ADMIN_AUTH' => $admin, + 'S_CONTENT_DIR_LEFT' => $lang['LEFT'], + 'S_CONTENT_DIR_RIGHT' => $lang['RIGHT'], + + 'S_LOGIN_ACTION' => mx_append_sid('login.'.$phpEx), + 'S_LOGIN_REDIRECT' => $phpBB2->build_url(), + 'S_ADMIN_AUTH' => $admin, //Login page or box constants + 'S_USER_LOGGED_IN' => ($mx_user->data['user_id'] != ANONYMOUS) ? true : false, 'S_AUTOLOGIN_ENABLED' => ($board_config['allow_autologin']) ? true : false, - 'S_BOARD_DISABLED' => ($board_config['portal_status']) ? true : false, + 'S_BOARD_DISABLED' => ($portal_config['portal_status']) ? false : true, + 'S_USERNAME' => !empty($mx_user->data['username']) ? $mx_user->data['username'] : 'Anonymous', + 'S_REGISTERED_USER' => (!empty($mx_user->data['user_active'])) ? true : false, + 'S_IS_BOT' => (!empty($mx_user->data['is_bot'])) ? true : false, + 'S_USER_LANG' => $user_lang, + 'S_USER_BROWSER' => (isset($mx_user->data['session_browser'])) ? $mx_user->data['session_browser'] : $mx_user->lang('UNKNOWN_BROWSER'), + + 'S_LOAD_UNREADS' => ($mx_user->data['user_id'] != ANONYMOUS) ? true : false, + 'S_TIMEZONE' => sprintf($lang['All_times'], $l_timezone), + 'S_DISPLAY_ONLINE_LIST' => ($l_online_time) ? 1 : 0, + 'S_DISPLAY_SEARCH' => (isset($auth) ? ($mx_user->data['user_id'] != ANONYMOUS) : 1), + 'S_DISPLAY_PM' => ($mx_user->data['user_id'] != ANONYMOUS) ? true : false, + 'S_DISPLAY_MEMBERLIST' => (isset($auth)) ? ($mx_user->data['user_id'] != ANONYMOUS) : 0, + 'S_NEW_PM' => ($s_privmsg_new) ? 1 : 0, + 'S_REGISTER_ENABLED' => ($board_config['require_activation'] != USER_ACTIVATION_DISABLE) ? true : false, + 'S_FORUM_ID' => $forum_id, + 'S_TOPIC_ID ' => $topic_id, + + 'S_SIMPLE_MESSAGE' => false, + + //+ MX-Publisher + 'U_PORTAL_ROOT_PATH' => PORTAL_URL, + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, + + 'SID' => !empty($SID) ? $SID : $mx_user->session_id, + '_SID' => !empty($_GET['sid']) ? $_GET['sid'] : $mx_user->session_id, + 'SESSION_ID' => !empty($mx_user->data['session_id']) ? $mx_user->data['session_id'] : (isset($_COOKIE[$board_config['cookie_name'] . '_sid'] ) ? $_COOKIE[$board_config['cookie_name'] . '_sid'] : ''), + 'ROOT_PATH' => $web_path, + 'FULL_SITE_PATH' => $web_path, + 'CMS_PAGE_HOME' => PORTAL_URL, + 'BOARD_URL' => PORTAL_URL, + 'PHPBB_VERSION' => PHPBB_VERSION, + 'PHPBB_MAJOR' => $phpbb_major, + 'S_COOKIE_NOTICE' => !empty($board_config['cookie_name']), + + 'T_ASSETS_VERSION' => $phpbb_major, + 'T_ASSETS_PATH' => "{$web_path}assets", + 'T_THEME_PATH' => "{$web_path}templates/" . rawurlencode($theme['template_name'] ? $theme['template_name'] : str_replace('.css', '', $theme['head_stylesheet'])) . '/theme', + 'T_TEMPLATE_PATH' => "{$web_path}templates/" . rawurlencode($theme['template_name']) . '', + 'T_SUPER_TEMPLATE_PATH' => "{$web_path}templates/" . rawurlencode($theme['template_name']) . '/template', + + 'T_IMAGES_PATH' => "{$web_path}images/", + 'T_SMILIES_PATH' => "{$web_path}{$board_config['smilies_path']}/", + 'T_AVATAR_GALLERY_PATH' => "{$web_path}{$board_config['avatar_gallery_path']}/", + + 'T_ICONS_PATH' => !empty($board_config['icons_path']) ? "{$web_path}{$board_config['icons_path']}/" : $web_path.'/images/icons/', + 'T_RANKS_PATH' => !empty($board_config['ranks_path']) ? "{$web_path}{$board_config['ranks_path']}/" : $web_path.'/images/ranks/', + 'T_UPLOAD_PATH' => !empty($board_config['upload_path']) ? "{$web_path}{$board_config['upload_path']}/" : $web_path.'/cache/', + + 'T_STYLESHEET_LINK' => "{$web_path}templates/" . rawurlencode($theme['template_name'] ? $theme['template_name'] : str_replace('.css', '', $theme['head_stylesheet'])) . '/theme/stylesheet.css', + 'T_STYLESHEET_LANG_LINK'=> "{$web_path}templates/" . rawurlencode($theme['template_name'] ? $theme['template_name'] : str_replace('.css', '', $theme['head_stylesheet'])) . '/theme/images/lang_' . $default_lang . '/stylesheet.css', + 'T_FONT_AWESOME_LINK' => "{$web_path}assets/css/font-awesome.min.css", + + 'T_JQUERY_LINK' => !empty($board_config['allow_cdn']) && !empty($board_config['load_jquery_url']) ? $board_config['load_jquery_url'] : "{$web_path}assets/javascript/jquery.min.js?assets_version=" . $phpbb_major, + 'S_ALLOW_CDN' => !empty($board_config['allow_cdn']), + + + 'T_THEME_NAME' => rawurlencode($theme['template_name']), + 'T_THEME_LANG_NAME' => $mx_user->data['user_lang'], + 'T_TEMPLATE_NAME' => $theme['template_name'], + 'T_SUPER_TEMPLATE_NAME' => rawurlencode($theme['template_name']), + 'T_IMAGES' => 'images', + 'T_SMILIES' => $board_config['smilies_path'], + 'T_AVATAR_GALLERY' => $board_config['avatar_gallery_path'], + + 'T_ICONS_PATH' => !empty($board_config['icons_path']) ? $board_config['icons_path'] : '/images/icons/', + 'T_RANKS_PATH' => !empty($board_config['ranks_path']) ? $board_config['ranks_path'] : '/images/ranks/', + 'T_UPLOAD_PATH' => !empty($board_config['upload_path']) ? $board_config['upload_path'] : '/cache/', + + 'SITE_LOGO_IMG' => ($theme['template_name'] == 'subSilver') ? 'logo_phpBB.gif' : 'site_logo.gif', + //To Do - configurable in AdminCP //Display full login box with autologin option 'S_DISPLAY_FULL_LOGIN' => true, //Old phpBB2 Backend Contant - 'IS_ADMIN' => $admin, - + 'IS_ADMIN' => $admin, + + //phpBB3 Backend Contant + 'S_ADMIN_AUTH' => $admin, + // These theme variables are not used for MX-Publisher, since MX-Publisher require a theme.css file 'T_HEAD_STYLESHEET' => isset($mx_user->theme['head_stylesheet']) ? $mx_user->theme['head_stylesheet'] : 'stylesheet.css', 'T_BODY_BACKGROUND' => isset($mx_user->theme['body_background']) ? $mx_user->theme['body_background'] : '', @@ -286,17 +1152,15 @@ 'T_SPAN_CLASS2' => isset($mx_user->theme['span_class2']) ? $mx_user->theme['span_class2'] : '', 'T_SPAN_CLASS3' => isset($mx_user->theme['span_class3']) ? $mx_user->theme['span_class3'] : '', - //+ MX-Publisher - 'U_PORTAL_ROOT_PATH' => PORTAL_URL, - 'U_PHPBB_ROOT_PATH' => PHPBB_URL, - 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, - 'L_HOME' => $lang['MX_home'], + //'L_HOME' => $lang['Home Page'], + //'L_FORUM' => $lang['Forum'], 'L_FORUM' => $lang['MX_forum'], 'U_INDEX_FORUM' => mx_append_sid(PORTAL_URL . 'index.' . $phpEx . '?page=2'), 'U_INDEX' => mx_append_sid(PORTAL_URL . 'index.' . $phpEx), 'U_SEARCH_SITE' => mx_append_sid(PORTAL_URL . 'index.' . $phpEx . '?page=' . $search_page_id_site . '&mode=results&search_terms=all'), + 'U_SEARCH_KB' => mx_append_sid(PORTAL_URL . 'index.' . $phpEx . '?page=' . $search_page_id_kb . '&mode=search&search_terms=all'), 'U_SEARCH_PAFILEDB' => mx_append_sid(PORTAL_URL . 'index.' . $phpEx . '?page=' . $search_page_id_pafiledb . '&action=search&search_terms=all'), @@ -307,23 +1171,32 @@ 'L_SEARCH_PAFILEDB' => $option_search_pafiledb, 'L_SEARCH_GOOGLE' => $option_search_google, - 'T_PHPBB_STYLESHEET' => $mx_user->theme['head_stylesheet'], - 'T_STYLESHEET_LINK' => (!isset($mx_user->theme['theme_storedb'])) ? "{$phpbb_root_path}styles/" . $mx_user->template_name . '/theme/stylesheet.css' : "{$phpbb_root_path}style.$phpEx?sid=$mx_user->session_id&id=" . $mx_user->theme['style_id'] . '&lang=' . $mx_user->encode_lang($board_config['default_lang']), - 'T_MXBB_STYLESHEET' => isset($mx_user->theme['head_stylesheet']) ? $mx_user->theme['head_stylesheet'] : $mx_user->template_name.'.css', + 'T_PHPBB_STYLESHEET' => (isset($mx_user->theme['head_stylesheet']) ? $mx_user->theme['head_stylesheet'] : $mx_user->template_name . ".css"), + 'T_STYLESHEET_LINK' => (!file_exists($mx_root_path . "templates/" . $mx_user->template_name . "/theme/stylesheet.css") ? "{$web_path}templates/" . $mx_user->template_name . '/'.$mx_user->template_name.'.css' : "{$web_path}templates/" . $mx_user->template_name . '/theme/stylesheet.css'), //: "{$phpbb_root_path}style.$phpEx?sid=$mx_user->session_id&id=" . $mx_user->theme['style_id'] . '&lang=' . $mx_user->encode_lang($board_config['default_lang']), + 'T_MXBB_STYLESHEET' => isset($mx_user->theme['head_stylesheet']) ? (strpos($mx_user->theme['head_stylesheet'], '.') ? $mx_user->theme['head_stylesheet'] : $mx_user->theme['head_stylesheet'].'.css') : $mx_user->template_name.'.css', 'T_GECKO_STYLESHEET' => 'gecko.css', - + + //+ MX-Publisher 'MX_ADDITIONAL_CSS_FILES' => $mx_addional_css_files, 'MX_ADDITIONAL_JS_FILES' => $mx_addional_js_files, 'MX_ADDITIONAL_HEADER_TEXT' => $mx_addional_header_text, 'MX_ICON_CSS' => isset($images['mx_graphics']['icon_style']) ? $images['mx_graphics']['icon_style'] : '', //- MX-Publisher - + + 'U_MX_SHARED_FILES_PATH' => "{$web_path}modules/mx_shared/", + + 'T_STYLESWITCHER_JS' => (!file_exists($mx_root_path . "modules/mx_shared/phpbb/styleswitcher.js") ? "{$web_path}templates/" . $mx_user->template_name . '/styleswitcher.js' : "{$web_path}modules/mx_shared/phpbb/styleswitcher.js"), + 'T_FORUM_FN_JS' => (!file_exists($mx_root_path . "modules/mx_shared/phpbb/forum_fn.js") ? "{$web_path}templates/" . $mx_user->template_name . '/forum_fn.js' : "{$web_path}modules/mx_shared/phpbb/forum_fn.js"), + 'T_EDITOR_JS' => (!file_exists($mx_root_path . "modules/mx_shared/phpbb/editor.js") ? "{$web_path}templates/" . $mx_user->template_name . '/editor.js' : "{$web_path}modules/mx_shared/phpbb/editor.js"), + 'T_AJAX_JS' => (!file_exists($mx_root_path . "modules/mx_shared/phpbb/ajax.js") ? "{$web_path}templates/" . $mx_user->template_name . '/ajax.js' : "{$web_path}modules/mx_shared/phpbb/ajax.js"), + 'T_TIMEZONE_JS' => (!file_exists($mx_root_path . "modules/mx_shared/phpbb/timezone.js") ? "{$web_path}templates/" . $mx_user->template_name . '/timezone.js' : "{$web_path}modules/mx_shared/phpbb/timezone.js"), + 'NAV_LINKS' => $nav_links_html, // swithes for logged in users? - 'USERNAME' => ($admin) ? $userdata['username'] : '', - 'USER_LOGGED_IN' => $userdata['session_logged_in'], - 'USER_LOGGED_OUT' => !$userdata['session_logged_in'], + 'USERNAME' => ($admin) ? $mx_user->data['username'] : '', + 'USER_LOGGED_IN' => $mx_user->data['session_logged_in'], + 'USER_LOGGED_OUT' => !$mx_user->data['session_logged_in'], //This phpBB3 features are disbled for Admins in MXP3 for now and default vaues used //To make use of this features Admins can login direct in forums @@ -338,40 +1211,58 @@ // Additional css for gecko browsers 'GECKO' => strstr($useragent, 'Gecko'), + + 'S_ENABLE_FEEDS' => false, + 'S_ENABLE_FEFILES_OVERALL' => false, + 'S_ENABLE_FEFILES_FORUMS' => false, + 'S_ENABLE_FEFILES_TOPICS' => false, + 'S_ENABLE_FEFILES_TOPICS_ACTIVE' => false, + 'S_ENABLE_FEFILES_NEWS' => false, + + 'L_ACP' => $lang['Admin_panel'], + 'U_ACP' => ($mx_user->data['user_level'] == ADMIN) ? "{$mx_root_path}admin/index.$phpEx?sid=" . $mx_user->session_id : $admin_link )); // Definitions of main navigation links $mx_backend->page_header('generate_nav_links'); +// // Navigation Menu in overall_header +// if ($mx_page->auth_view || $mx_page->auth_mod) { if (!is_object($mx_block)) { $mx_block = new mx_block(); } - + $block_id = $mx_page->page_navigation_block; if(!empty($block_id) ) { define('MX_OVERALL_NAVIGATION', true); - $mx_block->init( $block_id ); + $mx_block->init($block_id); + + // // Define $module_root_path, to be used within blocks $mx_module_path = $module_root_path; $module_root_path = $mx_root_path . $mx_block->module_root_path; - - $template = new mx_Template($mx_root_path . 'templates/'. $mx_user->theme['template_name']); - + + $template = new mx_Template($mx_root_path . 'templates/'. $theme['template_name']); + + // // Include block file and cache output + // ob_start(); @include($module_root_path . $mx_block->block_file); $overall_navigation_menu = ob_get_contents(); ob_end_clean(); - + + // // Output Block contents + // $layouttemplate->assign_vars(array( 'OVERALL_NAVIGATION' => $overall_navigation_menu) ); diff --git a/includes/page_tail.php b/includes/page_tail.php index 5a7fffaa..3981baec 100644 --- a/includes/page_tail.php +++ b/includes/page_tail.php @@ -40,6 +40,11 @@ )); } +if( !is_object($phpBB2)) +{ + $phpBB2 = new phpBB2(); +} + // // Page last updated (by) // @@ -47,11 +52,11 @@ { $editor_name_tmp = mx_get_userdata($mx_page->last_updated_by); $editor_name = $editor_name_tmp['username']; - $edit_time = phpBB2::create_date( $board_config['default_dateformat'], $mx_page->last_updated, $board_config['board_timezone'] ); + $edit_time = $phpBB2->create_date( $board_config['default_dateformat'], $mx_page->last_updated, $board_config['board_timezone'] ); $template->assign_block_vars('page_last_updated', array( 'L_PAGE_UPDATED' => isset($lang['Page_updated_date']) ? $lang['Page_updated_date'] : 'Page Updated', - 'NAME' => $userdata['user_level'] == ADMIN ? $lang['Page_updated_by'] . $editor_name : '', + 'NAME' => $mx_user->data['user_level'] == ADMIN ? $lang['Page_updated_by'] . ' ' . $editor_name : '', 'TIME' => $edit_time, )); } @@ -102,10 +107,16 @@ } } +if( !is_object($mx_backend)) +{ + $mx_backend = new mx_backend(); +} + $mx_backend->page_tail('generate_backend_version'); $template->assign_vars(array( 'U_PORTAL_ROOT_PATH' => PORTAL_URL, + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, 'MXBB_EXTRA' => $mxbb_footer_text, 'MXBB_EXTRA_URL' => $mxbb_footer_text_url, @@ -115,6 +126,12 @@ 'ADMIN_LINK' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? '' . $l_acp . '
' : '', 'L_ACP' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? $l_acp : '', 'U_ACP' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? $u_acp : '', + 'U_CONTACT_US' => ($mx_user->data['user_last_privmsg']) ? mx_append_sid("{$phpbb_root_path}memberlist.$phpEx?mode=contactadmin") : '', + + 'U_TEAM' => ($mx_user->data['user_id'] != ANONYMOUS && (PORTAL_BACKEND !== 'internal') && $phpbb_auth->acl_get('u_viewprofile')) ? mx_append_sid("{$phpbb_root_path}memberlist.$phpEx?mode=team") : '', + 'U_TERMS_USE' => mx_append_sid("{$phpbb_root_path}profile.$phpEx?mode=terms"), + 'U_PRIVACY' => mx_append_sid("{$phpbb_root_path}profile.$phpEx?mode=privacy"), + 'MX_ADDITIONAL_FOOTER_TEXT' => $mx_addional_footer_text, 'EXECUTION_STATS' => (defined('DEBUG')) ? $debug_output : '' )); diff --git a/includes/sessions/ascraeus/core.php b/includes/sessions/ascraeus/core.php index 3ea67176..9cc9be15 100644 --- a/includes/sessions/ascraeus/core.php +++ b/includes/sessions/ascraeus/core.php @@ -194,7 +194,7 @@ function validate_backend() global $table_prefix, $phpEx, $tplEx; $table_prefix = false; - + $tplEx = 'html'; // Define relative path to phpBB, and validate $phpbb_root_path = $mx_root_path . $portal_config['portal_backend_path']; str_replace("//", "/", $phpbb_root_path); @@ -206,9 +206,6 @@ function validate_backend() die('Configuration file (config) ' . $phpbb_root_path . "config.$phpEx" . ' couldn\'t be opened.'); } - // Define backend template extension - $tplEx = 'html'; - // Validate db connection for backend $_result = $db->sql_query("SELECT config_value from " . $table_prefix . "config WHERE config_name = 'cookie_domain'"); $portal_backend_valid_db = $db->sql_numrows($_result) != 0; @@ -246,7 +243,10 @@ function setup_backend() $server_url_phpbb = $server_protocol . $server_name . $server_port . $script_name_phpbb; define('PHPBB_URL', $server_url_phpbb); - + + // Define backend template extension + $tplEx = 'html'; + if (!defined('TPL_EXT')) define('TPL_EXT', $tplEx); // // Now sync Configs // In phpBB mode, we rely on native phpBB configs, thus we need to sync mxp and phpbb settings @@ -707,34 +707,32 @@ function page_tail($mode = false) } } + /** - * Enter description here... + * obtain_phpbb_config * * @access public * @param boolean $use_cache * @return unknown */ - function obtain_phpbb_config($use_cache = true) + public function obtain_forum_config() { - global $db, $phpbb_root_path, $table_prefix, $mx_cache, $phpEx; - - if (($config = $mx_cache->get('phpbb_config')) && ($use_cache) ) + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) { - return $config; - } - else - { - if (!defined('CONFIG_TABLE')) - { - global $table_prefix, $mx_root_path; + global $table_prefix, $mx_root_path; - require $mx_root_path. "includes/sessions/phpbb3/constants.$phpEx"; - } - - $sql = "SELECT * - FROM " . CONFIG_TABLE; - - if ( !( $result = $db->sql_query( $sql ) ) ) + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + if (($mx_cache->get('phpbb_config')) === false) + { + $config = $cached_config = array(); + + $sql = 'SELECT config_name, config_value, is_dynamic + FROM ' . CONFIG_TABLE; + if (!($result = $db->sql_query($sql))) { if (!function_exists('mx_message_die')) { @@ -745,26 +743,250 @@ function obtain_phpbb_config($use_cache = true) mx_message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); } } + + while ($row = $db->sql_fetchrow($result)) + { + if (!$row['is_dynamic']) + { + $cached_config[$row['config_name']] = $row['config_value']; + } + + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + $mx_cache->put('phpbb_config', $cached_config); + } + else + { + $sql = 'SELECT config_name, config_value + FROM ' . CONFIG_TABLE . ' + WHERE is_dynamic = 1'; + $result = $db->sql_query($sql); - while ( $row = $db->sql_fetchrow($result) ) + while ($row = $db->sql_fetchrow($result)) { $config[$row['config_name']] = $row['config_value']; } $db->sql_freeresult($result); + } + + return $config; + } + + /** + * Set phpbb config values + * + * @param unknown_type $config_name + * @param unknown_type $config_value + */ + public function set_forum_config($key, $new_value, $use_cache = false) + { + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) + { + global $table_prefix, $mx_root_path; + + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + // Read out config values + $config = $this->obtain_phpbb_config(); + $old_value = !isset($config[$key]) ? $config[$key] : false; + $use_cache = (($key == 'comments_pagination') || ($key == 'pagination')) ? true : false; + + $sql = 'UPDATE ' . CONFIG_TABLE . " + SET config_value = '" . $db->sql_escape($new_value) . "' + WHERE config_name = '" . $db->sql_escape($key) . "'"; + + if ($old_value !== false) + { + $sql .= " AND config_value = '" . $db->sql_escape($old_value) . "'"; + } + + $db->sql_query($sql); + + if (!$db->sql_affectedrows() && isset($config[$key])) + { + return false; + } + + if (!isset($config[$key])) + { + $sql = 'INSERT INTO ' . CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'config_name' => $key, + 'config_value' => $new_value)), + 'is_dynamic' => ($use_cache) ? 0 : 1)); + $db->sql_query($sql); + } + + $config[$key] = $new_value; + + + if ($use_cache) + { + $mx_cache->destroy('config'); + $mx_cache->put('config', $config); + } + + return true; + } + + /** + * Get MX-Publisher config data + * + * @access public + * @return unknown + */ + public function obtain_portal_config($use_cache = true) + { + global $db, $mx_cache; + + if ( ($portal_config = $mx_cache->get('mx_config')) && ($use_cache) ) + { + return $portal_config; + } + else + { + $sql = "SELECT * + FROM " . PORTAL_TABLE . " + WHERE portal_id = '1'"; - if ($use_cache) + if ( !($result = $db->sql_query($sql)) ) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query portal configuration, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query portal configuration', '', __LINE__, __FILE__, $sql ); + } + } + $row = $db->sql_fetchrow($result); + foreach ($row as $config_name => $config_value) { - $mx_cache->put('phpbb_config', $config); + $portal_config[$config_name] = trim($config_value); } + $db->sql_freeresult($result); + $mx_cache->put('mx_config', $portal_config); - return ( $config ); + return ($portal_config); } } + + /** + * Set config value. Creates missing config entry. + * + */ + function set_portal_config($key, $new_value) + { + global $db, $mx_cache, $portal_config; + + // Read out config values + $portal_config = $this->obtain_portal_config(); + + $new[$key] = $new_value; + + $sql = "UPDATE " . PORTAL_TABLE . " SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)); + + if( !($db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($portal_config[$key])) + { + $sql = 'INSERT INTO ' . PORTAL_TABLE . ' ' . $db->sql_build_array('INSERT', array( + $db->sql_escape($key) => $db->sql_escape($new_value))); + $db->sql_query($sql); + } + $portal_config[$key] = $new_value; + + $mx_cache->destroy('mx_config'); + } + + /** + * Get userdata + * + * Get Userdata, $mx_user can be username or user_id. If force_str is true, the username will be forced. + * Cached sql, since this function is used for every block. + * + * @param unknown_type $mx_user id or name + * @param boolean $force_str force clean_username + * @return array + */ + function get_userdata($mxuser, $force_str = false) + { + global $db, $phpBB2; + + if (!is_numeric($mxuser) || $force_str) + { + $mx_user = $phpBB2->phpbb_clean_username($mxuser); + } + else + { + $mx_user = intval($mxuser); + } + + $sql = "SELECT * + FROM " . USERS_TABLE . " + WHERE "; + $sql .= ((is_integer($mxuser)) ? "user_id = $mxuser" : "username = '" . str_replace("\'", "''", $mxuser) . "'" ) . " AND user_id <> " . ANONYMOUS; + if (!($result = $db->sql_query($sql, 120))) + { + if (!function_exists('mx_message_die')) + { + die("Tried obtaining data for a non-existent user. Function mx_backend->get_userdata()"); + } + else + { + mx_message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql); + } + } + $return = ($row = $db->sql_fetchrow($result)) ? $row : false; + /* + foreach ($row as $user_key => $user_value) + { + $userdata[$user_key] = trim($user_value); + } + */ + $db->sql_freeresult($result); + //return ($userdata); + return $return; + } + + /** + * Set user data value. + * + */ + function set_userdata($key, $new_value) + { + global $db, $mx_user; + + $new[$key] = $new_value; + + $sql = "UPDATE " . USERS_TABLE . " + SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)) . " + WHERE user_id = '" . $mx_user->data['user_id'] . "'"; + if (!($db->sql_query($sql))) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($mx_user->data[$key])) + { + mx_message_die(GENERAL_ERROR, "Wrong Backend? Adding missing entry key to update MXP configuration is not supported ATM.", "", __LINE__, __FILE__, $sql); + } + $mx_user->data[$key] = $new_value; + } + /** * Obtain ranks */ - function obtain_ranks() + public function obtain_ranks() { global $mx_cache; @@ -803,7 +1025,7 @@ function obtain_ranks() return $ranks; } - + /** * Obtain allowed extensions * diff --git a/includes/sessions/ascraeus/functions.php b/includes/sessions/ascraeus/functions.php index 62fe4a4e..ef8c96cb 100644 --- a/includes/sessions/ascraeus/functions.php +++ b/includes/sessions/ascraeus/functions.php @@ -237,6 +237,7 @@ function mx_get_username_string($mode, $user_id, $username, $username_colour = ' switch ($mode) { + case 'profile_url': case 'profile': return $profile_url; break; diff --git a/includes/sessions/internal/bbcode.php b/includes/sessions/internal/bbcode.php index 34511311..0caa6c60 100644 --- a/includes/sessions/internal/bbcode.php +++ b/includes/sessions/internal/bbcode.php @@ -2,7 +2,7 @@ /** * * @package Functions_phpBB -* @version $Id: bbcode.php,v 1.4 2014/05/09 07:52:03 orynider Exp $ +* @version $Id: bbcode.php,v 1.5 2013/09/04 04:32:35 orynider Exp $ * @copyright (c) 2002-2008 MX-Publisher Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * @link http://mxpcms.sourceforge.net/ @@ -20,7 +20,9 @@ */ // Now load some bbcodes, to be extended for this backend (see below) -require($mx_root_path . 'includes/mx_functions_bbcode.' . $phpEx); // BBCode associated functions +// +include_once($mx_root_path . 'includes/mx_functions_bbcode.' . $phpEx); // BBCode associated functions + /** * MXP BBcodes @@ -58,7 +60,7 @@ class mx_bbcode extends bbcode_base */ function mx_bbcode($bitfield = '') { - global $board_config, $phpbb_root_path; + global $board_config, $mx_root_path, $phpbb_root_path; if ($bitfield) { @@ -66,9 +68,9 @@ function mx_bbcode($bitfield = '') $this->bbcode_cache_init(); } - $this->smiley_path_url = PHPBB_URL; //change this to PORTAL_URL when shared folder will be removed - $this->smiley_root_path = $phpbb_root_path; //same here - $board_config['smilies_path'] = str_replace("smiles", "smilies", $board_config['smilies_path']); //Added by OryNider + $this->smiley_path_url = PORTAL_URL . 'includes/shared/phpbb2/'; //change this to PORTAL_URL when shared folder will be removed + $this->smiley_root_path = $mx_root_path . 'includes/shared/phpbb2/'; //same here + $board_config['smilies_path'] = str_replace("smilies", "smiles", $board_config['smilies_path']); //Added by OryNider $this->smilies_path = str_replace("//", "/", $board_config['smilies_path']); } @@ -82,21 +84,47 @@ function mx_bbcode($bitfield = '') * @param boolean $smilies_on * @return string */ - function decode($bbtext, $bbcode_uid, $smilies_on = true) + function decode($mytext, $bbcode_uid, $smilies_on = true, $bbcode_bitfield = false) { global $mx_root_path, $phpbb_root_path, $phpEx, $mx_page; - - $mytext = stripslashes($bbtext); + + if (!$mytext) + { + return ''; + } + + $mytext = mx_censor_text($mytext); + + //Do some checks + $phpbb3_text = $bbcode_bitfield ? true : false; + $bbcode_bitfield = ($bbcode_bitfield && (strlen($bbcode_bitfield) < 2)) ? false : $bbcode_bitfield; + if (!empty($bbcode_uid)) { - $mytext = $this->bbencode_second_pass($mytext, $bbcode_uid); + $mytext = $this->bbencode_second_pass($mytext, $bbcode_uid, $bbcode_bitfield); + } + + $mytext = str_replace(array("\n", "\r"), array('
', "\n"), $mytext); + $mytext = $this->bbcode_nl2br($mytext); + + //$mytext = smiley_text($mytext, !($flags & OPTION_FLAG_SMILIES)); + if ($smilies_on && $phpbb3_text) + { + $mytext = $this->smilies3_pass($mytext); } - if ($smilies_on) + else if ($smilies_on) { $mytext = $this->smilies_pass($mytext); } - $mytext = str_replace("\n", "\n
\n", $mytext); - return $this->make_clickable($mytext); + + //$mytext = str_replace("\n", "\n
\n", $mytext); + + if ($mytext != '') + { + $mytext = $this->make_clickable($mytext); + } + + return $mytext; } // @@ -105,8 +133,15 @@ function decode($bbtext, $bbcode_uid, $smilies_on = true) // function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid = 0) { - global $board_config, $html_entities_match, $html_entities_replace; + global $board_config, $mx_bbcode, $mx_root_path, $phpEx, $html_entities_match, $html_entities_replace; + // + // Instantiate the mx_text class + // + include_once($mx_root_path . 'includes/mx_functions_tools.'.$phpEx); + $mx_text = new mx_text(); + $mx_text->init($html_on, $bbcode_on, $smile_on); + // // Clean up the message // @@ -129,7 +164,7 @@ function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid foreach ($message_split as $part) { $tag = array(array_shift($matches[0]), array_shift($matches[1]), array_shift($matches[2])); - $message .= preg_replace($html_entities_match, $html_entities_replace, $part) . clean_html($tag); + $message .= preg_replace($html_entities_match, $html_entities_replace, $part) . $mx_text->clean_html($tag); } $message = addslashes($message); @@ -147,7 +182,703 @@ function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid return $message; } + + /** + * Second pass bbcodes + */ + function bbcode_second_pass(&$message, $bbcode_uid = '', $bbcode_bitfield = false) + { + if ($bbcode_uid) + { + $this->bbcode_uid = $bbcode_uid; + } + + if ($bbcode_bitfield !== false) + { + //$this->bbcode_bitfield = $bbcode_bitfield; + + // Init those added with a new bbcode_bitfield (already stored codes will not get parsed again) + $this->bbcode_cache_init(); + } + + //We are called from a Core block or non phpBB3, this should never be riched only when function is called direct + if (!$this->bbcode_bitfield) + { + // Remove the uid from tags that have not been transformed into HTML + /** / + if ($this->bbcode_uid) + { + $message = str_replace(':' . $this->bbcode_uid, '', $message); + } + /**/ + return; + } + + $str = array('search' => array(), 'replace' => array()); + $preg = array('search' => array(), 'replace' => array()); + + $bitfield = new bitfield($this->bbcode_bitfield); + $bbcodes_set = $bitfield->get_all_set(); + + $undid_bbcode_specialchars = false; + foreach ($bbcodes_set as $bbcode_id) + { + if (!empty($this->bbcode_cache[$bbcode_id])) + { + foreach ($this->bbcode_cache[$bbcode_id] as $type => $array) + { + foreach ($array as $search => $replace) + { + ${$type}['search'][] = str_replace('$uid', $this->bbcode_uid, $search); + ${$type}['replace'][] = $replace; + } + + if (sizeof($str['search'])) + { + $message = str_replace($str['search'], $str['replace'], $message); + $str = array('search' => array(), 'replace' => array()); + } + + if (sizeof($preg['search'])) + { + // we need to turn the entities back into their original form to allow the + // search patterns to work properly + if (!$undid_bbcode_specialchars) + { + $message = str_replace(array(':', '.'), array(':', '.'), $message); + $undid_bbcode_specialchars = true; + } + + $message = preg_replace($preg['search'], $preg['replace'], $message); + $preg = array('search' => array(), 'replace' => array()); + } + } + } + } + + // Remove the uid from tags that have not been transformed into HTML + $message = str_replace(':' . $this->bbcode_uid, '', $message); + } + /** + * Return bbcode template + */ + function bbcode_tpl($tpl_name, $bbcode_id = -1, $skip_bitfield_check = false) + { + static $bbcode_hardtpl = array(); + if (empty($bbcode_hardtpl)) + { + global $mx_user; + + $bbcode_hardtpl = array( + 'b_open' => '', + 'b_close' => '', + 'i_open' => '', + 'i_close' => '', + 'ipaper_open' => '', + 'ipaper_close' => '', + 'u_open' => '', + 'u_close' => '', + 'img' => '
' . $mx_user->lang['IMAGE'] . '
', + 'size' => '$2', + 'color' => '$2', + 'email' => '$2' + ); + } + + if ($bbcode_id != -1 && !$skip_bitfield_check && !$this->template_bitfield->get($bbcode_id)) + { + return (isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false; + } + + if (empty($this->bbcode_template)) + { + if (($tpl = file_get_contents($this->template_filename)) === false) + { + trigger_error('Could not load bbcode template', E_USER_ERROR); + } + + // replace \ with \\ and then ' with \'. + $tpl = str_replace('\\', '\\\\', $tpl); + $tpl = str_replace("'", "\'", $tpl); + + // strip newlines and indent + $tpl = preg_replace("/\n[\n\r\s\t]*/", '', $tpl); + + // Turn template blocks into PHP assignment statements for the values of $bbcode_tpl.. + $this->bbcode_template = array(); + + $matches = preg_match_all('#(.*?)#', $tpl, $match); + + for ($i = 0; $i < $matches; $i++) + { + if (empty($match[1][$i])) + { + continue; + } + + $this->bbcode_template[$match[1][$i]] = $this->bbcode_tpl_replace($match[1][$i], $match[2][$i]); + } + } + + + return (isset($this->bbcode_template[$tpl_name])) ? $this->bbcode_template[$tpl_name] : ((isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false); + } + + /** + * Return bbcode template replacement + */ + function bbcode_tpl_replace($tpl_name, $tpl) + { + global $mx_user; + + static $replacements = array( + 'quote_username_open' => array('{USERNAME}' => '$1'), + 'color' => array('{COLOR}' => '$1', '{TEXT}' => '$2'), + 'size' => array('{SIZE}' => '$1', '{TEXT}' => '$2'), + 'img' => array('{URL}' => '$1'), + 'flash' => array('{WIDTH}' => '$1', '{HEIGHT}' => '$2', '{URL}' => '$3'), + 'scribd' => array('{WIDTH}' => '$1', '{HEIGHT}' => '$2', '{SCRIBDURL}' => '$3'), + 'youtube' => array('{YOUTUBEID}' => '$1', '{YOUTUBELINK}' => '$2', '{WIDTH}' => '$3', '{HEIGHT}' => '$4'), + 'ipaper' => array('{IPAPERID}' => '$1', '{IPAPERKEY}' => '$2', '{WIDTH}' => '$3', '{HEIGHT}' => '$4', '{IPAPERLINK}' => '$5'), + 'ipaper_open' => array('{IPAPERCODE}' => '$1'), + 'url' => array('{URL}' => '$1', '{DESCRIPTION}' => '$2'), + 'web' => array('{URL}' => '$1', '{DESCRIPTION}' => '$2'), + 'size' => array('{ID}' => '$1', '{TEXT}' => '$2'), + 'email' => array('{EMAIL}' => '$1', '{DESCRIPTION}' => '$2') + ); + + $tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($mx_user) { + return (!empty($mx_user->lang[$match[1]])) ? $mx_user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1]))); + }, $tpl); + + if (!empty($replacements[$tpl_name])) + { + $tpl = strtr($tpl, $replacements[$tpl_name]); + } + + return trim($tpl); + } + + + /** + * Init bbcode cache + * + * requires: $this->bbcode_bitfield + * sets: $this->bbcode_cache with bbcode templates needed for bbcode_bitfield + */ + function bbcode_cache_init() + { + global $mx_user, $mx_root_path; + + if (empty($this->template_filename)) + { + $this->template_bitfield = new bitfield(isset($mx_user->theme['bbcode_bitfield']) ? $mx_user->theme['bbcode_bitfield'] : 'kNg='); + + if (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.html')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.html'; + } + elseif (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.tpl')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.tpl'; + } + if (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.tpl')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.tpl'; + } + elseif (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.html')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.html'; + } + $this->template_filename2 = substr_count($this->template_filename, 'html') ? str_replace(".html", ".tpl", $this->template_filename) : str_replace(".tpl", ".html", $this->template_filename); + if (!@file_exists($this->template_filename)) + { + if (!@file_exists($this->template_filename2)) + { + global $template; + + $this->template_filename = $template->make_filename('bbcode.tpl', false); + $this->template_filename2 = $template->make_filename('bbcode.html', false); + //trigger_error('The file "' . $this->template_filename . '", and The file "' . $this->template_filename2 . '" are missing.', E_USER_ERROR); + } + else + { + $this->template_filename = $this->template_filename2; + } + } + } + + $bbcode_ids = $rowset = $sql = array(); + + $bitfield = new bitfield($this->bbcode_bitfield); + $bbcodes_set = $bitfield->get_all_set(); + + foreach ($bbcodes_set as $bbcode_id) + { + if (isset($this->bbcode_cache[$bbcode_id])) + { + // do not try to re-cache it if it's already in + continue; + } + $bbcode_ids[] = $bbcode_id; + + if ($bbcode_id > NUM_CORE_BBCODES) + { + $sql[] = $bbcode_id; + } + } + + if (sizeof($sql)) + { + global $db; + + $sql = 'SELECT * + FROM ' . BBCODES_TABLE . ' + WHERE ' . $db->sql_in_set('bbcode_id', $sql); + $result = $db->sql_query($sql, 3600); + + while ($row = $db->sql_fetchrow($result)) + { + // To circumvent replacing newlines with
for the generated html, + // we use carriage returns here. They are later changed back to newlines + $row['bbcode_tpl'] = str_replace("\n", "\r", $row['bbcode_tpl']); + $row['second_pass_replace'] = str_replace("\n", "\r", $row['second_pass_replace']); + + $rowset[$row['bbcode_id']] = $row; + } + $db->sql_freeresult($result); + } + + foreach ($bbcode_ids as $bbcode_id) + { + switch ($bbcode_id) + { + case 0: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[/quote:$uid]' => $this->bbcode_tpl('quote_close', $bbcode_id) + ), + 'preg' => array( + '#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise' => "\$this->bbcode_second_pass_quote('\$1', '\$2')" + ) + ); + break; + + case 1: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[b:$uid]' => $this->bbcode_tpl('b_open', $bbcode_id), + '[/b:$uid]' => $this->bbcode_tpl('b_close', $bbcode_id), + ) + ); + break; + + case 2: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[i:$uid]' => $this->bbcode_tpl('i_open', $bbcode_id), + '[/i:$uid]' => $this->bbcode_tpl('i_close', $bbcode_id), + ) + ); + break; + + case 3: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[url:$uid\]((.*?))\[/url:$uid\]#s' => $this->bbcode_tpl('url', $bbcode_id), + '#\[url=([^\[]+?):$uid\](.*?)\[/url:$uid\]#s' => $this->bbcode_tpl('url', $bbcode_id), + ) + ); + break; + + case 4: + if ($mx_user->optionget('viewimg')) + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[img:$uid\](.*?)\[/img:$uid\]#s' => $this->bbcode_tpl('img', $bbcode_id), + ) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[img:$uid\](.*?)\[/img:$uid\]#s' => str_replace('$2', '[ img ]', $this->bbcode_tpl('url', $bbcode_id, true)), + ) + ); + } + break; + + case 5: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[size=([\-\+]?\d+):$uid\](.*?)\[/size:$uid\]#s' => $this->bbcode_tpl('size', $bbcode_id), + ) + ); + break; + + case 6: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '!\[color=(#[0-9a-f]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!is' => $this->bbcode_tpl('color', $bbcode_id), + ) + ); + break; + + case 7: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[u:$uid]' => $this->bbcode_tpl('u_open', $bbcode_id), + '[/u:$uid]' => $this->bbcode_tpl('u_close', $bbcode_id), + ) + ); + break; + + case 8: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#ise' => "\$this->bbcode_second_pass_code('\$1', '\$2')", + ) + ); + break; + + case 9: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#(\[\/?(list|\*):[mou]?:?$uid\])[\n]{1}#' => "\$1", + '#(\[list=([^\[]+):$uid\])[\n]{1}#' => "\$1", + '#\[list=([^\[]+):$uid\]#e' => "\$this->bbcode_list('\$1')", + ), + 'str' => array( + '[list:$uid]' => $this->bbcode_tpl('ulist_open_default', $bbcode_id), + '[/list:u:$uid]' => $this->bbcode_tpl('ulist_close', $bbcode_id), + '[/list:o:$uid]' => $this->bbcode_tpl('olist_close', $bbcode_id), + '[*:$uid]' => $this->bbcode_tpl('listitem', $bbcode_id), + '[/*:$uid]' => $this->bbcode_tpl('listitem_close', $bbcode_id), + '[/*:m:$uid]' => $this->bbcode_tpl('listitem_close', $bbcode_id) + ), + ); + break; + + case 10: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[email:$uid\]((.*?))\[/email:$uid\]#is' => $this->bbcode_tpl('email', $bbcode_id), + '#\[email=([^\[]+):$uid\](.*?)\[/email:$uid\]#is' => $this->bbcode_tpl('email', $bbcode_id) + ) + ); + break; + + case 11: + if ($mx_user->optionget('viewflash')) + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#' => $this->bbcode_tpl('flash', $bbcode_id), + ) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#' => str_replace('$1', '$3', str_replace('$2', '[ flash ]', $this->bbcode_tpl('url', $bbcode_id, true))) + ) + ); + } + break; + + case 12: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[/attachment:$uid]' => $this->bbcode_tpl('inline_attachment_close', $bbcode_id) + ), + 'preg' => array( + '#\[attachment=([0-9]+):$uid\]#' => $this->bbcode_tpl('inline_attachment_open', $bbcode_id) + ) + ); + break; + + + default: + if (isset($rowset[$bbcode_id])) + { + if ($this->template_bitfield->get($bbcode_id)) + { + // The bbcode requires a custom template to be loaded + if (!$bbcode_tpl = $this->bbcode_tpl($rowset[$bbcode_id]['bbcode_tag'], $bbcode_id)) + { + // For some reason, the required template seems not to be available, use the default template + $bbcode_tpl = (!empty($rowset[$bbcode_id]['second_pass_replace'])) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl']; + } + else + { + // In order to use templates with custom bbcodes we need + // to replace all {VARS} to corresponding backreferences + // Note that backreferences are numbered from bbcode_match + if (preg_match_all('/\{(URL|LOCAL_URL|WEB|IPAPERLINK|EMAIL|TEXT|SIMPLETEXT|IDENTIFIER|COLOR|NUMBER)[0-9]*\}/', $rowset[$bbcode_id]['bbcode_match'], $m)) + { + foreach ($m[0] as $i => $tok) + { + $bbcode_tpl = str_replace($tok, '$' . ($i + 1), $bbcode_tpl); + } + } + } + } + else + { + // Default template + $bbcode_tpl = ($rowset[$bbcode_id]['second_pass_replace']) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl']; + } + + // Replace {L_*} lang strings + $bbcode_tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$mx_user->lang['\$1'])) ? \$mx_user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl); + + if (!empty($rowset[$bbcode_id]['second_pass_replace'])) + { + // The custom BBCode requires second-pass pattern replacements + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl) + ); + } + } + else + { + $this->bbcode_cache[$bbcode_id] = false; + } + break; + } + } + } + + /** + * Does second-pass bbencoding. This should be used before displaying the message in + * a thread. Assumes the message is already first-pass encoded, and we are given the + * correct UID as used in first-pass encoding. + * This a temporary function + */ + function bbencode_second_pass($text, $uid = '', $bitfield = false) + { + global $lang, $bbcode_tpl; + + if ($uid) + { + $this->bbcode_uid = $uid; + } + + if ($bitfield !== false) + { + $this->bbcode_bitfield = $bitfield; + + // Init those added with a new bbcode_bitfield (already stored codes will not get parsed again) + $this->bbcode_cache_init(); + } + + //Check if it's a phpBB3 block + if ($bitfield) + { + $this->bbcode_second_pass($text, $uid, $bitfield); + } + + //$text = str_replace(array("\n", "\r"), array('
', "\n"), $text); + $text = str_replace(array("\n", "\r"), array('
', ""), $text); + $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text); + + // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0). + // This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it. + $text = " " . $text; + + // First: If there isn't a "[" and a "]" in the message, don't bother. + if (! (strpos($text, "[") && strpos($text, "]")) ) + { + // Remove padding, return. + $text = substr($text, 1); + return $text; + } + + // Only load the templates ONCE.. + if (!defined("BBCODE_TPL_READY")) + { + // load templates from file into array. + $bbcode_tpl = $this->load_bbcode_template(); + + // prepare array for use in regexps. + $bbcode_tpl = $this->prepare_bbcode_template($bbcode_tpl); + } + + // [CODE] and [/CODE] for posting code (HTML, PHP, C etc etc) in your posts. + $text = $this->bbencode_second_pass_code($text, $uid, $bbcode_tpl); + + // [IPAPER] and [/IPAPER] for posting iPaper in your posts. + $text = $this->bbencode_ipaper_pass_render($text, $uid, $bbcode_tpl); + + // [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff. + $text = str_replace("[quote:$uid]", $bbcode_tpl['quote_open'], $text); + $text = str_replace("[/quote:$uid]", $bbcode_tpl['quote_close'], $text); + + // New one liner to deal with opening quotes with usernames... + // replaces the two line version that I had here before.. + $text = preg_replace("/\[quote:$uid=\"(.*?)\"\]/si", $bbcode_tpl['quote_username_open'], $text); + + // [list] and [list=x] for (un)ordered lists. + // unordered lists + $text = str_replace("[list:$uid]", $bbcode_tpl['ulist_open'], $text); + // li tags + $text = str_replace("[*:$uid]", $bbcode_tpl['listitem'], $text); + // ending tags + $text = str_replace("[/list:u:$uid]", $bbcode_tpl['ulist_close'], $text); + $text = str_replace("[/list:o:$uid]", $bbcode_tpl['olist_close'], $text); + // Ordered lists + $text = preg_replace("/\[list=([a1]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + + // colours + $text = preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+):$uid\]/si", $bbcode_tpl['color_open'], $text); + $text = str_replace("[/color:$uid]", $bbcode_tpl['color_close'], $text); + + // size + $text = preg_replace("/\[size=([1-2]?[0-9]):$uid\]/si", $bbcode_tpl['size_open'], $text); + $text = str_replace("[/size:$uid]", $bbcode_tpl['size_close'], $text); + + // [b] and [/b] for bolding text. + $text = str_replace("[b:$uid]", $bbcode_tpl['b_open'], $text); + $text = str_replace("[/b:$uid]", $bbcode_tpl['b_close'], $text); + + // [u] and [/u] for underlining text. + $text = str_replace("[u:$uid]", $bbcode_tpl['u_open'], $text); + $text = str_replace("[/u:$uid]", $bbcode_tpl['u_close'], $text); + + // [i] and [/i] for italicizing text. + $text = str_replace("[i:$uid]", $bbcode_tpl['i_open'], $text); + $text = str_replace("[/i:$uid]", $bbcode_tpl['i_close'], $text); + + //$text = str_replace('url:' . $uid, 'url', $text); + + // Patterns and replacements for URL and email tags.. + $patterns = array(); + $replacements = array(); + + // [img]image_url_here[/img] code.. + // This one gets first-passed.. + $patterns[] = "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i"; + $replacements[] = $bbcode_tpl['img']; + // matches a [url]xxxx://www.phpbb.com[/url] code.. + $patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url1']; + + // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix). + $patterns[] = "#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url2']; + + // [url=xxxx://www.phpbb.com]phpBB[/url] code.. + $patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url3']; + + // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix). + $patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url4']; + + // [email]user@domain.tld[/email] code.. + $patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si"; + $replacements[] = $bbcode_tpl['email']; + + //Strat more bbcode + $text = preg_replace($patterns, $replacements, $text); + // align + $text = preg_replace("/\[align=(left|right|center|justify):$uid\]/si", $bbcode_tpl['align_open'], $text); + $text = str_replace("[/align:$uid]", $bbcode_tpl['align_close'], $text); + // marquee + $text = preg_replace("/\[marq=(left|right|up|down):$uid\]/si", $bbcode_tpl['marq_open'], $text); + $text = str_replace("[/marq:$uid]", $bbcode_tpl['marq_close'], $text); + // table + $text = preg_replace("/\[table=(.*?):$uid\]/si", $bbcode_tpl['table_open'], $text); + $text = str_replace("[/table:$uid]", $bbcode_tpl['table_close'], $text); + // cell + $text = preg_replace("/\[cell=(.*?):$uid\]/si", $bbcode_tpl['cell_open'], $text); + $text = str_replace("[/cell:$uid]", $bbcode_tpl['cell_close'], $text); + // center + $text = preg_replace("/\[center:$uid\]/si", $bbcode_tpl['center_open'], $text); + $text = str_replace("[/center:$uid]", $bbcode_tpl['center_close'], $text); + // font + $text = preg_replace("/\[font=(.*?):$uid\]/si", $bbcode_tpl['font_open'], $text); + $text = str_replace("[/font:$uid]", $bbcode_tpl['font_close'], $text); + // poet + $text = preg_replace("/\[poet(.*?):$uid\]/si", $bbcode_tpl['poet_open'], $text); + $text = str_replace("[/poet:$uid]", $bbcode_tpl['poet_close'], $text); + //[hr] + $text = str_replace("[hr:$uid]", $bbcode_tpl['hr'], $text); + // bbcode_box Mod + // [fade] and [/fade] for faded text. + $text = str_replace("[fade:$uid]", $bbcode_tpl['fade_open'], $text); + $text = str_replace("[/fade:$uid]", $bbcode_tpl['fade_close'], $text); + // real + $patterns[] = "#\[ram:$uid\](.*?)\[/ram:$uid\]#si"; + $replacements[] = $bbcode_tpl['ram']; + // [stream]Sound URL[/stream] code.. + $patterns[] = "#\[stream:$uid\](.*?)\[/stream:$uid\]#si"; + $replacements[] = $bbcode_tpl['stream']; + //web + $patterns[] = "#\[web:$uid\](.*?)\[/web:$uid\]#si"; + $replacements[] = $bbcode_tpl['web']; + // [flash width= height= loop= ] and [/flash] code.. + $patterns[] = "#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/flash:$uid\]#si"; + $replacements[] = $bbcode_tpl['flash']; + // [flash width= height= loop= ] and [/flash] code.. + $patterns[10] = "#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/video:$uid\]#si"; + $replacements[10] = $bbcode_tpl['video']; + + // [flash width=X height=X]Flash URL[/flash] code.. + $patterns[] = "#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/flash:$uid\]#si"; + $replacements[] = $bbcode_tpl['flash']; + + // [video width=X height=X]Video URL[/video] code.. + $patterns[] = "#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/video:$uid\]#si"; + $replacements[] = $bbcode_tpl['video']; + + // [GVideo]GVideo URL[/GVideo] code.. + $patterns[] = "#\[GVideo\]http://video.google.[A-Za-z0-9.]{2,5}/videoplay\?docid=([0-9A-Za-z-_]*)[^[]*\[/GVideo\]#is"; + $replacements[] = $bbcode_tpl['GVideo']; + + // [youtube]www.youtube.com[/youtube] + $patterns[] = "#\[youtube\]http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})[^[]*\[/youtube\]#is"; + $replacements[] = $bbcode_tpl['youtube']; + + // [youtube=xxxx://www.youtube.com]Youtube[/youtube] code.. + //$patterns[] = "#\[youtube=http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})]([^?\n\r\t].*?)\[/youtube\]#is"; + //$replacements[] = $bbcode_tpl['youtube']; + + // [scribd]Scribd URL[/scribd] code.. + $patterns[] = "#\[scribd\]http://(?:d\.)?scribd.com/ScribdViewer.swf\?document_id=([0-9A-Za-z-_]*)[^[]*\[/scribd\]#is"; + $replacements[] = $bbcode_tpl['scribd']; + + // [scribd]Scribd URL[/scribd] code.. + $patterns[] = "#\[scribd id=([0-9A-Za-z-_]{8}) key=([0-9A-Za-z-_]{24})\](.*?)\[/scribd\]#is"; + $replacements[] = $bbcode_tpl['scribd']; + + // [ipaper]Scribd URL[/ipaper] code.. + $patterns[] = "#\[ipaper\]http://(?:d\.)?scribd.com/ScribdViewer.swf\?document_id=([0-9A-Za-z-_]*)\&access_key=([0-9A-Za-z-_]*)[^[]*\[/ipaper\]#is"; + $replacements[] = $bbcode_tpl['ipaper']; + + //Stop more bbcode + $text = preg_replace($patterns, $replacements, $text); + + // Remove the uid from tags that have not been transformed into HTML + $text = str_replace(':' . $uid, '', $text); + + // Remove our padding from the string.. + $text = substr($text, 1); + + return $text; + + } // bbencode_second_pass() + /** * phpBB Smilies pass. * @@ -175,19 +906,19 @@ function smilies_pass($message) $smilies = $db->sql_fetchrowset($result); - if (count($smilies)) + if ($count = count($smilies)) { @usort($smilies, 'smiley_sort'); } - for ($i = 0; $i < count($smilies); $i++) + for ($i = 0; $i < $count; $i++) { $orig[] = "/(?<=.\W|\W.|^\W)" . preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/"; $repl[] = '' . $smilies[$i][$this->emotion] . ''; } } - if (count($orig)) + if ($corig = count($orig)) { $message = preg_replace($orig, $repl, ' ' . $message . ' '); $message = substr($message, 1, -1); @@ -196,6 +927,27 @@ function smilies_pass($message) return $message; } + /** + * phpBB Smilies pass. + * + * Hacking smilies_pass from phpbb/includes/bbcode.php + * + * NOTE: This is only kept for reference - not used. + * + * @param string $message + * @return string + */ + function mx_smilies_pass_old($message) + { + global $mx_page, $board_config, $phpbb_root_path, $phpEx; + + $smilies_path = $board_config['smilies_path']; + $board_config['smilies_path'] = PHPBB_URL . $board_config['smilies_path']; + $message = smilies_pass($message); + $board_config['smilies_path'] = $smilies_path; + return $message; + } + /** * Generate smilies. * @@ -267,7 +1019,7 @@ function generate_smilies($mode, $forum_id) $template->assign_block_vars('smilies_row.smilies_col', array( 'SMILEY_CODE' => $data['code'], 'SMILEY_IMG' => $this->smiley_path_url . $board_config['smilies_path'] . '/' . $smile_url, - 'SMILEY_DESC' => $data['emoticon']) + 'SMILEY_DESC' => isset($data['emoticon']) ? $data['emoticon'] : $row['emoticon']) ); $s_colspan = max($s_colspan, $col + 1); diff --git a/includes/sessions/internal/constants.php b/includes/sessions/internal/constants.php index 4431f8f9..75eaf39d 100644 --- a/includes/sessions/internal/constants.php +++ b/includes/sessions/internal/constants.php @@ -26,6 +26,11 @@ @define('ADMIN', 1); @define('MOD', 2); +@define('USER_NORMAL', 0); +@define('USER_INACTIVE', 1); +@define('USER_IGNORE', 2); +@define('USER_FOUNDER', 3); + // User related @define('USER_ACTIVATION_NONE', 0); @define('USER_ACTIVATION_SELF', 1); diff --git a/includes/sessions/internal/core.php b/includes/sessions/internal/core.php index f0733449..a5954746 100644 --- a/includes/sessions/internal/core.php +++ b/includes/sessions/internal/core.php @@ -2,7 +2,7 @@ /** * * @package Auth -* @version $Id: core.php,v 1.20 2014/07/07 20:36:53 orynider Exp $ +* @version $Id: core.php,v 1.29 2014/05/16 18:02:23 orynider Exp $ * @copyright (c) 2002-2008 MX-Publisher Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * @link http://mxpcms.sourceforge.net/ @@ -19,13 +19,26 @@ // Note: These functions will later be accessible wrapped as phpBBX::orig_functionname() // include_once($mx_root_path . 'includes/shared/phpbb2/includes/functions.' . $phpEx); -include_once($mx_root_path . 'includes/shared/phpbb3/includes/functions.' . $phpEx); + + +// +// Finally, load some backend specific functions // -// Instantiate Dummy phpBB Classes +include_once($mx_root_path . 'includes/sessions/internal/functions.' . $phpEx); + +// +// Load here Backend Permissions if this is required // -$phpBB2 = new phpBB2(); -$phpBB3 = new phpBB3(); + +// +// Init the auth class if this is required +// + +// +// Instantiate Dummy Forum Specific Shared Classes +// Moved in common.php + /** * Backend specific tasks @@ -34,14 +47,34 @@ */ class mx_backend { + // // XS Template - use backend db settings + // var $edit_db = false; - + var $page_id = 1; + var $user_ip = 'ffffff'; + + /***/ + function mx_backend() + { + // Obtain and encode users IP + // from MXP 2.7.x common + // I'm removing HTTP_X_FORWARDED_FOR ... this may well cause other problems such as + // private range IP's appearing instead of the guilty routable IP, tough, don't + // even bother complaining ... go scream and shout at the idiots out there who feel + // "clever" is doing harm rather than good ... karma is a great thing ... :) + // + $this->client_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : getenv('REMOTE_ADDR') ); + $ip_sep = explode('.', $this->client_ip); + $this->user_ip = sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]); + } + /***/ + /** * Validate backend * * Define Users/Group/Sessions backend, and validate - * Set $phpbb_root_path, $tplEx, $table_prefix + * Set i.e. $phpbb_root_path, $tplEx, $table_prefix * */ function validate_backend() @@ -49,19 +82,23 @@ function validate_backend() global $db, $portal_config, $phpbb_root_path, $mx_root_path; global $table_prefix, $phpEx, $tplEx; - // Define relative path to "phpBB", and validate + // + // Define backend template extension + // + $tplEx = 'tpl'; + + // + // Define relative path to phpBB, and validate + // $phpbb_root_path = $mx_root_path . 'includes/shared/phpbb2/'; str_replace("//", "/", $phpbb_root_path); $portal_backend_valid_file = @file_exists($phpbb_root_path . "includes/functions.$phpEx"); - - // Define backend template extension - $tplEx = 'tpl'; - + return $portal_backend_valid_file; } /** - * setup_backend + * $mx_backend->setup_backend() * * Define some general backend definitions * PORTAL_URL, PHPBB_URL, PORTAL_VERSION & $board_config @@ -69,29 +106,107 @@ function validate_backend() */ function setup_backend() { - global $portal_config, $board_config, $phpbb_root_path, $phpEx; - + global $mx_cache, $portal_config, $board_config, $mx_root_path, $phpbb_root_path, $phpEx, $db; + $script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($portal_config['script_path'])); $server_name = trim($portal_config['server_name']); - $server_protocol = ( $portal_config['cookie_secure'] ) ? 'https://' : 'http://'; + $server_protocol = ( $portal_config['cookie_secure'] ) ? 'http://' : 'http://'; $server_port = (($portal_config['server_port']) && ($portal_config['server_port'] <> 80)) ? ':' . trim($portal_config['server_port']) . '/' : '/'; - + $portal_config['portal_phpbb_url'] = str_replace("//", "/", $server_name . $server_port . $script_name . '/'); $server_url = $server_protocol . str_replace("//", "/", $server_name . $server_port . $script_name . '/'); //On some server the slash is not added and this trick will fix it - define('PORTAL_URL', $server_url); + // + // Grab phpBB global variables, re-cache if necessary + // - optional parameter to enable/disable cache for config data. If enabled, remember to refresh the MX-Publisher cache whenever updating phpBB config settings + // - true: enable cache, false: disable cache + if (empty($board_config['script_path'])) + { + $board_config = $mx_cache->obtain_mxbb_config(false); + } + + if (empty($portal_config['portal_version'])) + { + $portal_config = $mx_cache->obtain_mxbb_config(false); + } + /** + $this->data = !empty($this->data['user_id']) ? $this->data : $mx_user->session_pagestart($user_ip, $page_id); + + $this->cache = is_object($mx_cache) ? $mx_cache : new base(); + */ + if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) + { + $this->data['is_bot'] = true; + } + else + { + $this->data['is_bot'] = false; + } + + // + // Populate session_id + // + //$this->session_id = $this->data['session_id']; + $this->lang_path = $phpbb_root_path . 'language/'; + + $script_name = !empty($board_config['server_name']) ? preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['server_name'])) : 'localhost'; + $server_protocol = ( $board_config['cookie_secure'] ) ? 'http://' : 'http://'; + $server_port = (($board_config['server_port']) && ($board_config['server_port'] <> 80)) ? ':' . trim($portal_config['server_port']) . '/' : '/'; + $script_name_phpbb = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path'])) . '/'; + + if (!empty($portal_config['portal_url'])) + { + $corrected_url = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($portal_config['portal_url'])) . '/'; + } + else + { + $corrected_url = str_replace(array('phpBB/', $script_name_phpbb, str_replace('./../', '', $phpbb_root_path)), '', $portal_config['portal_phpbb_url'] . '/'); + $corrected_url = (empty($portal_config['portal_phpbb_url']) || preg_match('@^(?:phpbb.com)?([^/]+)@i', $portal_config['portal_phpbb_url'])) ? $server_protocol . str_replace("//", "/", $server_name . $server_port . $script_name . '/') : str_replace(array('http://', 'http://'), $server_protocol, $server_url) ; //On some server the slash is not added and this trick will fix it + } + + $board_url = $server_url; + define('PORTAL_VERSION', $portal_config['portal_version']); - - $board_config = array(); - $script_name_phpbb = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim('includes/shared/phpbb2/')) . '/'; - - $server_url_phpbb = $server_protocol . $server_name . $server_port . $script_name_phpbb; + + $server_url_phpbb = $server_protocol . (isset($server_name) ? $server_name : $script_name) . $server_port . $script_name_phpbb; + + if (empty($portal_config['portal_phpbb_url']) || preg_match('@^(?:phpbb.com)?([^/]+)@i', $portal_config['portal_phpbb_url'])) + { + $portal_config['portal_phpbb_url'] = !empty($portal_config['portal_url']) ? $server_url . $script_name_phpbb : $server_url_phpbb; + } + + $server_url_phpbb = !empty($portal_config['portal_phpbb_url']) ? $server_url . $script_name_phpbb : $server_url_phpbb; + $server_url_phpbb = (empty($portal_config['portal_phpbb_url']) || preg_match('@^(?:phpbb.com)?([^/]+)@i', $portal_config['portal_phpbb_url'])) ? $server_url_phpbb : $portal_config['portal_phpbb_url']; + define('PHPBB_URL', $server_url_phpbb); - - /* - * Now sync Configs - * In phpBB mode, we rely on native phpBB configs, thus we need to sync mxp and phpbb settings - */ + define('PORTAL_URL', $board_url); + define('BOARD_URL', $server_url); + + $web_path = (isset($portal_config['portal_url'])) ? $board_url : $corrected_url; + + // + // Define backend template extension + // + $tplEx = 'tpl'; + if (!defined('TPL_EXT')) define('TPL_EXT', $tplEx); + + // + // Now sync Configs + // In phpBB mode, we rely on native phpBB configs, thus we need to sync mxp and phpbb settings + // $this->sync_configs(); + + // + // Dummy include, to make all original phpBB functions available + // In case we need old functions... + include_once($mx_root_path . 'includes/shared/phpbb2/includes/functions.' . $phpEx); + include_once($mx_root_path . 'includes/shared/phpbb3/includes/functions.' . $phpEx); + // + // Is phpBB File Attachment MOD present? + // + if( file_exists($phpbb_root_path . 'attach_mod') ) + { + include_once($phpbb_root_path . 'attach_mod/attachment_mod.' . $phpEx); + } } /** @@ -120,12 +235,18 @@ function sync_configs() case 'max_login_attempts': case 'login_reset_time': + $do = false; + break; + // // Keep phpBB stats // case 'record_online_users': case 'record_online_date': + $do = false; + break; + // // Keep portal settings // @@ -214,25 +335,286 @@ function load_file($force_shared) { global $mx_root_path, $phpbb_root_path, $phpEx; - $backend = in_array($force_shared, array('internal', 'phpbb2', 'smf2', 'mybb', 'phpbb3', 'olympus', 'ascraeus', 'rhea')) ? $force_shared : PORTAL_BACKEND; + if ($force_shared) + { + $shared = in_array($force_shared, array('internal', 'phpbb2', 'phpbb3')) ? $force_shared : PORTAL_BACKEND; + + switch ($shared) + { + case 'internal': + case 'phpbb2': + $path = $mx_root_path . 'includes/shared/phpbb2/includes/'; + break; + case 'phpbb3': + default: + $path = $mx_root_path . 'includes/shared/phpbb3/includes/'; + break; + } + } + else + { + $path = $phpbb_root_path . 'includes/'; + } + + return $path; + } + + /** + * get_phpbb_info + * + * @param unknown_type $root_path + * @access private + */ + function get_mxp_info($root_path, $backend = 'internal', $phpbbversion = '2.0.24') + { + $phpEx = substr(strrchr(__FILE__, '.'), 1); + + if (strpos($root_path, '.') !== false) + { + // Nested file + $filename_ext = substr(strrchr($root_path, '.'), 1); + $filename = basename($root_path, '.' . $filename_ext); + $current_dir = dirname(realpath($root_path)); + $root_path = dirname($root_path); + } + else + { + $filename_ext = substr(strrchr(__FILE__, '.'), 1); + $filename = "config"; + $current_dir = $root_path; + $root_path = dirname($root_path); + } + + $config = $root_path . "/config.$phpEx"; + + // + if ((@include $config) === false) + { + die('Configuration file ' . $config . ' couldn\'t be opened.'); + } + // + + // Check the prefix length to ensure that index names are not too long and does not contain invalid characters switch ($backend) { case 'internal': + // no break; case 'phpbb2': - case 'smf2': - case 'mybb': - $path = $mx_root_path . 'includes/shared/phpbb2/includes/'; + $phpbb_adm_relative_path = 'admin'; break; + case 'phpbb3': - case 'olympus': + case 'olympus': + $phpbb_adm_relative_path = 'adm'; + break; + case 'ascraeus': case 'rhea': - $path = $mx_root_path . 'includes/shared/phpbb3/includes/'; - break; + case 'proteus': + $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/'; + $dbms = get_keys_sufix($dbms); + $acm_type = get_keys_sufix($acm_type); + break; } - return $path; + + // If we are on PHP < 5.0.0 we need to force include or we get a blank page + if (version_compare(PHP_VERSION, '5.0.0', '<')) + { + $dbms = str_replace('mysqli', 'mysql4', $dbms); //this version of php does not have mysqli extension and my crash the installer if finds a forum using this + } + + return array( + 'dbms' => $dbms, + 'dbhost' => $dbhost, + 'dbname' => $dbname, + 'dbuser' => $dbuser, + 'dbpasswd' => $dbpasswd, + 'mx_table_prefix' => $mx_table_prefix, + 'table_prefix' => $table_prefix, + 'backend' => $backend, + 'version' => $phpbbversion, + 'acm_type' => isset($acm_type) ? $acm_type : '', + 'phpbb_root_path' => $phpbb_root_path, + 'status' => defined('MX_INSTALLED') ? true : false, + ); + } + + /** + * get_phpbb_info + * + * @param unknown_type $root_path + * @access private + */ + function get_phpbb_info($root_path, $backend = 'phpbb2', $phpbbversion = '2.0.24') + { + $phpEx = substr(strrchr(__FILE__, '.'), 1); + + if (strpos($root_path, '.') !== false) + { + // Nested file + $filename_ext = substr(strrchr($root_path, '.'), 1); + $filename = basename($root_path, '.' . $filename_ext); + $current_dir = dirname(realpath($root_path)); + $root_path = dirname($root_path); + } + else + { + $filename_ext = substr(strrchr(__FILE__, '.'), 1); + $filename = "config"; + $current_dir = $root_path; + $root_path = dirname($root_path); + } + + $config = $root_path . "/config.$phpEx"; + + // + if ((@include $config) === false) + { + die('Configuration file ' . $config . ' couldn\'t be opened.'); + } + // + + if ((@include $root_path . "language/en/install.$phpEx") !== false) + { + $left_piece1 = explode('. You', $lang['CONVERT_COMPLETE_EXPLAIN']); + $left_piece2 = explode('phpBB', $left_piece1[0]); + $phpbbversion = strrchr($left_piece2[1], ' '); + + switch (true) + { + case (preg_match('/3.0/i', $phpbbversion)): + $backend = 'olympus'; + break; + case (preg_match('/3.1/i', $phpbbversion)): + $backend = 'ascraeus'; + break; + case (preg_match('/3.2/i', $phpbbversion)): + $backend = 'rhea'; + break; + case (preg_match('/3.3/i', $phpbbversion)): + $backend = 'proteus'; + break; + case (preg_match('/4./i', $phpbbversion)): + $backend = 'phpbb4'; + break; + } + } + + // Check the prefix length to ensure that index names are not too long and does not contain invalid characters + switch ($backend) + { + case 'internal': + // no break; + case 'phpbb2': + $phpbb_adm_relative_path = 'admin'; + break; + + case 'phpbb3': + case 'olympus': + $phpbb_adm_relative_path = 'adm'; + break; + + case 'ascraeus': + case 'rhea': + case 'proteus': + $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/'; + $dbms = get_keys_sufix($dbms); + $acm_type = get_keys_sufix($acm_type); + break; + } + + // If we are on PHP < 5.0.0 we need to force include or we get a blank page + if (version_compare(PHP_VERSION, '5.0.0', '<')) + { + $dbms = str_replace('mysqli', 'mysql4', $dbms); //this version of php does not have mysqli extension and my crash the installer if finds a forum using this + } + + return array( + 'dbms' => $dbms, + 'dbhost' => $dbhost, + 'dbname' => $dbname, + 'dbuser' => $dbuser, + 'dbpasswd' => $dbpasswd, + 'table_prefix' => $table_prefix, + 'backend' => $backend, + 'version' => $phpbbversion, + 'acm_type' => isset($acm_type) ? $acm_type : '', + 'status' => defined('PHPBB_INSTALLED') ? true : false, + ); } - + + /** + * get_smf_info + * + * @param unknown_type $settings + * @access private + * / + function get_smf_info($settings) + { + if ((@include $settings) === false) + { + install_die(GENERAL_ERROR, 'Configuration file ' . $settings . ' couldn\'t be opened.'); + } + // If we are on PHP < 5.0.0 we need to force include or we get a blank page + if (version_compare(PHP_VERSION, '5.0.0', '<')) + { + $db_type = str_replace('mysqli', 'mysql4', $db_type); //this version of php does not have mysqli extension and my crash the installer if finds a forum using this + } + // If the UTF-8 setting was enabled, add it to the table definitions. + if ($db_character_set == 'utf8') + { + $db_type = str_replace('mysql', 'mysql4', $db_type); + } + return array( + 'dbms' => $db_type, // 'mysql' + 'dbhost' => $db_server, // 'localhost'; + 'dbname' => $db_name, // 'smf'; + 'dbuser' => $db_user, // 'root'; + 'dbpasswd' => $db_passwd, // ''; + 'ssi_dbuser' => $ssi_db_user, // ''; + 'ssi_dbpasswd' => $ssi_db_passwd, // ''; + 'table_prefix' => $db_prefix, // 'smf_'; + 'dbpersist' => $db_persist, // 0; + 'dberror_send' => $db_error_send, // 1; + 'dbcharacter_set' => $db_character_set, + 'acm_type' => '', + 'mtitle' => $mtitle, //# Title for the Maintenance Mode message. + 'status' => ($maintenance != 2) ? true : false, # Set to 1 to enable Maintenance Mode, 2 to make the forum untouchable. (you'll have to make it 0 again manually!) + 'mbname' => $mbname, # The name of your forum. + 'language' => $language, // 'english'; # The default language file set for the forum. + 'boardurl' => $boardurl, // 'http://127.0.0.1/smf'; # URL to your forum's folder. (without the trailing /!) + 'webmaster_email' => $webmaster_email, // 'noreply@myserver.com'; # Email address to send emails from. (like noreply@yourdomain.com.) + 'cookiename' => $cookiename, + ); + } + + /** + * get_mybb_info + * + * @param unknown_type $mybb_config + * @access private + * / + function get_mybb_info($mybb_config) + { + $config = array(); + if ((@include $mybb_config) === false) + { + install_die(GENERAL_ERROR, 'Configuration file ' . $mybb_config . ' couldn\'t be opened.'); + } + return array( + 'dbms' => $config['database']['type'], // 'mysqli'; + 'dbname' => $config['database']['database'], // 'mybb'; + 'table_prefix' => $config['database']['table_prefix'], // 'mybb_'; + + 'dbhost' => $config['database']['hostname'], // 'localhost'; + 'dbname' => $config['database']['username'], // 'Admin'; + 'dbpasswd' => $config['database']['password'], + + 'admin_dir' => $config['admin_dir'], + 'dbcharacter_set' => $config['database']['encoding'], + ); + } + /** * dss_rand * @@ -241,31 +623,135 @@ function load_file($force_shared) */ function dss_rand() { - global $db, $portal_config, $board_config, $lang, $dss_seeded; - + global $db, $portal_config, $board_config, $dss_seeded; + $val = $portal_config['rand_seed'] . microtime(); $val = md5($val); $portal_config['rand_seed'] = md5($portal_config['rand_seed'] . $val . 'a'); + if($dss_seeded !== true) { $sql = "UPDATE " . PORTAL_TABLE . " SET rand_seed = '" . $portal_config['rand_seed'] . "' WHERE portal_id = '1'"; - //display an error debuging message only if the portal is installed/upgraded - if(!@$db->sql_query($sql) && @!file_exists('install')) + + if( !$db->sql_query($sql) ) { mx_message_die(GENERAL_ERROR, "Unable to reseed PRNG", "", __LINE__, __FILE__, $sql); } - elseif(!@$db->sql_query($sql) && @file_exists('install')) - { - mx_message_die(GENERAL_ERROR, "Unable to reseed PRNG"."
Please finish upgrading and
". t(isset($lang['Please_remove_install_contrib'])), "", __LINE__, __FILE__, $sql); - } - + $dss_seeded = true; } + return substr($val, 4, 16); } + function make_jumpbox($action, $match_forum_id = 0) + { + global $template, $userdata, $lang, $db, $nav_links, $phpEx, $SID; + + // $is_auth = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata); + + $sql = "SELECT c.cat_id, c.cat_title, c.cat_order + FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f + WHERE f.cat_id = c.cat_id + GROUP BY c.cat_id, c.cat_title, c.cat_order + ORDER BY c.cat_order"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain category list.", "", __LINE__, __FILE__, $sql); + } + + $category_rows = array(); + while ( $row = $db->sql_fetchrow($result) ) + { + $category_rows[] = $row; + } + + if ( $total_categories = count($category_rows) ) + { + $sql = "SELECT * + FROM " . FORUMS_TABLE . " + ORDER BY cat_id, forum_order"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql); + } + + $boxstring = ''; + } + else + { + $boxstring .= ''; + } + + // Let the jumpbox work again in sites having additional session id checks. + // if ( !empty($SID) ) + // { + $boxstring .= ''; + // } + + $template->set_filenames(array( + 'jumpbox' => 'jumpbox.tpl') + ); + $template->assign_vars(array( + 'L_GO' => $lang['Go'], + 'L_JUMP_TO' => $lang['Jump_to'], + 'L_SELECT_FORUM' => $lang['Select_forum'], + + 'S_JUMPBOX_SELECT' => $boxstring, + 'S_JUMPBOX_ACTION' => mx_append_sid($action)) + ); + $template->assign_var_from_handle('JUMPBOX', 'jumpbox'); + + return; + } + /** * Backend specific Page Header data * @@ -274,8 +760,19 @@ function dss_rand() function page_header($mode = false) { global $db, $mx_root_path, $phpbb_root_path, $userdata, $mx_user, $lang, $images, $phpEx; - global $board_config, $gen_simple_header, $layouttemplate, $mx_page; - + global $board_config, $gen_simple_header, $layouttemplate, $mx_page, $phpBB2; + + /**********/ + $layouttemplate = isset($layouttemplate) ? $layouttemplate : ""; + // If MX-Publisher frame template is not set, instantiate it + if (!is_object($layouttemplate)) + { + // + // Initialize template + // + $layouttemplate = new mx_Template( $mx_root_path . 'templates/'. $theme['template_name'], $board_config, $db ); + } + switch ($mode) { case 'generate_login_logout_stats': @@ -293,13 +790,15 @@ function page_header($mode = false) $l_login_logout = $lang['Login']; } - $s_last_visit = ( $userdata['session_logged_in'] ) ? phpBB2::create_date($board_config['default_dateformat'], $userdata['user_lastvisit'], $board_config['board_timezone']) : ''; - + $s_last_visit = ( $userdata['session_logged_in'] ) ? $phpBB2->create_date($board_config['default_dateformat'], $userdata['user_lastvisit'], $board_config['board_timezone']) : ''; + + // // Obtain number of new private messages // if user is logged in + // if ( ($userdata['session_logged_in']) && (empty($gen_simple_header)) ) { - if (isset($userdata['user_new_privmsg'])) + if ( $userdata['user_new_privmsg'] ) { $l_message_new = ( $userdata['user_new_privmsg'] == 1 ) ? $lang['New_pm'] : $lang['New_pms']; $l_privmsgs_text = sprintf($l_message_new, $userdata['user_new_privmsg']); @@ -333,7 +832,7 @@ function page_header($mode = false) $mx_priv_msg = $lang['Private_Messages']; } - if (isset($userdata['user_unread_privmsg'])) + if ( $userdata['user_unread_privmsg'] ) { $l_message_unread = ( $userdata['user_unread_privmsg'] == 1 ) ? $lang['Unread_pm'] : $lang['Unread_pms']; $l_privmsgs_text_unread = sprintf($l_message_unread, $userdata['user_unread_privmsg']); @@ -356,7 +855,6 @@ function page_header($mode = false) 'U_LOGIN_LOGOUT' => mx_append_sid(PORTAL_URL . $u_login_logout), 'L_LOGIN_LOGOUT' => $l_login_logout, 'LAST_VISIT_DATE' => sprintf($lang['You_last_visit'], $s_last_visit), - 'PRIVATE_MESSAGE_INFO' => $l_privmsgs_text, 'PRIVATE_MESSAGE_INFO_UNREAD' => $l_privmsgs_text_unread, 'PRIVATE_MESSAGE_NEW_FLAG' => $s_privmsg_new, @@ -364,23 +862,22 @@ function page_header($mode = false) 'L_PRIVATEMSGS' => $mx_priv_msg, // Backend - 'PHPBB' => false, + 'PHPBB' => true, // Show phpbb stats? - 'PHPBB_STATS' => false, + 'PHPBB_STATS' => $mx_page->phpbb_stats, // Allow autologin? - 'ALLOW_AUTOLOGIN' => false, + 'ALLOW_AUTOLOGIN' => !$userdata['session_logged_in'] && (!isset($board_config['allow_autologin']) || $board_config['allow_autologin']), // phpBB PM - 'ENABLE_PM_POPUP' => false, + 'ENABLE_PM_POPUP' => $userdata['session_logged_in'] && !empty($userdata['user_popup_pm']), )); break; case 'generate_nav_links': - /* $u_register = 'profile.'.$phpEx.'?mode=register' ; $u_profile = 'profile.'.$phpEx.'?mode=editprofile'; $u_privatemsgs = 'privmsg.'.$phpEx.'?folder=inbox'; @@ -406,7 +903,6 @@ function page_header($mode = false) 'U_GROUP_CP' => mx_append_sid(PHPBB_URL . $u_group_cp), 'U_SEND_PASSWORD' => $u_sendpassword, )); - */ break; } @@ -424,9 +920,11 @@ function page_tail($mode = false) switch ($mode) { case 'generate_backend_version': + $current_phpbb_version = '0.0.0'; $template->assign_vars(array( - 'PHPBB_BACKEND' => false, + 'PHPBB_BACKEND' => true, + 'PHPBB_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? $current_phpbb_version : '', 'U_PHPBB_ROOT_PATH' => PHPBB_URL, )); @@ -434,6 +932,191 @@ function page_tail($mode = false) } } + /** + * obtain_forum_config + * + * @access public + * @param boolean $use_cache + * @return unknown + */ + function obtain_forum_config($use_cache = true) + { + if ( ($config = $this->obtain_portal_config($use_cache)) ) + { + return $config; + } + } + + /** + * Set forum config values + * + * @param unknown_type $config_name + * @param unknown_type $config_value + */ + function set_forum_config($key, $new_value, $use_cache = false) + { + $this->set_portal_config($key, $new_value); + } + + /** + * Get MX-Publisher config data + * + * @access public + * @return unknown + */ + public function obtain_portal_config($use_cache = true) + { + global $db, $mx_cache; + + if ( ($portal_config = $mx_cache->get('mx_config')) && ($use_cache) ) + { + return $portal_config; + } + else + { + $sql = "SELECT * + FROM " . PORTAL_TABLE . " + WHERE portal_id = '1'"; + + if ( !($result = $db->sql_query($sql)) ) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query portal configuration, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query portal configuration', '', __LINE__, __FILE__, $sql ); + } + } + $row = $db->sql_fetchrow($result); + foreach ($row as $config_name => $config_value) + { + $portal_config[$config_name] = trim($config_value); + } + $db->sql_freeresult($result); + $mx_cache->put('mx_config', $portal_config); + + return ($portal_config); + } + } + + /** + * Set config value. Creates missing config entry. + * + */ + function set_portal_config($key, $new_value) + { + global $db, $mx_cache, $portal_config; + + // Read out config values + $portal_config = $this->obtain_portal_config(); + + $new[$key] = $new_value; + + $sql = "UPDATE " . PORTAL_TABLE . " SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)); + + if( !($db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($portal_config[$key])) + { + $sql = 'INSERT INTO ' . PORTAL_TABLE . ' ' . $db->sql_build_array('INSERT', array( + $db->sql_escape($key) => $db->sql_escape($new_value))); + + //$after = (!empty($column_data['after'])) ? ' AFTER ' . $column_data['after'] : ''; + //$sql = 'ALTER TABLE `' . $table . '` ADD `' . $column_name . '` ' . (($column_data['column_type_sql'] = 'NULL') ? 'TEXT' : $column_data['column_type_sql']) . ' ' . (!empty($column_data[$column_name]) ? $column_data[$column_name] : 'NULL') . ' DEFAULT NULL' . $after; + + $db->sql_query($sql); + } + + $portal_config[$key] = $new_value; + + $mx_cache->destroy('mx_config'); + } + + /** + * Get userdata + * + * Get Userdata, $mx_user can be username or user_id. If force_str is true, the username will be forced. + * Cached sql, since this function is used for every block. + * + * @param unknown_type $mx_user id or name + * @param boolean $force_str force clean_username + * @return array + */ + function get_userdata($mxuser, $force_str = false) + { + global $db, $phpBB2; + + if (!is_numeric($mxuser) || $force_str) + { + $mx_user = $phpBB2->phpbb_clean_username($mxuser); + } + else + { + $mx_user = intval($mxuser); + } + + $sql = "SELECT * + FROM " . USERS_TABLE . " + WHERE "; + $sql .= ((is_integer($mxuser)) ? "user_id = $mxuser" : "username = '" . str_replace("\'", "''", $mxuser) . "'" ) . " AND user_id <> " . ANONYMOUS; + if (!($result = $db->sql_query($sql, 120))) + { + if (!function_exists('mx_message_die')) + { + die("Tried obtaining data for a non-existent user. Function mx_backend->get_userdata()"); + } + else + { + mx_message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql); + } + } + $return = ($row = $db->sql_fetchrow($result)) ? $row : false; + /* + foreach ($row as $user_key => $user_value) + { + $userdata[$user_key] = trim($user_value); + } + */ + $db->sql_freeresult($result); + //return ($userdata); + return $return; + } + + /** + * Set user data value. + * + */ + function set_userdata($key, $new_value) + { + global $db, $mx_user; + + $new[$key] = $new_value; + + if (!isset($mx_user->data[$key]) || ($key == 'user_style')) + { + mx_message_die(GENERAL_ERROR, "Wrong Backend? Adding this entry $key key to update MXP configuration is not supported with this backend.", "", __LINE__, __FILE__, $sql); + } + + $sql = "UPDATE " . USERS_TABLE . " + SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)) . " + WHERE user_id = '" . $mx_user->data['user_id'] . "'"; + if (!($db->sql_query($sql))) + { + mx_message_die(GENERAL_ERROR, "Failed to update user data value ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($mx_user->data[$key])) + { + mx_message_die(GENERAL_ERROR, "Wrong Backend? Adding missing entry key to update MXP configuration is not supported ATM.", "", __LINE__, __FILE__, $sql); + } + $mx_user->data[$key] = $new_value; + } + /** * Enter description here... * @@ -479,8 +1162,8 @@ function obtain_phpbb_config($use_cache = true) return ( $config ); } - } - + } + /** * Enter description here... * @@ -531,7 +1214,9 @@ function generate_session_online_sql($guest = false) */ function decode_ip($str_ip) { - return phpBB2::decode_ip($str_ip); + global $phpBB2; + + return $phpBB2->decode_ip($str_ip); } /** @@ -541,7 +1226,9 @@ function decode_ip($str_ip) */ function get_phpbb_version() { - return ''; + global $board_config; + + return '0.0.0'; } /** @@ -570,11 +1257,12 @@ function confirm_backend() */ function get_username_string($mode, $user_id, $username = false, $user_color = false, $guest_username = false, $custom_profile_url = false) { - global $lang, $userdata; + global $lang, $mx_user, $userdata, $theme, $phpEx; $lang['Guest'] = !$guest_username ? $lang['Guest'] : $guest_username; $this_userdata = mx_get_userdata($user_id, false); + $username = ($username) ? $username : $this_userdata['username']; if ($this_userdata['user_level'] == ADMIN) @@ -590,12 +1278,20 @@ function get_username_string($mode, $user_id, $username = false, $user_color = f else { $user_colour = $theme['fontcolor1']; - $topic_poster_style = 'style="font-weight : bold;"'; + $user_style = 'style="font-weight : bold;"'; } - $profile_url = $username; - - $full_url = (($user_id == ANONYMOUS) || ($user_id == MUSIC_GUEST)) ? '' . $lang['Guest'] . '' : '' . $username . ''; + // Only show the link if not anonymous + if ($user_id && $user_id != ANONYMOUS) + { + $profile_url = mx3_append_sid(PHPBB_URL . "profile.$phpEx", 'mode=viewprofile&u=' . (int) $user_id); + $full_url = '' . $username . ''; + } + else + { + $profile_url = $lang['Guest']; + $full_url = $lang['Guest']; + } switch ($mode) { @@ -616,7 +1312,6 @@ function get_username_string($mode, $user_id, $username = false, $user_color = f return $full_url; break; } - return $username; } // @@ -645,11 +1340,10 @@ function load_forum_stats() * * @return unknown */ - function phpbb_version_check() + function phpbb_version_check($force_update = false, $warn_fail = false, $ttl = 86400) { return ''; } - } // diff --git a/includes/sessions/internal/functions.php b/includes/sessions/internal/functions.php new file mode 100644 index 00000000..481c635a --- /dev/null +++ b/includes/sessions/internal/functions.php @@ -0,0 +1,91 @@ +theme['fontcolor3']) ? $mx_user->theme['fontcolor3'] : $user_colour; + $user_style = 'style="color:#' . $user_colour . '; font-weight : bold;"'; + } + else if ($this_userdata['user_level'] == MOD) + { + $user_colour = ($mx_user->theme['fontcolor2']) ? $mx_user->theme['fontcolor2'] : $user_colour; + $user_style = 'style="color:#' . $user_colour . '; font-weight : bold;"'; + } + else + { + $user_colour = ($mx_user->theme['fontcolor1']) ? $mx_user->theme['fontcolor1'] : $user_colour; + $user_style = 'style="color:#' . $user_colour . '; font-weight : bold;"'; + } + // print_r(substr($user_colour, 0, 3) . substr($user_colour, 3, 2)); + // Only show the link if not anonymous + if ($user_id != ANONYMOUS) + { + $profile_url = mx_append_sid(PHPBB_URL . "profile.$phpEx?mode=viewprofile&u=" . (int) $user_id); + $full_url = '' . $username . ''; + } + else + { + $profile_url = $lang['Guest']; + $full_url = $lang['Guest']; + } + + switch ($mode) + { + case 'profile_url': + case 'profile': + return $profile_url; + break; + + case 'username': + return $username; + break; + + case 'colour': + return $user_colour; + break; + + case 'full': + case 'no_profile': + default: + return $full_url; + break; + } +} + +?> \ No newline at end of file diff --git a/includes/sessions/internal/login.php b/includes/sessions/internal/login.php index 74cb5cb9..2bd4ef6c 100644 --- a/includes/sessions/internal/login.php +++ b/includes/sessions/internal/login.php @@ -16,7 +16,7 @@ if ($mx_request_vars->is_request('login') && (!$userdata['session_logged_in'] || $mx_request_vars->is_post('admin')) ) { - $username = $mx_request_vars->is_post('username') ? phpBB2::phpbb_clean_username($mx_request_vars->post('username', MX_TYPE_NO_TAGS)) : ''; + $username = $mx_request_vars->is_post('username') ? $phpBB2->phpbb_clean_username($mx_request_vars->post('username', MX_TYPE_NO_TAGS)) : ''; $password = $mx_request_vars->post('password', MX_TYPE_NO_TAGS); $sql = "SELECT user_id, username, user_password, user_active, user_level, user_login_tries, user_last_login_try diff --git a/includes/sessions/internal/session.php b/includes/sessions/internal/session.php index 4bf4707d..cee7fd8d 100644 --- a/includes/sessions/internal/session.php +++ b/includes/sessions/internal/session.php @@ -2,7 +2,7 @@ /** * * @package Style -* @version $Id: session.php,v 1.22 2014/09/29 11:42:31 orynider Exp $ +* @version $Id: session.php,v 1.18 2014/05/09 07:52:03 orynider Exp $ * @copyright (c) 2002-2008 MX-Publisher Project Team & (C) 2001 The phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * @link http://mxpcms.sourceforge.net/ @@ -30,6 +30,8 @@ class session var $host = ''; var $session_id = ''; var $ip = ''; + var $page_id = ''; + var $user_ip = ''; var $load = 0; var $time_now = 0; var $update_session_page = true; @@ -45,7 +47,30 @@ class session var $lang_path; var $img_lang; var $img_array = array(); + + /** + * Load sessions + * @access public + * + */ + function session() + { + global $mx_cache, $board_config, $db, $phpbb_root_path, $mx_root_path, $phpEx; + + $this->cache = $mx_cache; + $this->config = $board_config; + $this->db = $db; + $this->user = $this; + $this->service_providers = array('user_id' => 1, 'session_id' => 0, 'provider' => '', 'oauth_token' => ''); + $this->phpbb_root_path = $phpbb_root_path; + $this->mx_root_path = $mx_root_path; + $this->php_ext = $phpEx; + + + $this->lang_path = $mx_root_path . 'language/'; + } + /** * Load sessions * @access public @@ -53,16 +78,80 @@ class session */ function load() { - global $portal_config; + if (!isset($this->user_ip)) + { + global $user_ip; + + $this->user_ip = $user_ip; + } + + if (!isset($this->page_id)) + { + global $mx_request_vars; - $this->data = $this->session_pagestart($this->user_ip, - (MX_PORTAL_PAGES_OFFSET + $this->page_id)); + $this->page_id = $mx_request_vars->request('page', MX_TYPE_INT, 1); + } + + if (!isset($this->config)) + { + global $board_config; - // Simulate the user lang setting - $this->data['user_lang'] = $portal_config['default_lang']; - $this->data['user_dateformat'] = $portal_config['default_dateformat']; - $this->data['user_timezone'] = $portal_config['board_timezone']; - $this->data['user_dst'] = 1; + $this->config = $board_config; + } + + if (!isset($this->mx_root_path)) + { + global $mx_root_path; + + $this->mx_root_path = $mx_root_path; + } + + if (!isset($this->phpbb_root_path)) + { + global $phpbb_root_path; + + $this->phpbb_root_path = $phpbb_root_path; + } + + if (!isset($this->cache)) + { + global $mx_cache; + $this->cache = $mx_cache; + + if (!isset($this->cache)) + { + $this->cache= new mx_cache(); + } + } + + // + // Populate user data + // + $this->data = $this->session_pagestart($this->user_ip, - ( MX_PORTAL_PAGES_OFFSET + $this->page_id )); + + if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) + { + $this->data['is_bot'] = true; + } + else + { + $this->data['is_bot'] = false; + } + $this->data['user_perm_from'] = ''; + $this->data['user_topic_sortby_type'] = 't'; + $this->data['user_topic_sortby_dir'] = 'd'; + $this->data['user_topic_show_days'] = 0; + $this->data['user_last_privmsg'] = 0; + $this->data['user_post_sortby_type'] = 't'; + $this->data['user_post_sortby_dir'] = 'a'; + $this->data['user_post_show_days'] = 0; + $this->data['user_new_privmsg'] = 0; + $this->data['user_unread_privmsg'] = 0; + $this->data['user_form_salt'] = bin2hex(random_bytes(8)); + $this->data['user_avatar'] = 'includes/shared/phpbb2/images/user_avatar.png'; + $this->data['user_avatar_type'] = 2; + // // Populate session_id $this->session_id = $this->data['session_id']; } @@ -90,7 +179,7 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a else { $sessiondata = array(); - $session_id = $mx_request_vars->get('sid', MX_TYPE_NO_TAGS); + $session_id = $mx_request_vars->is_get('sid',MX_TYPE_NO_TAGS); $sessionmethod = SESSION_METHOD_GET; } @@ -104,7 +193,7 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a $last_visit = 0; $current_time = time(); - + // // Are auto-logins allowed? // If allow_autologin is not set or is true then they are @@ -114,23 +203,25 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a { $enable_autologin = $sessiondata['autologinid'] = false; } - + // // First off attempt to join with the autologin value if we have one // If not, just use the user_id value // $userdata = array(); - + if ($user_id != ANONYMOUS) { if (isset($sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '' && $user_id) { - $sql = 'SELECT u.* - FROM ' . USERS_TABLE . ' u, ' . SESSIONS_KEYS_TABLE . ' k + $sql = 'SELECT u.*, u.user_id as user_colour, u.user_level as user_type, p.default_lang as user_lang, p.board_timezone as user_timezone + FROM ' . USERS_TABLE . ' u, ' . SESSIONS_KEYS_TABLE . ' k, ' . PORTAL_TABLE . ' p WHERE u.user_id = ' . (int) $user_id . " AND u.user_active = 1 AND k.user_id = u.user_id - AND k.key_id = '" . md5($sessiondata['autologinid']) . "'"; + AND k.key_id = '" . md5($sessiondata['autologinid']) . "' + AND p.portal_id = '1'"; + if (!($result = $db->sql_query($sql))) { mx_message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql); @@ -145,11 +236,13 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a { $sessiondata['autologinid'] = ''; $sessiondata['userid'] = $user_id; - - $sql = 'SELECT * - FROM ' . USERS_TABLE . ' - WHERE user_id = ' . (int) $user_id . ' - AND user_active = 1'; + + $sql = 'SELECT u.*, u.user_id as user_colour, u.user_level as user_type, p.default_lang as user_lang, p.board_timezone as user_timezone + FROM ' . USERS_TABLE . ' u, ' . PORTAL_TABLE . ' p + WHERE u.user_id = ' . (int) $user_id . ' + AND u.user_active = 1 + AND p.portal_id = 1'; + if (!($result = $db->sql_query($sql))) { mx_message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql); @@ -161,7 +254,11 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a $login = 1; } } - + elseif ($mx_request_vars->is_request('login')) + { + die('Invalid user_id to login: '.ANONYMOUS); + } + // // At this point either $userdata should be populated or // one of the below is true @@ -174,10 +271,11 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a $sessiondata['autologinid'] = ''; $sessiondata['userid'] = $user_id = ANONYMOUS; $enable_autologin = $login = 0; - - $sql = 'SELECT * - FROM ' . USERS_TABLE . ' - WHERE user_id = ' . (int) $user_id; + + $sql = 'SELECT u.*, u.user_id as user_colour, u.user_level as user_type, p.default_lang as user_lang, p.board_timezone as user_timezone + FROM ' . USERS_TABLE . ' u, ' . SESSIONS_KEYS_TABLE . ' k, ' . PORTAL_TABLE . ' p + WHERE u.user_id = ' . (int) $user_id . ' + AND p.portal_id = 1'; if (!($result = $db->sql_query($sql))) { mx_message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql); @@ -187,36 +285,13 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a $db->sql_freeresult($result); } - - // - // Initial ban check against user id, IP and email address - // /* - preg_match('/(..)(..)(..)(..)/', $user_ip, $user_ip_parts); - - $sql = "SELECT ban_ip, ban_userid, ban_email - FROM " . BANLIST_TABLE . " - WHERE ban_ip IN ('" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "', '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff', '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff', '" . $user_ip_parts[1] . "ffffff') - OR ban_userid = $user_id"; - if ( $user_id != ANONYMOUS ) - { - $sql .= " OR ban_email LIKE '" . str_replace("\'", "''", $userdata['user_email']) . "' - OR ban_email LIKE '" . substr(str_replace("\'", "''", $userdata['user_email']), strpos(str_replace("\'", "''", $userdata['user_email']), "@")) . "'"; - } - if ( !($result = $db->sql_query($sql)) ) - { - mx_message_die(CRITICAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql); - } - - if ( $ban_info = $db->sql_fetchrow($result) ) - { - if ( $ban_info['ban_ip'] || $ban_info['ban_userid'] || $ban_info['ban_email'] ) - { - mx_message_die(CRITICAL_MESSAGE, 'You_been_banned'); - } - } - */ - + * Initial ban check against user id, IP and email address + * Is user banned? Are they excluded? Won't return on ban, exists within method + * / + $this->check_ban_for_current_session($board_config); + /**/ + // // Create or update the session // @@ -236,7 +311,7 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a mx_message_die(CRITICAL_ERROR, 'Error creating new session', '', __LINE__, __FILE__, $sql); } } - + if ( $user_id != ANONYMOUS ) { $last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time; @@ -275,9 +350,14 @@ function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_a if ( !$db->sql_query($sql) ) { - mx_message_die(CRITICAL_ERROR, 'Error updating session key', '', __LINE__, __FILE__, $sql); + $sql2 = 'UPDATE ' . SESSIONS_KEYS_TABLE . " + SET last_login = $current_time + WHERE key_id = '" . md5($sessiondata['autologinid']) . "'"; + if ( !$db->sql_query($sql2) ) + { + mx_message_die(CRITICAL_ERROR, 'Error updating session key', '', __LINE__, __FILE__, $sql); + } } - $sessiondata['autologinid'] = $auto_login_key; unset($auto_login_key); } @@ -334,7 +414,7 @@ function session_pagestart($user_ip, $thispage_id) else { $sessiondata = array(); - $session_id = $mx_request_vars->get('sid',MX_TYPE_NO_TAGS); + $session_id = $mx_request_vars->is_get('sid', MX_TYPE_NO_TAGS); $sessionmethod = SESSION_METHOD_GET; } @@ -355,23 +435,18 @@ function session_pagestart($user_ip, $thispage_id) // session_id exists so go ahead and attempt to grab all // data in preparation // - $sql = "SELECT u.*, s.* - FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u + $sql = "SELECT u.*, u.user_id as user_colour, u.user_level as user_type, p.default_lang as user_lang, p.board_timezone as user_timezone, s.* + FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u, " . PORTAL_TABLE . " p WHERE s.session_id = '$session_id' - AND u.user_id = s.session_user_id"; + AND u.user_id = s.session_user_id + AND p.portal_id = 1"; if ( !($result = $db->sql_query($sql)) ) { - $user_id = ( isset($sessiondata['userid']) ) ? intval($sessiondata['userid']) : ANONYMOUS; - - if ( !($userdata = $this->session_begin($user_id, $user_ip, $thispage_id, TRUE)) ) - { - mx_message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql); - } + mx_message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql); } - else - { - $userdata = $db->sql_fetchrow($result); - } + + $userdata = $db->sql_fetchrow($result); + // // Did the session exist in the DB? // @@ -500,8 +575,8 @@ function session_end($session_id, $user_id) // We expect that message_die will be called after this function, // but just in case it isn't, reset $userdata to the details for a guest // - $sql = 'SELECT * - FROM ' . USERS_TABLE . ' + $sql = 'SELECT u.*, u.user_id as user_colour, u.user_level as user_type, p.default_lang as user_lang, p.board_timezone as user_timezone + FROM ' . USERS_TABLE . ' u, ' . PORTAL_TABLE . ' p WHERE user_id = ' . ANONYMOUS; if ( !($result = $db->sql_query($sql)) ) { @@ -611,1080 +686,5223 @@ function session_reset_keys($user_id, $user_ip) unset($auto_login_key); } } + + /** + * Sets a cookie + * + * Sets a cookie of the given name with the specified data for the given length of time. + */ + function set_cookie($name, $cookiedata, $cookietime) + { + global $board_config; - /** ******************************************************************************************************* - * Include the User class - ******************************************************************************************************* */ + $name_data = rawurlencode($board_config['cookie_name'] . '_' . $name) . '=' . rawurlencode($cookiedata); + $expire = gmdate('D, d-M-Y H:i:s \\G\\M\\T', $cookietime); + $domain = (!$board_config['cookie_domain'] || $board_config['cookie_domain'] == 'localhost' || $board_config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $board_config['cookie_domain']; + + header('Set-Cookie: ' . $name_data . '; expires=' . $expire . '; path=' . $board_config['cookie_path'] . $domain . ((!$board_config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false); + } /** - * Define backend specific lang defs + * Check for banned user + * + * Checks whether the supplied user is banned by id, ip or email. If no parameters + * are passed to the method pre-existing session data is used. If $return is false + * this routine does not return on finding a banned user, it outputs a relevant + * message and stops execution. + * + * @param string|array $user_ips Can contain a string with one IP or an array of multiple IPs */ - function setup($lang_set = false, $style = false) + function check_ban($user_id = false, $user_ips = false, $user_email = false, $return = false) { - global $db, $template, $board_config, $userdata, $phpbb_auth, $phpEx, $phpbb_root_path, $mx_root_path, $mx_cache; - global $mx_request_vars, $portal_config, $shared_lang_path; //added for mxp + global $board_config, $db; - $lang_set = !$lang_set ? (defined('IN_ADMIN') ? 'lang_admin' : 'lang_main') : $lang_set; + if (defined('IN_CHECK_BAN')) + { + return; + } - $this->lang_name = $this->lang['default_lang']; - $this->lang_path = $shared_lang_path; + $banned = false; - $this->date_format = $board_config['default_dateformat']; - $this->timezone = $board_config['board_timezone'] * 3600; - $this->dst = $this->data['user_dst'] * 3600; + preg_match('/(..)(..)(..)(..)/', $user_ips, $user_ip_parts); + /* + $sql = "SELECT ban_ip, ban_userid, ban_email + FROM " . BANLIST_TABLE . " + WHERE ban_ip IN ('" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "', '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff', '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff', '" . $user_ip_parts[1] . "ffffff') + OR ban_userid = $user_id"; + if ( $user_id != ANONYMOUS ) + { + $sql .= " OR ban_email LIKE '" . str_replace("\'", "''", $userdata['user_email']) . "' + OR ban_email LIKE '" . substr(str_replace("\'", "''", $userdata['user_email']), strpos(str_replace("\'", "''", $userdata['user_email']), "@")) . "'"; + } - // - // We include common language file here to not load it every time a custom language file is included - // - $lang = &$this->lang; + // Determine which entries to check, only return those + if ($user_email === false) + { + $sql .= " AND ban_email = ''"; + } - /* Sort of pointless here, since we have already included all main lang files - if ((@include $this->lang_path . "common.$phpEx") === false) + if ($user_ips === false) { - //this will fix the path for anonymouse users - if ((@include $phpbb_root_path . $this->lang_path . "common.$phpEx") === false) + $sql .= " AND (ban_ip = '' OR ban_exclude = 1)"; + } + + if ($user_id === false) + { + $sql .= ' AND (ban_userid = 0 OR ban_exclude = 1)'; + } + else + { + $sql .= ' AND (ban_userid = ' . $user_id; + + if ($user_email !== false) { - die('Language file ' . $this->lang_path . "common.$phpEx" . ' couldn\'t be opened.'); + $sql .= " OR ban_email <> ''"; } - } - $this->add_lang($lang_set); + if ($user_ips !== false) + { + $sql .= " OR ban_ip <> ''"; + } - // We include common language file here to not load it every time a custom language file is included - //$lang = &$this->lang; - unset($lang_set); - */ + $sql .= ')'; + } - return; - } - /** - * Sync UserData - * @access private - */ - function sync_userdata($userdata = false) - { - if (empty($userdata)) + if ( !($result = $db->sql_query($sql)) ) { - return false; - } - foreach ($userdata as $key => $value) + mx_message_die(CRITICAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql); + } + + $ban_triggered_by = 'user'; + if ( $ban_info = $db->sql_fetchrow($result) ) { - $do = true; - switch ($key) - { - // Rename user_data keys and get internal sitename/sitedesc - case 'user_id': - case 'user_name': - case 'user_regdate': - case 'user_posts': - case 'user_level': - case 'user_lang': - break; - /* - case 'last_login': - $key = 'user_lastvisit'; - break; - */ - } - if ($do) + if ( $ban_info['ban_ip'] || $ban_info['ban_userid'] || $ban_info['ban_email'] ) { - return $userdata[$key] = $value; + $banned = true; + $return = true; } - } - } + } + $db->sql_freeresult($result); + */ + if ($banned && !$return) + { + mx_message_die(CRITICAL_MESSAGE, 'You_been_banned'); + } - /** - * A replacement for unserialize that returns whether it worked and - * populates the unserialized variable by reference. - * - * @author walf - * @link http://www.php.net/manual/pt_BR/function.unserialize.php#105500 - * @param string $serialized the serialized data - * @param array $into the variable to hold the unserialized array - * @return bool whether the data was unserialized or not - * borrowed here from SMF Backend - * @since 0.1.2 - * - */ - function funserialize($serialized, &$into) - { - static $sfalse; - if ($sfalse === null) - { - $sfalse = serialize(false); - } - $into = @unserialize($serialized); - return $into !== false || @rtrim($serialized) === $sfalse; - //whitespace at end of serialized var is ignored by PHP + return ($banned) ? true : false; } /** - * Setup style - * - * Define backend specific style defs + * Check the current session for bans * + * @return true if session user is banned. */ - function setup_style() + protected function check_ban_for_current_session($config) { - return; + if (!defined('SKIP_CHECK_BAN') && $this->data['user_type'] != USER_FOUNDER) + { + if (!isset($config['forwarded_for_check'])) + { + $this->check_ban($this->data['user_id'], $this->ip); + } + else + { + $ips = explode(' ', $this->forwarded_for); + $ips[] = $this->ip; + $this->check_ban($this->data['user_id'], $ips); + } + } } /** - * Add Language Items - use_db and use_help are assigned where needed (only use them to force inclusion) + * Check if ip is blacklisted + * This should be called only where absolutely necessary * - * @param mixed $lang_set specifies the language entries to include - * @param bool $use_db internal variable for recursion, do not use - * @param bool $use_help internal variable for recursion, do not use + * Only IPv4 (rbldns does not support AAAA records/IPv6 lookups) * - * Examples: - * - * $lang_set = array('posting', 'help' => 'faq'); - * $lang_set = array('posting', 'viewtopic', 'help' => array('bbcode', 'faq')) - * $lang_set = array(array('posting', 'viewtopic'), 'help' => array('bbcode', 'faq')) - * $lang_set = 'posting' - * $lang_set = array('help' => 'faq', 'db' => array('help:faq', 'posting')) - * + * @author satmd (from the php manual) + * @param string $mode register/post - spamcop for example is omitted for posting + * @param string|false $ip the IPv4 address to check + * + * @return false if ip is not blacklisted, else an array([checked server], [lookup]) */ - function add_lang($lang_set, $use_db = false, $use_help = false) + function check_dnsbl($mode, $ip = false) { - global $phpEx; + if ($ip === false) + { + $ip = $this->ip; + } - if (is_array($lang_set)) + // Neither Spamhaus nor Spamcop supports IPv6 addresses. + if (strpos($ip, ':') !== false) { - foreach ($lang_set as $key => $lang_file) - { - // Please do not delete this line. - // We have to force the type here, else [array] language inclusion will not work - $key = (string) $key; + return false; + } - if ($key == 'db') - { - $this->add_lang($lang_file, true, $use_help); - } - else if ($key == 'help') - { - $this->add_lang($lang_file, $use_db, true); - } - else if (!is_array($lang_file)) + $dnsbl_check = array( + 'sbl.spamhaus.org' => 'http://www.spamhaus.org/query/bl?ip=', + ); + + if ($mode == 'register') + { + $dnsbl_check['bl.spamcop.net'] = 'http://spamcop.net/bl.shtml?'; + } + + if ($ip) + { + $quads = explode('.', $ip); + $reverse_ip = $quads[3] . '.' . $quads[2] . '.' . $quads[1] . '.' . $quads[0]; + + // Need to be listed on all servers... + $listed = true; + $info = array(); + + foreach ($dnsbl_check as $dnsbl => $lookup) + { + if (phpbb_checkdnsrr($reverse_ip . '.' . $dnsbl . '.', 'A') === true) { - $this->set_lang($this->lang, $this->help, $lang_file, $use_db, $use_help); + $info = array($dnsbl, $lookup . $ip); } else { - $this->add_lang($lang_file, $use_db, $use_help); + $listed = false; } } - unset($lang_set); - } - elseif ($lang_set) - { - $this->set_lang($this->lang, $this->help, $lang_set, $use_db, $use_help); + + if ($listed) + { + return $info; + } } + + return false; } + + /** ******************************************************************************************************* + * Include the User class + ******************************************************************************************************* */ /** - * Set language entry (called by add_lang) - * @access private + * Define backend specific lang defs */ - function set_lang(&$lang, &$help, $lang_file, $use_db = false, $use_help = false) + function setup($lang_set = false, $style = false) { - global $phpbb_root_path, $phpEx; + global $mx_cache, $template, $phpbb_auth, $phpEx, $phpbb_root_path, $mx_root_path; + global $mx_request_vars, $portal_config, $shared_lang_path, $phpBB2; //added for mxp - // $lang == $this->lang - // $help == $this->help - // - add appropriate variables here, name them as they are used within the language file... - if (!$use_db) + + global $board_config, $theme, $images; + global $db, $board_config, $userdata, $phpbb_root_path; + global $template, $lang, $phpEx, $nav_links; + + $this->data = !empty($this->data['user_id']) ? $this->data : $this->session_pagestart($this->user_ip, $this->page_id); + + $this->cache = is_object($mx_cache) ? $mx_cache : new base(); + + if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) { - if ($use_help && strpos($lang_file, '/') !== false) + $this->data['is_bot'] = true; + } + else + { + $this->data['is_bot'] = false; + } + + // + // Populate session_id + // + $this->session_id = $this->data['session_id']; + + $this->lang_path = $shared_lang_path; + $this->lang_name = isset($this->data['user_lang']) ? $this->data['user_lang'] : $board_config['default_lang']; + + //$this->lang_path = $phpbb_root_path . 'language/'; + + $lang_set = !$lang_set ? (defined('IN_ADMIN') ? 'lang_admin' : 'lang_main') : $lang_set; + // + // Grab MXP global variables, re-cache if necessary + // - optional parameter to enable/disable cache for config data. If enabled, remember to refresh the MX-Publisher cache whenever updating MXP config settings + // - true: enable cache, false: disable cache + if (empty($portal_config['portal_status'])) + { + $portal_config = $this->obtain_mxbb_config(false); + } + // + // Grab phpBB global variables, re-cache if necessary + // - optional parameter to enable/disable cache for config data. If enabled, remember to refresh the MX-Publisher cache whenever updating phpBB config settings + // - true: enable cache, false: disable cache + if (empty($board_config['script_path'])) + { + $board_config = $mx_cache->obtain_config(false); + } + $board_config['avatar_gallery_path'] = 'includes/shared/phpbb2/images/avatar/'; + $board_config['user_timezone'] = !empty($board_config['user_timezone']) ? $board_config['user_timezone'] : $board_config['board_timezone']; + $this->data['user_dst'] = !empty($this->data['user_dst']) ? $this->data['user_dst'] : $this->data['user_timezone']; + $board_config['require_activation'] = 0; + $this->date_format = $board_config['default_dateformat']; + $this->timezone = $board_config['user_timezone'] * 3600; + $this->dst = $this->data['user_timezone'] * 3600; + + $sign = ($board_config['board_timezone'] < 0) ? '-' : '+'; + $time_offset = abs($board_config['board_timezone']); + + $offset_seconds = $time_offset % 3600; + $offset_minutes = $offset_seconds / 60; + $offset_hours = ($time_offset - $offset_seconds) / 3600; + + // Zone offset + $zone_offset = $this->timezone + $this->dst; + + $offset_string = sprintf($board_config['default_dateformat'], $sign, $offset_hours, $offset_minutes); + + $s_date = gmdate("Y-m-d\TH:i:s", time() + $zone_offset) . $offset_string; + + // Format Timezone. We are unable to use array_pop here, because of PHP3 compatibility + $l_timezone = explode('.', $board_config['board_timezone']); + $l_timezone = (count($l_timezone) > 1) ? $this->lang(sprintf('%.1f', $board_config['board_timezone'])) : $offset_string; + + $server_name = !empty($board_config['server_name']) ? preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['server_name'])) : 'localhost'; + $server_protocol = ($board_config['cookie_secure'] ) ? 'http://' : 'http://'; + $server_port = (($board_config['server_port']) && ($board_config['server_port'] <> 80)) ? ':' . trim($board_config['server_port']) . '/' : '/'; + $script_name_phpbb = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path'])) . '/'; + $server_url = $server_protocol . str_replace("//", "/", $server_name . $server_port . '/'); //On some server the slash is not added and this trick will fix it + $corrected_url = $server_protocol . $server_name . $server_port . $script_name_phpbb; + $board_url = PORTAL_URL; + $web_path = (defined('PORTAL_URL')) ? $board_url : $corrected_url; + + @define('PHPBB_URL', $board_url); + + // + // Send a proper content-language to the output + // + $img_lang = $default_lang = ($this->data['user_lang']) ? $this->data['user_lang'] : $board_config['default_lang']; + + if ($this->data['user_id'] != ANONYMOUS) + { + if (!empty($this->data['user_lang'])) { - $language_filename = $this->lang_path . substr($lang_file, 0, stripos($lang_file, '/') + 1) . 'help_' . substr($lang_file, stripos($lang_file, '/') + 1) . '.' . $phpEx; + $default_lang = $phpBB2->phpbb_ltrim(basename($phpBB2->phpbb_rtrim($this->data['user_lang'])), "'"); } - else + + if (!empty($this->data['user_dateformat'])) { - $language_filename = $this->lang_path . (($use_help) ? 'help_' : '') . $lang_file . '.' . $phpEx; + $board_config['default_dateformat'] = $this->data['user_dateformat']; } - //fix for mxp - if ((@include $language_filename) === false) + if (isset($userdata['user_timezone'])) { - //this will fix the path for anonymouse users - if ((@include $phpbb_root_path . $language_filename) === false) - { - die('Language file ' . $language_filename . ' couldn\'t be opened.'); - } + $board_config['board_timezone'] = $this->data['user_timezone']; } } else { - // Get Database Language Strings - // Put them into $lang if nothing is prefixed, put them into $help if help: is prefixed - // For example: help:faq, posting - die("You should not use db with MX-Publisher!"); + $default_lang = $phpBB2->phpbb_ltrim(basename($phpBB2->phpbb_rtrim($board_config['default_lang'])), "'"); } - - // We include common language file here to not load it every time a custom language file is included - $this->lang = &$lang; - } - - /** - * Specify/Get image - // - // phpBB2 Graphics - redefined for mxBB - // - Uncomment and redefine phpBB graphics - // - // If you need to redefine some phpBB graphics, look within the phpBB/templates folder for the template_name.cfg file and - // redefine those $image['xxx'] you want. Note: Many phpBB images are reused all over mxBB (eg see below), thus if you redefine - // common phpBB images, this will have immedaite effect for all mxBB pages. - // - */ - function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag') - { - static $imgs; - global $phpbb_root_path, $mx_root_path, $mx_images; - // - // Load phpBB Template configuration data - // - First try current template - // - if ( file_exists( $phpbb_root_path . $this->current_template_path . "/images" ) ) + // Shared phpBB2 lang files dir + // Load vanilla phpBB2 lang files if is possible + $shared_phpbb2_path = $mx_root_path . 'includes/shared/phpbb2/'; + $shared_phpbb3_path = $mx_root_path . 'includes/shared/phpbb3/'; + $shared_lang_path = $mx_root_path . 'includes/shared/phpbb2/language/'; + $lang_path = $mx_root_path . 'includes/shared/phpbb2/language/'; + + if (!file_exists(@phpbb_realpath($shared_phpbb2_path . 'lang_' . $default_lang . '/lang_main.'.$phpEx)) && !file_exists(@phpbb_realpath($shared_lang_path . 'lang_' . $default_lang . '/lang_main.'.$phpEx))) { - $current_template_path = $this->current_template_path; - $template_name = $this->template_name; - - @include($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg'); + if ($userdata['user_id'] !== ANONYMOUS) + { + // For logged in users, try the board default language next + // Just in case we do fallback on $board_config['phpbb_lang'] + // Since $board_config['default_lang'] has been overwiten in function $mx_user->_init_userprefs() + $default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['phpbb_lang'])), "'"); + } + else + { + // For guests it means the default language is not present, try english + // This is a long shot since it means serious errors in the setup to reach here, + // but english is part of a new install so it's worth us trying + $default_lang = 'english'; + } + + if (!file_exists(@phpbb_realpath($shared_phpbb2_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx))) + { + mx_message_die(CRITICAL_ERROR, 'Could not locate valid phpBB2 language pack in $mx_user->setup() for: ' . $default_lang); + } } - // - // Since we have no current Template Config file, try the cloned template instead - // - if ( file_exists( $phpbb_root_path . $this->cloned_current_template_path . "/images" ) && !defined('TEMPLATE_CONFIG') ) + // If we've had to change the value in any way then let's write it back to the database + // before we go any further since it means there is something wrong with it + if ($this->data['user_id'] != ANONYMOUS && $this->data['user_lang'] !== $default_lang) { - $current_template_path = $this->cloned_current_template_path; - $template_name = $this->cloned_template_name; + /* * / + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_lang = '" . $this->decode_lang($this->lang['default_lang']) . "' + WHERE user_lang = '" . $this->decode_lang($this->data['user_lang']) . "'"; + if (!($result = $db->sql_query($sql))) + { + mx_message_die(CRITICAL_ERROR, 'Could not update user language info in setup'); + } + /* */ + $this->data['user_lang'] = $default_lang; + } + elseif ($this->data['user_id'] == ANONYMOUS && $board_config['default_lang'] !== $default_lang) + { + $sql = "UPDATE " . PORTAL_TABLE . " SET + default_lang = '" . $this->decode_lang($this->lang['default_lang']) . "' + WHERE portal_id = '1'"; - @include($phpbb_root_path . $this->cloned_current_template_path . '/' . $this->cloned_template_name . '.cfg'); + if (!($result = $db->sql_query($sql))) + { + mx_message_die(CRITICAL_ERROR, 'Could not update user language info'); + } } + $board_config['default_lang'] = $default_lang; + $portal_config['default_lang'] = $default_lang; + $this->lang_name = $this->lang['default_lang'] = $default_lang; + $this->lang_path = $shared_phpbb2_path . 'language/lang_' . $board_config['default_lang'] . '/'; + // - // Last attempt, use default template intead + // We include common language file here to not load it every time a custom language file is included // - if ( file_exists( $phpbb_root_path . $this->default_current_template_path . "/images" ) && !defined('TEMPLATE_CONFIG') ) - { - $current_template_path = $this->default_current_template_path; - $template_name = $this->default_template_name; + $lang = &$this->lang; - @include($phpbb_root_path . $this->default_current_template_path . '/' . $this->default_template_name . '.cfg'); + /** Sort of pointless here, since we have already included all main lang files **/ + if ((@include $this->lang_path . "lang_main.$phpEx") === false) + { + //this will fix the path for anonymouse users + if ((@include $phpbb_root_path . $this->lang_path . "lang_main.$phpEx") === false) + { + die('Language file (setup) ' . $this->lang_path . "lang_main.$phpEx" . ' couldn\'t be opened.'); + } } + // include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx); + + $this->add_lang($lang_set); - $this->img_lang = (file_exists($phpbb_root_path . $current_template_path . $this->lang_name)) ? $this->lang_name : $board_config['default_lang']; - - /* Here we overwrite phpBB images from the template configuration file with images from database */ + // We include common language file here to not load it every time a custom language file is included + $this->set_lang($this->lang, $this->help, 'common'); + // $lang = &$this->lang; - $this->img_array['image_filename'] = array( - 'img_site_logo' => "logo.gif", - 'img_upload_bar' => "upload_bar.gif", - 'img_icon_contact_aim' => "icon_aim.gif", - 'img_icon_contact_email' => "icon_email.gif", - 'img_icon_contact_icq' => "icon_icq_add.gif", - 'img_icon_contact_jabber' => "icon_jabber.gif", - 'img_icon_contact_msnm' => "icon_msnm.gif", - 'img_icon_contact_pm' => "icon_pm.gif", - 'img_icon_contact_yahoo' => "icon_yim.gif", - 'img_icon_contact_www' => "icon_www.gif", - 'img_icon_post_delete' => "icon_delete.gif", - 'img_icon_post_edit' => "icon_edit.gif", - 'img_icon_post_info' => "icon_info.gif", - 'img_icon_post_quote' => "icon_quote.gif", - 'img_icon_post_report' => "icon_report.gif", - 'img_icon_user_online' => "icon_online.gif", - 'img_icon_user_offline' => "icon_offline.gif", - 'img_icon_user_profile' => "icon_profile.gif", - 'img_icon_user_search' => "icon_search.gif", - 'img_icon_user_warn' => "icon_warn.gif", - 'img_button_pm_forward' => "reply.gif", - 'img_button_pm_new' => "msg_newpost.gif", - 'img_button_pm_reply' => "reply.gif", - 'img_button_topic_locked' => "msg_newpost.gif", - 'img_button_topic_new' => "post.gif", - 'img_button_topic_reply' => "reply.gif", - 'img_forum_link' => "forum_link.gif", - 'img_forum_read' => "forum_read.gif", - 'img_forum_read_locked' => "forum_read_locked.gif", - 'img_forum_read_subforum' => "forum_read_subforum.gif", - 'img_forum_unread' => "forum_unread.gif", - 'img_forum_unread_locked' => "forum_unread_locked.gif", - 'img_forum_unread_subforum' => "forum_unread_subforum.gif", - 'img_topic_moved' => "topic_moved.gif", - 'img_topic_read' => "topic_read.gif", - 'img_topic_read_mine' => "topic_read_mine.gif", - 'img_topic_read_hot' => "topic_read_hot.gif", - 'img_topic_read_hot_mine' => "topic_read_hot_mine.gif", - 'img_topic_read_locked' => "topic_read_locked.gif", - 'img_topic_read_locked_mine' => "topic_read_locked_mine.gif", - 'img_topic_unread' => "topic_unread.gif", - 'img_topic_unread_mine' => "topic_unread_mine.gif", - 'img_topic_unread_hot' => "topic_unread_hot.gif", - 'img_topic_unread_hot_mine' => "topic_unread_hot_mine.gif", - 'img_topic_unread_locked' => "topic_unread_locked.gif", - 'img_topic_unread_locked_mine' => "topic_unread_locked_mine.gif", - 'img_sticky_read' => "sticky_read.gif", - 'img_sticky_read_mine' => "sticky_read_mine.gif", - 'img_sticky_read_locked' => "sticky_read_locked.gif", - 'img_sticky_read_locked_mine' => "ticky_read_locked_mine.gif", - 'img_sticky_unread' => "sticky_unread.gif", - 'img_sticky_unread_mine' => "sticky_unread_mine.gif", - 'img_sticky_unread_locked' => "sticky_unread_locked.gif", - 'img_sticky_unread_locked_mine' => "sticky_unread_locked_mine.gif", - 'img_announce_read' => "announce_read.gif", - 'img_announce_read_mine' => "announce_read_mine.gif", - 'img_announce_read_locked' => "announce_read_locked.gif", - 'img_announce_read_locked_mine' => "announce_read_locked_mine.gif", - 'img_announce_unread' => "announce_unread.gif", - 'img_announce_unread_mine' => "announce_unread_mine.gif", - 'img_announce_unread_locked' => "announce_unread_locked.gif", - 'img_announce_unread_locked_mine' => "announce_unread_locked_mine.gif", - 'img_global_read' => "announce_read.gif", - 'img_global_read_mine' => "announce_read_mine.gif", - 'img_global_read_locked' => "announce_read_locked.gif", - 'img_global_read_locked_mine' => "announce_read_locked_mine.gif", - 'img_global_unread' => "announce_unread.gif", - 'img_global_unread_mine' => "announce_unread_mine.gif", - 'img_global_unread_locked' => "announce_unread_locked.gif", - 'img_global_unread_locked_mine' => "announce_unread_locked_mine.gif", - 'img_subforum_read' => "", - 'img_subforum_unread' => "", - 'img_pm_read' => "topic_read.gif", - 'img_pm_unread' => "topic_unread.gif", - 'img_icon_back_top' => "", - 'img_icon_post_target' => "icon_post_target.gif", - 'img_icon_post_target_unread' => "icon_post_target_unread.gif", - 'img_icon_topic_attach' => "icon_topic_attach.gif", - 'img_icon_topic_latest' => "icon_topic_latest.gif", - 'img_icon_topic_newest' => "icon_topic_newest.gif", - 'img_icon_topic_reported' => "icon_topic_reported.gif", - 'img_icon_topic_unapproved' => "icon_topic_unapproved.gif" + unset($lang_set); + + if (defined('IN_ADMIN')) + { + if(!file_exists(@phpbb_realpath($shared_phpbb2_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.'.$phpEx))) + { + $board_config['default_lang'] = 'english'; + } + include($shared_phpbb2_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx); + } + + // + // We setup common user language variables + // + $this->lang = &$lang; + //print_r($this->lang); + $this->user_lang = !empty($this->lang['USER_LANG']) ? $this->lang['USER_LANG'] : $this->encode_lang($this->lang_name); + $user_lang = $this->user_lang; + + $this->user_language = $this->encode_lang($this->lang_name); + $this->default_language = $this->encode_lang($board_config['default_lang']); + + $this->user_language_name = $this->decode_lang($this->lang_name); + $this->default_language_name = $this->decode_lang($board_config['default_lang']); + + $counter = 0; //First language pack lang_id + $lang_ids = array(); + $lang_list = $this->get_lang_list(); + + if (is_array($lang_list)) + { + foreach ($lang_list as $lang_english_name => $lang_local_name) + { + $lang_ids[$lang_english_name] = $counter; + $counter++; + } + } + + $lang_entries = array( + 'lang_id' => !empty($lang_ids['lang_' . $this->user_language_name]) ? $lang_ids['lang_' . $this->user_language_name] : $counter, + 'lang_iso' => !empty($lang['USER_LANG']) ? $lang['USER_LANG'] : $this->encode_lang($this->lang_name), + 'lang_dir' => 'lang_' . $this->lang_name, + 'lang_english_name' => $this->user_language_name, + 'lang_local_name' => $this->ucstrreplace('lang_', '', $this->lang_name), + 'lang_author' => !empty($lang['TRANSLATION_INFO']) ? $lang['TRANSLATION_INFO'] : 'Language pack author not set in ACP.' ); - $this->img_array['image_lang'] = array( - 'img_icon_post_edit' => $this->img_lang, - 'img_icon_post_quote' => $this->img_lang, - 'img_button_pm_forward' => $this->img_lang, - 'img_button_pm_new' => $this->img_lang, - 'img_button_pm_reply' => $this->img_lang, - 'img_button_topic_new' => $this->img_lang, - 'img_button_topic_reply' => $this->img_lang - ); + // + // Finishing setting language variables to ouput + // + $this->lang_iso = $lang_iso = $lang_entries['lang_iso']; + $this->lang_dir = $lang_dir = $lang_entries['lang_dir']; + $this->lang_english_name = $lang_english_name = $lang_entries['lang_english_name']; + $this->lang_local_name = $lang_local_name = $lang_entries['lang_local_name']; - $img_data = &$imgs[$img]; - - if (empty($img_data)) + // + // Set up style to output + // + if ($this->data['user_id'] == ANONYMOUS && empty($this->data['user_style'])) { - if (!isset($this->img_array[$img])) - { - // Do not fill the image to let designers decide what to do if the image is empty - $img_data = ''; - return $img_data; - } + $this->data['user_style'] = $board_config['default_style']; + } + + /* + * This code was or is used for phpBB3 backend + * now commented here + * * * / + if (!empty($_GET['style']) || isset($_COOKIE['style'])) + { + global $SID, $_EXTRA_URL; - $img_data['src'] = PHPBB_URL . $current_template_path . ($this->img_array[$img]['image_lang'] ? $this->img_array[$img]['image_lang'] .'/' : '') . $this->img_array[$img]['image_filename']; - $img_data['width'] = (!empty($width)) ? $width : ''; //$this->img_array[$img]['image_width']; - $img_data['height'] = (!empty($height)) ? $height : ''; //$this->img_array[$img]['image_height']; + $style_request = phpBB3::request_var('style', 0); + $SID .= '&style=' . $style_request; + $_EXTRA_URL = array('style=' . $style_request); + + if ( $theme = $this->_setup_style($style_request) ) + { + setcookie('style', $style_request, (time() + 21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + return; + } } + /** + * + * */ + - $alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt; + + /* + * Setup demo style code + * Start + * * / + if ( isset($_GET['demo_theme']) || isset($_COOKIE['demo_theme'])) + { + $style_request = isset($_GET['demo_theme']) ? intval($_GET['demo_theme']) : intval($_COOKIE['demo_theme']); + if ( $theme = $this->_setup_style($style_request) ) + { + setcookie('demo_theme', $style_request, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + return; + } + } + /* + * Setup demo style code + * Ends + */ + + $style_request = $mx_request_vars->request('style', MX_TYPE_INT, 1); + + if ($mx_request_vars->is_get('style') && (!$board_config['override_user_style'] || !defined('IN_ADMIN'))) + { + global $SID, $_EXTRA_URL; - switch ($type) + $style = $style_request; + $SID .= '&style=' . $style; + $_EXTRA_URL = array('style=' . $style); + } + else { - case 'src': - return $img_data['src']; - break; + // Set up style + $style = ($style) ? $style : ((!$board_config['override_user_style']) ? $this->data['user_style'] : $board_config['default_style']); + } + /* + * Setup style code + * Start + * * / + //If user have other style in mxp then the one from phpBB not to have forum page and modules graphics will be messaed up + //Anonymouse users should see all block graphic corect + //Query phpBB style_id corepondent to mxp themes_id + $sql = "SELECT s.* + FROM " . MX_THEMES_TABLE . " AS m, " . THEMES_TABLE . " AS s + WHERE s.themes_id = " . (int) $style_id . " + AND s.template_name = m.template_name"; + $result = $db->sql_query($sql); + $this->style = $this->theme = $theme = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + // Fallback to user's standard style + if (!$this->style && $style_id != $this->data['user_style']) + { + $style_id = $this->data['user_style']; + + $sql = "SELECT s.* + FROM " . MX_THEMES_TABLE . " AS m, " . THEMES_TABLE . " AS s + WHERE s.themes_id = " . (int) $style_id . " + AND s.template_name = m.template_name"; + $result = $db->sql_query($sql); + $this->style = $this->theme = $theme = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + } + // Fallback to user's standard style + if (!$this->style) + { + $this->style = $this->theme = $theme = setup_style($style_id); + + mx_message_die(CRITICAL_ERROR, "Could not query database for phpbb_styles info style_id [$style_id]", "", __LINE__, __FILE__, $sql); + } + + $this->template_name = $theme['template_name']; + + // We are trying to setup a style which does not exist in the database + // Try to fallback to the board default (if the user had a custom style) + // and then any users using this style to the default if it succeeds + if ($theme['themes_id'] != $board_config['default_style']) + { + $sql = 'SELECT template_name + FROM ' . THEMES_TABLE . ' + WHERE themes_id = ' . (int) $board_config['default_style']; + + if ($row = $db->sql_fetchrow($result = $db->sql_query($sql))) + { + $db->sql_freeresult($result); + $this->default_current_template_name = !empty($row['template_name']) ? $row['template_name'] : $this->default_current_template_name; + } + } + + //Setup cloned template as prosilver based for phpBB3 styles + if( @file_exists(@phpbb_realpath($phpbb_root_path . $this->template_path . $this->template_name . '/style.cfg')) ) + { + $cfg = parse_cfg_file($phpbb_root_path . $this->template_path . $this->template_name . '/style.cfg'); + $this->cloned_template_name = !empty($cfg['parent']) ? $cfg['parent'] : 'prosilver'; + $this->cloned_template_path = $this->template_path . $this->cloned_template_name; + $this->default_template_name = !empty($cfg['parent']) ? $cfg['parent'] : 'prosilver'; + } + + //Setup current_template_path + $this->default_current_template_path = $this->template_path . $this->default_current_template_name; + $this->current_template_path = $this->template_path . $this->template_name; + $this->theme['theme_path'] = $this->template_name; + + $parsed_array = $this->cache->get('_cfg_' . $this->template_path); - case 'width': - return ($width === false) ? $img_data['width'] : $width; - break; + if ($parsed_array === false) + { + $parsed_array = array(); + } + + if( @file_exists(@phpbb_realpath($phpbb_root_path . $this->current_template_path . '/style.cfg')) ) + { + //parse phpBB3 style cfg file + $cfg_file_name = 'style.cfg'; + $cfg_file = $phpbb_root_path . $this->current_template_path . '/style.cfg'; + + if (!isset($parsed_array['filetime']) || (@filemtime($cfg_file) > $parsed_array['filetime'])) + { + // Re-parse cfg file + $parsed_array = parse_cfg_file($cfg_file); + $parsed_array['filetime'] = @filemtime($cfg_file); + $this->cache->put('_cfg_' . $this->template_path, $parsed_array); + } + } + else + { + //parse phpBB2 style cfg file + $cfg_file_name = $this->template_name . '.cfg'; + $cfg_file = $phpbb_root_path . $this->current_template_path . '/' . $cfg_file_name; + + if (file_exists($phpbb_root_path . $this->current_template_path . '/' . $cfg_file_name)) + { + if (!isset($parsed_array['filetime']) || (@filemtime($cfg_file) > $parsed_array['filetime'])) + { + $parsed_array = parse_cfg_file($cfg_file); + $parsed_array['filetime'] = @filemtime($cfg_file); + $this->cache->put('_cfg_' . $this->template_path, $parsed_array); + } + } + } + + $check_for = array( + 'pagination_sep' => (string) ', ' + ); - case 'height': - return $img_data['height']; - break; + foreach ($check_for as $key => $default_value) + { + $this->style[$key] = (isset($parsed_array[$key])) ? $parsed_array[$key] : $default_value; + $this->theme[$key] = (isset($parsed_array[$key])) ? $parsed_array[$key] : $default_value; + settype($this->style[$key], gettype($default_value)); + settype($this->theme[$key], gettype($default_value)); + if (is_string($default_value)) + { + $this->style[$key] = htmlspecialchars($this->style[$key]); + $this->theme[$key] = htmlspecialchars($this->theme[$key]); + } + } + + // If the style author specified the theme needs to be cached + // (because of the used paths and variables) than make sure it is the case. + // For example, if the theme uses language-specific images it needs to be stored in db. + if (file_exists($phpbb_root_path . $this->template_path . $this->template_name . '/theme/stylesheet.css')) + { + //phpBB3 Style Sheet + $theme_file = 'stylesheet.css'; + $css_file_path = $this->template_path . $this->template_name . '/theme/'; + $stylesheet = file_get_contents("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/stylesheet.css"); + } + else + { + //phpBB2 Style Sheet + $theme_file = !empty($this->theme['head_stylesheet']) ? $this->theme['head_stylesheet'] : $this->template_name . '.css'; + $css_file_path = $this->template_path . $this->template_name . '/'; + if (file_exists($phpbb_root_path . $this->template_path . $this->template_name . '/' . $theme_file)) + { + $stylesheet = file_get_contents("{$phpbb_root_path}{$this->template_path}{$this->template_name}/{$theme_file}"); + } + } + + if (!empty($stylesheet)) + { + // Match CSS imports + $matches = array(); + preg_match_all('/@import url\(["\'](.*)["\']\);/i', $stylesheet, $matches); + + if (sizeof($matches)) + { + $content = ''; + foreach ($matches[0] as $idx => $match) + { + if ($content = @file_get_contents("{$phpbb_root_path}{$css_file_path}" . $matches[1][$idx])) + { + $content = trim($content); + } + else + { + $content = ''; + } + $stylesheet = str_replace($match, $content, $stylesheet); + } + unset($content); + } - default: - $use_width = ($width === false) ? $img_data['width'] : $width; + $stylesheet = str_replace('./', $css_file_path, $stylesheet); - return '' . $alt . ''; - break; + $theme_info = array( + 'theme_data' => $stylesheet, + 'theme_mtime' => time(), + 'theme_storedb' => 0 + ); + $theme_data = &$theme_info['theme_data']; + } + + // + // - First try old Olympus image sets then phpBB2 and phpBB3 Proteus template lang images + // + if (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/imageset/")) + { + $this->imageset_path = '/imageset/'; //Olympus ImageSet + $this->img_lang = (file_exists($phpbb_root_path . $this->template_path . $this->template_name . $this->imageset_path . $this->lang_iso)) ? $this->lang_iso : $this->default_language; + $this->img_lang_dir = $this->img_lang; + $this->imageset_backend = 'olympus'; + } + elseif (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/images/")) + { + $this->imageset_path = '/theme/images/'; //phpBB3 Images + if ((@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/images/lang_{$this->user_language_name}")) || (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/images/lang_{$this->default_language_name}"))) + { + $this->img_lang = (file_exists($phpbb_root_path . $this->template_path . $this->template_name . $this->imageset_path . 'lang_' . $this->user_language_name)) ? $this->user_language_name : $this->default_language_name; + $this->img_lang_dir = 'lang_' . $this->img_lang; + $this->imageset_backend = 'phpbb2'; + } + if ((@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/images/{$this->user_language}")) || (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/theme/images/{$this->default_language}"))) + { + $this->img_lang = (file_exists($phpbb_root_path . $this->template_path . $this->template_name . $this->imageset_path . $this->user_language_name)) ? $this->user_language : $this->default_language; + $this->img_lang_dir = $this->img_lang; + $this->imageset_backend = 'phpbb3'; + } + } + elseif (@is_dir("{$phpbb_root_path}{$this->template_path}{$this->template_name}/images/")) + { + $this->imageset_path = '/images/'; //phpBB2 Images + $this->img_lang = (file_exists($phpbb_root_path . $this->template_path . $this->template_name . $this->imageset_path . '/images/lang_' . $this->user_language_name)) ? $this->user_language_name : $this->default_language_name; + $this->img_lang_dir = 'lang_' . $this->img_lang; + $this->imageset_backend = 'phpbb2'; + } + + // + // Olympus image sets main images + // + if (@file_exists("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}/imageset.cfg")) + { + $cfg_data_imageset = parse_cfg_file("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}/imageset.cfg"); + + foreach ($cfg_data_imageset as $image_name => $value) + { + if (strpos($value, '*') !== false) + { + if (substr($value, -1, 1) === '*') + { + list($image_filename, $image_height) = explode('*', $value); + $image_width = 0; + } + else + { + list($image_filename, $image_height, $image_width) = explode('*', $value); + } + } + else + { + $image_filename = $value; + $image_height = $image_width = 0; + } + + if (strpos($image_name, 'img_') === 0 && $image_filename) + { + $image_name = substr($image_name, 4); + $row[] = array( + 'image_name' => (string) $image_name, + 'image_filename' => (string) $image_filename, + 'image_height' => (int) $image_height, + 'image_width' => (int) $image_width, + 'imageset_id' => (int) $style_id, + 'image_lang' => '', + ); + + if (!empty($row['image_lang'])) + { + $localised_images = true; + } + $row['image_filename'] = !empty($row['image_filename']) ? rawurlencode($row['image_filename']) : ''; + $row['image_name'] = !empty($row['image_name']) ? rawurlencode($row['image_name']) : ''; + $this->img_array[$row['image_name']] = $row; + } + } + } + + // + // - Olympus image sets lolalised images + // + if (@file_exists("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}{$this->img_lang}/imageset.cfg")) + { + $cfg_data_imageset_data = parse_cfg_file("{$phpbb_root_path}{$this->template_path}{$this->template_name}{$this->imageset_path}{$this->img_lang}/imageset.cfg"); + foreach ($cfg_data_imageset_data as $image_name => $value) + { + if (strpos($value, '*') !== false) + { + if (substr($value, -1, 1) === '*') + { + list($image_filename, $image_height) = explode('*', $value); + $image_width = 0; + } + else + { + list($image_filename, $image_height, $image_width) = explode('*', $value); + } + } + else + { + $image_filename = $value; + $image_height = $image_width = 0; + } + + if (strpos($image_name, 'img_') === 0 && $image_filename) + { + $image_name = substr($image_name, 4); + $row[] = array( + 'image_name' => (string) $image_name, + 'image_filename' => (string) $image_filename, + 'image_height' => (int) $image_height, + 'image_width' => (int) $image_width, + 'imageset_id' => !empty($this->theme['imageset_id']) ? (int) $this->theme['imageset_id'] : 0, + 'image_lang' => (string) $this->img_lang, + ); + + if (!empty($row['image_lang'])) + { + $localised_images = true; + } + $row['image_filename'] = !empty($row['image_filename']) ? rawurlencode($row['image_filename']) : ''; + $row['image_name'] = !empty($row['image_name']) ? rawurlencode($row['image_name']) : ''; + $this->img_array[$row['image_name']] = $row; + } + } + } + + // + // - phpBB3 Rhea and Proteus lang images + // + + + // + // - Try redefining phpBB2 images + // + if (empty($this->img_array)) + { + // * Now check for the correct existance of all of the images into + // * each image of a prosilver based style. + + + // Here we overwrite phpBB images from the template db or configuration file + $rows = array( + array( 'image_id' => 1, + 'image_name' => 'site_logo', + 'image_filename' => 'site_logo.gif', + 'image_lang' => '', + 'image_height' => 52, + 'image_width' => 139, + 'imageset_id' => 1 + ), + array( 'image_id' => 2, + 'image_name' => 'forum_link', + 'image_filename' => 'forum_link.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 3, + 'image_name' => 'forum_read', + 'image_filename' => 'forum_read.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 4, + 'image_name' => 'forum_read_locked', + 'image_filename' => 'forum_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 5, + 'image_name' => 'forum_read_subforum', + 'image_filename' => 'forum_read_subforum.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( + 'image_id' => 6, + 'image_name' => 'forum_unread', + 'image_filename' => 'forum_unread.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 7, + 'image_name' => 'forum_unread_locked', + 'image_filename' => 'forum_unread_locked.gif', + 'image_lang' => '', 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 8, + 'image_name' => 'forum_unread_subforum', + 'image_filename' => 'forum_unread_subforum.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 9, + 'image_name' => 'topic_moved', + 'image_filename' => 'topic_moved.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 10, + 'image_name' => 'topic_read', + 'image_filename' => 'topic_read.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 11, + 'image_name' => 'topic_read_mine', + 'image_filename' => 'topic_read_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 12, + 'image_name' => 'topic_read_hot', + 'image_filename' => 'topic_read_hot.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 13, + 'image_name' => 'topic_read_hot_mine', + 'image_filename' => 'topic_read_hot_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 14, + 'image_name' => 'topic_read_locked', + 'image_filename' => 'topic_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 15, + 'image_name' => 'topic_read_locked_mine', + 'image_filename' => 'topic_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 16, + 'image_name' => 'topic_unread', + 'image_filename' => 'topic_unread.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 17, + 'image_name' => 'topic_unread_mine', + 'image_filename' => 'topic_unread_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 18, + 'image_name' => 'topic_unread_hot', + 'image_filename' => 'topic_unread_hot.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 19, + 'image_name' => 'topic_unread_hot_mine', + 'image_filename' => 'topic_unread_hot_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 20, + 'image_name' => 'topic_unread_locked', + 'image_filename' => 'topic_unread_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 21, + 'image_name' => 'topic_unread_locked_mine', + 'image_filename' => 'topic_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 22, + 'image_name' => 'sticky_read', + 'image_filename' => 'sticky_read.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 23, + 'image_name' => 'sticky_read_mine', + 'image_filename' => 'sticky_read_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 24, + 'image_name' => 'sticky_read_locked', + 'image_filename' => 'sticky_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 25, + 'image_name' => 'sticky_read_locked_mine', + 'image_filename' => 'sticky_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 26, + 'image_name' => 'sticky_unread', + 'image_filename' => 'sticky_unread.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 27, + 'image_name' => 'sticky_unread_mine', + 'image_filename' => 'sticky_unread_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 28, + 'image_name' => 'sticky_unread_locked', + 'image_filename' => 'sticky_unread_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 29, + 'image_name' => 'sticky_unread_locked_mine', + 'image_filename' => 'sticky_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 30, + 'image_name' => 'announce_read', + 'image_filename' => 'announce_read.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 31, + 'image_name' => 'announce_read_mine', + 'image_filename' => 'announce_read_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 32, + 'image_name' => 'announce_read_locked', + 'image_filename' => 'announce_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 33, + 'image_name' => 'announce_read_locked_mine', + 'image_filename' => 'announce_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 34, + 'image_name' => 'announce_unread', + 'image_filename' => 'announce_unread.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 35, + 'image_name' => 'announce_unread_mine', + 'image_filename' => 'announce_unread_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 36, + 'image_name' => 'announce_unread_locked', + 'image_filename' => 'announce_unread_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 37, + 'image_name' => 'announce_unread_locked_mine', + 'image_filename' => 'announce_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 38, + 'image_name' => 'global_read', + 'image_filename' => 'announce_read.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 39, + 'image_name' => 'global_read_mine', + 'image_filename' => 'announce_read_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 40, + 'image_name' => 'global_read_locked', + 'image_filename' => 'announce_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 41, + 'image_name' => 'global_read_locked_mine', + 'image_filename' => 'announce_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 42, + 'image_name' => 'global_unread', + 'image_filename' => 'announce_unread.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 43, + 'image_name' => 'global_unread_mine', + 'image_filename' => 'announce_unread_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 44, + 'image_name' => 'global_unread_locked', + 'image_filename' => 'announce_unread_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 45, + 'image_name' => 'global_unread_locked_mine', + 'image_filename' => 'announce_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 46, + 'image_name' => 'pm_read', + 'image_filename' => 'topic_read.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 47, + 'image_name' => 'pm_unread', + 'image_filename' => 'topic_unread.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 48, + 'image_name' => 'icon_back_top', + 'image_filename' => 'icon_back_top.gif', + 'image_lang' => '', + 'image_height' => 11, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 49, + 'image_name' => 'icon_contact_aim', + 'image_filename' => 'icon_contact_aim.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 50, + 'image_name' => 'icon_contact_email', + 'image_filename' => 'icon_contact_email.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 51, + 'image_name' => 'icon_contact_icq', + 'image_filename' => 'icon_contact_icq.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 52, + 'image_name' => 'icon_contact_jabber', + 'image_filename' => 'icon_contact_jabber.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 53, + 'image_name' => 'icon_contact_msnm', + 'image_filename' => 'icon_contact_msnm.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 54, + 'image_name' => 'icon_contact_www', + 'image_filename' => 'icon_contact_www.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 55, + 'image_name' => 'icon_contact_yahoo', + 'image_filename' => 'icon_contact_yahoo.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 56, + 'image_name' => 'icon_post_delete', + 'image_filename' => 'icon_post_delete.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 57, + 'image_name' => 'icon_post_info', + 'image_filename' => 'icon_post_info.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 58, + 'image_name' => 'icon_post_report', + 'image_filename' => + 'icon_post_report.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 59, + 'image_name' => 'icon_post_target', + 'image_filename' => 'icon_post_target.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 60, + 'image_name' => 'icon_post_target_unread', + 'image_filename' => 'icon_post_target_unread.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 61, + 'image_name' => 'icon_topic_attach', + 'image_filename' => 'icon_topic_attach.gif', + 'image_lang' => '', + 'image_height' => 10, + 'image_width' => 7 , + 'imageset_id' => 1 + ), + array( 'image_id' => 62, + 'image_name' => 'icon_topic_latest', + 'image_filename' => 'icon_topic_latest.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 63, + 'image_name' => 'icon_topic_newest', + 'image_filename' => 'icon_topic_newest.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 64, + 'image_name' => 'icon_topic_reported', + 'image_filename' => 'icon_topic_reported.gif', + 'image_lang' => '', + 'image_height' => 14, + 'image_width' => 16 , + 'imageset_id' => 1 + ), + array( 'image_id' => 65, + 'image_name' => 'icon_topic_unapproved', + 'image_filename' => 'icon_topic_unapproved.gif', + 'image_lang' => '', + 'image_height' => 14, + 'image_width' => 16 , + 'imageset_id' => 1 + ), + array( 'image_id' => 66, + 'image_name' => 'icon_user_warn', + 'image_filename' => 'icon_user_warn.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 67, + 'image_name' => 'subforum_read', + 'image_filename' => 'subforum_read.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 68, + 'image_name' => 'subforum_unread', + 'image_filename' => 'subforum_unread.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 69, + 'image_name' => 'icon_contact_pm', + 'image_filename' => 'icon_contact_pm.gif', + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 28 , + 'imageset_id' => 1 + ), + array( 'image_id' => 70, + 'image_name' => 'icon_post_edit', + 'image_filename' => 'icon_post_edit.gif', + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 42 , + 'imageset_id' => 1 + ), + array( 'image_id' => 71, + 'image_name' => 'icon_post_quote', + 'image_filename' => 'icon_post_quote.gif', + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 54 , + 'imageset_id' => 1 + ), + array( 'image_id' => 72, + 'image_name' => 'icon_user_online', + 'image_filename' => 'icon_user_online.gif', + 'image_lang' => '{LANG}', + 'image_height' => 58, + 'image_width' => 58 , + 'imageset_id' => 1 + ), + array( 'image_id' => 73, + 'image_name' => 'button_pm_forward', + 'image_filename' => 'button_pm_forward.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ), + array( 'image_id' => 74, + 'image_name' => 'button_pm_new', + 'image_filename' => 'button_pm_new.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 84 , + 'imageset_id' => 1 + ), + array( 'image_id' => 75, + 'image_name' => 'button_pm_reply', + 'image_filename' => 'button_pm_reply.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ), + array( 'image_id' => 76, + 'image_name' => 'button_topic_locked', + 'image_filename' => 'button_topic_locked.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 88 , + 'imageset_id' => 1 + ), + array( 'image_id' => 77, + 'image_name' => 'button_topic_new', + 'image_filename' => 'button_topic_new.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ), + array( 'image_id' => 78, + 'image_name' => 'button_topic_reply', + 'image_filename' => 'button_topic_reply.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ) + ); + + foreach ($rows as $row) + { + $row['image_filename'] = rawurlencode($row['image_filename']); + + if(empty($row['image_name'])) + { + //print_r('Your style configuration file has a typo! '); + //print_r($row); + $row['image_name'] = 'spacer.gif'; + } + + $this->img_array[$row['image_name']] = $row; + } + } + + /** + * Now check for the correct existance of all images of the $user->style['style_path'] + * $template->set_template(); + * print_r($this->images['forum']); + */ + //$this->setup_style(); + + + // + // Mozilla navigation bar + // Default items that should be valid on all pages. + // Defined here to correctly assign the Language Variables + // and be able to change the variables within code. + // + $nav_links['top'] = array ( + 'url' => mx_append_sid($phpbb_root_path . 'index.' . $phpEx), + 'title' => sprintf($lang['Forum_Index'], $board_config['sitename']) + ); + $nav_links['search'] = array ( + 'url' => mx_append_sid($phpbb_root_path . 'search.' . $phpEx), + 'title' => $lang['Search'] + ); + $nav_links['help'] = array ( + 'url' => mx_append_sid($phpbb_root_path . 'faq.' . $phpEx), + 'title' => $lang['FAQ'] + ); + $nav_links['author'] = array ( + 'url' => mx_append_sid($phpbb_root_path . 'memberlist.' . $phpEx), + 'title' => $lang['Memberlist'] + ); + + // + // Dummy include, to make all original phpBB functions available + // + include_once($phpbb_root_path . 'includes/functions.' . $phpEx); // In case we need old functions... + + // + // Is phpBB File Attachment MOD present? + // + if( file_exists($phpbb_root_path . 'attach_mod') ) + { + include_once($phpbb_root_path . 'attach_mod/attachment_mod.' . $phpEx); } + + return; } /** - * Get option bit field from user options + * Setup style + * + * Define backend specific style defs + * + */ + function setup_style() + { + $template = new mx_Template($this->mx_root_path . $this->template_path . $this->template_name); + @define('IP_ROOT_PATH', $this->mx_root_path); //for ICY-PHOENIX Styles + + if (is_object($template)) + { + if(is_dir($this->mx_root_path . $this->current_template_path . '/theme/images/')) + { + $current_template_images = $this->current_template_images = $this->current_template_path . "/theme/images"; + } + elseif(is_dir($this->mx_root_path . $this->current_template_path . '/images/')) + { + $current_template_images = $this->current_template_images = $this->current_template_path . "/images"; + } + + global $phpBB2; + + $phpbb_root_path = $this->mx_root_path; + + $current_template_path = $this->template_path . $this->template_name; + + $cfg = array(); + //$row = $this->theme; + + /** + /* session->setup_style( ) + **/ + unset($GLOBALS['TEMPLATE_CONFIG']); + $mx_template_config = false; + if(@file_exists(@$phpBB2->phpbb_realpath($mx_root_path . $this->template_path . $this->template_name . '/' . $this->template_name . '.cfg')) ) + { + @include($mx_root_path . $this->template_path . $this->template_name . '/' . $this->template_name . '.cfg'); + + if (!defined('TEMPLATE_CONFIG')) + { + // + // Do not alter this line! + // + @define(TEMPLATE_CONFIG, TRUE); + } + } + elseif( @file_exists(@phpbb_realpath($mx_root_path . $this->template_path . $this->template_name . "/style.cfg")) ) + { + // + // Do not alter this line! + // + @define(TEMPLATE_CONFIG, TRUE); + $cfg = parse_cfg_file($mx_root_path. $this->template_path . basename($this->template_name) . '/style.cfg'); + + // + // - First try phpBB2 then phpBB3 template lang images then old Olympus image sets + // + if ( file_exists($mx_root_path . $this->current_template_path . '/images/') ) + { + $this->current_template_images = $this->current_template_path . '/images'; + } + else if ( file_exists($mx_root_path . $this->current_template_path . '/theme/images/') ) + { + $this->current_template_images = $this->current_template_path . '/theme/images'; + } + if ( file_exists($mx_root_path . $this->current_template_path . '/imageset/') ) + { + $this->current_template_images = $this->current_template_path . '/imageset'; + } + + $current_template_images = $this->current_template_images; + + $images['icon_quote'] = "$current_template_images/{LANG}/" . $this->img('icon_post_quote.gif', '', '', '', 'filename'); + $images['icon_edit'] = "$current_template_images/{LANG}/" . $this->img('icon_post_edit.gif', '', '', '', 'filename'); + $images['icon_search'] = "$current_template_images/{LANG}/" . $this->img('icon_user_search.gif', '', '', '', 'filename'); + $images['icon_profile'] = "$current_template_images/{LANG}/" . $this->img('icon_user_profile.gif', '', '', '', 'filename'); + $images['icon_pm'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_pm.gif', '', '', '', 'filename'); + $images['icon_email'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_email.gif', '', '', '', 'filename'); + $images['icon_delpost'] = "$current_template_images/{LANG}/" . $this->img('icon_post_delete.gif', '', '', '', 'filename'); + $images['icon_ip'] = "$current_template_images/{LANG}/" . $this->img('icon_user_ip.gif', '', '', '', 'filename'); + $images['icon_www'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_www.gif', '', '', '', 'filename'); + $images['icon_icq'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_icq_add.gif', '', '', '', 'filename'); + $images['icon_aim'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_aim.gif', '', '', '', 'filename'); + $images['icon_yim'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_yim.gif', '', '', '', 'filename'); + $images['icon_msnm'] = "$current_template_images/{LANG}/" . $this->img('icon_contact_msnm.gif', '', '', '', 'filename'); + $images['icon_minipost'] = "$current_template_images/" . $this->img('icon_post_target.gif', '', '', '', 'filename'); + $images['icon_gotopost'] = "$current_template_images/" . $this->img('icon_gotopost.gif', '', '', '', 'filename'); + $images['icon_minipost_new'] = "$current_template_images/" . $this->img('icon_post_target_unread.gif', '', '', '', 'filename'); + $images['icon_latest_reply'] = "$current_template_images/" . $this->img('icon_latest_reply.gif', '', '', '', 'filename'); + $images['icon_newest_reply'] = "$current_template_images/" . $this->img('icon_newest_reply.gif', '', '', '', 'filename'); + + $images['forum'] = "$current_template_images/" . $this->img('forum_read.gif', '', '27', '', 'filename'); + $images['forum_new'] = "$current_template_images/" . $this->img('forum_unread.gif', '', '', '', 'filename'); + $images['forum_locked'] = "$current_template_images/" . $this->img('forum_read_locked.gif', '', '', '', 'filename'); + + // Begin Simple Subforums MOD + $images['forums'] = "$current_template_images/" . $this->img('forum_read_subforum.gif', '', '', '', 'filename'); + $images['forums_new'] = "$current_template_images/" . $this->img('forum_unread_subforum.gif', '', '', '', 'filename'); + // End Simple Subforums MOD + + $images['folder'] = "$current_template_images/" . $this->img('topic_read.gif', '', '', '', 'filename'); + $images['folder_new'] = "$current_template_images/" . $this->img('topic_unread.gif', '', '', '', 'filename'); + $images['folder_hot'] = "$current_template_images/" . $this->img('topic_read_hot.gif', '', '', '', 'filename'); + $images['folder_hot_new'] = "$current_template_images/" . $this->img('topic_unread_hot.gif', '', '', '', 'filename'); + $images['folder_locked'] = "$current_template_images/" . $this->img('topic_read_locked.gif', '', '', '', 'filename'); + $images['folder_locked_new'] = "$current_template_images/" . $this->img('topic_unread_locked.gif', '', '', '', 'filename'); + $images['folder_sticky'] = "$current_template_images/" . $this->img('topic_read_mine.gif', '', '', '', 'filename'); + $images['folder_sticky_new'] = "$current_template_images/" . $this->img('topic_unread_mine.gif', '', '', '', 'filename'); + $images['folder_announce'] = "$current_template_images/" . $this->img('announce_read.gif', '', '', '', 'filename'); + $images['folder_announce_new'] = "$current_template_images/" . $this->img('announce_unread.gif', '', '', '', 'filename'); + + $images['post_new'] = "$current_template_images/{LANG}/" . $this->img('button_topic_new.gif', '', '', '', 'filename'); + $images['post_locked'] = "$current_template_images/{LANG}/" . $this->img('button_topic_locked.gif', '', '', '', 'filename'); + $images['reply_new'] = "$current_template_images/{LANG}/" . $this->img('button_topic_reply.gif', '', '', '', 'filename'); + $images['reply_locked'] = "$current_template_images/{LANG}/" . $this->img('icon_post_target_unread.gif', '', '', '', 'filename'); + + $images['pm_inbox'] = "$current_template_images/" . $this->img('msg_inbox.gif', '', '', '', 'filename'); + $images['pm_outbox'] = "$current_template_images/" . $this->img('msg_outbox.gif', '', '', '', 'filename'); + $images['pm_savebox'] = "$current_template_images/" . $this->img('msg_savebox.gif', '', '', '', 'filename'); + $images['pm_sentbox'] = "$current_template_images/" . $this->img('msg_sentbox.gif', '', '', '', 'filename'); + $images['pm_readmsg'] = "$current_template_images/" . $this->img('topic_read.gif', '', '', '', 'filename'); + $images['pm_unreadmsg'] = "$current_template_images/" . $this->img('topic_unread.gif', '', '', '', 'filename'); + $images['pm_replymsg'] = "$current_template_images/{LANG}/" . $this->img('reply.gif', '', '', '', 'filename'); + $images['pm_postmsg'] = "$current_template_images/{LANG}/" . $this->img('msg_newpost.gif', '', '', '', 'filename'); + $images['pm_quotemsg'] = "$current_template_images/{LANG}/" . $this->img('icon_quote.gif', '', '', '', 'filename'); + $images['pm_editmsg'] = "$current_template_images/{LANG}/" . $this->img('icon_edit.gif', '', '', '', 'filename'); + $images['pm_new_msg'] = ""; + $images['pm_no_new_msg'] = ""; + + $images['Topic_watch'] = ""; + $images['topic_un_watch'] = ""; + $images['topic_mod_lock'] = "$current_template_images/" . $this->img('topic_lock.gif', '', '', '', 'filename'); + $images['topic_mod_unlock'] = "$current_template_images/" . $this->img('topic_unlock.gif', '', '', '', 'filename'); + $images['topic_mod_split'] = "$current_template_images/" . $this->img('topic_split.gif', '', '', '', 'filename'); + $images['topic_mod_move'] = "$current_template_images/" . $this->img('topic_move.gif', '', '', '', 'filename'); + $images['topic_mod_delete'] = "$current_template_images/" . $this->img('topic_delete.gif', '', '', '', 'filename'); + + $images['voting_graphic'][0] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][1] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][2] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][3] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][4] = "$current_template_images/voting_bar.gif"; + + // + // Vote graphic length defines the maximum length of a vote result + // graphic, ie. 100% = this length + // + $board_config['vote_graphic_length'] = 205; + $board_config['privmsg_graphic_length'] = 175; + } + + if (!defined('TEMPLATE_CONFIG')) + { + mx_message_die(CRITICAL_ERROR, "Could not open $this->template_name template config file", '', __LINE__, __FILE__, $sql); + } + + $img_lang = (file_exists(@$phpBB2->phpbb_realpath($mx_root_path . $this->current_template_path . '/images/lang_' . $board_config['default_lang']))) ? $board_config['default_lang'] : 'english'; + + while(list($key, $value) = @each($images)) + { + if (!is_array($value)) + { + $this->images[$key] = $images[$key] = str_replace('{LANG}', $this->img_lang_dir, $value); + } + } + } + } + + /** + * Add Language Items - use_db and use_help are assigned where needed (only use them to force inclusion) + * + * @param mixed $lang_set specifies the language entries to include + * @param bool $use_db internal variable for recursion, do not use + * @param bool $use_help internal variable for recursion, do not use + * + * Examples: + * + * $lang_set = array('posting', 'help' => 'faq'); + * $lang_set = array('posting', 'viewtopic', 'help' => array('bbcode', 'faq')) + * $lang_set = array(array('posting', 'viewtopic'), 'help' => array('bbcode', 'faq')) + * $lang_set = 'posting' + * $lang_set = array('help' => 'faq', 'db' => array('help:faq', 'posting')) + * */ - function optionget($key, $data = false) + function add_lang($lang_set, $use_db = false, $use_help = false) { - if (!isset($this->keyvalues[$key])) + global $phpEx; + + if (is_array($lang_set)) { - $var = ($data) ? $data : $this->data['user_options']; - $this->keyvalues[$key] = ($var & 1 << $this->keyoptions[$key]) ? true : false; + foreach ($lang_set as $key => $lang_file) + { + // Please do not delete this line. + // We have to force the type here, else [array] language inclusion will not work + $key = (string) $key; + + if ($key == 'db') + { + $this->add_lang($lang_file, true, $use_help); + } + else if ($key == 'help') + { + $this->add_lang($lang_file, $use_db, true); + } + else if (!is_array($lang_file)) + { + $this->set_lang($this->lang, $this->help, $lang_file, $use_db, $use_help); + } + else + { + $this->add_lang($lang_file, $use_db, $use_help); + } + } + unset($lang_set); + } + elseif ($lang_set) + { + $this->set_lang($this->lang, $this->help, $lang_set, $use_db, $use_help); + } + } + + /** + * Set language entry (called by add_lang) + * @access private + */ + function set_lang(&$lang, &$help, $lang_file, $use_db = false, $use_help = false) + { + global $mx_root_path, $phpbb_root_path, $phpEx; + + // $lang == $this->lang + // $help == $this->help + // - add appropriate variables here, name them as they are used within the language file... + if (!$use_db) + { + if ($use_help && strpos($lang_file, '/') !== false) + { + $language_filename = $this->lang_path . substr($lang_file, 0, stripos($lang_file, '/') + 1) . 'help_' . substr($lang_file, stripos($lang_file, '/') + 1) . '.' . $phpEx; + } + else + { + $language_filename = $this->lang_path . (($use_help) ? 'help_' : '') . $lang_file . '.' . $phpEx; + } + + //fix for mxp + if ((@include $language_filename) === false) + { + // + //this will fix the path for shared language files + // + $language_phpbb2_filename = substr_count($language_filename, 'phpbb3') ? str_replace("phpbb3", "phpbb2", $language_filename) : str_replace("phpbb3", "phpbb2", $language_filename); + $language_phpbb3_filename = substr_count($language_filename, 'phpbb2') ? str_replace("phpbb2", "phpbb3", $language_filename) : str_replace("phpb2", "phpbb3", $language_filename); + + // + //this will fix the path for anonymouse users + // + $shared_phpbb2_path = substr_count($phpbb_root_path, 'phpbb3') ? str_replace("phpbb3", "phpbb2", $phpbb_root_path) : str_replace("phpbb3", "phpbb2", $phpbb_root_path); + $shared_phpbb3_path = substr_count($phpbb_root_path, 'phpbb2') ? str_replace("phpbb2", "phpbb3", $phpbb_root_path) : str_replace("phpb2", "phpbb3", $phpbb_root_path); + + if ((@include $language_phpbb3_filename) !== false) + { + //continue; + } + elseif ((@include $language_phpbb2_filename) !== false) + { + //continue; + } + elseif ((@include $phpbb_root_path . $language_filename) !== false) + { + //continue; + } + elseif ((@include $mx_root_path . $language_filename) !== false) + { + //continue; + } + elseif ((@include str_replace("phpbb3", "phpbb2", $language_filename)) !== false) + { + //continue; + } + elseif ((@include str_replace("phpbb2", "phpbb3", $language_filename)) === false) + { + $language_filename = $mx_root_path . '/language/' .$this->lang_english_name . (($use_help) ? 'help_' : '') . $lang_file . '.' . $phpEx; + + if ((@include str_replace("phpbb3", "phpbb2", $language_filename)) !== false) + { + die('Language file (set_lang) ' . str_replace("phpbb2", "phpbb3", $language_filename) . ' couldn\'t be opened by set_lang().'); + } + } + } + } + else + { + // Get Database Language Strings + // Put them into $lang if nothing is prefixed, put them into $help if help: is prefixed + // For example: help:faq, posting + die("You should not use db with MX-Publisher!"); + } + + // We include common language file here to not load it every time a custom language file is included + $this->lang = &$lang; + } + + /** + * Add Language Items from an extension - use_db and use_help are assigned where needed (only use them to force inclusion) + * + * @param string $ext_name The extension to load language from, or empty for core files + * @param mixed $lang_set specifies the language entries to include + * @param bool $use_db internal variable for recursion, do not use + * @param bool $use_help internal variable for recursion, do not use + * + * Note: $use_db and $use_help should be removed. Kept for BC purposes. + * + * @deprecated: 3.2.0-dev (To be removed: 4.0.0) + */ + function add_lang_ext($ext_name, $lang_set, $use_db = false, $use_help = false) + { + if ($ext_name === '/') + { + $ext_name = ''; + } + + $this->add_lang($lang_set, $use_db, $use_help, $ext_name); + } + + + /** + * More advanced language substitution + * Function to mimic sprintf() with the possibility of using phpBB's language system to substitute nullar/singular/plural forms. + * Params are the language key and the parameters to be substituted. + * This function/functionality is inspired by SHS` and Ashe. + * + * Example call: $user->lang('NUM_POSTS_IN_QUEUE', 1); + */ + /** + * Advanced language substitution + * + * Function to mimic sprintf() with the possibility of using phpBB's language system to substitute nullar/singular/plural forms. + * Params are the language key and the parameters to be substituted. + * This function/functionality is inspired by SHS` and Ashe. + * + * Example call: $user->lang('NUM_POSTS_IN_QUEUE', 1); + * + * If the first parameter is an array, the elements are used as keys and subkeys to get the language entry: + * Example: $user->lang(array('datetime', 'AGO'), 1) uses $user->lang['datetime']['AGO'] as language entry. + * + * @return string Return localized string or the language key if the translation is not available + */ + public function lang() + { + $args = func_get_args(); + $key = $args[0]; + //$key = array_shift($args); + if (is_array($key)) + { + $lang = &$this->lang[array_shift($key)]; + + foreach ($key as $_key) + { + $lang = &$lang[$_key]; + } + } + else + { + $lang = &$this->lang[$key]; + } + + // Return if language string does not exist + if (!isset($lang) || (!is_string($lang) && !is_array($lang))) + { + global $lang; + } + + // Return if language string does not exist + if (!isset($lang) || (!is_string($lang) && !is_array($lang))) + { + return $key; + } + + // If the language entry is a string, we simply mimic sprintf() behaviour + if (is_string($lang)) + { + if (sizeof($args) == 1) + { + return $lang; + } + + // Replace key with language entry and simply pass along... + $args[0] = $lang; + return call_user_func_array('sprintf', $args); + } + + // It is an array... now handle different nullar/singular/plural forms + $key_found = false; + + // We now get the first number passed and will select the key based upon this number + for ($i = 1, $num_args = sizeof($args); $i < $num_args; $i++) + { + if (is_int($args[$i])) + { + $numbers = array_keys($lang); + + foreach ($numbers as $num) + { + if ($num > $args[$i]) + { + break; + } + + $key_found = $num; + } + break; + } + } + + // Ok, let's check if the key was found, else use the last entry (because it is mostly the plural form) + if ($key_found === false) + { + $numbers = array_keys($lang); + $key_found = end($numbers); + } + + + + // Use the language string we determined and pass it to sprintf() + $args[0] = $lang[$key_found]; + return call_user_func_array('sprintf', $args); + //return $this->lang_array($key, $args); + } + + /** + * Format user date + * + * @param int $gmepoch unix timestamp + * @param string $format date format in date() notation. | used to indicate relative dates, for example |d m Y|, h:i is translated to Today, h:i. + * @param bool $forcedate force non-relative date format. + * + * @return mixed translated date + */ + function format_date($gmepoch, $format = false, $forcedate = false) + { + static $midnight; + static $date_cache; + + $format = (!$format) ? $this->date_format : $format; + $now = time(); + $delta = $now - $gmepoch; + + if (!isset($date_cache[$format])) + { + // Is the user requesting a friendly date format (i.e. 'Today 12:42')? + $date_cache[$format] = array( + 'is_short' => strpos($format, '|'), + 'format_short' => substr($format, 0, strpos($format, '|')) . '||' . substr(strrchr($format, '|'), 1), + 'format_long' => str_replace('|', '', $format), + // Filter out values that are not strings (e.g. arrays) for strtr(). + 'lang' => array_filter($this->lang['datetime'], 'is_string'), + ); + + // Short representation of month in format? Some languages use different terms for the long and short format of May + if ((strpos($format, '\M') === false && strpos($format, 'M') !== false) || (strpos($format, '\r') === false && strpos($format, 'r') !== false)) + { + $date_cache[$format]['lang']['May'] = $this->lang('datetime', 'May_short'); + } + } + + // Zone offset + $zone_offset = $this->timezone + $this->dst; + + // Show date <= 1 hour ago as 'xx min ago' but not greater than 60 seconds in the future + // A small tolerence is given for times in the future but in the same minute are displayed as '< than a minute ago' + if ($delta <= 3600 && $delta > -60 && ($delta >= -5 || (($now / 60) % 60) == (($gmepoch / 60) % 60)) && $date_cache[$format]['is_short'] !== false && !$forcedate && isset($this->lang['datetime']['AGO'])) + { + return $this->lang(array('datetime', 'AGO'), max(0, (int) floor($delta / 60))); + } + + if (!$midnight) + { + list($d, $m, $y) = explode(' ', gmdate('j n Y', time() + $zone_offset)); + $midnight = gmmktime(0, 0, 0, $m, $d, $y) - $zone_offset; + } + + if ($date_cache[$format]['is_short'] !== false && !$forcedate && !($gmepoch < $midnight - 86400 || $gmepoch > $midnight + 172800)) + { + $day = false; + + if ($gmepoch > $midnight + 86400) + { + $day = 'TOMORROW'; + } + else if ($gmepoch > $midnight) + { + $day = 'TODAY'; + } + else if ($gmepoch > $midnight - 86400) + { + $day = 'YESTERDAY'; + } + + if ($day !== false) + { + return str_replace('||', $this->lang['datetime'][$day], strtr(@gmdate($date_cache[$format]['format_short'], $gmepoch + $zone_offset), $date_cache[$format]['lang'])); + } + } + + return strtr(@gmdate($date_cache[$format]['format_long'], $gmepoch + $zone_offset), $date_cache[$format]['lang']); + } + + /** + * Create a \phpbb\datetime object in the context of the current user + * + * @since 3.1 + * @param string $time String in a format accepted by strtotime(). + * @param DateTimeZone $timezone Time zone of the time. + * @return \phpbb\datetime Date time object linked to the current users locale + */ + public function create_datetime($time = 'now', \DateTimeZone $timezone = null) + { + $timezone = $timezone ?: $this->timezone; + /** + $timezones = array('Europe/London', 'Mars/Olympus', 'Mars/Ascraeus', timezone_name_from_abbr('', $timezone, 0)); + + foreach ($timezones as $tz) + { + try + { + $mars = new DateTimeZone($tz); + } + + catch(Exception $e) + { + echo $e->getMessage() . '
'; + } + } + */ + return new DateTime($time, new DateTimeZone(timezone_name_from_abbr('', $timezone, 0))); + } + + /** + * Get the UNIX timestamp for a datetime in the users timezone, so we can store it in the database. + * + * @param string $format Format of the entered date/time + * @param string $time Date/time with the timezone applied + * @param DateTimeZone $timezone Timezone of the date/time, falls back to timezone of current user + * @return int Returns the unix timestamp + */ + public function get_timestamp_from_format($format, $time, \DateTimeZone $timezone = null) + { + $timezone = $timezone ?: $this->timezone; + $date = \DateTime::createFromFormat($format, $time, $timezone); + return ($date !== false) ? $date->format('U') : false; + } + + /** + * Get language id currently used by the user + */ + function get_iso_lang_id() + { + global $board_config, $db; + + if (!empty($this->lang_id)) + { + return $this->lang_id; + } + + if (!$this->lang_name) + { + $this->lang_name = $board_config['default_lang']; + } + + $sql = 'SELECT lang_id + FROM ' . LANG_TABLE . " + WHERE lang_iso = '" . $db->sql_escape($this->lang_name) . "'"; + $result = $db->sql_query($sql); + $this->lang_id = (int) $db->sql_fetchfield('lang_id'); + $db->sql_freeresult($result); + + return $this->lang_id; + } + + /** + * Generates default bitfield + * + * This bitfield decides which bbcodes are defined in a template. + * + * @return string Bitfield + */ + public function default_bitfield() + { + static $value; + if (isset($value)) + { + return $value; + } + + // Hardcoded template bitfield to add for new templates + $default_bitfield = '1111111111111'; + + $bitfield = new bitfield(); + for ($i = 0; $i < strlen($default_bitfield); $i++) + { + if ($default_bitfield[$i] == '1') + { + $bitfield->set($i); + } + } + + return $bitfield->get_base64(); + } + + /** + * Read style configuration file + * + * @param string $dir style directory + * @return array|bool Style data, false on error + */ + protected function read_style_cfg($dir) + { + static $required = array('name', 'phpbb_version', 'copyright'); + $cfg = parse_cfg_file($this->styles_path . $dir . '/style.cfg'); + + // Check if it is a valid file + foreach ($required as $key) + { + if (!isset($cfg[$key])) + { + return false; + } + } + + // Check data + if (!isset($cfg['parent']) || !is_string($cfg['parent']) || $cfg['parent'] == $cfg['name']) + { + $cfg['parent'] = ''; + } + if (!isset($cfg['template_bitfield'])) + { + $cfg['template_bitfield'] = $this->default_bitfield(); + } + + return $cfg; + } + + /** + * Specify/Get phpBB3 images array from phpBB2 images variable + */ + function image_rows($images) + { + /* Here we overwrite phpBB images from the template db or configuration file */ + $rows = array( + array( 'image_id' => 1, + 'image_name' => $this->img_name_ext('site_logo.gif', false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext('site_logo.gif', false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 52, + 'image_width' => 139, + 'imageset_id' => 1 + ), + array( 'image_id' => 2, + 'image_name' => 'forum_link', + 'image_filename' => 'forum_link.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 3, + 'image_name' => $this->img_name_ext($images['forum'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['forum'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 4, + 'image_name' => $this->img_name_ext($images['forum_locked'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['forum_locked'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 5, + 'image_name' => $this->img_name_ext($images['forums'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['forums'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( + 'image_id' => 6, + 'image_name' => $this->img_name_ext($images['forum_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['forum_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27, + 'imageset_id' => 1 + ), + array( 'image_id' => 7, + 'image_name' => 'forum_unread_locked', + 'image_filename' => 'forum_unread_locked.gif', + 'image_lang' => '', 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 8, + 'image_name' => $this->img_name_ext($images['forums_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['forums_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 9, + 'image_name' => 'topic_moved', + 'image_filename' => 'topic_moved.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 10, + 'image_name' => $this->img_name_ext($images['folder'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 11, + 'image_name' => $this->img_name_ext($images['folder_sticky'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_sticky'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 12, + 'image_name' => $this->img_name_ext($images['folder_hot'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_hot'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 13, + 'image_name' => 'topic_read_hot_mine', + 'image_filename' => 'topic_read_hot_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 14, + 'image_name' => $this->img_name_ext($images['folder_locked'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_locked'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 15, + 'image_name' => 'topic_read_locked_mine', + 'image_filename' => 'topic_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 16, + 'image_name' => $this->img_name_ext($images['folder_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 17, + 'image_name' => $this->img_name_ext($images['folder_sticky_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_sticky_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 18, + 'image_name' => $this->img_name_ext($images['folder_hot_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_hot_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 19, + 'image_name' => 'topic_unread_hot_mine', + 'image_filename' => 'topic_unread_hot_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 20, + 'image_name' => $this->img_name_ext($images['folder_locked_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_locked_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 21, + 'image_name' => 'topic_unread_locked_mine', + 'image_filename' => 'topic_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 22, + 'image_name' => 'sticky_read', + 'image_filename' => 'sticky_read.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 23, + 'image_name' => 'sticky_read_mine', + 'image_filename' => 'sticky_read_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 24, + 'image_name' => 'sticky_read_locked', + 'image_filename' => 'sticky_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 25, + 'image_name' => 'sticky_read_locked_mine', + 'image_filename' => 'sticky_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 26, + 'image_name' => 'sticky_unread', + 'image_filename' => 'sticky_unread.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 27, + 'image_name' => 'sticky_unread_mine', + 'image_filename' => 'sticky_unread_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 28, + 'image_name' => 'sticky_unread_locked', + 'image_filename' => 'sticky_unread_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 29, + 'image_name' => 'sticky_unread_locked_mine', + 'image_filename' => 'sticky_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 30, + 'image_name' => $this->img_name_ext($images['folder_announce'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_announce'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 31, + 'image_name' => 'announce_read_mine', + 'image_filename' => 'announce_read_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 32, + 'image_name' => 'announce_read_locked', + 'image_filename' => 'announce_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 33, + 'image_name' => 'announce_read_locked_mine', + 'image_filename' => 'announce_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 34, + 'image_name' => $this->img_name_ext($images['folder_announce_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['folder_announce_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 35, + 'image_name' => 'announce_unread_mine', + 'image_filename' => 'announce_unread_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 36, + 'image_name' => 'announce_unread_locked', + 'image_filename' => 'announce_unread_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 37, + 'image_name' => 'announce_unread_locked_mine', + 'image_filename' => 'announce_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 38, + 'image_name' => 'global_read', + 'image_filename' => $this->img_name_ext($images['folder_announce'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 39, + 'image_name' => 'global_read_mine', + 'image_filename' => 'announce_read_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 40, + 'image_name' => 'global_read_locked', + 'image_filename' => 'announce_read_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 41, + 'image_name' => 'global_read_locked_mine', + 'image_filename' => 'announce_read_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 42, + 'image_name' => 'global_unread', + 'image_filename' => $this->img_name_ext($images['folder_announce_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 43, + 'image_name' => 'global_unread_mine', + 'image_filename' => 'announce_unread_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 44, + 'image_name' => 'global_unread_locked', + 'image_filename' => 'announce_unread_locked.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 45, + 'image_name' => 'global_unread_locked_mine', + 'image_filename' => 'announce_unread_locked_mine.gif', + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 46, + 'image_name' => 'pm_read', + 'image_filename' => $this->img_name_ext($images['folder'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 47, + 'image_name' => 'pm_unread', + 'image_filename' => $this->img_name_ext($images['folder_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 27, + 'image_width' => 27 , + 'imageset_id' => 1 + ), + array( 'image_id' => 48, + 'image_name' => 'icon_back_top', + 'image_filename' => 'icon_back_top.gif', + 'image_lang' => '', + 'image_height' => 11, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 49, + 'image_name' => $this->img_name_ext($images['icon_aim'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_aim'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 50, + 'image_name' => $this->img_name_ext($images['icon_email'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_email'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 51, + 'image_name' => $this->img_name_ext($images['icon_icq'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_icq'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 52, + 'image_name' => 'icon_contact_jabber', + 'image_filename' => 'icon_contact_jabber.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 53, + 'image_name' => $this->img_name_ext($images['icon_msnm'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_msnm'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 54, + 'image_name' => $this->img_name_ext($images['icon_www'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_www'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 55, + 'image_name' => $this->img_name_ext($images['icon_yim'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_yim'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 56, + 'image_name' => $this->img_name_ext($images['icon_delpost'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_delpost'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 57, + 'image_name' => 'icon_post_info', + 'image_filename' => 'icon_post_info.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 58, + 'image_name' => 'icon_post_report', + 'image_filename' => 'icon_post_report.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 59, + 'image_name' => $this->img_name_ext($images['icon_minipost'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_minipost'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 60, + 'image_name' => $this->img_name_ext($images['icon_minipost_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_minipost_new'], false, false, $type = 'filename'), + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 61, + 'image_name' => 'icon_topic_attach', + 'image_filename' => 'icon_topic_attach.gif', + 'image_lang' => '', + 'image_height' => 10, + 'image_width' => 7 , + 'imageset_id' => 1 + ), + array( 'image_id' => 62, + 'image_name' => 'icon_topic_latest', + 'image_filename' => 'icon_topic_latest.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 63, + 'image_name' => 'icon_topic_newest', + 'image_filename' => 'icon_topic_newest.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 64, + 'image_name' => 'icon_topic_reported', + 'image_filename' => 'icon_topic_reported.gif', + 'image_lang' => '', + 'image_height' => 14, + 'image_width' => 16 , + 'imageset_id' => 1 + ), + array( 'image_id' => 65, + 'image_name' => 'icon_topic_unapproved', + 'image_filename' => 'icon_topic_unapproved.gif', + 'image_lang' => '', + 'image_height' => 14, + 'image_width' => 16 , + 'imageset_id' => 1 + ), + array( 'image_id' => 66, + 'image_name' => 'icon_user_warn', + 'image_filename' => 'icon_user_warn.gif', + 'image_lang' => '', + 'image_height' => 20, + 'image_width' => 20, + 'imageset_id' => 1 + ), + array( 'image_id' => 67, + 'image_name' => 'subforum_read', + 'image_filename' => 'subforum_read.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 68, + 'image_name' => 'subforum_unread', + 'image_filename' => 'subforum_unread.gif', + 'image_lang' => '', + 'image_height' => 9, + 'image_width' => 11 , + 'imageset_id' => 1 + ), + array( 'image_id' => 69, + 'image_name' => $this->img_name_ext($images['icon_pm'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_pm'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 28 , + 'imageset_id' => 1 + ), + array( 'image_id' => 70, + 'image_name' => $this->img_name_ext($images['icon_edit'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_edit'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 42 , + 'imageset_id' => 1 + ), + array( 'image_id' => 71, + 'image_name' => $this->img_name_ext($images['icon_quote'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['icon_quote'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 20, + 'image_width' => 54 , + 'imageset_id' => 1 + ), + array( 'image_id' => 72, + 'image_name' => 'icon_user_online', + 'image_filename' => 'icon_user_online.gif', + 'image_lang' => '{LANG}', + 'image_height' => 58, + 'image_width' => 58 , + 'imageset_id' => 1 + ), + array( 'image_id' => 73, + 'image_name' => 'button_pm_forward', + 'image_filename' => 'button_pm_forward.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ), + array( 'image_id' => 74, + 'image_name' => 'button_pm_new', + 'image_filename' => 'button_pm_new.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 84 , + 'imageset_id' => 1 + ), + array( 'image_id' => 75, + 'image_name' => 'button_pm_reply', + 'image_filename' => 'button_pm_reply.gif', + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ), + array( 'image_id' => 76, + 'image_name' => $this->img_name_ext($images['post_locked'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['post_locked'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 88 , + 'imageset_id' => 1 + ), + array( 'image_id' => 77, + 'image_name' => $this->img_name_ext($images['post_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['post_new'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ), + array( 'image_id' => 78, + 'image_name' => $this->img_name_ext($images['reply_new'], false, false, $type = 'name'), + 'image_filename' => $this->img_name_ext($images['reply_new'], false, false, $type = 'filename'), + 'image_lang' => '{LANG}', + 'image_height' => 25, + 'image_width' => 96 , + 'imageset_id' => 1 + ) + ); + return $rows; + } + + /** + * Specify/Get image name , extension + */ + function img_name_ext($img, $prefix = 'img_', $new_prefix = '', $type = 'filename') + { + if (strpos($img, '.') !== false) + { + // Nested img + $image_filename = $img; + $img_ext = substr(strrchr($image_filename, '.'), 1); + $img = basename($image_filename, '.' . $img_ext); + + unset($img_name, $image_filename); + } + else + { + $img_ext = 'gif'; + } + + switch ($type) + { + case 'filename': + return $img . '.' . $img_ext; + break; + + case 'class': + return $prefix . '_' . $img; + break; + + case 'name': + return $img; + break; + + case 'ext': + return $img_ext; + break; + } + } + + /** + * Specify/Get image + // + // phpBB2 Graphics - redefined for mxBB + // - Uncomment and redefine phpBB graphics + // + // If you need to redefine some phpBB graphics, look within the phpBB/templates folder for the template_name.cfg file and + // redefine those $image['xxx'] you want. Note: Many phpBB images are reused all over mxBB (eg see below), thus if you redefine + // common phpBB images, this will have immedaite effect for all mxBB pages. + // + */ + function img($img, $alt = '', $width = false, $suffix = '', $type = '') + { + static $imgs; + global $phpbb_root_path, $root_path, $theme; + + $title = ''; + + if ($alt) + { + $alt = $this->lang($alt); + $title = ' title="' . $alt . '"'; + } + + if (strpos($img, '.') !== false) + { + // Nested img + $image_filename = $img; + $img_ext = substr(strrchr($image_filename, '.'), 1); + $img = basename($image_filename, '.' . $img_ext); + $this->img_array['image_filename'] = array( + 'img_'.$img => $img . '.' . $img_ext, + ); + unset($img_name, $image_filename); + } + + if ($width !== false) + { + $this->img_array['image_width'] = array( + 'img_'.$img => $width, + ); + } + + // print_r($this->img_array['image_filename']); + // array ( [img_forum_read] => forum_read.gif ) + // Load phpBB Template configuration data + $current_template_path = $this->current_template_path; + $template_name = $this->template_name; + + // + // - First try phpBB2 then phpBB3 template + // + if ( file_exists($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg') ) + { + @include($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg'); + @define('TEMPLATE_CONFIG', true); + + //$img_keys = array_keys($images); + //$img_values = array_values($images); + + $rows = $this->image_rows($images); + + foreach ($rows as $row) + { + $row['image_filename'] = rawurlencode($row['image_filename']); + + if(empty($row['image_name'])) + { + //print_r('Your style configuration file has a typo! '); + //print_r($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg '); + //print_r($row); + $row['image_name'] = 'spacer.gif'; + } + /** + * Now check for the correct existance of all of the images into + * each image of a prosilver based style. + */ + $this->img_array[$row['image_name']] = $row; + } + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/stylesheet.css') ) + { + @define('TEMPLATE_CONFIG', true); + $current_template_images = $current_template_path . "/theme/images"; + } + + // + // Since we have no current Template Config file, try the cloned template instead + // + if ( file_exists($phpbb_root_path . $this->cloned_current_template_path . '/' . $this->cloned_template_name . '.cfg') && !defined('TEMPLATE_CONFIG') ) + { + $current_template_path = $this->cloned_current_template_path; + $template_name = $this->cloned_template_name; + + @include($phpbb_root_path . $this->cloned_current_template_path . '/' . $this->cloned_template_name . '.cfg'); + + $rows = $this->image_rows($images); + + foreach ($rows as $row) + { + $row['image_filename'] = rawurlencode($row['image_filename']); + + if(empty($row['image_name'])) + { + print_r('Your style configuration file has a typo! '); + print_r($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg '); + print_r($row); + } + /** + * Now check for the correct existance of all of the images into + * each image of a prosilver based style. + */ + $this->img_array[$row['image_name']] = $row; + } + } + + // + // Last attempt, use default template intead + // + if ( file_exists($phpbb_root_path . $this->default_current_template_path . '/' . $this->default_template_name . '.cfg') && !defined('TEMPLATE_CONFIG') ) + { + $current_template_path = $this->default_current_template_path; + $template_name = $this->default_template_name; + + @include($phpbb_root_path . $this->default_current_template_path . '/' . $this->default_template_name . '.cfg'); + + $rows = $this->image_rows($images); + + foreach ($rows as $row) + { + $row['image_filename'] = rawurlencode($row['image_filename']); + + if(empty($row['image_name'])) + { + print_r('Your style configuration file has a typo! '); + print_r($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg '); + print_r($row); + } + /** + * Now check for the correct existance of all of the images into + * each image of a prosilver based style. + */ + $this->img_array[$row['image_name']] = $row; + } + } + + // + // - First try phpBB2 then phpBB3 template lang images then old Olympus image sets + // default language + if ( file_exists($phpbb_root_path . $current_template_path . '/images/lang_' . $this->default_language_name . '/') ) + { + $this->img_lang = $this->default_language_name; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/images/lang_' . $this->default_language_name . '/') ) + { + $this->img_lang = $this->default_language_name; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/images/' . $this->default_language . '/') ) + { + $this->img_lang = $this->default_language; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/imageset/' . $this->default_language . '/') ) + { + $this->img_lang = $this->default_language; + } + + // + // - First try phpBB2 then phpBB3 template lang images then old Olympus image sets + // user language + if ( file_exists($phpbb_root_path . $current_template_path . '/images/lang_' . $this->user_language_name . '/') ) + { + $this->img_lang = $this->user_language_name; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/images/lang_' . $this->user_language_name . '/') ) + { + $this->img_lang = $this->user_language_name; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/images/' . $this->user_language . '/') ) + { + $this->img_lang = $this->user_language; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/imageset/' . $this->user_language . '/') ) + { + $this->img_lang = $this->user_language; + } + + if (empty($this->img_array)) + { + /** + * Now check for the correct existance of all of the images into + * each image of a prosilver based style. + foreach ($rows as $row) + { + $row['image_filename'] = rawurlencode($row['image_filename']); + $this->img_array[$row['image_name']] = $row; + } + */ + trigger_error('NO_STYLE_DATA', E_USER_ERROR); + } + + $img_data = &$this->img_array['image_filename'][$img]; + + if (empty($img_data)) + { + if (!isset($this->img_array['image_filename']['img_'.$img]) && !isset($this->img_array['image_filename'][$img])) + { + // Do not fill the image to let designers decide what to do if the image is empty + $img_data = ''; + return $img_data; + } + + if (isset($this->img_array['image_lang']['img_'.$img]) && isset($this->img_array['image_lang'][$img])) + { + // + // - First try phpBB2 then phpBB3 template lang images + // + if ( file_exists($phpbb_root_path . $current_template_path . '/images/' . $this->img_array['image_lang']['img_'.$img] . '/') ) + { + $current_template_images = $current_template_path . '/images/' . $this->img_array['image_lang']['img_'.$img]; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/images/' . $this->img_array['image_lang']['img_'.$img] . '/') ) + { + $current_template_images = $current_template_path . '/theme/images/' . $this->img_array['image_lang']['img_'.$img]; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/images/' . $this->encode_lang($this->lang_name) . '/') ) + { + $current_template_images = $current_template_path . '/theme/images/' . $this->encode_lang($this->lang_name); + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/imageset/' . $this->encode_lang($this->lang_name) . '/') ) + { + $current_template_images = $current_template_path . '/theme/imageset/' . $this->encode_lang($this->lang_name); + } + } + + $img_data['src'] = PHPBB_URL . $current_template_images . '/' . (!empty($this->img_array['image_filename']['img_'.$img]) ? $this->img_array['image_filename']['img_'.$img] : $this->img_array['image_filename'][$img]); + $img_data['width'] = !empty($height) ? $height : (!empty($this->img_array['image_width']) ? (!empty($this->img_array['image_width']['img_'.$img]) ? $this->img_array['image_width']['img_'.$img] : (!empty($this->img_array['image_width'][$img]) ? $this->img_array['image_width'][$img] : 47)) : 47); + $img_data['height'] = !empty($height) ? $height : (!empty($this->img_array['image_height']) ? (!empty($this->img_array['image_width']['img_'.$img]) ? $this->img_array['image_height']['img_'.$img] : (!empty($this->img_array['image_height'][$img]) ? $this->img_array['image_height'][$img] : 47)) : 47); + } + + $alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt; + + $use_width = ($width === false) ? $img_data['width'] : $width; + + switch ($type) + { + case 'src': + return $img_data['src']; + break; + + case 'width': + return $use_width; + break; + + case 'height': + return $img_data['height']; + break; + + case 'filename': + return $img . '.' . $img_ext; + break; + + case 'class': + case 'name': + return $img; + break; + + case 'alt': + return $alt; + break; + + case 'ext': + return $img_ext; + break; + + case 'full_tag': + return '' . $alt . ''; + break; + + case 'html': + default: + return '' . $alt . ''; + break; + } + } + + /** + * Specify/Get image + // + // phpBB2 Graphics - redefined for mxBB + // - Uncomment and redefine phpBB graphics + // + // If you need to redefine some phpBB graphics, look within the phpBB/templates folder for the template_name.cfg file and + // redefine those $image['xxx'] you want. Note: Many phpBB images are reused all over mxBB (eg see below), thus if you redefine + // common phpBB images, this will have immedaite effect for all mxBB pages. + // + */ + function mx_img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag') + { + static $imgs; + global $phpbb_root_path, $mx_root_path, $mx_images; + + // + // Load phpBB Template configuration data + // - First try current template + // + if ( file_exists( $phpbb_root_path . $this->current_template_path . "/images" ) ) + { + $current_template_path = $this->current_template_path; + $template_name = $this->template_name; + + @include($phpbb_root_path . $this->current_template_path . '/' . $this->template_name . '.cfg'); + } + + // + // Since we have no current Template Config file, try the cloned template instead + // + if ( file_exists( $phpbb_root_path . $this->cloned_current_template_path . "/images" ) && !defined('TEMPLATE_CONFIG') ) + { + $current_template_path = $this->cloned_current_template_path; + $template_name = $this->cloned_template_name; + + @include($phpbb_root_path . $this->cloned_current_template_path . '/' . $this->cloned_template_name . '.cfg'); + } + + // + // Last attempt, use default template intead + // + if ( file_exists( $phpbb_root_path . $this->default_current_template_path . "/images" ) && !defined('TEMPLATE_CONFIG') ) + { + $current_template_path = $this->default_current_template_path; + $template_name = $this->default_template_name; + + @include($phpbb_root_path . $this->default_current_template_path . '/' . $this->default_template_name . '.cfg'); + } + + $this->img_lang = (file_exists($phpbb_root_path . $current_template_path . $this->lang_name)) ? $this->lang_name : $board_config['default_lang']; + + /* Here we overwrite phpBB images from the template configuration file with images from database */ + + $this->img_array['image_filename'] = array( + 'img_site_logo' => "logo.gif", + 'img_upload_bar' => "upload_bar.gif", + 'img_icon_contact_aim' => "icon_aim.gif", + 'img_icon_contact_email' => "icon_email.gif", + 'img_icon_contact_icq' => "icon_icq_add.gif", + 'img_icon_contact_jabber' => "icon_jabber.gif", + 'img_icon_contact_msnm' => "icon_msnm.gif", + 'img_icon_contact_pm' => "icon_pm.gif", + 'img_icon_contact_yahoo' => "icon_yim.gif", + 'img_icon_contact_www' => "icon_www.gif", + 'img_icon_post_delete' => "icon_delete.gif", + 'img_icon_post_edit' => "icon_edit.gif", + 'img_icon_post_info' => "icon_info.gif", + 'img_icon_post_quote' => "icon_quote.gif", + 'img_icon_post_report' => "icon_report.gif", + 'img_icon_user_online' => "icon_online.gif", + 'img_icon_user_offline' => "icon_offline.gif", + 'img_icon_user_profile' => "icon_profile.gif", + 'img_icon_user_search' => "icon_search.gif", + 'img_icon_user_warn' => "icon_warn.gif", + 'img_button_pm_forward' => "reply.gif", + 'img_button_pm_new' => "msg_newpost.gif", + 'img_button_pm_reply' => "reply.gif", + 'img_button_topic_locked' => "msg_newpost.gif", + 'img_button_topic_new' => "post.gif", + 'img_button_topic_reply' => "reply.gif", + 'img_forum_link' => "forum_link.gif", + 'img_forum_read' => "forum_read.gif", + 'img_forum_read_locked' => "forum_read_locked.gif", + 'img_forum_read_subforum' => "forum_read_subforum.gif", + 'img_forum_unread' => "forum_unread.gif", + 'img_forum_unread_locked' => "forum_unread_locked.gif", + 'img_forum_unread_subforum' => "forum_unread_subforum.gif", + 'img_topic_moved' => "topic_moved.gif", + 'img_topic_read' => "topic_read.gif", + 'img_topic_read_mine' => "topic_read_mine.gif", + 'img_topic_read_hot' => "topic_read_hot.gif", + 'img_topic_read_hot_mine' => "topic_read_hot_mine.gif", + 'img_topic_read_locked' => "topic_read_locked.gif", + 'img_topic_read_locked_mine' => "topic_read_locked_mine.gif", + 'img_topic_unread' => "topic_unread.gif", + 'img_topic_unread_mine' => "topic_unread_mine.gif", + 'img_topic_unread_hot' => "topic_unread_hot.gif", + 'img_topic_unread_hot_mine' => "topic_unread_hot_mine.gif", + 'img_topic_unread_locked' => "topic_unread_locked.gif", + 'img_topic_unread_locked_mine' => "topic_unread_locked_mine.gif", + 'img_sticky_read' => "sticky_read.gif", + 'img_sticky_read_mine' => "sticky_read_mine.gif", + 'img_sticky_read_locked' => "sticky_read_locked.gif", + 'img_sticky_read_locked_mine' => "ticky_read_locked_mine.gif", + 'img_sticky_unread' => "sticky_unread.gif", + 'img_sticky_unread_mine' => "sticky_unread_mine.gif", + 'img_sticky_unread_locked' => "sticky_unread_locked.gif", + 'img_sticky_unread_locked_mine' => "sticky_unread_locked_mine.gif", + 'img_announce_read' => "announce_read.gif", + 'img_announce_read_mine' => "announce_read_mine.gif", + 'img_announce_read_locked' => "announce_read_locked.gif", + 'img_announce_read_locked_mine' => "announce_read_locked_mine.gif", + 'img_announce_unread' => "announce_unread.gif", + 'img_announce_unread_mine' => "announce_unread_mine.gif", + 'img_announce_unread_locked' => "announce_unread_locked.gif", + 'img_announce_unread_locked_mine' => "announce_unread_locked_mine.gif", + 'img_global_read' => "announce_read.gif", + 'img_global_read_mine' => "announce_read_mine.gif", + 'img_global_read_locked' => "announce_read_locked.gif", + 'img_global_read_locked_mine' => "announce_read_locked_mine.gif", + 'img_global_unread' => "announce_unread.gif", + 'img_global_unread_mine' => "announce_unread_mine.gif", + 'img_global_unread_locked' => "announce_unread_locked.gif", + 'img_global_unread_locked_mine' => "announce_unread_locked_mine.gif", + 'img_subforum_read' => "", + 'img_subforum_unread' => "", + 'img_pm_read' => "topic_read.gif", + 'img_pm_unread' => "topic_unread.gif", + 'img_icon_back_top' => "", + 'img_icon_post_target' => "icon_post_target.gif", + 'img_icon_post_target_unread' => "icon_post_target_unread.gif", + 'img_icon_topic_attach' => "icon_topic_attach.gif", + 'img_icon_topic_latest' => "icon_topic_latest.gif", + 'img_icon_topic_newest' => "icon_topic_newest.gif", + 'img_icon_topic_reported' => "icon_topic_reported.gif", + 'img_icon_topic_unapproved' => "icon_topic_unapproved.gif" + ); + + $this->img_array['image_lang'] = array( + 'img_icon_post_edit' => $this->img_lang, + 'img_icon_post_quote' => $this->img_lang, + 'img_button_pm_forward' => $this->img_lang, + 'img_button_pm_new' => $this->img_lang, + 'img_button_pm_reply' => $this->img_lang, + 'img_button_topic_new' => $this->img_lang, + 'img_button_topic_reply' => $this->img_lang + ); + + $img_data = &$imgs[$img]; + + if (empty($img_data)) + { + if (!isset($this->img_array[$img])) + { + // Do not fill the image to let designers decide what to do if the image is empty + $img_data = ''; + return $img_data; + } + + $img_data['src'] = PHPBB_URL . $current_template_path . ($this->img_array[$img]['image_lang'] ? $this->img_array[$img]['image_lang'] .'/' : '') . $this->img_array[$img]['image_filename']; + $img_data['width'] = (!empty($width)) ? $width : ''; //$this->img_array[$img]['image_width']; + $img_data['height'] = (!empty($height)) ? $height : ''; //$this->img_array[$img]['image_height']; + } + + $alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt; + + switch ($type) + { + case 'src': + return $img_data['src']; + break; + + case 'width': + return ($width === false) ? $img_data['width'] : $width; + break; + + case 'height': + return $img_data['height']; + break; + + default: + $use_width = ($width === false) ? $img_data['width'] : $width; + + return '' . $alt . ''; + break; + } + } + + /** + * Get option bit field from user options + */ + function optionget($key, $data = false) + { + if (!isset($this->keyvalues[$key])) + { + $var = ($data) ? $data : '230271'; //$this->data['user_options']; + $this->keyvalues[$key] = ($var & 1 << $this->keyoptions[$key]) ? true : false; + } + + return $this->keyvalues[$key]; + } + + /** + * Set option bit field for user options + */ + function optionset($key, $value, $data = false) + { + $var = ($data) ? $data : '230271'; //$this->data['user_options']; + + if ($value && !($var & 1 << $this->keyoptions[$key])) + { + $var += 1 << $this->keyoptions[$key]; + } + else if (!$value && ($var & 1 << $this->keyoptions[$key])) + { + $var -= 1 << $this->keyoptions[$key]; + } + else + { + return ($data) ? $var : false; + } + + if (!$data) + { + $this->data['user_options'] = $var; + return true; + } + else + { + return $var; + } + } + + /** + * Load available languages list + * author: Jan Kalah aka culprit_cz + * @return array available languages list: KEY = folder name + */ + function get_lang_list($ext_root_path = '') + { + if (count($this->language_list)) + { + return $this->language_list; + } + /* c:\Wamp\www\Rhea\language\ */ + $dir = opendir($this->phpbb_root_path . 'language/'); + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($this->phpbb_root_path . 'language/' . $f)) + { + continue; + } + $this->language_list[$f] = $this->ucstrreplace('lang_', '', $f); + } + closedir($dir); + if (!empty($ext_root_path)) + { + $dir = opendir($this->phpbb_root_path . 'ext/' . $ext_root_path . '/language/'); + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($this->phpbb_root_path . 'ext/' . $ext_root_path . '/language/' . $f)) + { + continue; + } + $this->ext_language_list[$f] = $this->ucstrreplace('lang_', '', $f); + } + closedir($dir); + return $this->language_list = array_merge($this->ext_language_list, $this->language_list); + } + return $this->language_list; + } + + /** + * encode_lang + * + * This function is used with phpBB2 backend to specify xml:lang in overall headers (only two chars are allowed) + * Do not change! + * + * $default_lang = $mx_user->encode_lang($board_config['default_lang']); + * + * @param unknown_type $lang + * @return unknown + */ + function encode_lang($lang) + { + switch($lang) + { + case 'afar': + $lang_name = 'aa'; + break; + case 'abkhazian': + $lang_name = 'ab'; + break; + case 'avestan': + $lang_name = 'ae'; + break; + case 'afrikaans': + $lang_name = 'af'; + break; + case 'akan': + $lang_name = 'ak'; + break; + case 'amharic': + $lang_name = 'am'; + break; + case 'aragonese': + $lang_name = 'an'; + break; + case 'arabic': + $lang_name = 'ar'; + break; + case 'assamese': + $lang_name = 'as'; + break; + case 'avaric': + $lang_name = 'av'; + break; + case 'aymara': + $lang_name = 'ay'; + break; + case 'azerbaijani': + $lang_name = 'az'; + break; + case 'bashkir': + $lang_name = 'ba'; + break; + case 'belarusian': + $lang_name = 'be'; + break; + case 'bulgarian': + $lang_name = 'bg'; + break; + case 'bihari': + $lang_name = 'bh'; + break; + case 'bislama': + $lang_name = 'bi'; + break; + case 'bambara': + $lang_name = 'bm'; + break; + case 'bengali': + $lang_name = 'bn'; + break; + case 'tibetan': + $lang_name = 'bo'; + break; + case 'breton': + $lang_name = 'br'; + break; + case 'bosnian': + $lang_name = 'bs'; + break; + case 'catalan': + $lang_name = 'ca'; + break; + case 'chechen': + $lang_name = 'ce'; + break; + case 'chamorro': + $lang_name = 'ch'; + break; + case 'corsican': + $lang_name = 'co'; + break; + case 'cree': + $lang_name = 'cr'; + break; + case 'czech': + $lang_name = 'cs'; + break; + case 'slavonic': + $lang_name = 'cu'; + break; + case 'chuvash': + $lang_name = 'cv'; + break; + case 'welsh_cymraeg': + $lang_name = 'cy'; + break; + case 'danish': + $lang_name = 'da'; + break; + case 'german': + $lang_name = 'de'; + break; + case 'divehi': + $lang_name = 'dv'; + break; + case 'dzongkha': + $lang_name = 'dz'; + break; + case 'ewe': + $lang_name = 'ee'; + break; + case 'greek': + $lang_name = 'el'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'english': + $lang_name = 'en'; + break; + case 'english_us': + $lang_name = 'en_us'; + break; + case 'esperanto': + $lang_name = 'eo'; + break; + case 'spanish': + $lang_name = 'es'; + break; + case 'estonian': + $lang_name = 'et'; + break; + case 'basque': + $lang_name = 'eu'; + break; + case 'persian': + $lang_name = 'fa'; + break; + case 'fulah': + $lang_name = 'ff'; + break; + case 'finnish': + $lang_name = 'fi'; + break; + case 'fijian': + $lang_name = 'fj'; + break; + case 'faroese': + $lang_name = 'fo'; + break; + case 'french': + $lang_name = 'fr'; + break; + case 'frisian': + $lang_name = 'fy'; + break; + case 'irish': + $lang_name = 'ga'; + break; + case 'scottish': + $lang_name = 'gd'; + break; + case 'galician': + $lang_name = 'gl'; + break; + case 'guaraní': + $lang_name = 'gn'; + break; + case 'gujarati': + $lang_name = 'gu'; + break; + case 'manx': + $lang_name = 'gv'; + break; + case 'hausa': + $lang_name = 'ha'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'hindi': + $lang_name = 'hi'; + break; + case 'hiri_motu': + $lang_name = 'ho'; + break; + case 'croatian': + $lang_name = 'hr'; + break; + case 'haitian': + $lang_name = 'ht'; + break; + case 'hungarian': + $lang_name = 'hu'; + break; + case 'armenian': + $lang_name = 'hy'; + break; + case 'herero': + $lang_name = 'hz'; + break; + case 'interlingua': + $lang_name = 'ia'; + break; + case 'indonesian': + $lang_name = 'id'; + break; + case 'interlingue': + $lang_name = 'ie'; + break; + case 'igbo': + $lang_name = 'ig'; + break; + case 'sichuan_yi': + $lang_name = 'ii'; + break; + case 'inupiaq': + $lang_name = 'ik'; + break; + case 'ido': + $lang_name = 'io'; + break; + case 'icelandic': + $lang_name = 'is'; + break; + case 'italian': + $lang_name = 'it'; + break; + case 'inuktitut': + $lang_name = 'iu'; + break; + case 'japanese': + $lang_name = 'ja'; + break; + case 'javanese': + $lang_name = 'jv'; + break; + case 'georgian': + $lang_name = 'ka'; + break; + case 'kongo': + $lang_name = 'kg'; + break; + case 'kikuyu': + $lang_name = 'ki'; + break; + case 'kwanyama': + $lang_name = 'kj'; + break; + case 'kazakh': + $lang_name = 'kk'; + break; + case 'kalaallisut': + $lang_name = 'kl'; + break; + case 'khmer': + $lang_name = 'km'; + break; + case 'kannada': + $lang_name = 'kn'; + break; + case 'korean': + $lang_name = 'ko'; + break; + case 'kanuri': + $lang_name = 'kr'; + break; + case 'kashmiri': + $lang_name = 'ks'; + break; + case 'kurdish': + $lang_name = 'ku'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'cornish_kernewek': + $lang_name = 'kw'; + break; + case 'kirghiz': + $lang_name = 'ky'; + break; + case 'latin': + $lang_name = 'la'; + break; + case 'luxembourgish': + $lang_name = 'lb'; + break; + case 'ganda': + $lang_name = 'lg'; + break; + case 'limburgish': + $lang_name = 'li'; + break; + case 'lingala': + $lang_name = 'ln'; + break; + case 'lao': + $lang_name = 'lo'; + break; + case 'lithuanian': + $lang_name = 'lt'; + break; + case 'luba-katanga': + $lang_name = 'lu'; + break; + case 'latvian': + $lang_name = 'lv'; + break; + case 'malagasy': + $lang_name = 'mg'; + break; + case 'marshallese': + $lang_name = 'mh'; + break; + case 'maori': + $lang_name = 'mi'; + break; + case 'macedonian': + $lang_name = 'mk'; + break; + case 'malayalam': + $lang_name = 'ml'; + break; + case 'mongolian': + $lang_name = 'mn'; + break; + case 'moldavian': + $lang_name = 'mo'; + break; + case 'marathi': + $lang_name = 'mr'; + break; + case 'malay': + $lang_name = 'ms'; + break; + case 'maltese': + $lang_name = 'mt'; + break; + case 'burmese': + $lang_name = 'my'; + break; + case 'nauruan': + $lang_name = 'na'; + break; + case 'norwegian': + $lang_name = 'nb'; + break; + case 'ndebele': + $lang_name = 'nd'; + break; + case 'nepali': + $lang_name = 'ne'; + break; + case 'ndonga': + $lang_name = 'ng'; + break; + case 'dutch': + $lang_name = 'nl'; + break; + case 'norwegian_nynorsk': + $lang_name = 'nn'; + break; + case 'norwegian': + $lang_name = 'no'; + break; + case 'southern_ndebele': + $lang_name = 'nr'; + break; + case 'navajo': + $lang_name = 'nv'; + break; + case 'chichewa': + $lang_name = 'ny'; + break; + case 'occitan': + $lang_name = 'oc'; + break; + case 'ojibwa': + $lang_name = 'oj'; + break; + case 'oromo': + $lang_name = 'om'; + break; + case 'oriya': + $lang_name = 'or'; + break; + case 'ossetian': + $lang_name = 'os'; + break; + case 'panjabi': + $lang_name = 'pa'; + break; + case 'pali': + $lang_name = 'pi'; + break; + case 'polish': + $lang_name = 'pl'; + break; + case 'pashto': + $lang_name = 'ps'; + break; + case 'portuguese': + $lang_name = 'pt'; + break; + case 'portuguese_brasil': + $lang_name = 'pt_br'; + break; + case 'quechua': + $lang_name = 'qu'; + break; + case 'romansh': + $lang_name = 'rm'; + break; + case 'kirundi': + $lang_name = 'rn'; + break; + case 'romanian': + $lang_name = 'ro'; + break; + case 'russian': + $lang_name = 'ru'; + break; + case 'kinyarwanda': + $lang_name = 'rw'; + break; + case 'sanskrit': + $lang_name = 'sa'; + break; + case 'sardinian': + $lang_name = 'sc'; + break; + case 'sindhi': + $lang_name = 'sd'; + break; + case 'northern_sami': + $lang_name = 'se'; + break; + case 'sango': + $lang_name = 'sg'; + break; + case 'serbo-croatian': + $lang_name = 'sh'; + break; + case 'sinhala': + $lang_name = 'si'; + break; + case 'slovak': + $lang_name = 'sk'; + break; + case 'slovenian': + $lang_name = 'sl'; + break; + case 'samoan': + $lang_name = 'sm'; + break; + case 'shona': + $lang_name = 'sn'; + break; + case 'somali': + $lang_name = 'so'; + break; + case 'albanian': + $lang_name = 'sq'; + break; + case 'serbian': + $lang_name = 'sr'; + break; + case 'swati': + $lang_name = 'ss'; + break; + case 'sotho': + $lang_name = 'st'; + break; + case 'sundanese': + $lang_name = 'su'; + break; + case 'swedish': + $lang_name = 'sv'; + break; + case 'swahili': + $lang_name = 'sw'; + break; + case 'tamil': + $lang_name = 'ta'; + break; + case 'telugu': + $lang_name = 'te'; + break; + case 'tajik': + $lang_name = 'tg'; + break; + case 'thai': + $lang_name = 'th'; + break; + case 'tigrinya': + $lang_name = 'ti'; + break; + case 'turkmen': + $lang_name = 'tk'; + break; + case 'tagalog': + $lang_name = 'tl'; + break; + case 'tswana': + $lang_name = 'tn'; + break; + case 'tonga': + $lang_name = 'to'; + break; + case 'turkish': + $lang_name = 'tr'; + break; + case 'tsonga': + $lang_name = 'ts'; + break; + case 'tatar': + $lang_name = 'tt'; + break; + case 'twi': + $lang_name = 'tw'; + break; + case 'tahitian': + $lang_name = 'ty'; + break; + case 'uighur': + $lang_name = 'ug'; + break; + case 'ukrainian': + $lang_name = 'uk'; + break; + case 'urdu': + $lang_name = 'ur'; + break; + case 'uzbek': + $lang_name = 'uz'; + break; + case 'venda': + $lang_name = 've'; + break; + case 'vietnamese': + $lang_name = 'vi'; + break; + case 'volapuk': + $lang_name = 'vo'; + break; + case 'walloon': + $lang_name = 'wa'; + break; + case 'wolof': + $lang_name = 'wo'; + break; + case 'xhosa': + $lang_name = 'xh'; + break; + case 'yiddish': + $lang_name = 'yi'; + break; + case 'yoruba': + $lang_name = 'yo'; + break; + case 'zhuang': + $lang_name = 'za'; + break; + case 'chinese': + $lang_name = 'zh'; + break; + case 'chinese_simplified': + $lang_name = 'zh_cmn_hans'; + break; + case 'chinese_traditional': + $lang_name = 'zh_cmn_hant'; + break; + case 'zulu': + $lang_name = 'zu'; + break; + default: + $lang_name = $lang; + break; + } + return $lang_name; + } + + /** + * decode_lang + * + * $default_lang = $mx_user->decode_lang($board_config['default_lang']); + * @used in URL Language Detection i.e. $this->decode_lang($_GET['lang']) + * @param iso_type $lang + * @return standard_type $lang + */ + function decode_lang($lang) + { + switch($lang) + { + case 'aa': + $lang_name = 'afar'; + break; + case 'ab': + $lang_name = 'abkhazian'; + break; + case 'ae': + $lang_name = 'avestan'; + break; + case 'af': + $lang_name = 'afrikaans'; + break; + case 'ak': + $lang_name = 'akan'; + break; + case 'am': + $lang_name = 'amharic'; + break; + case 'an': + $lang_name = 'aragonese'; + break; + case 'ar': + $lang_name = 'arabic'; + break; + case 'as': + $lang_name = 'assamese'; + break; + case 'av': + $lang_name = 'avaric'; + break; + case 'ay': + $lang_name = 'aymara'; + break; + case 'az': + $lang_name = 'azerbaijani'; + break; + case 'ba': + $lang_name = 'bashkir'; + break; + case 'be': + $lang_name = 'belarusian'; + break; + case 'bg': + $lang_name = 'bulgarian'; + break; + case 'bh': + $lang_name = 'bihari'; + break; + case 'bi': + $lang_name = 'bislama'; + break; + case 'bm': + $lang_name = 'bambara'; + break; + case 'bn': + $lang_name = 'bengali'; + break; + case 'bo': + $lang_name = 'tibetan'; + break; + case 'br': + $lang_name = 'breton'; + break; + case 'bs': + $lang_name = 'bosnian'; + break; + case 'ca': + $lang_name = 'catalan'; + break; + case 'ce': + $lang_name = 'chechen'; + break; + case 'ch': + $lang_name = 'chamorro'; + break; + case 'co': + $lang_name = 'corsican'; + break; + case 'cr': + $lang_name = 'cree'; + break; + case 'cs': + $lang_name = 'czech'; + break; + case 'cu': + $lang_name = 'slavonic'; + break; + case 'cv': + $lang_name = 'chuvash'; + break; + case 'cy': + $lang_name = 'welsh_cymraeg'; + break; + case 'da': + $lang_name = 'danish'; + break; + case 'de': + $lang_name = 'german'; + break; + case 'dv': + $lang_name = 'divehi'; + break; + case 'dz': + $lang_name = 'dzongkha'; + break; + case 'ee': + $lang_name = 'ewe'; + break; + case 'el': + $lang_name = 'greek'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'en': + $lang_name = 'english'; + break; + case 'en_us': + $lang_name = 'english'; + break; + case 'eo': + $lang_name = 'esperanto'; + break; + case 'es': + $lang_name = 'spanish'; + break; + case 'et': + $lang_name = 'estonian'; + break; + case 'eu': + $lang_name = 'basque'; + break; + case 'fa': + $lang_name = 'persian'; + break; + case 'ff': + $lang_name = 'fulah'; + break; + case 'fi': + $lang_name = 'finnish'; + break; + case 'fj': + $lang_name = 'fijian'; + break; + case 'fo': + $lang_name = 'faroese'; + break; + case 'fr': + $lang_name = 'french'; + break; + case 'fy': + $lang_name = 'frisian'; + break; + case 'ga': + $lang_name = 'irish'; + break; + case 'gd': + $lang_name = 'scottish'; + break; + case 'gl': + $lang_name = 'galician'; + break; + case 'gn': + $lang_name = 'guaraní'; + break; + case 'gu': + $lang_name = 'gujarati'; + break; + case 'gv': + $lang_name = 'manx'; + break; + case 'ha': + $lang_name = 'hausa'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'hi': + $lang_name = 'hindi'; + break; + case 'ho': + $lang_name = 'hiri_motu'; + break; + case 'hr': + $lang_name = 'croatian'; + break; + case 'ht': + $lang_name = 'haitian'; + break; + case 'hu': + $lang_name = 'hungarian'; + break; + case 'hy': + $lang_name = 'armenian'; + break; + case 'hz': + $lang_name = 'herero'; + break; + case 'ia': + $lang_name = 'interlingua'; + break; + case 'id': + $lang_name = 'indonesian'; + break; + case 'ie': + $lang_name = 'interlingue'; + break; + case 'ig': + $lang_name = 'igbo'; + break; + case 'ii': + $lang_name = 'sichuan_yi'; + break; + case 'ik': + $lang_name = 'inupiaq'; + break; + case 'io': + $lang_name = 'ido'; + break; + case 'is': + $lang_name = 'icelandic'; + break; + case 'it': + $lang_name = 'italian'; + break; + case 'iu': + $lang_name = 'inuktitut'; + break; + case 'ja': + $lang_name = 'japanese'; + break; + case 'jv': + $lang_name = 'javanese'; + break; + case 'ka': + $lang_name = 'georgian'; + break; + case 'kg': + $lang_name = 'kongo'; + break; + case 'ki': + $lang_name = 'kikuyu'; + break; + case 'kj': + $lang_name = 'kwanyama'; + break; + case 'kk': + $lang_name = 'kazakh'; + break; + case 'kl': + $lang_name = 'kalaallisut'; + break; + case 'km': + $lang_name = 'khmer'; + break; + case 'kn': + $lang_name = 'kannada'; + break; + case 'ko': + $lang_name = 'korean'; + break; + case 'kr': + $lang_name = 'kanuri'; + break; + case 'ks': + $lang_name = 'kashmiri'; + break; + case 'ku': + $lang_name = 'kurdish'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'kw': + $lang_name = 'cornish_kernewek'; + break; + case 'ky': + $lang_name = 'kirghiz'; + break; + case 'la': + $lang_name = 'latin'; + break; + case 'lb': + $lang_name = 'luxembourgish'; + break; + case 'lg': + $lang_name = 'ganda'; + break; + case 'li': + $lang_name = 'limburgish'; + break; + case 'ln': + $lang_name = 'lingala'; + break; + case 'lo': + $lang_name = 'lao'; + break; + case 'lt': + $lang_name = 'lithuanian'; + break; + case 'lu': + $lang_name = 'luba-katanga'; + break; + case 'lv': + $lang_name = 'latvian'; + break; + case 'mg': + $lang_name = 'malagasy'; + break; + case 'mh': + $lang_name = 'marshallese'; + break; + case 'mi': + $lang_name = 'maori'; + break; + case 'mk': + $lang_name = 'macedonian'; + break; + case 'ml': + $lang_name = 'malayalam'; + break; + case 'mn': + $lang_name = 'mongolian'; + break; + case 'mo': + $lang_name = 'moldavian'; + break; + case 'mr': + $lang_name = 'marathi'; + break; + case 'ms': + $lang_name = 'malay'; + break; + case 'mt': + $lang_name = 'maltese'; + break; + case 'my': + $lang_name = 'burmese'; + break; + case 'na': + $lang_name = 'nauruan'; + break; + case 'nb': + $lang_name = 'norwegian'; + break; + case 'nd': + $lang_name = 'ndebele'; + break; + case 'ne': + $lang_name = 'nepali'; + break; + case 'ng': + $lang_name = 'ndonga'; + break; + case 'nl': + $lang_name = 'dutch'; + break; + case 'nn': + $lang_name = 'norwegian_nynorsk'; + break; + case 'no': + $lang_name = 'norwegian'; + break; + case 'nr': + $lang_name = 'southern_ndebele'; + break; + case 'nv': + $lang_name = 'navajo'; + break; + case 'ny': + $lang_name = 'chichewa'; + break; + case 'oc': + $lang_name = 'occitan'; + break; + case 'oj': + $lang_name = 'ojibwa'; + break; + case 'om': + $lang_name = 'oromo'; + break; + case 'or': + $lang_name = 'oriya'; + break; + case 'os': + $lang_name = 'ossetian'; + break; + case 'pa': + $lang_name = 'panjabi'; + break; + case 'pi': + $lang_name = 'pali'; + break; + case 'pl': + $lang_name = 'polish'; + break; + case 'ps': + $lang_name = 'pashto'; + break; + case 'pt': + $lang_name = 'portuguese'; + break; + case 'pt_br': + $lang_name = 'portuguese_brasil'; + break; + case 'qu': + $lang_name = 'quechua'; + break; + case 'rm': + $lang_name = 'romansh'; + break; + case 'rn': + $lang_name = 'kirundi'; + break; + case 'ro': + $lang_name = 'romanian'; + break; + case 'ru': + $lang_name = 'russian'; + break; + case 'rw': + $lang_name = 'kinyarwanda'; + break; + case 'sa': + $lang_name = 'sanskrit'; + break; + case 'sc': + $lang_name = 'sardinian'; + break; + case 'sd': + $lang_name = 'sindhi'; + break; + case 'se': + $lang_name = 'northern_sami'; + break; + case 'sg': + $lang_name = 'sango'; + break; + case 'sh': + $lang_name = 'serbo-croatian'; + break; + case 'si': + $lang_name = 'sinhala'; + break; + case 'sk': + $lang_name = 'slovak'; + break; + case 'sl': + $lang_name = 'slovenian'; + break; + case 'sm': + $lang_name = 'samoan'; + break; + case 'sn': + $lang_name = 'shona'; + break; + case 'so': + $lang_name = 'somali'; + break; + case 'sq': + $lang_name = 'albanian'; + break; + case 'sr': + $lang_name = 'serbian'; + break; + case 'ss': + $lang_name = 'swati'; + break; + case 'st': + $lang_name = 'sotho'; + break; + case 'su': + $lang_name = 'sundanese'; + break; + case 'sv': + $lang_name = 'swedish'; + break; + case 'sw': + $lang_name = 'swahili'; + break; + case 'ta': + $lang_name = 'tamil'; + break; + case 'te': + $lang_name = 'telugu'; + break; + case 'tg': + $lang_name = 'tajik'; + break; + case 'th': + $lang_name = 'thai'; + break; + case 'ti': + $lang_name = 'tigrinya'; + break; + case 'tk': + $lang_name = 'turkmen'; + break; + case 'tl': + $lang_name = 'tagalog'; + break; + case 'tn': + $lang_name = 'tswana'; + break; + case 'to': + $lang_name = 'tonga'; + break; + case 'tr': + $lang_name = 'turkish'; + break; + case 'ts': + $lang_name = 'tsonga'; + break; + case 'tt': + $lang_name = 'tatar'; + break; + case 'tw': + $lang_name = 'twi'; + break; + case 'ty': + $lang_name = 'tahitian'; + break; + case 'ug': + $lang_name = 'uighur'; + break; + case 'uk': + $lang_name = 'ukrainian'; + break; + case 'ur': + $lang_name = 'urdu'; + break; + case 'uz': + $lang_name = 'uzbek'; + break; + case 've': + $lang_name = 'venda'; + break; + case 'vi': + $lang_name = 'vietnamese'; + break; + case 'vo': + $lang_name = 'volapuk'; + break; + case 'wa': + $lang_name = 'walloon'; + break; + case 'wo': + $lang_name = 'wolof'; + break; + case 'xh': + $lang_name = 'xhosa'; + break; + case 'yi': + $lang_name = 'yiddish'; + break; + case 'yo': + $lang_name = 'yoruba'; + break; + case 'za': + $lang_name = 'zhuang'; + break; + case 'zh': + $lang_name = 'chinese'; + break; + case 'zh_cmn_hans': + $lang_name = 'chinese_simplified'; + break; + case 'zh_cmn_hant': + $lang_name = 'chinese_traditional'; + break; + case 'zu': + $lang_name = 'zulu'; + break; + default: + $lang_name = $lang; + break; } - - return $this->keyvalues[$key]; + return $lang_name; } - - /** - * Set option bit field for user options - */ - function optionset($key, $value, $data = false) - { - $var = ($data) ? $data : $this->data['user_options']; - - if ($value && !($var & 1 << $this->keyoptions[$key])) - { - $var += 1 << $this->keyoptions[$key]; - } - else if (!$value && ($var & 1 << $this->keyoptions[$key])) - { - $var -= 1 << $this->keyoptions[$key]; - } - else - { - return ($data) ? $var : false; - } - - if (!$data) - { - $this->data['user_options'] = $var; - return true; - } - else - { - return $var; - } - } - + /** - * encode_lang - * - * This function is used with internal backend to specify xml:lang in overall headers (only two chars are allowed) - * This function can be also used to convert the user_lang oe default_lang to be undestend by tiny_mce like in mx_contact module - * Do not change! + * ucstrreplace * - * 'L_TINY_MCE_LANGUAGE' => $mx_user->encode_lang($board_config['default_lang']), + * $lang_local_name = $user->ucstrreplace($board_config['default_lang']); * * @param unknown_type $lang * @return unknown */ - function encode_lang($lang) + function ucstrreplace($pattern = '%{$regex}%i', $matches = '', $string) { - switch($lang) + /* return with no uppercase if patern not in string */ + if (strpos($string, $pattern) === false) + { + /* known languages */ + switch($string) { - case 'afar': - $lang_name = 'aa'; + case 'aa': + $lang_name = 'afar'; break; - case 'abkhazian': - $lang_name = 'ab'; + case 'ab': + $lang_name = 'abkhazian'; break; - case 'avestan': - $lang_name = 'ae'; + case 'ae': + $lang_name = 'avestan'; break; - case 'afrikaans': - $lang_name = 'af'; + case 'af': + $lang_name = 'afrikaans'; break; - case 'akan': - $lang_name = 'ak'; + case 'ak': + $lang_name = 'akan'; break; - case 'amharic': - $lang_name = 'am'; + case 'am': + $lang_name = 'amharic'; break; - case 'aragonese': - $lang_name = 'an'; + case 'an': + $lang_name = 'aragonese'; break; - case 'arabic': - $lang_name = 'ar'; + case 'ar': + $lang_name = 'arabic'; break; - case 'assamese': - $lang_name = 'as'; + case 'as': + $lang_name = 'assamese'; break; - case 'avaric': - $lang_name = 'av'; + case 'av': + $lang_name = 'avaric'; break; - case 'aymara': - $lang_name = 'ay'; + case 'ay': + $lang_name = 'aymara'; break; - case 'azerbaijani': - $lang_name = 'az'; + case 'az': + $lang_name = 'azerbaijani'; break; - case 'bashkir': - $lang_name = 'ba'; + case 'ba': + $lang_name = 'bashkir'; break; - case 'belarusian': - $lang_name = 'be'; + case 'be': + $lang_name = 'belarusian'; break; - case 'bulgarian': - $lang_name = 'bg'; + case 'bg': + $lang_name = 'bulgarian'; break; - case 'bihari': - $lang_name = 'bh'; + case 'bh': + $lang_name = 'bihari'; break; - case 'bislama': - $lang_name = 'bi'; + case 'bi': + $lang_name = 'bislama'; break; - case 'bambara': - $lang_name = 'bm'; + case 'bm': + $lang_name = 'bambara'; break; - case 'bengali': - $lang_name = 'bn'; + case 'bn': + $lang_name = 'bengali'; break; - case 'tibetan': - $lang_name = 'bo'; + case 'bo': + $lang_name = 'tibetan'; break; - case 'breton': - $lang_name = 'br'; + case 'br': + $lang_name = 'breton'; break; - case 'bosnian': - $lang_name = 'bs'; + case 'bs': + $lang_name = 'bosnian'; break; - case 'catalan': - $lang_name = 'ca'; + case 'ca': + $lang_name = 'catalan'; break; - case 'chechen': - $lang_name = 'ce'; + case 'ce': + $lang_name = 'chechen'; break; - case 'chamorro': - $lang_name = 'ch'; + case 'ch': + $lang_name = 'chamorro'; break; - case 'corsican': - $lang_name = 'co'; + case 'co': + $lang_name = 'corsican'; break; - case 'cree': - $lang_name = 'cr'; + case 'cr': + $lang_name = 'cree'; break; - case 'czech': - $lang_name = 'cs'; + case 'cs': + $lang_name = 'czech'; break; - case 'slavonic': - $lang_name = 'cu'; + case 'cu': + $lang_name = 'slavonic'; break; - case 'chuvash': - $lang_name = 'cv'; + case 'cv': + $lang_name = 'chuvash'; break; - case 'welsh_cymraeg': - $lang_name = 'cy'; + case 'cy': + $lang_name = 'welsh_cymraeg'; break; - case 'danish': - $lang_name = 'da'; + case 'da': + $lang_name = 'danish'; break; - case 'german': - $lang_name = 'de'; + case 'de': + $lang_name = 'german'; break; - case 'divehi': - $lang_name = 'dv'; + case 'dv': + $lang_name = 'divehi'; break; - case 'dzongkha': - $lang_name = 'dz'; + case 'dz': + $lang_name = 'dzongkha'; break; - case 'ewe': - $lang_name = 'ee'; + case 'ee': + $lang_name = 'ewe'; break; - case 'greek': - $lang_name = 'el'; + case 'el': + $lang_name = 'greek'; break; - case 'hebrew': - $lang_name = 'he'; + case 'he': + $lang_name = 'hebrew'; break; - case 'english': - $lang_name = 'en'; + case '{LANG}': + $lang_name = 'english'; break; - case 'english_us': - $lang_name = 'en_us'; + case 'en_us': + $lang_name = 'english'; break; - case 'esperanto': - $lang_name = 'eo'; + case 'eo': + $lang_name = 'esperanto'; break; - case 'spanish': - $lang_name = 'es'; + case 'es': + $lang_name = 'spanish'; break; - case 'estonian': - $lang_name = 'et'; + case 'et': + $lang_name = 'estonian'; break; - case 'basque': - $lang_name = 'eu'; + case 'eu': + $lang_name = 'basque'; break; - case 'persian': - $lang_name = 'fa'; + case 'fa': + $lang_name = 'persian'; break; - case 'fulah': - $lang_name = 'ff'; + case 'ff': + $lang_name = 'fulah'; break; - case 'finnish': - $lang_name = 'fi'; + case 'fi': + $lang_name = 'finnish'; break; - case 'fijian': - $lang_name = 'fj'; + case 'fj': + $lang_name = 'fijian'; break; - case 'faroese': - $lang_name = 'fo'; + case 'fo': + $lang_name = 'faroese'; break; - case 'french': - $lang_name = 'fr'; + case 'fr': + $lang_name = 'french'; break; - case 'frisian': - $lang_name = 'fy'; + case 'fy': + $lang_name = 'frisian'; break; - case 'irish': - $lang_name = 'ga'; + case 'ga': + $lang_name = 'irish'; break; - case 'scottish': - $lang_name = 'gd'; + case 'gd': + $lang_name = 'scottish'; break; - case 'galician': - $lang_name = 'gl'; + case 'gl': + $lang_name = 'galician'; break; - case 'guaraní': - $lang_name = 'gn'; + case 'gn': + $lang_name = 'guaraní'; break; - case 'gujarati': - $lang_name = 'gu'; + case 'gu': + $lang_name = 'gujarati'; break; - case 'manx': - $lang_name = 'gv'; + case 'gv': + $lang_name = 'manx'; break; - case 'hausa': - $lang_name = 'ha'; + case 'ha': + $lang_name = 'hausa'; break; - case 'hebrew': - $lang_name = 'he'; + case 'he': + $lang_name = 'hebrew'; break; - case 'hindi': - $lang_name = 'hi'; + case 'hi': + $lang_name = 'hindi'; break; - case 'hiri_motu': - $lang_name = 'ho'; + case 'ho': + $lang_name = 'hiri_motu'; break; - case 'croatian': - $lang_name = 'hr'; + case 'hr': + $lang_name = 'croatian'; break; - case 'haitian': - $lang_name = 'ht'; + case 'ht': + $lang_name = 'haitian'; break; - case 'hungarian': - $lang_name = 'hu'; + case 'hu': + $lang_name = 'hungarian'; break; - case 'armenian': - $lang_name = 'hy'; + case 'hy': + $lang_name = 'armenian'; break; - case 'herero': - $lang_name = 'hz'; + case 'hz': + $lang_name = 'herero'; break; - case 'interlingua': - $lang_name = 'ia'; + case 'ia': + $lang_name = 'interlingua'; break; - case 'indonesian': - $lang_name = 'id'; + case 'id': + $lang_name = 'indonesian'; break; - case 'interlingue': - $lang_name = 'ie'; + case 'ie': + $lang_name = 'interlingue'; break; - case 'igbo': - $lang_name = 'ig'; + case 'ig': + $lang_name = 'igbo'; break; - case 'sichuan_yi': - $lang_name = 'ii'; + case 'ii': + $lang_name = 'sichuan_yi'; break; - case 'inupiaq': - $lang_name = 'ik'; + case 'ik': + $lang_name = 'inupiaq'; break; - case 'ido': - $lang_name = 'io'; + case 'io': + $lang_name = 'ido'; break; - case 'icelandic': - $lang_name = 'is'; + case 'is': + $lang_name = 'icelandic'; break; - case 'italian': - $lang_name = 'it'; + case 'it': + $lang_name = 'italian'; break; - case 'inuktitut': - $lang_name = 'iu'; + case 'iu': + $lang_name = 'inuktitut'; break; - case 'japanese': - $lang_name = 'ja'; + case 'ja': + $lang_name = 'japanese'; break; - case 'javanese': - $lang_name = 'jv'; + case 'jv': + $lang_name = 'javanese'; break; - case 'georgian': - $lang_name = 'ka'; + case 'ka': + $lang_name = 'georgian'; break; - case 'kongo': - $lang_name = 'kg'; + case 'kg': + $lang_name = 'kongo'; break; - case 'kikuyu': - $lang_name = 'ki'; + case 'ki': + $lang_name = 'kikuyu'; break; - case 'kwanyama': - $lang_name = 'kj'; + case 'kj': + $lang_name = 'kwanyama'; break; - case 'kazakh': - $lang_name = 'kk'; + case 'kk': + $lang_name = 'kazakh'; break; - case 'kalaallisut': - $lang_name = 'kl'; + case 'kl': + $lang_name = 'kalaallisut'; break; - case 'khmer': - $lang_name = 'km'; + case 'km': + $lang_name = 'khmer'; break; - case 'kannada': - $lang_name = 'kn'; + case 'kn': + $lang_name = 'kannada'; break; - case 'korean': - $lang_name = 'ko'; + case 'ko': + $lang_name = 'korean'; break; - case 'kanuri': - $lang_name = 'kr'; + case 'kr': + $lang_name = 'kanuri'; break; - case 'kashmiri': - $lang_name = 'ks'; + case 'ks': + $lang_name = 'kashmiri'; break; - case 'kurdish': - $lang_name = 'ku'; + case 'ku': + $lang_name = 'kurdish'; break; case 'kv': $lang_name = 'komi'; break; - case 'cornish_kernewek': - $lang_name = 'kw'; + case 'kw': + $lang_name = 'cornish_kernewek'; break; - case 'kirghiz': - $lang_name = 'ky'; + case 'ky': + $lang_name = 'kirghiz'; break; - case 'latin': - $lang_name = 'la'; + case 'la': + $lang_name = 'latin'; break; - case 'luxembourgish': - $lang_name = 'lb'; + case 'lb': + $lang_name = 'luxembourgish'; break; - case 'ganda': - $lang_name = 'lg'; + case 'lg': + $lang_name = 'ganda'; break; - case 'limburgish': - $lang_name = 'li'; + case 'li': + $lang_name = 'limburgish'; break; - case 'lingala': - $lang_name = 'ln'; + case 'ln': + $lang_name = 'lingala'; break; - case 'lao': - $lang_name = 'lo'; + case 'lo': + $lang_name = 'lao'; break; - case 'lithuanian': - $lang_name = 'lt'; + case 'lt': + $lang_name = 'lithuanian'; break; - case 'luba-katanga': - $lang_name = 'lu'; + case 'lu': + $lang_name = 'luba-katanga'; break; - case 'latvian': - $lang_name = 'lv'; + case 'lv': + $lang_name = 'latvian'; break; - case 'malagasy': - $lang_name = 'mg'; + case 'mg': + $lang_name = 'malagasy'; break; - case 'marshallese': - $lang_name = 'mh'; + case 'mh': + $lang_name = 'marshallese'; break; - case 'maori': - $lang_name = 'mi'; + case 'mi': + $lang_name = 'maori'; break; - case 'macedonian': - $lang_name = 'mk'; + case 'mk': + $lang_name = 'macedonian'; break; - case 'malayalam': - $lang_name = 'ml'; + case 'ml': + $lang_name = 'malayalam'; break; - case 'mongolian': - $lang_name = 'mn'; + case 'mn': + $lang_name = 'mongolian'; break; - case 'moldavian': - $lang_name = 'mo'; + case 'mo': + $lang_name = 'moldavian'; break; - case 'marathi': - $lang_name = 'mr'; + case 'mr': + $lang_name = 'marathi'; break; - case 'malay': - $lang_name = 'ms'; + case 'ms': + $lang_name = 'malay'; break; - case 'maltese': - $lang_name = 'mt'; + case 'mt': + $lang_name = 'maltese'; break; - case 'burmese': - $lang_name = 'my'; + case 'my': + $lang_name = 'burmese'; break; - case 'nauruan': - $lang_name = 'na'; + case 'na': + $lang_name = 'nauruan'; break; - case 'norwegian': - $lang_name = 'nb'; + case 'nb': + $lang_name = 'norwegian'; break; - case 'ndebele': - $lang_name = 'nd'; + case 'nd': + $lang_name = 'ndebele'; break; - case 'nepali': - $lang_name = 'ne'; + case 'ne': + $lang_name = 'nepali'; break; - case 'ndonga': - $lang_name = 'ng'; + case 'ng': + $lang_name = 'ndonga'; break; - case 'dutch': - $lang_name = 'nl'; + case 'nl': + $lang_name = 'dutch'; break; - case 'norwegian_nynorsk': - $lang_name = 'nn'; + case 'nn': + $lang_name = 'norwegian_nynorsk'; break; - case 'norwegian': - $lang_name = 'no'; + case 'no': + $lang_name = 'norwegian'; break; - case 'southern_ndebele': - $lang_name = 'nr'; + case 'nr': + $lang_name = 'southern_ndebele'; break; - case 'navajo': - $lang_name = 'nv'; + case 'nv': + $lang_name = 'navajo'; break; - case 'chichewa': - $lang_name = 'ny'; + case 'ny': + $lang_name = 'chichewa'; break; - case 'occitan': - $lang_name = 'oc'; + case 'oc': + $lang_name = 'occitan'; break; - case 'ojibwa': - $lang_name = 'oj'; + case 'oj': + $lang_name = 'ojibwa'; break; - case 'oromo': - $lang_name = 'om'; + case 'om': + $lang_name = 'oromo'; break; - case 'oriya': - $lang_name = 'or'; + case 'or': + $lang_name = 'oriya'; break; - case 'ossetian': - $lang_name = 'os'; + case 'os': + $lang_name = 'ossetian'; break; - case 'panjabi': - $lang_name = 'pa'; + case 'pa': + $lang_name = 'panjabi'; break; - case 'pali': - $lang_name = 'pi'; + case 'pi': + $lang_name = 'pali'; break; - case 'polish': - $lang_name = 'pl'; + case 'pl': + $lang_name = 'polish'; break; - case 'pashto': - $lang_name = 'ps'; + case 'ps': + $lang_name = 'pashto'; break; - case 'portuguese': - $lang_name = 'pt'; + case 'pt': + $lang_name = 'portuguese'; break; - case 'portuguese_brasil': - $lang_name = 'pt_br'; + case 'pt_br': + $lang_name = 'portuguese_brasil'; break; - case 'quechua': - $lang_name = 'qu'; + case 'qu': + $lang_name = 'quechua'; break; - case 'romansh': - $lang_name = 'rm'; + case 'rm': + $lang_name = 'romansh'; break; - case 'kirundi': - $lang_name = 'rn'; + case 'rn': + $lang_name = 'kirundi'; break; - case 'romanian': - $lang_name = 'ro'; + case 'ro': + $lang_name = 'romanian'; break; - case 'russian': - $lang_name = 'ru'; + case 'ru': + $lang_name = 'russian'; break; - case 'kinyarwanda': - $lang_name = 'rw'; + case 'rw': + $lang_name = 'kinyarwanda'; break; - case 'sanskrit': - $lang_name = 'sa'; + case 'sa': + $lang_name = 'sanskrit'; break; - case 'sardinian': - $lang_name = 'sc'; + case 'sc': + $lang_name = 'sardinian'; break; - case 'sindhi': - $lang_name = 'sd'; + case 'sd': + $lang_name = 'sindhi'; break; - case 'northern_sami': - $lang_name = 'se'; + case 'se': + $lang_name = 'northern_sami'; break; - case 'sango': - $lang_name = 'sg'; + case 'sg': + $lang_name = 'sango'; break; - case 'serbo-croatian': - $lang_name = 'sh'; + case 'sh': + $lang_name = 'serbo-croatian'; break; - case 'sinhala': - $lang_name = 'si'; + case 'si': + $lang_name = 'sinhala'; break; - case 'slovak': - $lang_name = 'sk'; + case 'sk': + $lang_name = 'slovak'; break; - case 'slovenian': - $lang_name = 'sl'; + case 'sl': + $lang_name = 'slovenian'; break; - case 'samoan': - $lang_name = 'sm'; + case 'sm': + $lang_name = 'samoan'; break; - case 'shona': - $lang_name = 'sn'; + case 'sn': + $lang_name = 'shona'; break; - case 'somali': - $lang_name = 'so'; + case 'so': + $lang_name = 'somali'; break; - case 'albanian': - $lang_name = 'sq'; + case 'sq': + $lang_name = 'albanian'; break; - case 'serbian': - $lang_name = 'sr'; + case 'sr': + $lang_name = 'serbian'; break; - case 'swati': - $lang_name = 'ss'; + case 'ss': + $lang_name = 'swati'; break; - case 'sotho': - $lang_name = 'st'; + case 'st': + $lang_name = 'sotho'; break; - case 'sundanese': - $lang_name = 'su'; + case 'su': + $lang_name = 'sundanese'; break; - case 'swedish': - $lang_name = 'sv'; + case 'sv': + $lang_name = 'swedish'; break; - case 'swahili': - $lang_name = 'sw'; + case 'sw': + $lang_name = 'swahili'; break; - case 'tamil': - $lang_name = 'ta'; + case 'ta': + $lang_name = 'tamil'; break; - case 'telugu': - $lang_name = 'te'; + case 'te': + $lang_name = 'telugu'; break; - case 'tajik': - $lang_name = 'tg'; + case 'tg': + $lang_name = 'tajik'; break; - case 'thai': - $lang_name = 'th'; + case 'th': + $lang_name = 'thai'; break; - case 'tigrinya': - $lang_name = 'ti'; + case 'ti': + $lang_name = 'tigrinya'; break; - case 'turkmen': - $lang_name = 'tk'; + case 'tk': + $lang_name = 'turkmen'; break; - case 'tagalog': - $lang_name = 'tl'; + case 'tl': + $lang_name = 'tagalog'; break; - case 'tswana': - $lang_name = 'tn'; + case 'tn': + $lang_name = 'tswana'; break; - case 'tonga': - $lang_name = 'to'; + case 'to': + $lang_name = 'tonga'; break; - case 'turkish': - $lang_name = 'tr'; + case 'tr': + $lang_name = 'turkish'; break; - case 'tsonga': - $lang_name = 'ts'; + case 'ts': + $lang_name = 'tsonga'; break; - case 'tatar': - $lang_name = 'tt'; + case 'tt': + $lang_name = 'tatar'; break; - case 'twi': - $lang_name = 'tw'; + case 'tw': + $lang_name = 'twi'; break; - case 'tahitian': - $lang_name = 'ty'; + case 'ty': + $lang_name = 'tahitian'; break; - case 'uighur': - $lang_name = 'ug'; + case 'ug': + $lang_name = 'uighur'; break; - case 'ukrainian': - $lang_name = 'uk'; + case 'uk': + $lang_name = 'ukrainian'; break; - case 'urdu': - $lang_name = 'ur'; + case 'ur': + $lang_name = 'urdu'; break; - case 'uzbek': - $lang_name = 'uz'; + case 'uz': + $lang_name = 'uzbek'; break; - case 'venda': - $lang_name = 've'; + case 've': + $lang_name = 'venda'; break; - case 'vietnamese': - $lang_name = 'vi'; + case 'vi': + $lang_name = 'vietnamese'; break; - case 'volapuk': - $lang_name = 'vo'; + case 'vo': + $lang_name = 'volapuk'; break; - case 'walloon': - $lang_name = 'wa'; + case 'wa': + $lang_name = 'walloon'; break; - case 'wolof': - $lang_name = 'wo'; + case 'wo': + $lang_name = 'wolof'; break; - case 'xhosa': - $lang_name = 'xh'; + case 'xh': + $lang_name = 'xhosa'; break; - case 'yiddish': - $lang_name = 'yi'; + case 'yi': + $lang_name = 'yiddish'; break; - case 'yoruba': - $lang_name = 'yo'; + case 'yo': + $lang_name = 'yoruba'; break; - case 'zhuang': - $lang_name = 'za'; + case 'za': + $lang_name = 'zhuang'; break; - case 'chinese': - $lang_name = 'zh'; + case 'zh': + $lang_name = 'chinese'; break; - case 'chinese_simplified': - $lang_name = 'zh_cmn_hans'; + case 'zh_cmn_hans': + $lang_name = 'chinese_simplified'; break; - case 'chinese_traditional': - $lang_name = 'zh_cmn_hant'; + case 'zh_cmn_hant': + $lang_name = 'chinese_traditional'; break; - case 'zulu': - $lang_name = 'zu'; + case 'zu': + $lang_name = 'zulu'; break; default: - $lang_name = $lang; - break; - } - return $lang_name; - } - - /** - * decode_lang - * - * $default_lang = $mx_user->decode_lang($board_config['default_lang']); - * - * @param unknown_type $lang - * @return unknown - */ - function decode_lang($lang) - { - return $lang; - } -} + $lang_name = (strlen($string) > 2) ? ucfirst(str_replace($pattern, '', $string)) : $string; + break; + } + return ucwords(str_replace(array(" ","-","_"), ' ', $lang_name)); + } + return ucwords(str_replace(array(" ","-","_"), ' ', str_replace($pattern, '', $string))); + } +} // -// Append $SID to a url. Borrowed from phplib and modified. This is an -// extra routine utilised by the session code above and acts as a wrapper -// around every single URL and form action. If you replace the session -// code you must include this routine, even if it's empty. +//Moved to functions.php +//This file is sometime included for this function +//and so we keep it here for phpBB2 backend // -function append_sid($url, $non_html_amp = false) +if (!function_exists('append_sid')) { - global $SID; - - if ( !empty($SID) && !preg_match('#sid=#', $url) ) + // + // Append $SID to a url. Borrowed from phplib and modified. This is an + // extra routine utilised by the session code above and acts as a wrapper + // around every single URL and form action. If you replace the session + // code you must include this routine, even if it's empty. + // + function phpbb_append_sid($url, $non_html_amp = false) { - $url .= ( ( strpos($url, '?') !== false ) ? ( ( $non_html_amp ) ? '&' : '&' ) : '?' ) . $SID; - } + global $SID; - return $url; + if ( !empty($SID) && !preg_match('#sid=#', $url) ) + { + $url .= ((strpos($url, '?') !== false) ? (($non_html_amp) ? '&' : '&') : '?') . $SID; + } + + return $url; + } } ?> \ No newline at end of file diff --git a/includes/sessions/mybb/CVS/Entries b/includes/sessions/mybb/CVS/Entries new file mode 100644 index 00000000..17848105 --- /dev/null +++ b/includes/sessions/mybb/CVS/Entries @@ -0,0 +1 @@ +D diff --git a/includes/sessions/mybb/CVS/Entries.Extra b/includes/sessions/mybb/CVS/Entries.Extra new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/mybb/CVS/Entries.Extra.Old b/includes/sessions/mybb/CVS/Entries.Extra.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/mybb/CVS/Entries.Old b/includes/sessions/mybb/CVS/Entries.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/mybb/CVS/Repository b/includes/sessions/mybb/CVS/Repository new file mode 100644 index 00000000..a0c756df --- /dev/null +++ b/includes/sessions/mybb/CVS/Repository @@ -0,0 +1 @@ +core/includes/sessions/mybb diff --git a/includes/sessions/mybb/CVS/Root b/includes/sessions/mybb/CVS/Root new file mode 100644 index 00000000..6ab1483d --- /dev/null +++ b/includes/sessions/mybb/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@mxbb.cvs.sourceforge.net:/cvsroot/mxbb diff --git a/includes/sessions/olympus/core.php b/includes/sessions/olympus/core.php index 7d7f8eb6..3fcfb837 100644 --- a/includes/sessions/olympus/core.php +++ b/includes/sessions/olympus/core.php @@ -194,7 +194,7 @@ function validate_backend() global $table_prefix, $phpEx, $tplEx; $table_prefix = false; - + $tplEx = 'html'; // Define relative path to phpBB, and validate $phpbb_root_path = $mx_root_path . $portal_config['portal_backend_path']; str_replace("//", "/", $phpbb_root_path); @@ -206,9 +206,6 @@ function validate_backend() die('Configuration file (config) ' . $phpbb_root_path . "config.$phpEx" . ' couldn\'t be opened.'); } - // Define backend template extension - $tplEx = 'html'; - // Validate db connection for backend $_result = $db->sql_query("SELECT config_value from " . $table_prefix . "config WHERE config_name = 'cookie_domain'"); $portal_backend_valid_db = $db->sql_numrows($_result) != 0; @@ -246,7 +243,10 @@ function setup_backend() $server_url_phpbb = $server_protocol . $server_name . $server_port . $script_name_phpbb; define('PHPBB_URL', $server_url_phpbb); - + + // Define backend template extension + $tplEx = 'html'; + if (!defined('TPL_EXT')) define('TPL_EXT', $tplEx); // // Now sync Configs // In phpBB mode, we rely on native phpBB configs, thus we need to sync mxp and phpbb settings @@ -707,64 +707,286 @@ function page_tail($mode = false) } } + /** - * Enter description here... + * obtain_phpbb_config * * @access public * @param boolean $use_cache * @return unknown */ - function obtain_phpbb_config($use_cache = true) + public function obtain_forum_config() { - global $db, $phpbb_root_path, $table_prefix, $mx_cache, $phpEx; - - if (($config = $mx_cache->get('phpbb_config')) && ($use_cache) ) + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) { - return $config; + global $table_prefix, $mx_root_path; + + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + if (($mx_cache->get('phpbb_config')) === false) + { + $config = $cached_config = array(); + + $sql = 'SELECT config_name, config_value, is_dynamic + FROM ' . CONFIG_TABLE; + if (!($result = $db->sql_query($sql))) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query config information, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); + } + } + + while ($row = $db->sql_fetchrow($result)) + { + if (!$row['is_dynamic']) + { + $cached_config[$row['config_name']] = $row['config_value']; + } + + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + $mx_cache->put('phpbb_config', $cached_config); } else - { - if (!defined('CONFIG_TABLE')) + { + $sql = 'SELECT config_name, config_value + FROM ' . CONFIG_TABLE . ' + WHERE is_dynamic = 1'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) { - global $table_prefix, $mx_root_path; - - require $mx_root_path. "includes/sessions/phpbb3/constants.$phpEx"; + $config[$row['config_name']] = $row['config_value']; } + $db->sql_freeresult($result); + } + + return $config; + } + + /** + * Set phpbb config values + * + * @param unknown_type $config_name + * @param unknown_type $config_value + */ + public function set_forum_config($key, $new_value, $use_cache = false) + { + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) + { + global $table_prefix, $mx_root_path; + + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + // Read out config values + $config = $this->obtain_phpbb_config(); + $old_value = !isset($config[$key]) ? $config[$key] : false; + $use_cache = (($key == 'comments_pagination') || ($key == 'pagination')) ? true : false; + + $sql = 'UPDATE ' . CONFIG_TABLE . " + SET config_value = '" . $db->sql_escape($new_value) . "' + WHERE config_name = '" . $db->sql_escape($key) . "'"; + + if ($old_value !== false) + { + $sql .= " AND config_value = '" . $db->sql_escape($old_value) . "'"; + } + + $db->sql_query($sql); + + if (!$db->sql_affectedrows() && isset($config[$key])) + { + return false; + } + + if (!isset($config[$key])) + { + $sql = 'INSERT INTO ' . CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'config_name' => $key, + 'config_value' => $new_value)), + 'is_dynamic' => ($use_cache) ? 0 : 1)); + $db->sql_query($sql); + } + + $config[$key] = $new_value; + + + if ($use_cache) + { + $mx_cache->destroy('config'); + $mx_cache->put('config', $config); + } + + return true; + } + + /** + * Get MX-Publisher config data + * + * @access public + * @return unknown + */ + public function obtain_portal_config($use_cache = true) + { + global $db, $mx_cache; + if ( ($portal_config = $mx_cache->get('mx_config')) && ($use_cache) ) + { + return $portal_config; + } + else + { $sql = "SELECT * - FROM " . CONFIG_TABLE; + FROM " . PORTAL_TABLE . " + WHERE portal_id = '1'"; - if ( !( $result = $db->sql_query( $sql ) ) ) + if ( !($result = $db->sql_query($sql)) ) { if (!function_exists('mx_message_die')) { - die("Couldnt query config information, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + die("Couldnt query portal configuration, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); } else { - mx_message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); + mx_message_die( GENERAL_ERROR, 'Couldnt query portal configuration', '', __LINE__, __FILE__, $sql ); } } - - while ( $row = $db->sql_fetchrow($result) ) + $row = $db->sql_fetchrow($result); + foreach ($row as $config_name => $config_value) { - $config[$row['config_name']] = $row['config_value']; + $portal_config[$config_name] = trim($config_value); } $db->sql_freeresult($result); + $mx_cache->put('mx_config', $portal_config); + + return ($portal_config); + } + } + + /** + * Set config value. Creates missing config entry. + * + */ + function set_portal_config($key, $new_value) + { + global $db, $mx_cache, $portal_config; + + // Read out config values + $portal_config = $this->obtain_portal_config(); + + $new[$key] = $new_value; + + $sql = "UPDATE " . PORTAL_TABLE . " SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)); + + if( !($db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($portal_config[$key])) + { + $sql = 'INSERT INTO ' . PORTAL_TABLE . ' ' . $db->sql_build_array('INSERT', array( + $db->sql_escape($key) => $db->sql_escape($new_value))); + $db->sql_query($sql); + } + + $portal_config[$key] = $new_value; + + $mx_cache->destroy('mx_config'); + } + + /** + * Get userdata + * + * Get Userdata, $mx_user can be username or user_id. If force_str is true, the username will be forced. + * Cached sql, since this function is used for every block. + * + * @param unknown_type $mx_user id or name + * @param boolean $force_str force clean_username + * @return array + */ + function get_userdata($mxuser, $force_str = false) + { + global $db, $phpBB2; + + if (!is_numeric($mxuser) || $force_str) + { + $mx_user = $phpBB2->phpbb_clean_username($mxuser); + } + else + { + $mx_user = intval($mxuser); + } - if ($use_cache) + $sql = "SELECT * + FROM " . USERS_TABLE . " + WHERE "; + $sql .= ((is_integer($mxuser)) ? "user_id = $mxuser" : "username = '" . str_replace("\'", "''", $mxuser) . "'" ) . " AND user_id <> " . ANONYMOUS; + if (!($result = $db->sql_query($sql, 120))) + { + if (!function_exists('mx_message_die')) { - $mx_cache->put('phpbb_config', $config); + die("Tried obtaining data for a non-existent user. Function mx_backend->get_userdata()"); } + else + { + mx_message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql); + } + } + $return = ($row = $db->sql_fetchrow($result)) ? $row : false; + /* + foreach ($row as $user_key => $user_value) + { + $userdata[$user_key] = trim($user_value); + } + */ + $db->sql_freeresult($result); + //return ($userdata); + return $return; + } + + /** + * Set user data value. + * + */ + function set_userdata($key, $new_value) + { + global $db, $mx_user; + + $new[$key] = $new_value; - return ( $config ); + $sql = "UPDATE " . USERS_TABLE . " SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)); + + if( !($db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($mx_user->data[$key])) + { + mx_message_die(GENERAL_ERROR, "Wrong Backend? Adding missing entry key to update MXP configuration is not supported ATM.", "", __LINE__, __FILE__, $sql); } - } + $mx_user->data[$key] = $new_value; + } + /** * Obtain ranks */ - function obtain_ranks() + public function obtain_ranks() { global $mx_cache; diff --git a/includes/sessions/olympus/functions.php b/includes/sessions/olympus/functions.php index 6826cb7d..444bb1f0 100644 --- a/includes/sessions/olympus/functions.php +++ b/includes/sessions/olympus/functions.php @@ -228,6 +228,7 @@ function mx_get_username_string($mode, $user_id, $username, $username_colour = ' switch ($mode) { + case 'profile_url': case 'profile': return $profile_url; break; diff --git a/includes/sessions/phpbb2/CVS/Entries b/includes/sessions/phpbb2/CVS/Entries new file mode 100644 index 00000000..7db222b4 --- /dev/null +++ b/includes/sessions/phpbb2/CVS/Entries @@ -0,0 +1,9 @@ +/auth.php/1.4/Fri Jun 28 15:33:47 2013// +/bbcode.php/1.4/Fri Jun 28 15:33:47 2013// +/constants.php/1.6/Fri Jun 28 15:33:47 2013// +/core.php/1.29/Fri May 16 18:02:23 2014// +/functions.php/1.2/Fri Jun 28 15:33:47 2013// +/index.htm/1.1/Wed Feb 13 21:43:19 2008// +/login.php/1.9/Fri Jun 28 15:33:47 2013// +/session.php/1.18/Fri May 9 07:52:03 2014// +D diff --git a/includes/sessions/phpbb2/CVS/Entries.Extra b/includes/sessions/phpbb2/CVS/Entries.Extra new file mode 100644 index 00000000..1e3b89e7 --- /dev/null +++ b/includes/sessions/phpbb2/CVS/Entries.Extra @@ -0,0 +1,8 @@ +/auth.php////*//// +/bbcode.php////*//// +/constants.php////*//// +/core.php////*//// +/functions.php////*//// +/index.htm////*//// +/login.php////*//// +/session.php////*//// diff --git a/includes/sessions/phpbb2/CVS/Entries.Extra.Old b/includes/sessions/phpbb2/CVS/Entries.Extra.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/phpbb2/CVS/Entries.Old b/includes/sessions/phpbb2/CVS/Entries.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/phpbb2/CVS/Repository b/includes/sessions/phpbb2/CVS/Repository new file mode 100644 index 00000000..a8b39a04 --- /dev/null +++ b/includes/sessions/phpbb2/CVS/Repository @@ -0,0 +1 @@ +core/includes/sessions/phpbb2 diff --git a/includes/sessions/phpbb2/CVS/Root b/includes/sessions/phpbb2/CVS/Root new file mode 100644 index 00000000..6ab1483d --- /dev/null +++ b/includes/sessions/phpbb2/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@mxbb.cvs.sourceforge.net:/cvsroot/mxbb diff --git a/includes/sessions/phpbb2/bbcode.php b/includes/sessions/phpbb2/bbcode.php index 5ec1ab4c..121c9d38 100644 --- a/includes/sessions/phpbb2/bbcode.php +++ b/includes/sessions/phpbb2/bbcode.php @@ -2,7 +2,7 @@ /** * * @package Functions_phpBB -* @version $Id: bbcode.php,v 1.4 2013/06/28 15:33:47 orynider Exp $ +* @version $Id: bbcode.php,v 1.5 2013/09/04 04:32:35 orynider Exp $ * @copyright (c) 2002-2008 MX-Publisher Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * @link http://mxpcms.sourceforge.net/ @@ -19,6 +19,7 @@ // include_once($mx_root_path . 'includes/mx_functions_bbcode.' . $phpEx); // BBCode associated functions + /** * MXP BBcodes * @package MX-Publisher @@ -69,21 +70,47 @@ function mx_bbcode($bitfield = '') * @param boolean $smilies_on * @return string */ - function decode($bbtext, $bbcode_uid, $smilies_on = true) + function decode($mytext, $bbcode_uid, $smilies_on = true, $bbcode_bitfield = false) { global $mx_root_path, $phpbb_root_path, $phpEx, $mx_page; - - $mytext = stripslashes($bbtext); + + if (!$mytext) + { + return ''; + } + + $mytext = mx_censor_text($mytext); + + //Do some checks + $phpbb3_text = $bbcode_bitfield ? true : false; + $bbcode_bitfield = ($bbcode_bitfield && (strlen($bbcode_bitfield) < 2)) ? false : $bbcode_bitfield; + if (!empty($bbcode_uid)) { - $mytext = $this->bbencode_second_pass($mytext, $bbcode_uid); + $mytext = $this->bbencode_second_pass($mytext, $bbcode_uid, $bbcode_bitfield); } - if ($smilies_on) + + $mytext = str_replace(array("\n", "\r"), array('
', "\n"), $mytext); + $mytext = $this->bbcode_nl2br($mytext); + + //$mytext = smiley_text($mytext, !($flags & OPTION_FLAG_SMILIES)); + if ($smilies_on && $phpbb3_text) + { + $mytext = $this->smilies3_pass($mytext); + } + else if ($smilies_on) { $mytext = $this->smilies_pass($mytext); } - $mytext = str_replace("\n", "\n
\n", $mytext); - return $this->make_clickable($mytext); + + //$mytext = str_replace("\n", "\n
\n", $mytext); + + if ($mytext != '') + { + $mytext = $this->make_clickable($mytext); + } + + return $mytext; } // @@ -92,8 +119,15 @@ function decode($bbtext, $bbcode_uid, $smilies_on = true) // function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid = 0) { - global $board_config, $html_entities_match, $html_entities_replace; + global $board_config, $mx_bbcode, $mx_root_path, $phpEx, $html_entities_match, $html_entities_replace; + // + // Instantiate the mx_text class + // + include_once($mx_root_path . 'includes/mx_functions_tools.'.$phpEx); + $mx_text = new mx_text(); + $mx_text->init($html_on, $bbcode_on, $smile_on); + // // Clean up the message // @@ -116,7 +150,7 @@ function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid foreach ($message_split as $part) { $tag = array(array_shift($matches[0]), array_shift($matches[1]), array_shift($matches[2])); - $message .= preg_replace($html_entities_match, $html_entities_replace, $part) . clean_html($tag); + $message .= preg_replace($html_entities_match, $html_entities_replace, $part) . $mx_text->clean_html($tag); } $message = addslashes($message); @@ -134,7 +168,818 @@ function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid return $message; } + + /** + * Second pass bbcodes + */ + function bbcode_second_pass(&$message, $bbcode_uid = '', $bbcode_bitfield = false) + { + if ($bbcode_uid) + { + $this->bbcode_uid = $bbcode_uid; + } + + if ($bbcode_bitfield !== false) + { + //$this->bbcode_bitfield = $bbcode_bitfield; + + // Init those added with a new bbcode_bitfield (already stored codes will not get parsed again) + $this->bbcode_cache_init(); + } + + //We are called from a Core block or non phpBB3, this should never be riched only when function is called direct + if (!$this->bbcode_bitfield) + { + // Remove the uid from tags that have not been transformed into HTML + /* + if ($this->bbcode_uid) + { + $message = str_replace(':' . $this->bbcode_uid, '', $message); + } + */ + return; + } + + $str = array('search' => array(), 'replace' => array()); + $preg = array('search' => array(), 'replace' => array()); + + $bitfield = new bitfield($this->bbcode_bitfield); + $bbcodes_set = $bitfield->get_all_set(); + + $undid_bbcode_specialchars = false; + foreach ($bbcodes_set as $bbcode_id) + { + if (!empty($this->bbcode_cache[$bbcode_id])) + { + foreach ($this->bbcode_cache[$bbcode_id] as $type => $array) + { + foreach ($array as $search => $replace) + { + ${$type}['search'][] = str_replace('$uid', $this->bbcode_uid, $search); + ${$type}['replace'][] = $replace; + } + + if (sizeof($str['search'])) + { + $message = str_replace($str['search'], $str['replace'], $message); + $str = array('search' => array(), 'replace' => array()); + } + + if (sizeof($preg['search'])) + { + // we need to turn the entities back into their original form to allow the + // search patterns to work properly + if (!$undid_bbcode_specialchars) + { + $message = str_replace(array(':', '.'), array(':', '.'), $message); + $undid_bbcode_specialchars = true; + } + + $message = preg_replace($preg['search'], $preg['replace'], $message); + $preg = array('search' => array(), 'replace' => array()); + } + } + } + } + + // Remove the uid from tags that have not been transformed into HTML + $message = str_replace(':' . $this->bbcode_uid, '', $message); + } + + /** + * Return bbcode template + */ + function bbcode_tpl($tpl_name, $bbcode_id = -1, $skip_bitfield_check = false) + { + static $bbcode_hardtpl = array(); + if (empty($bbcode_hardtpl)) + { + global $mx_user; + + $bbcode_hardtpl = array( + 'b_open' => '', + 'b_close' => '', + 'i_open' => '', + 'i_close' => '', + 'ipaper_open' => '', + 'ipaper_close' => '', + 'u_open' => '', + 'u_close' => '', + 'img' => '
' . $mx_user->lang['IMAGE'] . '
', + 'size' => '$2', + 'color' => '$2', + 'email' => '$2', + 'table' => '
{TEXT}
', + 'tr' => '{TEXT}', + 'th' => '{TEXT}', + 'td' => '{TEXT}', + 'thead' => '{TEXT}', + 'tbody' => '{TEXT}', + 'center' => '
{TEXT}
', + 'align' => '{TEXT}', + 'float' => '{TEXT}', + 'fa' => '', + ); + } + + if ($bbcode_id != -1 && !$skip_bitfield_check && !$this->template_bitfield->get($bbcode_id)) + { + return (isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false; + } + + if (empty($this->bbcode_template)) + { + if (($tpl = file_get_contents($this->template_filename)) === false) + { + trigger_error('Could not load bbcode template', E_USER_ERROR); + } + + // replace \ with \\ and then ' with \'. + $tpl = str_replace('\\', '\\\\', $tpl); + $tpl = str_replace("'", "\'", $tpl); + + // strip newlines and indent + $tpl = preg_replace("/\n[\n\r\s\t]*/", '', $tpl); + + // Turn template blocks into PHP assignment statements for the values of $bbcode_tpl.. + $this->bbcode_template = array(); + + $matches = preg_match_all('#(.*?)#', $tpl, $match); + + for ($i = 0; $i < $matches; $i++) + { + if (empty($match[1][$i])) + { + continue; + } + + $this->bbcode_template[$match[1][$i]] = $this->bbcode_tpl_replace($match[1][$i], $match[2][$i]); + } + } + + + return (isset($this->bbcode_template[$tpl_name])) ? $this->bbcode_template[$tpl_name] : ((isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false); + } + + /** + * Return bbcode template replacement + */ + function bbcode_tpl_replace($tpl_name, $tpl) + { + global $mx_user; + + static $replacements = array( + 'quote_username_open' => array('{USERNAME}' => '$1'), + 'color' => array('{COLOR}' => '$1', '{TEXT}' => '$2'), + 'size' => array('{SIZE}' => '$1', '{TEXT}' => '$2'), + 'img' => array('{WIDTH}' => '$1', '{HEIGHT}' => '$2', '{URL}' => '$3'), + 'scribd' => array('{URL}' => '$1'), + 'flash' => array('{WIDTH}' => '$1', '{HEIGHT}' => '$2', '{SCRIBDURL}' => '$3'), + 'youtube' => array('{YOUTUBEID}' => '$1', '{YOUTUBELINK}' => '$2', '{WIDTH}' => '$3', '{HEIGHT}' => '$4'), + 'ipaper' => array('{IPAPERID}' => '$1', '{IPAPERKEY}' => '$2', '{WIDTH}' => '$3', '{HEIGHT}' => '$4', '{IPAPERLINK}' => '$5'), + 'ipaper_open' => array('{IPAPERCODE}' => '$1'), + 'url' => array('{URL}' => '$1', '{DESCRIPTION}' => '$2'), + 'web' => array('{URL}' => '$1', '{DESCRIPTION}' => '$2'), + 'size' => array('{ID}' => '$1', '{TEXT}' => '$2'), + 'email' => array('{EMAIL}' => '$1', '{DESCRIPTION}' => '$2'), + 'table' => array('{NUMBER}' => '$1', '{TEXT}' => '$2'), + 'tr' => array('{TEXT}' => '$1'), + 'th' => array('{NUMBER}' => '$1', '{TEXT}' => '$2'), + 'td' => array('{NUMBER}' => '$1', '{TEXT}' => '$2'), + 'thead' => array('{TEXT}' => '$1'), + 'tbody' => array('{TEXT}' => '$1'), + 'center' => array('{TEXT}' => '$1'), + 'align' => array('{TEXT}' => '$1'), + 'float' => array('{TEXT}' => '$1'), + 'fa' => array('{TEXT}' => '$1') + ); + + $tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($mx_user) { + return (!empty($mx_user->lang[$match[1]])) ? $mx_user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1]))); + }, $tpl); + + if (!empty($replacements[$tpl_name])) + { + $tpl = strtr($tpl, $replacements[$tpl_name]); + } + + return trim($tpl); + } + + + /** + * Second parse list bbcode + * / + function bbcode_list($type) + { + if ($type == '') + { + $tpl = 'ulist_open_default'; + $type = 'default'; + } + else if ($type == 'i') + { + $tpl = 'olist_open'; + $type = 'lower-roman'; + } + else if ($type == 'I') + { + $tpl = 'olist_open'; + $type = 'upper-roman'; + } + else if (preg_match('#^(disc|circle|square|radical)$#i', $type)) + { + $tpl = 'ulist_open'; + $type = strtolower($type); + } + else if (preg_match('#^[a-z]$#', $type)) + { + $tpl = 'olist_open'; + $type = 'lower-alpha'; + } + else if (preg_match('#[A-Z]#', $type)) + { + $tpl = 'olist_open'; + $type = 'upper-alpha'; + } + else if (is_numeric($type)) + { + $tpl = 'olist_open'; + $type = 'arabic-numbers'; + } + else + { + $tpl = 'olist_open'; + $type = 'arabic-numbers'; + } + + return str_replace('{LIST_TYPE}', $type, $this->bbcode_tpl($tpl)); + } + + /** + * Init bbcode cache + * + * requires: $this->bbcode_bitfield + * sets: $this->bbcode_cache with bbcode templates needed for bbcode_bitfield + */ + function bbcode_cache_init() + { + global $mx_user, $mx_root_path; + + if (empty($this->template_filename)) + { + $this->template_bitfield = new bitfield(isset($mx_user->theme['bbcode_bitfield']) ? $mx_user->theme['bbcode_bitfield'] : 'kNg='); + + if (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.html')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.html'; + } + elseif (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.tpl')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/template/bbcode.tpl'; + } + if (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.tpl')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.tpl'; + } + elseif (file_exists($mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.html')) + { + $this->template_filename = $mx_root_path . 'templates/' . $mx_user->template_name . '/bbcode.html'; + } + $this->template_filename2 = substr_count($this->template_filename, 'html') ? str_replace(".html", ".tpl", $this->template_filename) : str_replace(".tpl", ".html", $this->template_filename); + if (!@file_exists($this->template_filename)) + { + if (!@file_exists($this->template_filename2)) + { + global $template; + + $this->template_filename = $template->make_filename('bbcode.tpl', false); + $this->template_filename2 = $template->make_filename('bbcode.html', false); + //trigger_error('The file "' . $this->template_filename . '", and The file "' . $this->template_filename2 . '" are missing.', E_USER_ERROR); + } + else + { + $this->template_filename = $this->template_filename2; + } + } + } + + $bbcode_ids = $rowset = $sql = array(); + + $bitfield = new bitfield($this->bbcode_bitfield); + $bbcodes_set = $bitfield->get_all_set(); + + foreach ($bbcodes_set as $bbcode_id) + { + if (isset($this->bbcode_cache[$bbcode_id])) + { + // do not try to re-cache it if it's already in + continue; + } + $bbcode_ids[] = $bbcode_id; + + if ($bbcode_id > NUM_CORE_BBCODES) + { + $sql[] = $bbcode_id; + } + } + + if (sizeof($sql)) + { + global $db; + + $sql = 'SELECT * + FROM ' . BBCODES_TABLE . ' + WHERE ' . $db->sql_in_set('bbcode_id', $sql); + $result = $db->sql_query($sql, 3600); + + while ($row = $db->sql_fetchrow($result)) + { + // To circumvent replacing newlines with
for the generated html, + // we use carriage returns here. They are later changed back to newlines + $row['bbcode_tpl'] = str_replace("\n", "\r", $row['bbcode_tpl']); + $row['second_pass_replace'] = str_replace("\n", "\r", $row['second_pass_replace']); + + $rowset[$row['bbcode_id']] = $row; + } + $db->sql_freeresult($result); + } + $bbcode_ids = $rowset; + foreach ($bbcode_ids as $bbcode_id) + { + switch ($bbcode_id) + { + case 0: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[/quote:$uid]' => $this->bbcode_tpl('quote_close', $bbcode_id) + ), + 'preg' => array( + '#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise' => "\$this->bbcode_second_pass_quote('\$1', '\$2')" + ) + ); + break; + + case 1: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[b:$uid]' => $this->bbcode_tpl('b_open', $bbcode_id), + '[/b:$uid]' => $this->bbcode_tpl('b_close', $bbcode_id), + ) + ); + break; + + case 2: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[i:$uid]' => $this->bbcode_tpl('i_open', $bbcode_id), + '[/i:$uid]' => $this->bbcode_tpl('i_close', $bbcode_id), + ) + ); + break; + + case 3: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[url:$uid\]((.*?))\[/url:$uid\]#s' => $this->bbcode_tpl('url', $bbcode_id), + '#\[url=([^\[]+?):$uid\](.*?)\[/url:$uid\]#s' => $this->bbcode_tpl('url', $bbcode_id), + ) + ); + break; + + case 4: + if ($mx_user->optionget('viewimg')) + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[img:$uid\](.*?)\[/img:$uid\]#s' => $this->bbcode_tpl('img', $bbcode_id), + ) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[img:$uid\](.*?)\[/img:$uid\]#s' => str_replace('$2', '[ img ]', $this->bbcode_tpl('url', $bbcode_id, true)), + ) + ); + } + break; + + case 5: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[size=([\-\+]?\d+):$uid\](.*?)\[/size:$uid\]#s' => $this->bbcode_tpl('size', $bbcode_id), + ) + ); + break; + + case 6: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '!\[color=(#[0-9a-f]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!is' => $this->bbcode_tpl('color', $bbcode_id), + ) + ); + break; + + case 7: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[u:$uid]' => $this->bbcode_tpl('u_open', $bbcode_id), + '[/u:$uid]' => $this->bbcode_tpl('u_close', $bbcode_id), + ) + ); + break; + + case 8: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#ise' => "\$this->bbcode_second_pass_code('\$1', '\$2')", + ) + ); + break; + + case 9: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#(\[\/?(list|\*):[mou]?:?$uid\])[\n]{1}#' => "\$1", + '#(\[list=([^\[]+):$uid\])[\n]{1}#' => "\$1", + '#\[list=([^\[]+):$uid\]#e' => "\$this->bbcode_list('\$1')", + ), + 'str' => array( + '[list:$uid]' => $this->bbcode_tpl('ulist_open_default', $bbcode_id), + '[/list:u:$uid]' => $this->bbcode_tpl('ulist_close', $bbcode_id), + '[/list:o:$uid]' => $this->bbcode_tpl('olist_close', $bbcode_id), + '[*:$uid]' => $this->bbcode_tpl('listitem', $bbcode_id), + '[/*:$uid]' => $this->bbcode_tpl('listitem_close', $bbcode_id), + '[/*:m:$uid]' => $this->bbcode_tpl('listitem_close', $bbcode_id) + ), + ); + break; + + case 10: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[email:$uid\]((.*?))\[/email:$uid\]#is' => $this->bbcode_tpl('email', $bbcode_id), + '#\[email=([^\[]+):$uid\](.*?)\[/email:$uid\]#is' => $this->bbcode_tpl('email', $bbcode_id) + ) + ); + break; + + case 11: + if ($mx_user->optionget('viewflash')) + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#' => $this->bbcode_tpl('flash', $bbcode_id), + ) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#' => str_replace('$1', '$3', str_replace('$2', '[ flash ]', $this->bbcode_tpl('url', $bbcode_id, true))) + ) + ); + } + break; + + case 12: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[/attachment:$uid]' => $this->bbcode_tpl('inline_attachment_close', $bbcode_id) + ), + 'preg' => array( + '#\[attachment=([0-9]+):$uid\]#' => $this->bbcode_tpl('inline_attachment_open', $bbcode_id) + ) + ); + break; + + + default: + if (isset($rowset[$bbcode_id])) + { + if ($this->template_bitfield->get($bbcode_id)) + { + // The bbcode requires a custom template to be loaded + if (!$bbcode_tpl = $this->bbcode_tpl($rowset[$bbcode_id]['bbcode_tag'], $bbcode_id)) + { + // For some reason, the required template seems not to be available, use the default template + $bbcode_tpl = (!empty($rowset[$bbcode_id]['second_pass_replace'])) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl']; + } + else + { + // In order to use templates with custom bbcodes we need + // to replace all {VARS} to corresponding backreferences + // Note that backreferences are numbered from bbcode_match + if (preg_match_all('/\{(URL|LOCAL_URL|WEB|IPAPERLINK|RAM|EMAIL|TEXT|SIMPLETEXT|IDENTIFIER|COLOR|NUMBER)[0-9]*\}/', $rowset[$bbcode_id]['bbcode_match'], $m)) + { + foreach ($m[0] as $i => $tok) + { + $bbcode_tpl = str_replace($tok, '$' . ($i + 1), $bbcode_tpl); + } + } + } + } + else + { + // Default template + $bbcode_tpl = ($rowset[$bbcode_id]['second_pass_replace']) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl']; + } + + // Replace {L_*} lang strings + $bbcode_tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$mx_user->lang['\$1'])) ? \$mx_user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl); + + if (!empty($rowset[$bbcode_id]['second_pass_replace'])) + { + // The custom BBCode requires second-pass pattern replacements + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl) + ); + } + } + else + { + $this->bbcode_cache[$bbcode_id] = false; + } + break; + } + } + } + + /** + * Does second-pass bbencoding. This should be used before displaying the message in + * a thread. Assumes the message is already first-pass encoded, and we are given the + * correct UID as used in first-pass encoding. + * This a temporary function + + Creating an BBcode List with a custom bullet character. + For example to list your favorite colors you could use: + + [list=square] + [*]Red + [*]Blue + [*]Yellow + [/list] + + The question is how to specify a custom list’s bullet such as [b]?[/b] for a Features BBcode List ? + + [b]?[/b][color=#FF0000]Red[/color] + [b]?[/b][color=#0040FF]Blue[/color] + [b]?[/b][color=#FFFF00]Yellow[/color] + */ + function bbencode_second_pass($text, $uid = '', $bitfield = false) + { + global $lang, $bbcode_tpl; + + if ($uid) + { + $this->bbcode_uid = $uid; + } + + if ($bitfield !== false) + { + $this->bbcode_bitfield = $bitfield; + + // Init those added with a new bbcode_bitfield (already stored codes will not get parsed again) + $this->bbcode_cache_init(); + } + + //Check if it's a phpBB3 block + if ($bitfield) + { + $this->bbcode_second_pass($text, $uid, $bitfield); + } + + $text = str_replace(array("\n", "\r"), array('
', "\n"), $text); + $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text); + + // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0). + // This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it. + $text = " " . $text; + + // First: If there isn't a "[" and a "]" in the message, don't bother. + if (! (strpos($text, "[") && strpos($text, "]")) ) + { + // Remove padding, return. + $text = substr($text, 1); + return $text; + } + + // Only load the templates ONCE.. + if (!defined("BBCODE_TPL_READY")) + { + // load templates from file into array. + $bbcode_tpl = $this->load_bbcode_template(); + + // prepare array for use in regexps. + $bbcode_tpl = $this->prepare_bbcode_template($bbcode_tpl); + } + + // [CODE] and [/CODE] for posting code (HTML, PHP, C etc etc) in your posts. + $text = $this->bbencode_second_pass_code($text, $uid, $bbcode_tpl); + + // [IPAPER] and [/IPAPER] for posting iPaper in your posts. + $text = $this->bbencode_ipaper_pass_render($text, $uid, $bbcode_tpl); + + // [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff. + $text = str_replace("[quote:$uid]", $bbcode_tpl['quote_open'], $text); + $text = str_replace("[/quote:$uid]", $bbcode_tpl['quote_close'], $text); + + // New one liner to deal with opening quotes with usernames... + // replaces the two line version that I had here before.. + $text = preg_replace("/\[quote:$uid=\"(.*?)\"\]/si", $bbcode_tpl['quote_username_open'], $text); + + // [list] and [list=x] for (un)ordered lists. + // unordered lists + $text = str_replace("[list:$uid]", $bbcode_tpl['ulist_open'], $text); + // li tags + $text = str_replace("[*:$uid]", $bbcode_tpl['listitem'], $text); + // ending tags + $text = str_replace("[/list:u:$uid]", $bbcode_tpl['ulist_close'], $text); + $text = str_replace("[/list:o:$uid]", $bbcode_tpl['olist_close'], $text); + //$text = str_replace("[/list:m:$uid]", $bbcode_tpl['mlist_close'], $text); + // Ordered lists + $text = preg_replace("/\[list=([a1]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([disc]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([circle]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([square]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([radical]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([none]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + //$text = preg_replace("/\[list=([^\[]+):$uid\][\n]/si", $bbcode_tpl['mlist_open'], $text); + + // colours + $text = preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+):$uid\]/si", $bbcode_tpl['color_open'], $text); + $text = str_replace("[/color:$uid]", $bbcode_tpl['color_close'], $text); + // size + $text = preg_replace("/\[size=([1-2]?[0-9]):$uid\]/si", $bbcode_tpl['size_open'], $text); + $text = str_replace("[/size:$uid]", $bbcode_tpl['size_close'], $text); + + // [b] and [/b] for bolding text. + $text = str_replace("[b:$uid]", $bbcode_tpl['b_open'], $text); + $text = str_replace("[/b:$uid]", $bbcode_tpl['b_close'], $text); + + // [u] and [/u] for underlining text. + $text = str_replace("[u:$uid]", $bbcode_tpl['u_open'], $text); + $text = str_replace("[/u:$uid]", $bbcode_tpl['u_close'], $text); + + // [i] and [/i] for italicizing text. + $text = str_replace("[i:$uid]", $bbcode_tpl['i_open'], $text); + $text = str_replace("[/i:$uid]", $bbcode_tpl['i_close'], $text); + + //$text = str_replace('url:' . $uid, 'url', $text); + + // Patterns and replacements for URL and email tags.. + $patterns = array(); + $replacements = array(); + + // [img]image_url_here[/img] code.. + // This one gets first-passed.. + $patterns[] = "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i"; + $replacements[] = $bbcode_tpl['img']; + + // matches a [url]xxxx://www.phpbb.com[/url] code.. + $patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url1']; + + // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix). + $patterns[] = "#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url2']; + + // [url=xxxx://www.phpbb.com]phpBB[/url] code.. + $patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url3']; + + // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix). + $patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url4']; + + // [email]user@domain.tld[/email] code.. + $patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si"; + $replacements[] = $bbcode_tpl['email']; + // real + $patterns[] = "#\[ram:$uid\](.*?)\[/ram:$uid\]#si"; + $replacements[] = $bbcode_tpl['ram']; + // [stream]Sound URL[/stream] code.. + $patterns[] = "#\[stream:$uid\](.*?)\[/stream:$uid\]#si"; + $replacements[] = $bbcode_tpl['stream']; + //web + $patterns[] = "#\[web:$uid\](.*?)\[/web:$uid\]#si"; + $replacements[] = $bbcode_tpl['web']; + // [flash width= height= loop= ] and [/flash] code.. + $patterns[] = "#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/flash:$uid\]#si"; + $replacements[] = $bbcode_tpl['flash']; + // [flash width= height= loop= ] and [/flash] code.. + $patterns[10] = "#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/video:$uid\]#si"; + $replacements[10] = $bbcode_tpl['video']; + + // [flash width=X height=X]Flash URL[/flash] code.. + $patterns[] = "#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/flash:$uid\]#si"; + $replacements[] = $bbcode_tpl['flash']; + + // [video width=X height=X]Video URL[/video] code.. + $patterns[] = "#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/video:$uid\]#si"; + $replacements[] = $bbcode_tpl['video']; + + // [GVideo]GVideo URL[/GVideo] code.. + $patterns[] = "#\[GVideo\]http://video.google.[A-Za-z0-9.]{2,5}/videoplay\?docid=([0-9A-Za-z-_]*)[^[]*\[/GVideo\]#is"; + $replacements[] = $bbcode_tpl['GVideo']; + + // [youtube]www.youtube.com[/youtube] + $patterns[] = "#\[youtube\]http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})[^[]*\[/youtube\]#is"; + $replacements[] = $bbcode_tpl['youtube']; + + // [youtube=xxxx://www.youtube.com]Youtube[/youtube] code.. + //$patterns[] = "#\[youtube=http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})]([^?\n\r\t].*?)\[/youtube\]#is"; + //$replacements[] = $bbcode_tpl['youtube']; + + // [scribd]Scribd URL[/scribd] code.. + $patterns[] = "#\[scribd\]http://(?:d\.)?scribd.com/ScribdViewer.swf\?document_id=([0-9A-Za-z-_]*)[^[]*\[/scribd\]#is"; + $replacements[] = $bbcode_tpl['scribd']; + + // [scribd]Scribd URL[/scribd] code.. + $patterns[] = "#\[scribd id=([0-9A-Za-z-_]{8}) key=([0-9A-Za-z-_]{24})\](.*?)\[/scribd\]#is"; + $replacements[] = $bbcode_tpl['scribd']; + + // [ipaper]Scribd URL[/ipaper] code.. + $patterns[] = "#\[ipaper\]http://(?:d\.)?scribd.com/ScribdViewer.swf\?document_id=([0-9A-Za-z-_]*)\&access_key=([0-9A-Za-z-_]*)[^[]*\[/ipaper\]#is"; + $replacements[] = $bbcode_tpl['ipaper']; + + //Strat more bbcode + $text = preg_replace($patterns, $replacements, $text); + // align + $text = preg_replace("/\[align=(left|right|center|justify):$uid\]/si", $bbcode_tpl['align_open'], $text); + $text = str_replace("[/align:$uid]", $bbcode_tpl['align_close'], $text); + // marquee + $text = preg_replace("/\[marq=(left|right|up|down):$uid\]/si", $bbcode_tpl['marq_open'], $text); + $text = str_replace("[/marq:$uid]", $bbcode_tpl['marq_close'], $text); + // table + $text = $this->bbencode_second_pass_html($text, $uid, $bbcode_tpl); + // tr + $text = str_replace("[tr:$uid]", $bbcode_tpl['tr_open'], $text); + $text = str_replace("[/tr:$uid]", $bbcode_tpl['tr_close'], $text); + // th + $text = preg_replace("[th:$uid]", $bbcode_tpl['th_open'], $text); + $text = str_replace("[/th:$uid]", $bbcode_tpl['th_close'], $text); + // td + $text = preg_replace("[td:$uid]", $bbcode_tpl['td_open'], $text); + $text = str_replace("[/td:$uid]", $bbcode_tpl['td_close'], $text); + // cell + $text = preg_replace("/\[cell=(.*?):$uid\]/si", $bbcode_tpl['cell_open'], $text); + $text = str_replace("[/cell:$uid]", $bbcode_tpl['cell_close'], $text); + // thead + $text = preg_replace("[thead:$uid]", $bbcode_tpl['thead_open'], $text); + $text = str_replace("[/thead:$uid]", $bbcode_tpl['thead_close'], $text); + // tbody + $text = preg_replace("[tbody:$uid]", $bbcode_tpl['tbody_open'], $text); + $text = str_replace("[/tbody:$uid]", $bbcode_tpl['tbody_close'], $text); + // center + $text = preg_replace("/\[center:$uid\]/si", $bbcode_tpl['center_open'], $text); + $text = str_replace("[/center:$uid]", $bbcode_tpl['center_close'], $text); + + // float + $text = preg_replace("/\[float:$uid\]/si", $bbcode_tpl['float_open'], $text); + $text = str_replace("[/float:$uid]", $bbcode_tpl['float_close'], $text); + // font + $text = preg_replace("/\[font=(.*?):$uid\]/si", $bbcode_tpl['font_open'], $text); + $text = str_replace("[/font:$uid]", $bbcode_tpl['font_close'], $text); + // poet + $text = preg_replace("/\[poet(.*?):$uid\]/si", $bbcode_tpl['poet_open'], $text); + $text = str_replace("[/poet:$uid]", $bbcode_tpl['poet_close'], $text); + //[hr] + $text = str_replace("[hr:$uid]", $bbcode_tpl['hr'], $text); + // bbcode_box Mod + // [fade] and [/fade] for faded text. + $text = str_replace("[fade:$uid]", $bbcode_tpl['fade_open'], $text); + $text = str_replace("[/fade:$uid]", $bbcode_tpl['fade_close'], $text); + + $text = str_replace("[fa:$uid]", $bbcode_tpl['fa_open'], $text); + $text = str_replace("[/fa:$uid]", $bbcode_tpl['fa_close'], $text); + + $text = str_replace("[fa_logo:$uid]", $bbcode_tpl['fa_logo_open'], $text); + $text = str_replace("[/fa_logo:$uid]", $bbcode_tpl['fa_logo_close'], $text); + + //Stop more bbcode + $text = preg_replace($patterns, $replacements, $text); + + // Remove the uid from tags that have not been transformed into HTML + $text = str_replace(':' . $uid, '', $text); + + // Remove our padding from the string.. + $text = substr($text, 1); + + return $text; + + } // bbencode_second_pass() + /** * phpBB Smilies pass. * @@ -183,6 +1028,27 @@ function smilies_pass($message) return $message; } + /** + * phpBB Smilies pass. + * + * Hacking smilies_pass from phpbb/includes/bbcode.php + * + * NOTE: This is only kept for reference - not used. + * + * @param string $message + * @return string + */ + function mx_smilies_pass_old($message) + { + global $mx_page, $board_config, $phpbb_root_path, $phpEx; + + $smilies_path = $board_config['smilies_path']; + $board_config['smilies_path'] = PHPBB_URL . $board_config['smilies_path']; + $message = smilies_pass($message); + $board_config['smilies_path'] = $smilies_path; + return $message; + } + /** * Generate smilies. * diff --git a/includes/sessions/phpbb2/constants.php b/includes/sessions/phpbb2/constants.php index c4bc8e05..88abd8d6 100644 --- a/includes/sessions/phpbb2/constants.php +++ b/includes/sessions/phpbb2/constants.php @@ -32,6 +32,11 @@ @define('ADMIN', 1); @define('MOD', 2); +@define('USER_NORMAL', 0); +@define('USER_INACTIVE', 1); +@define('USER_IGNORE', 2); +@define('USER_FOUNDER', 3); + // User related @define('USER_ACTIVATION_NONE', 0); @define('USER_ACTIVATION_SELF', 1); diff --git a/includes/sessions/phpbb2/core.php b/includes/sessions/phpbb2/core.php index e5e93641..5ad4bbb8 100644 --- a/includes/sessions/phpbb2/core.php +++ b/includes/sessions/phpbb2/core.php @@ -19,7 +19,8 @@ // Note: These functions will later be accessible wrapped as phpBBX::orig_functionname() // include_once($mx_root_path . 'includes/shared/phpbb2/includes/functions.' . $phpEx); -include_once($mx_root_path . 'includes/shared/phpbb3/includes/functions.' . $phpEx); + + // // Finally, load some backend specific functions @@ -39,6 +40,675 @@ */ class phpbb_auth extends phpbb_auth_base { + var $acl = array(); + var $mx_cache = array(); + var $acl_options = array(); + var $acl_forum_ids = false; + + /** + * Init permissions + */ + function acl(&$userdata) + { + global $db, $mx_cache; + + $this->acl = $this->cache = $this->acl_options = array(); + $this->acl_forum_ids = false; + + if (($this->acl_options = $mx_cache->get('_acl_options')) === false) + { + $this->acl_options = array ( + 'local' => array ( + 'f_' => 0, + 'f_announce' => 1, + 'f_announce_global' => 2, + 'f_attach' => 3, + 'f_bbcode' => 4, + 'f_bump' => 5, + 'f_delete' => 6, + 'f_download' => 7, + 'f_edit' => 8, + 'f_email' => 9, + 'f_flash' => 10, + 'f_icons' => 11, + 'f_ignoreflood' => 12, + 'f_img' => 13, + 'f_list' => 14, + 'f_list_topics' => 15, + 'f_noapprove' => 16, + 'f_poll' => 17, + 'f_post' => 18, + 'f_postcount' => 19, + 'f_print' => 20, + 'f_read' => 21, + 'f_reply' => 22, + 'f_report' => 23, + 'f_search' => 24, + 'f_sigs' => 25, + 'f_smilies' => 26, + 'f_sticky' => 27, + 'f_subscribe' => 28, + 'f_user_lock' => 29, + 'f_vote' => 30, + 'f_votechg' => 31, + 'f_softdelete' => 32, + 'm_' => 33, + 'm_approve' => 34, + 'm_chgposter' => 35, + 'm_delete' => 36, + 'm_edit' => 37, + 'm_info' => 38, + 'm_lock' => 39, + 'm_merge' => 40, + 'm_move' => 41, + 'm_report' => 42, + 'm_split' => 43, + 'm_softdelete' => 44 + ), + 'id' => array ( + 'f_' => 1, + 'f_announce' => 2, + 'f_announce_global' => 3, + 'f_attach' => 4, + 'f_bbcode' => 5, + 'f_bump' => 6, + 'f_delete' => 7, + 'f_download' => 8, + 'f_edit' => 9, + 'f_email' => 10, + 'f_flash' => 11, + 'f_icons' => 12, + 'f_ignoreflood' => 13, + 'f_img' => 14, + 'f_list' => 15, + 'f_list_topics' => 16, + 'f_noapprove' => 17, + 'f_poll' => 18, + 'f_post' => 19, + 'f_postcount' => 20, + 'f_print' => 21, + 'f_read' => 22, + 'f_reply' => 23, + 'f_report' => 24, + 'f_search' => 25, + 'f_sigs' => 26, + 'f_smilies' => 27, + 'f_sticky' => 28, + 'f_subscribe' => 29, + 'f_user_lock' => 30, + 'f_vote' => 31, + 'f_votechg' => 32, + 'f_softdelete' => 33, + 'm_' => 34, + 'm_approve' => 35, + 'm_chgposter' => 36, + 'm_delete' => 37, + 'm_edit' => 38, + 'm_info' => 39, + 'm_lock' => 40, + 'm_merge' => 41, + 'm_move' => 42, + 'm_report' => 43, + 'm_split' => 44, + 'm_softdelete' => 45, + 'm_ban' => 46, + 'm_pm_report' => 47, + 'm_warn' => 48, + 'a_' => 49, + 'a_aauth' => 50, + 'a_attach' => 51, + 'a_authgroups' => 52, + 'a_authusers' => 53, + 'a_backup' => 54, + 'a_ban' => 55, + 'a_bbcode' => 56, + 'a_board' => 57, + 'a_bots' => 58, + 'a_clearlogs' => 59, + 'a_email' => 60, + 'a_extensions' => 61, + 'a_fauth' => 62, + 'a_forum' => 63, + 'a_forumadd' => 64, + 'a_forumdel' => 65, + 'a_group' => 66, + 'a_groupadd' => 67, + 'a_groupdel' => 68, + 'a_icons' => 69, + 'a_jabber' => 70, + 'a_language' => 71, + 'a_mauth' => 72, + 'a_modules' => 73, + 'a_names' => 74, + 'a_phpinfo' => 75, + 'a_profile' => 76, + 'a_prune' => 77, + 'a_ranks' => 78, + 'a_reasons' => 79, + 'a_roles' => 80, + 'a_search' => 81, + 'a_server' => 82, + 'a_storage' => 83, + 'a_styles' => 84, + 'a_switchperm' => 85, + 'a_uauth' => 86, + 'a_user' => 87, + 'a_userdel' => 88, + 'a_viewauth' => 89, + 'a_viewlogs' => 90, + 'a_words' => 91, + 'u_' => 92, + 'u_attach' => 93, + 'u_chgavatar' => 94, + 'u_chgcensors' => 95, + 'u_chgemail' => 96, + 'u_chggrp' => 97, + 'u_chgname' => 98, + 'u_chgpasswd' => 99, + 'u_chgprofileinfo' => 100, + 'u_download' => 101, + 'u_hideonline' => 102, + 'u_ignoreflood' => 103, + 'u_masspm' => 104, + 'u_masspm_group' => 105, + 'u_pm_attach' => 106, + 'u_pm_bbcode' => 107, + 'u_pm_delete' => 108, + 'u_pm_download' => 109, + 'u_pm_edit' => 110, + 'u_pm_emailpm' => 111, + 'u_pm_flash' => 112, + 'u_pm_forward' => 113, + 'u_pm_img' => 114, + 'u_pm_printpm' => 115, + 'u_pm_smilies' => 116, + 'u_readpm' => 117, + 'u_savedrafts' => 118, + 'u_search' => 119, + 'u_sendemail' => 120, + 'u_sendim' => 121, + 'u_sendpm' => 122, + 'u_sig' => 123, + 'u_viewonline' => 124, + 'u_viewprofile' => 125, + 'u_dae_user' => 142, + 'a_dae_admin' => 143 + ), + 'option' => array ( + '1' => 'f_', + '2' => 'f_announce', + '3' => 'f_announce_global', + '4' => 'f_attach', + '5' => 'f_bbcode', + '6' => 'f_bump', + '7' => 'f_delete', + '8' => 'f_download', + '9' => 'f_edit', + '10' => 'f_email', + '11' => 'f_flash', + '12' => 'f_icons', + '13' => 'f_ignoreflood', + '14' => 'f_img', + '15' => 'f_list', + '16' => 'f_list_topics', + '17' => 'f_noapprove', + '18' => 'f_poll', + '19' => 'f_post', + '20' => 'f_postcount', + '21' => 'f_print', + '22' => 'f_read', + '23' => 'f_reply', + '24' => 'f_report', + '25' => 'f_search', + '26' => 'f_sigs', + '27' => 'f_smilies', + '28' => 'f_sticky', + '29' => 'f_subscribe', + '30' => 'f_user_lock', + '31' => 'f_vote', + '32' => 'f_votechg', + '33' => 'f_softdelete', + '34' => 'm_', + '35' => 'm_approve', + '36' => 'm_chgposter', + '37' => 'm_delete', + '38' => 'm_edit', + '39' => 'm_info', + '40' => 'm_lock', + '41' => 'm_merge', + '42' => 'm_move', + '43' => 'm_report', + '44' => 'm_split', + '45' => 'm_softdelete', + '46' => 'm_ban', + '47' => 'm_pm_report', + '48' => 'm_warn', + '49' => 'a_', + '50' => 'a_aauth', + '51' => 'a_attach', + '52' => 'a_authgroups', + '53' => 'a_authusers', + '54' => 'a_backup', + '55' => 'a_ban', + '56' => 'a_bbcode', + '57' => 'a_board', + '58' => 'a_bots', + '59' => 'a_clearlogs', + '60' => 'a_email', + '61' => 'a_extensions', + '62' => 'a_fauth', + '63' => 'a_forum', + '64' => 'a_forumadd', + '65' => 'a_forumdel', + '66' => 'a_group', + '67' => 'a_groupadd', + '68' => 'a_groupdel', + '69' => 'a_icons', + '70' => 'a_jabber', + '71' => 'a_language', + '72' => 'a_mauth', + '73' => 'a_modules', + '74' => 'a_names', + '75' => 'a_phpinfo', + '76' => 'a_profile', + '77' => 'a_prune', + '78' => 'a_ranks', + '79' => 'a_reasons', + '80' => 'a_roles', + '81' => 'a_search', + '82' => 'a_server', + '83' => 'a_storage', + '84' => 'a_styles', + '85' => 'a_switchperm', + '86' => 'a_uauth', + '87' => 'a_user', + '88' => 'a_userdel', + '89' => 'a_viewauth', + '90' => 'a_viewlogs', + '91' => 'a_words', + '92' => 'u_', + '93' => 'u_attach', + '94' => 'u_chgavatar', + '95' => 'u_chgcensors', + '96' => 'u_chgemail', + '97' => 'u_chggrp', + '98' => 'u_chgname', + '99' => 'u_chgpasswd', + '100' => 'u_chgprofileinfo', + '101' => 'u_download', + '102' => 'u_hideonline', + '103' => 'u_ignoreflood', + '104' => 'u_masspm', + '105' => 'u_masspm_group', + '106' => 'u_pm_attach', + '107' => 'u_pm_bbcode', + '108' => 'u_pm_delete', + '109' => 'u_pm_download', + '110' => 'u_pm_edit', + '111' => 'u_pm_emailpm', + '112' => 'u_pm_flash', + '113' => 'u_pm_forward', + '114' => 'u_pm_img', + '115' => 'u_pm_printpm', + '116' => 'u_pm_smilies', + '117' => 'u_readpm', + '118' => 'u_savedrafts', + '119' => 'u_search', + '120' => 'u_sendemail', + '121' => 'u_sendim', + '122' => 'u_sendpm', + '123' => 'u_sig', + '124' => 'u_viewonline', + '125' => 'u_viewprofile', + '142' => 'u_dae_user', + '143' => 'a_dae_admin' + ), + 'global' => array ( + 'm_' => 0, + 'm_approve' => 1, + 'm_chgposter' => 2, + 'm_delete' => 3, + 'm_edit' => 4, + 'm_info' => 5, + 'm_lock' => 6, + 'm_merge' => 7, + 'm_move' => 8, + 'm_report' => 9, + 'm_split' => 10, + 'm_softdelete' => 11, + 'm_ban' => 12, + 'm_pm_report' => 13, + 'm_warn' => 14, + 'a_' => 15, + 'a_aauth' => 16, + 'a_attach' => 17, + 'a_authgroups' => 18, + 'a_authusers' => 19, + 'a_backup' => 20, + 'a_ban' => 21, + 'a_bbcode' => 22, + 'a_board' => 23, + 'a_bots' => 24, + 'a_clearlogs' => 25, + 'a_email' => 26, + 'a_extensions' => 27, + 'a_fauth' => 28, + 'a_forum' => 29, + 'a_forumadd' => 30, + 'a_forumdel' => 31, + 'a_group' => 32, + 'a_groupadd' => 33, + 'a_groupdel' => 34, + 'a_icons' => 35, + 'a_jabber' => 36, + 'a_language' => 37, + 'a_mauth' => 38, + 'a_modules' => 39, + 'a_names' => 40, + 'a_phpinfo' => 41, + 'a_profile' => 42, + 'a_prune' => 43, + 'a_ranks' => 44, + 'a_reasons' => 45, + 'a_roles' => 46, + 'a_search' => 47, + 'a_server' => 48, + 'a_storage' => 49, + 'a_styles' => 50, + 'a_switchperm' => 51, + 'a_uauth' => 52, + 'a_user' => 53, + 'a_userdel' => 54, + 'a_viewauth' => 55, + 'a_viewlogs' => 56, + 'a_words' => 57, + 'u_' => 58, + 'u_attach' => 59, + 'u_chgavatar' => 60, + 'u_chgcensors' => 61, + 'u_chgemail' => 62, + 'u_chggrp' => 63, + 'u_chgname' => 64, + 'u_chgpasswd' => 65, + 'u_chgprofileinfo' => 66, + 'u_download' => 67, + 'u_hideonline' => 68, + 'u_ignoreflood' => 69, + 'u_masspm' => 70, + 'u_masspm_group' => 71, + 'u_pm_attach' => 72, + 'u_pm_bbcode' => 73, + 'u_pm_delete' => 74, + 'u_pm_download' => 75, + 'u_pm_edit' => 76, + 'u_pm_emailpm' => 77, + 'u_pm_flash' => 78, + 'u_pm_forward' => 79, + 'u_pm_img' => 80, + 'u_pm_printpm' => 81, + 'u_pm_smilies' => 82, + 'u_readpm' => 83, + 'u_savedrafts' => 84, + 'u_search' => 85, + 'u_sendemail' => 86, + 'u_sendim' => 87, + 'u_sendpm' => 88, + 'u_sig' => 89, + 'u_viewonline' => 90, + 'u_viewprofile' => 91, + 'u_dae_user' => 92, + 'a_dae_admin' => 93 + ) + ); + + $mx_cache->put('_acl_options', $this->acl_options); + } + + if (!isset($userdata['user_permissions']) || !trim($userdata['user_permissions'])) + { + $this->acl_cache($userdata); + } + + // Fill ACL array + $this->_fill_acl($userdata['user_permissions']); + + // Verify bitstring length with options provided... + $renew = false; + $global_length = count($this->acl_options['global']); + $local_length = count($this->acl_options['local']); + + // Specify comparing length (bitstring is padded to 31 bits) + $global_length = ($global_length % 31) ? ($global_length - ($global_length % 31) + 31) : $global_length; + $local_length = ($local_length % 31) ? ($local_length - ($local_length % 31) + 31) : $local_length; + + // You thought we are finished now? Noooo... now compare them. + foreach ($this->acl as $forum_id => $bitstring) + { + if (($forum_id && strlen($bitstring) != $local_length) || (!$forum_id && strlen($bitstring) != $global_length)) + { + $renew = true; + break; + } + } + + // If a bitstring within the list does not match the options, we have a user with incorrect permissions set and need to renew them + if ($renew) + { + $this->acl_cache($userdata); + $this->_fill_acl($userdata['user_permissions']); + } + + return; + } + + /** + * Build bitstring from permission set + */ + function build_bitstring(&$hold_ary) + { + $hold_str = ''; + + if (count($hold_ary)) + { + ksort($hold_ary); + + $last_f = 0; + + foreach ($hold_ary as $f => $auth_ary) + { + $ary_key = (!$f) ? 'global' : 'local'; + + $bitstring = array(); + foreach ($this->acl_options[$ary_key] as $opt => $id) + { + if (isset($auth_ary[$this->acl_options['id'][$opt]])) + { + $bitstring[$id] = $auth_ary[$this->acl_options['id'][$opt]]; + + $option_key = substr($opt, 0, strpos($opt, '_') + 1); + + // If one option is allowed, the global permission for this option has to be allowed too + // example: if the user has the a_ permission this means he has one or more a_* permissions + if ($auth_ary[$this->acl_options['id'][$opt]] == ACL_YES && (!isset($bitstring[$this->acl_options[$ary_key][$option_key]]) || $bitstring[$this->acl_options[$ary_key][$option_key]] == ACL_NEVER)) + { + $bitstring[$this->acl_options[$ary_key][$option_key]] = ACL_YES; + } + } + else + { + $bitstring[$id] = ACL_NEVER; + } + } + + // Now this bitstring defines the permission setting for the current forum $f (or global setting) + $bitstring = implode('', $bitstring); + + // The line number indicates the id, therefore we have to add empty lines for those ids not present + $hold_str .= str_repeat("\n", $f - $last_f); + + // Convert bitstring for storage - we do not use binary/bytes because PHP's string functions are not fully binary safe + for ($i = 0, $bit_length = strlen($bitstring); $i < $bit_length; $i += 31) + { + $hold_str .= str_pad(base_convert(str_pad(substr($bitstring, $i, 31), 31, 0, STR_PAD_RIGHT), 2, 36), 6, 0, STR_PAD_LEFT); + } + + $last_f = $f; + } + unset($bitstring); + + $hold_str = rtrim($hold_str); + } + + return $hold_str; + } + + /** + * Cache data to user_permissions row + */ + function acl_cache(&$userdata) + { + global $db; + + // Empty user_permissions + $userdata['user_permissions'] = ''; + + $hold_ary = $this->acl_raw_data_single_user($userdata['user_id']); + + // Key 0 in $hold_ary are global options, all others are forum_ids + + // If this user is founder we're going to force fill the admin options ... + if ($userdata['user_level'] == ADMIN) + { + foreach ($this->acl_options['global'] as $opt => $id) + { + if (strpos($opt, 'a_') === 0) + { + $hold_ary[0][$this->acl_options['id'][$opt]] = ACL_YES; + } + } + } + + $hold_str = $this->build_bitstring($hold_ary); + + if ($hold_str) + { + $userdata['user_permissions'] = $hold_str; + + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_permissions = '" . $db->sql_escape($userdata['user_permissions']) . "', + user_perm_from = 0 + WHERE user_id = " . $userdata['user_id']; + if (!($db->sql_query($sql))) + { + // If the column exists we change it, else we add it ;) + $table = USERS_TABLE; + + $column_data = $userdata; + + if (!class_exists('phpbb_db_tools') && !class_exists('tools')) + { + global $phpbb_root_path, $phpEx; + require($phpbb_root_path . 'includes/db/tools.' . $phpEx); + } + + if (class_exists('phpbb_db_tools')) + { + $db_tools = new phpbb_db_tools($db); + } + elseif (class_exists('tools')) + { + $db_tools = new tools($db); + } + + if (is_object($db_tools)) + { + if ($db_tools->sql_column_exists($table, 'user_perm_from')) + { + $result = true; + } + else + { + $column_name = 'user_perm_from'; + + $column_data['column_type_sql'] = 'TEXT'; + $column_data['user_perm_from'] = '0'; + + $result = $db_tools->sql_column_add($table, $column_name, $column_data, true); + + if (!$result) + { + $after = (!empty($column_data['after'])) ? ' AFTER ' . $column_data['after'] : ''; + $sql = 'ALTER TABLE `' . $table . '` ADD `' . $column_name . '` ' . (($column_data['column_type_sql'] = 'NULL') ? 'TEXT' : $column_data['column_type_sql']) . ' ' . (!empty($column_data[$column_name]) ? $column_data[$column_name] : 'NULL') . ' DEFAULT NULL' . $after; + + // We could add error handling here... + $result = $db->sql_query($sql); + if (!($result)) + { + mx_message_die(CRITICAL_ERROR, "Could not info", '', __LINE__, __FILE__, $sql); + } + } + } + + if ($db_tools->sql_column_exists($table, 'user_permissions')) + { + $result = true; + } + else + { + $column_name = 'user_permissions'; + + $column_data['column_type_sql'] = 'TEXT'; + $column_data['user_permissions'] = 'NULL'; + + $result = $db_tools->sql_column_add($table, $column_name, $column_data, true); + + if (!$result) + { + $after = (!empty($column_data['after'])) ? ' AFTER ' . $column_data['after'] : ''; + $sql = 'ALTER TABLE `' . $table . '` ADD `' . $column_name . '` ' . (($column_data['column_type_sql'] = 'NULL') ? 'TEXT' : $column_data['column_type_sql']) . ' ' . (!empty($column_data[$column_name]) ? $column_data[$column_name] : 'NULL') . ' DEFAULT NULL' . $after; + + // We could add error handling here... + $result = $db->sql_query($sql); + if (!($result)) + { + mx_message_die(CRITICAL_ERROR, "Could not info", '', __LINE__, __FILE__, $sql); + } + } + } + + if ($db_tools->sql_column_exists($table, 'user_birthday')) + { + $result = true; + } + else + { + $column_name = 'user_birthday'; + + $column_data['column_type_sql'] = 'TEXT'; + $column_data['user_birthday'] = 'NULL'; + + $result = $db_tools->sql_column_add($table, $column_name, $column_data, true); + + if (!$result) + { + $after = (!empty($column_data['after'])) ? ' AFTER ' . $column_data['after'] : ''; + $statements[] = 'ALTER TABLE `' . $table . '` ADD `' . $column_name . '` ' . (($column_data['column_type_sql'] = 'NULL') ? 'TEXT' : $column_data['column_type_sql']) . ' ' . (!empty($column_data[$column_name]) ? $column_data[$column_name] : 'NULL') . ' DEFAULT NULL' . $after; + + // We could add error handling here... + $result = $db->sql_query($sql); + if (!($result)) + { + mx_message_die(CRITICAL_ERROR, "Could not info", '', __LINE__, __FILE__, $sql); + } + } + } + } + } + } + + return; + } + /** * get_auth_forum * @@ -158,6 +828,335 @@ function acl_getfignore($auth_level_read, $ignore_forum_ids) $ignore_forum_ids = ($ignore_forum_ids) ? $ignore_forum_ids : -1; return $ignore_forum_ids; } + + /** + * Retrieves data wanted by acl function from the database for the + * specified user. + * + * @param int $user_id User ID + * @return array User attributes + */ + public function obtain_user_data($user_id) + { + global $db; + + $sql = 'SELECT u.user_id, u.username, u.user_permissions, u.user_type, u.user_id as user_colour, u.user_level as user_type, u.user_avatar as avatar, u.user_avatar_type as avatar_type + FROM ' . USERS_TABLE . ' u + WHERE user_id = ' . $user_id; + if (!($result = $db->sql_query($sql))) + { + mx_message_die(CRITICAL_ERROR, 'Could not query user info'); + } + $user_data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + return $user_data; + } + + /** + * Fill ACL array with relevant bitstrings from user_permissions column + * @access private + */ + function _fill_acl($user_permissions) + { + $seq_cache = array(); + $this->acl = array(); + $user_permissions = explode("\n", $user_permissions); + + foreach ($user_permissions as $f => $seq) + { + if ($seq) + { + $i = 0; + + if (!isset($this->acl[$f])) + { + $this->acl[$f] = ''; + } + + while ($subseq = substr($seq, $i, 6)) + { + if (isset($seq_cache[$subseq])) + { + $converted = $seq_cache[$subseq]; + } + else + { + $converted = $seq_cache[$subseq] = str_pad(base_convert($subseq, 36, 2), 31, 0, STR_PAD_LEFT); + } + + // We put the original bitstring into the acl array + $this->acl[$f] .= $converted; + $i += 6; + } + } + } + } + + /** + * Look up an option + * if the option is prefixed with !, then the result becomes negated + * + * If a forum id is specified the local option will be combined with a global option if one exist. + * If a forum id is not specified, only the global option will be checked. + */ + function acl_get($opt, $f = 0) + { + global $mx_user; + + $negate = false; + + if (strpos($opt, '!') === 0) + { + $negate = true; + $opt = substr($opt, 1); + } + + if (!isset($this->cache[$f][$opt])) + { + // We combine the global/local option with an OR because some options are global and local. + // If the user has the global permission the local one is true too and vice versa + $this->cache[$f][$opt] = false; + + // Is this option a global permission setting? + if (isset($this->acl_options['global'][$opt])) + { + if (isset($this->acl[0])) + { + $this->cache[$f][$opt] = $this->acl[0][$this->acl_options['global'][$opt]]; + } + } + + // Is this option a local permission setting? + // But if we check for a global option only, we won't combine the options... + if (($f != 0) && isset($this->acl_options['local'][$opt])) + { + if (isset($this->acl[$f]) && isset($this->acl[$f][$this->acl_options['local'][$opt]])) + { + $this->cache[$f][$opt] |= $this->acl[$f][$this->acl_options['local'][$opt]]; + } + } + } + + //'124' => 'u_viewonline', + //'125' => 'u_viewprofile', + if (strpos($opt, 'u_view') === 0) + { + $this->cache[$f][$opt] = ($mx_user->data['user_id'] != ANONYMOUS) ? true : false; + } + + //'89' => 'a_viewauth', + //'90' => 'a_viewlogs', + if (strpos($opt, 'a_view') === 0) + { + $this->cache[$f][$opt] = ($mx_user->data['user_level'] == ADMIN) ? true : false; + } + + // Founder always has all global options set to true... + return ($negate) ? !$this->cache[$f][$opt] : $this->cache[$f][$opt]; + } + + /** + * Get forums with the specified permission setting + * if the option is prefixed with !, then the result becomes nagated + * + * @param bool $clean set to true if only values needs to be returned which are set/unset + */ + function acl_getf($opt, $clean = false) + { + $acl_f = array(); + $negate = false; + + if (strpos($opt, '!') === 0) + { + $negate = true; + $opt = substr($opt, 1); + } + + // If we retrieve a list of forums not having permissions in, we need to get every forum_id + if ($negate) + { + if ($this->acl_forum_ids === false) + { + global $db; + + $sql = 'SELECT forum_id + FROM ' . FORUMS_TABLE; + + if (sizeof($this->acl)) + { + $sql .= ' WHERE ' . $db->sql_in_set('forum_id', array_keys($this->acl), true); + } + $result = $db->sql_query($sql); + + $this->acl_forum_ids = array(); + while ($row = $db->sql_fetchrow($result)) + { + $this->acl_forum_ids[] = $row['forum_id']; + } + $db->sql_freeresult($result); + } + } + + if (isset($this->acl_options['local'][$opt])) + { + foreach ($this->acl as $f => $bitstring) + { + // Skip global settings + if (!$f) + { + continue; + } + + $allowed = (!isset($this->cache[$f][$opt])) ? $this->acl_get($opt, $f) : $this->cache[$f][$opt]; + + if (!$clean) + { + $acl_f[$f][$opt] = ($negate) ? !$allowed : $allowed; + } + else + { + if (($negate && !$allowed) || (!$negate && $allowed)) + { + $acl_f[$f][$opt] = 1; + } + } + } + } + + // If we get forum_ids not having this permission, we need to fill the remaining parts + if ($negate && sizeof($this->acl_forum_ids)) + { + foreach ($this->acl_forum_ids as $f) + { + $acl_f[$f][$opt] = 1; + } + } + + return $acl_f; + } + + /** + * Get local permission state for any forum. + * + * Returns true if user has the permission in one or more forums, false if in no forum. + * If global option is checked it returns the global state (same as acl_get($opt)) + * Local option has precedence... + */ + function acl_getf_global($opt) + { + if (is_array($opt)) + { + // evaluates to true as soon as acl_getf_global is true for one option + foreach ($opt as $check_option) + { + if ($this->acl_getf_global($check_option)) + { + return true; + } + } + + return false; + } + + if (isset($this->acl_options['local'][$opt])) + { + foreach ($this->acl as $f => $bitstring) + { + // Skip global settings + if (!$f) + { + continue; + } + + // as soon as the user has any permission we're done so return true + if ((!isset($this->cache[$f][$opt])) ? $this->acl_get($opt, $f) : $this->cache[$f][$opt]) + { + return true; + } + } + } + else if (isset($this->acl_options['global'][$opt])) + { + return $this->acl_get($opt); + } + + return false; + } + + /** + * Get permission settings (more than one) + */ + function acl_gets() + { + $args = func_get_args(); + $f = array_pop($args); + + if (!is_numeric($f)) + { + $args[] = $f; + $f = 0; + } + + // alternate syntax: acl_gets(array('m_', 'a_'), $forum_id) + if (is_array($args[0])) + { + $args = $args[0]; + } + + $acl = 0; + foreach ($args as $opt) + { + $acl |= $this->acl_get($opt, $f); + } + + return $acl; + } + + /** + * Get permission listing based on user_id/options/forum_ids + */ + function acl_get_list($user_id = false, $opts = false, $forum_id = false) + { + if ($user_id !== false && !is_array($user_id) && $opts === false && $forum_id === false) + { + $hold_ary = array($user_id => $this->acl_raw_data_single_user($user_id)); + } + else + { + $hold_ary = $this->acl_raw_data($user_id, $opts, $forum_id); + } + + $auth_ary = array(); + foreach ($hold_ary as $user_id => $forum_ary) + { + foreach ($forum_ary as $forum_id => $auth_option_ary) + { + foreach ($auth_option_ary as $auth_option => $auth_setting) + { + if ($auth_setting) + { + $auth_ary[$forum_id][$auth_option][] = $user_id; + } + } + } + } + + return $auth_ary; + } + + /** + * Get raw acl data based on user for caching user_permissions + * This function returns the same data as acl_raw_data(), but without the user id as the first key within the array. + */ + function acl_raw_data_single_user($user_id) + { + global $db, $mx_cache, $user; + + $hold_ary = array(); + $hold_ary = $this->auth(AUTH_VIEW, AUTH_LIST_ALL, $user->data); + return $hold_ary; + } + } // @@ -175,7 +1174,25 @@ class mx_backend // XS Template - use backend db settings // var $edit_db = true; - + var $page_id = 1; + var $user_ip = 'ffffff'; + + /***/ + function mx_backend() + { + // Obtain and encode users IP + // from MXP 2.7.x common + // I'm removing HTTP_X_FORWARDED_FOR ... this may well cause other problems such as + // private range IP's appearing instead of the guilty routable IP, tough, don't + // even bother complaining ... go scream and shout at the idiots out there who feel + // "clever" is doing harm rather than good ... karma is a great thing ... :) + // + $this->client_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : getenv('REMOTE_ADDR') ); + $ip_sep = explode('.', $this->client_ip); + $this->user_ip = sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]); + } + /***/ + /** * Validate backend * @@ -189,38 +1206,71 @@ function validate_backend() global $table_prefix, $phpEx, $tplEx; $table_prefix = ''; - + // + // Define backend template extension + // + $tplEx = 'tpl'; + // // Define relative path to phpBB, and validate // - $phpbb_root_path = $mx_root_path . $portal_config['portal_backend_path']; + $phpbb_root_path = $phpbb_root_path ? $phpbb_root_path : $mx_root_path . $portal_config['portal_backend_path']; str_replace("//", "/", $phpbb_root_path); $portal_backend_valid_file = @file_exists($phpbb_root_path . "modcp.$phpEx"); // // Load phpbb config.php (to get table prefix) - // - if ((include $phpbb_root_path . "config.$phpEx") === false) - { - die('Configuration file (config) ' . $phpbb_root_path . "/config.$phpEx" . ' couldn\'t be opened.'); + // If this fails MXP2 will not work + // + if ((file_exists($phpbb_root_path . "config.$phpEx") === true)) + { + $backend_info = $this->get_phpbb_info($phpbb_root_path . "config.$phpEx"); + + // phpBB 2.x auto-generated config file + // Do not change anything in this file! + + $dbms = $backend_info['dbms']; + + $dbhost = $backend_info['dbhost']; + $dbname = $backend_info['dbname']; + $dbuser = $backend_info['dbuser']; + $dbpasswd = $backend_info['dbpasswd']; + + $table_prefix = $backend_info['table_prefix']; + + if( !isset($backend_info['dbms']) || $backend_info['dbms'] != $dbms || $backend_info['dbhost'] != $dbhost || $backend_info['dbname'] != $dbname || $backend_info['dbuser'] != $dbuser || $backend_info['dbpasswd'] != $dbpasswd || $backend_info['table_prefix'] != $table_prefix ) + { + if ((include $phpbb_root_path . "config.$phpEx") === false) + { + print('Configuration file (config) ' . $phpbb_root_path . "/config.$phpEx" . ' couldn\'t be opened.'); + } + } + + // + // Validate db connection for backend + // + $_result = $db->sql_query( "SELECT config_value from " . $table_prefix . "config WHERE config_name = 'cookie_domain'" ); + $portal_backend_valid_db = $db->sql_numrows($_result) != 0; } + else + { + print('Configuration file (config) ' . $phpbb_root_path . "config.$phpEx" . ' couldn\'t be opened.'); - // - // Define backend template extension - // - $tplEx = 'tpl'; - - // - // Validate db connection for backend - // - $_result = $db->sql_query( "SELECT config_value from " . $table_prefix . "config WHERE config_name = 'cookie_domain'" ); - $portal_backend_valid_db = $db->sql_numrows( $_result ) != 0; - + if ((include $mx_root_path . "config.$phpEx") === false) + { + print('Configuration file (config) ' . $phpbb_root_path . "/config.$phpEx" . ' couldn\'t be opened.'); + } + // + // Validate db connection for backend + // + $_result = $db->sql_query( "SELECT config_value from " . $table_prefix . "config WHERE config_name = 'cookie_domain'" ); + $portal_backend_valid_db = $db->sql_numrows($_result) != 0; + } return $portal_backend_valid_file && !empty($table_prefix) && $portal_backend_valid_db; } /** - * setup_backend + * $mx_backend->setup_backend() * * Define some general backend definitions * PORTAL_URL, PHPBB_URL, PORTAL_VERSION & $board_config @@ -228,30 +1278,89 @@ function validate_backend() */ function setup_backend() { - global $portal_config, $board_config, $phpbb_root_path, $phpEx; + global $mx_cache, $portal_config, $board_config, $mx_root_path, $phpbb_root_path, $phpEx; $script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($portal_config['script_path'])); $server_name = trim($portal_config['server_name']); $server_protocol = ( $portal_config['cookie_secure'] ) ? 'https://' : 'http://'; $server_port = (($portal_config['server_port']) && ($portal_config['server_port'] <> 80)) ? ':' . trim($portal_config['server_port']) . '/' : '/'; - - + $portal_config['portal_phpbb_url'] = str_replace("//", "/", $server_name . $server_port . $script_name . '/'); $server_url = $server_protocol . str_replace("//", "/", $server_name . $server_port . $script_name . '/'); //On some server the slash is not added and this trick will fix it - define('PORTAL_URL', $server_url); - define('PORTAL_VERSION', $portal_config['portal_version']); - // // Grab phpBB global variables, re-cache if necessary // - optional parameter to enable/disable cache for config data. If enabled, remember to refresh the MX-Publisher cache whenever updating phpBB config settings // - true: enable cache, false: disable cache - $board_config = $this->obtain_phpbb_config(false); - - $script_name_phpbb = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path'])) . '/'; - - $server_url_phpbb = $server_protocol . $server_name . $server_port . $script_name_phpbb; + if (empty($board_config['script_path'])) + { + $board_config = $mx_cache->obtain_phpbb_config(false); + } + + if (empty($portal_config['portal_version'])) + { + $portal_config = $mx_cache->obtain_mxbb_config(false); + } + /** + $this->data = !empty($this->data['user_id']) ? $this->data : $mx_user->session_pagestart($user_ip, $page_id); + + $this->cache = is_object($mx_cache) ? $mx_cache : new base(); + */ + if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) + { + $this->data['is_bot'] = true; + } + else + { + $this->data['is_bot'] = false; + } + + // + // Populate session_id + // + //$this->session_id = $this->data['session_id']; + $this->lang_path = $phpbb_root_path . 'language/'; + + $script_name = !empty($board_config['server_name']) ? preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['server_name'])) : 'localhost'; + $server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://'; + $server_port = (($board_config['server_port']) && ($board_config['server_port'] <> 80)) ? ':' . trim($portal_config['server_port']) . '/' : '/'; + $script_name_phpbb = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path'])) . '/'; + + if (!empty($portal_config['portal_url'])) + { + $corrected_url = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($portal_config['portal_url'])) . '/'; + } + else + { + $corrected_url = str_replace(array('phpBB/', $script_name_phpbb, str_replace('./../', '', $phpbb_root_path)), '', $portal_config['portal_phpbb_url'] . '/'); + $corrected_url = (empty($portal_config['portal_phpbb_url']) || preg_match('@^(?:phpbb.com)?([^/]+)@i', $portal_config['portal_phpbb_url'])) ? $server_protocol . str_replace("//", "/", $server_name . $server_port . $script_name . '/') : str_replace(array('https://', 'http://'), $server_protocol, $server_url) ; //On some server the slash is not added and this trick will fix it + } + + $board_url = $server_url; + + define('PORTAL_VERSION', $portal_config['portal_version']); + + $server_url_phpbb = $server_protocol . (isset($server_name) ? $server_name : $script_name) . $server_port . $script_name_phpbb; + + if (empty($portal_config['portal_phpbb_url']) || preg_match('@^(?:phpbb.com)?([^/]+)@i', $portal_config['portal_phpbb_url'])) + { + $portal_config['portal_phpbb_url'] = !empty($portal_config['portal_url']) ? $server_url . $script_name_phpbb : $server_url_phpbb; + } + + $server_url_phpbb = !empty($portal_config['portal_phpbb_url']) ? $server_url . $script_name_phpbb : $server_url_phpbb; + $server_url_phpbb = (empty($portal_config['portal_phpbb_url']) || preg_match('@^(?:phpbb.com)?([^/]+)@i', $portal_config['portal_phpbb_url'])) ? $server_url_phpbb : $portal_config['portal_phpbb_url']; + define('PHPBB_URL', $server_url_phpbb); - + define('PORTAL_URL', $board_url); + define('BOARD_URL', $server_url); + + $web_path = (isset($portal_config['portal_url'])) ? $board_url : $corrected_url; + + // + // Define backend template extension + // + $tplEx = 'tpl'; + if (!defined('TPL_EXT')) define('TPL_EXT', $tplEx); + // // Now sync Configs // In phpBB mode, we rely on native phpBB configs, thus we need to sync mxp and phpbb settings @@ -262,7 +1371,7 @@ function setup_backend() // Dummy include, to make all original phpBB functions available // include_once($phpbb_root_path . 'includes/functions.' . $phpEx); // In case we need old functions... - + include_once($mx_root_path . 'includes/shared/phpbb3/includes/functions.' . $phpEx); // // Is phpBB File Attachment MOD present? // @@ -389,42 +1498,295 @@ function sync_configs() } /** - * load_file + * load_file + * + * @param unknown_type $force_shared + * @access private + */ + function load_file($force_shared) + { + global $mx_root_path, $phpbb_root_path, $phpEx; + + if ($force_shared) + { + $shared = in_array($force_shared, array('internal', 'phpbb2', 'phpbb3')) ? $force_shared : PORTAL_BACKEND; + + switch ($shared) + { + case 'internal': + case 'phpbb2': + $path = $mx_root_path . 'includes/shared/phpbb2/includes/'; + break; + case 'phpbb3': + default: + $path = $mx_root_path . 'includes/shared/phpbb3/includes/'; + break; + } + } + else + { + $path = $phpbb_root_path . 'includes/'; + } + + return $path; + } + + /** + * get_phpbb_info + * + * @param unknown_type $root_path + * @access private + */ + function get_mxp_info($root_path, $backend = 'phpbb2', $phpbbversion = '2.0.24') + { + $phpEx = substr(strrchr(__FILE__, '.'), 1); + + if (strpos($root_path, '.') !== false) + { + // Nested file + $filename_ext = substr(strrchr($root_path, '.'), 1); + $filename = basename($root_path, '.' . $filename_ext); + $current_dir = dirname(realpath($root_path)); + $root_path = dirname($root_path); + } + else + { + $filename_ext = substr(strrchr(__FILE__, '.'), 1); + $filename = "config"; + $current_dir = $root_path; + $root_path = dirname($root_path); + } + + $config = $root_path . "/config.$phpEx"; + + // + if ((@include $config) === false) + { + die('Configuration file ' . $config . ' couldn\'t be opened.'); + } + // + + // Check the prefix length to ensure that index names are not too long and does not contain invalid characters + switch ($backend) + { + case 'internal': + // no break; + case 'phpbb2': + $phpbb_adm_relative_path = 'admin'; + break; + + case 'phpbb3': + case 'olympus': + $phpbb_adm_relative_path = 'adm'; + break; + + case 'ascraeus': + case 'rhea': + case 'proteus': + $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/'; + $dbms = get_keys_sufix($dbms); + $acm_type = get_keys_sufix($acm_type); + break; + } + + // If we are on PHP < 5.0.0 we need to force include or we get a blank page + if (version_compare(PHP_VERSION, '5.0.0', '<')) + { + $dbms = str_replace('mysqli', 'mysql4', $dbms); //this version of php does not have mysqli extension and my crash the installer if finds a forum using this + } + + return array( + 'dbms' => $dbms, + 'dbhost' => $dbhost, + 'dbname' => $dbname, + 'dbuser' => $dbuser, + 'dbpasswd' => $dbpasswd, + 'mx_table_prefix' => $mx_table_prefix, + 'table_prefix' => $table_prefix, + 'backend' => $backend, + 'version' => $phpbbversion, + 'acm_type' => isset($acm_type) ? $acm_type : '', + 'phpbb_root_path' => $phpbb_root_path, + 'status' => defined('MX_INSTALLED') ? true : false, + ); + } + + /** + * get_phpbb_info * - * @param unknown_type $force_shared + * @param unknown_type $root_path * @access private */ - function load_file($force_shared) + function get_phpbb_info($root_path, $backend = 'phpbb2', $phpbbversion = '2.0.24') { - global $mx_root_path, $phpbb_root_path, $phpEx; - - if ($force_shared) + $phpEx = substr(strrchr(__FILE__, '.'), 1); + + if (strpos($root_path, '.') !== false) { - $shared = in_array($force_shared, array('internal', 'phpbb2', 'phpbb3')) ? $force_shared : PORTAL_BACKEND; - switch ($shared) + // Nested file + $filename_ext = substr(strrchr($root_path, '.'), 1); + $filename = basename($root_path, '.' . $filename_ext); + $current_dir = dirname(realpath($root_path)); + $root_path = dirname($root_path); + } + else + { + $filename_ext = substr(strrchr(__FILE__, '.'), 1); + $filename = "config"; + $current_dir = $root_path; + $root_path = dirname($root_path); + } + + $config = $root_path . "/config.$phpEx"; + + // + if ((@include $config) === false) + { + die('Configuration file ' . $config . ' couldn\'t be opened.'); + } + // + + if ((@include $root_path . "language/en/install.$phpEx") !== false) + { + $left_piece1 = explode('. You', $lang['CONVERT_COMPLETE_EXPLAIN']); + $left_piece2 = explode('phpBB', $left_piece1[0]); + $phpbbversion = strrchr($left_piece2[1], ' '); + + switch (true) { - case 'internal': - case 'phpbb2': - case 'smf2': - case 'mybb': - $path = $mx_root_path . 'includes/shared/phpbb2/includes/'; + case (preg_match('/3.0/i', $phpbbversion)): + $backend = 'olympus'; break; - - case 'phpbb3': - case 'olympus': - case 'ascraeus': - case 'rhea': - $path = $mx_root_path . 'includes/shared/phpbb3/includes/'; + case (preg_match('/3.1/i', $phpbbversion)): + $backend = 'ascraeus'; + break; + case (preg_match('/3.2/i', $phpbbversion)): + $backend = 'rhea'; + break; + case (preg_match('/3.3/i', $phpbbversion)): + $backend = 'proteus'; + break; + case (preg_match('/4./i', $phpbbversion)): + $backend = 'phpbb4'; break; } + } + + // Check the prefix length to ensure that index names are not too long and does not contain invalid characters + switch ($backend) + { + case 'internal': + // no break; + case 'phpbb2': + $phpbb_adm_relative_path = 'admin'; + break; + + case 'phpbb3': + case 'olympus': + $phpbb_adm_relative_path = 'adm'; + break; + + case 'ascraeus': + case 'rhea': + case 'proteus': + $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/'; + $dbms = get_keys_sufix($dbms); + $acm_type = get_keys_sufix($acm_type); + break; } - else + + // If we are on PHP < 5.0.0 we need to force include or we get a blank page + if (version_compare(PHP_VERSION, '5.0.0', '<')) + { + $dbms = str_replace('mysqli', 'mysql4', $dbms); //this version of php does not have mysqli extension and my crash the installer if finds a forum using this + } + + return array( + 'dbms' => $dbms, + 'dbhost' => $dbhost, + 'dbname' => $dbname, + 'dbuser' => $dbuser, + 'dbpasswd' => $dbpasswd, + 'table_prefix' => $table_prefix, + 'backend' => $backend, + 'version' => $phpbbversion, + 'acm_type' => isset($acm_type) ? $acm_type : '', + 'status' => defined('PHPBB_INSTALLED') ? true : false, + ); + } + + /** + * get_smf_info + * + * @param unknown_type $settings + * @access private + * / + function get_smf_info($settings) + { + if ((@include $settings) === false) { - $path = $phpbb_root_path . 'includes/'; + install_die(GENERAL_ERROR, 'Configuration file ' . $settings . ' couldn\'t be opened.'); + } + // If we are on PHP < 5.0.0 we need to force include or we get a blank page + if (version_compare(PHP_VERSION, '5.0.0', '<')) + { + $db_type = str_replace('mysqli', 'mysql4', $db_type); //this version of php does not have mysqli extension and my crash the installer if finds a forum using this } - return $path; + // If the UTF-8 setting was enabled, add it to the table definitions. + if ($db_character_set == 'utf8') + { + $db_type = str_replace('mysql', 'mysql4', $db_type); + } + return array( + 'dbms' => $db_type, // 'mysql' + 'dbhost' => $db_server, // 'localhost'; + 'dbname' => $db_name, // 'smf'; + 'dbuser' => $db_user, // 'root'; + 'dbpasswd' => $db_passwd, // ''; + 'ssi_dbuser' => $ssi_db_user, // ''; + 'ssi_dbpasswd' => $ssi_db_passwd, // ''; + 'table_prefix' => $db_prefix, // 'smf_'; + 'dbpersist' => $db_persist, // 0; + 'dberror_send' => $db_error_send, // 1; + 'dbcharacter_set' => $db_character_set, + 'acm_type' => '', + 'mtitle' => $mtitle, //# Title for the Maintenance Mode message. + 'status' => ($maintenance != 2) ? true : false, # Set to 1 to enable Maintenance Mode, 2 to make the forum untouchable. (you'll have to make it 0 again manually!) + 'mbname' => $mbname, # The name of your forum. + 'language' => $language, // 'english'; # The default language file set for the forum. + 'boardurl' => $boardurl, // 'http://127.0.0.1/smf'; # URL to your forum's folder. (without the trailing /!) + 'webmaster_email' => $webmaster_email, // 'noreply@myserver.com'; # Email address to send emails from. (like noreply@yourdomain.com.) + 'cookiename' => $cookiename, + ); } - + + /** + * get_mybb_info + * + * @param unknown_type $mybb_config + * @access private + * / + function get_mybb_info($mybb_config) + { + $config = array(); + if ((@include $mybb_config) === false) + { + install_die(GENERAL_ERROR, 'Configuration file ' . $mybb_config . ' couldn\'t be opened.'); + } + return array( + 'dbms' => $config['database']['type'], // 'mysqli'; + 'dbname' => $config['database']['database'], // 'mybb'; + 'table_prefix' => $config['database']['table_prefix'], // 'mybb_'; + + 'dbhost' => $config['database']['hostname'], // 'localhost'; + 'dbname' => $config['database']['username'], // 'Admin'; + 'dbpasswd' => $config['database']['password'], + + 'admin_dir' => $config['admin_dir'], + 'dbcharacter_set' => $config['database']['encoding'], + ); + } + /** * dss_rand * @@ -434,28 +1796,25 @@ function load_file($force_shared) function dss_rand() { global $db, $portal_config, $board_config, $dss_seeded; - + $val = $board_config['rand_seed'] . microtime(); $val = md5($val); $board_config['rand_seed'] = md5($board_config['rand_seed'] . $val . 'a'); - + if($dss_seeded !== true) { $sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '" . $board_config['rand_seed'] . "' WHERE config_name = 'rand_seed'"; - - //display an error debuging message only if the portal is installed/upgraded - if(!@$db->sql_query($sql) && @!file_exists('install')) + + if( !$db->sql_query($sql) ) { mx_message_die(GENERAL_ERROR, "Unable to reseed PRNG", "", __LINE__, __FILE__, $sql); } - elseif(!@$db->sql_query($sql) && @file_exists('install')) - { - mx_message_die(GENERAL_ERROR, "Unable to reseed PRNG"."
Please finish upgrading and
". t(isset($lang['Please_remove_install_contrib'])), "", __LINE__, __FILE__, $sql); - } + $dss_seeded = true; } + return substr($val, 4, 16); } @@ -472,7 +1831,7 @@ function make_jumpbox($action, $match_forum_id = 0) ORDER BY c.cat_order"; if ( !($result = $db->sql_query($sql)) ) { - message_die(GENERAL_ERROR, "Couldn't obtain category list.", "", __LINE__, __FILE__, $sql); + mx_message_die(GENERAL_ERROR, "Couldn't obtain category list.", "", __LINE__, __FILE__, $sql); } $category_rows = array(); @@ -488,7 +1847,7 @@ function make_jumpbox($action, $match_forum_id = 0) ORDER BY cat_id, forum_order"; if ( !($result = $db->sql_query($sql)) ) { - message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql); + mx_message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql); } $boxstring = ''; + } + + // Let the jumpbox work again in sites having additional session id checks. + // if ( !empty($SID) ) + // { + $boxstring .= ''; + // } + + $template->set_filenames(array( + 'jumpbox' => 'jumpbox.tpl') + ); + + $template->assign_vars(array( + 'L_GO' => $lang['Go'], + 'L_JUMP_TO' => $lang['Jump_to'], + 'L_SELECT_FORUM' => $lang['Select_forum'], + + 'S_JUMPBOX_SELECT' => $boxstring, + 'S_JUMPBOX_ACTION' => mx_append_sid($action), + 'S_FORUM_COUNT' => $j) + ); + + $template->assign_var_from_handle('JUMPBOX', 'jumpbox'); + + return; + } + + /** + * Backend specific Page Header data + * + * @param unknown_type $mode + */ + function page_header($mode = false) + { + global $db, $mx_root_path, $phpbb_root_path, $userdata, $mx_user, $lang, $images, $phpEx, $board_config, $gen_simple_header, $layouttemplate, $mx_page; + + switch ($mode) + { + case 'generate_login_logout_stats': + + if ( $mx_user->data['user_id'] != 1 ) + { + $is_logged = true; + $u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $mx_user->data['session_id']; + $l_login_logout = $lang['Logout'] . ' [ ' . $mx_user->data['username'] . ' ]'; + } + else + { + $is_logged = false; + $u_login_logout = 'login.'.$phpEx; + $l_login_logout = $lang['Login']; + } + $s_last_visit = ( $mx_user->data['session_logged_in'] ) ? phpBB2::create_date($board_config['default_dateformat'], $mx_user->data['user_lastvisit'], $board_config['board_timezone']) : ''; + + // + // Obtain number of new private messages + // if user is logged in + // + if ( ($mx_user->data['session_logged_in']) && (empty($gen_simple_header)) ) + { + if ( $mx_user->data['user_new_privmsg'] ) + { + $l_message_new = ( $mx_user->data['user_new_privmsg'] == 1 ) ? $lang['New_pm'] : $lang['New_pms']; + $l_privmsgs_text = sprintf($l_message_new, $mx_user->data['user_new_privmsg']); + + if ( $mx_user->data['user_last_privmsg'] > $mx_user->data['user_lastvisit'] ) + { + $sql = "UPDATE " . USERS_TABLE . " + SET user_last_privmsg = " . $mx_user->data['user_lastvisit'] . " + WHERE user_id = " . $mx_user->data['user_id']; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not update private message new/read time for user', '', __LINE__, __FILE__, $sql); + } + + $s_privmsg_new = 1; + $icon_pm = $images['pm_new_msg']; + } + else + { + $s_privmsg_new = 0; + $icon_pm = $images['pm_no_new_msg']; + } + $mx_priv_msg = $lang['Private_Messages'] . ' (' . $mx_user->data['user_new_privmsg'] . ')'; + } + else + { + $l_privmsgs_text = $lang['No_new_pm']; + + $s_privmsg_new = 0; + $icon_pm = $images['pm_no_new_msg']; + $mx_priv_msg = $lang['Private_Messages']; + } + + if ( $mx_user->data['user_unread_privmsg'] ) + { + $l_message_unread = ( $mx_user->data['user_unread_privmsg'] == 1 ) ? $lang['Unread_pm'] : $lang['Unread_pms']; + $l_privmsgs_text_unread = sprintf($l_message_unread, $mx_user->data['user_unread_privmsg']); + } + else + { + $l_privmsgs_text_unread = $lang['No_unread_pm']; + } + } + else + { + $icon_pm = $images['pm_no_new_msg']; + $l_privmsgs_text = $lang['Login_check_pm']; + $l_privmsgs_text_unread = ''; + $s_privmsg_new = 0; + $mx_priv_msg = $lang['Private_Messages']; + } + + $layouttemplate->assign_vars(array( + 'U_LOGIN_LOGOUT' => mx_append_sid(PORTAL_URL . $u_login_logout), + 'L_LOGIN_LOGOUT' => $l_login_logout, + 'LAST_VISIT_DATE' => sprintf($lang['You_last_visit'], $s_last_visit), + 'PRIVATE_MESSAGE_INFO' => $l_privmsgs_text, + 'PRIVATE_MESSAGE_INFO_UNREAD' => $l_privmsgs_text_unread, + 'PRIVATE_MESSAGE_NEW_FLAG' => $s_privmsg_new, + 'PRIVMSG_IMG' => $icon_pm, + 'L_PRIVATEMSGS' => $mx_priv_msg, + + // Backend + 'PHPBB' => true, + + // Show phpbb stats? + 'PHPBB_STATS' => $mx_page->phpbb_stats, + + // Allow autologin? + 'ALLOW_AUTOLOGIN' => !$userdata['session_logged_in'] && (!isset($board_config['allow_autologin']) || $board_config['allow_autologin']), + + // phpBB PM + 'ENABLE_PM_POPUP' => $userdata['session_logged_in'] && !empty($userdata['user_popup_pm']), + )); + + break; + + case 'generate_nav_links': + + $u_register = 'ucp.'.$phpEx.'?mode=register'; + $u_profile = 'ucp.'.$phpEx; + $u_privatemsgs = 'ucp.'.$phpEx.'?i=pm&folder=inbox'; + $u_privatemsgs_popup ='ucp.'.$phpEx.'?i=pm&mode=popup'; + $u_search = 'search.'.$phpEx; + $u_memberlist = 'memberlist.'.$phpEx; + $u_modcp = 'mcp.'.$phpEx; + $u_faq = 'faq.'.$phpEx; + $u_viewonline = 'viewonline.'.$phpEx; + $u_group_cp = 'ucp.'.$phpEx.'?i=167'; + $u_sendpassword = ($board_config['email_enable']) ? mx3_append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=sendpassword') : ''; + + $layouttemplate->assign_vars(array( + 'U_REGISTER' => mx_append_sid(PHPBB_URL . $u_register), + 'U_PROFILE' => mx_append_sid(PHPBB_URL . $u_profile), + 'U_PRIVATEMSGS' => mx_append_sid(PHPBB_URL . $u_privatemsgs), + 'U_PRIVATEMSGS_POPUP' => mx_append_sid(PHPBB_URL . $u_privatemsgs_popup), + 'U_SEARCH' => mx_append_sid(PHPBB_URL . $u_search), + 'U_MEMBERLIST' =>mx_append_sid(PHPBB_URL . $u_memberlist), + 'U_MODCP' => mx_append_sid(PHPBB_URL . $u_modcp), + 'U_FAQ' => mx_append_sid(PHPBB_URL . $u_faq), + 'U_VIEWONLINE' => mx_append_sid(PHPBB_URL . $u_viewonline), + 'U_GROUP_CP' => mx_append_sid(PHPBB_URL . $u_group_cp), + 'U_SEND_PASSWORD' => $u_sendpassword, + )); + + break; + } + } + + /** + * Backend specific Page Tail data + * + * @param unknown_type $mode + */ + function page_tail($mode = false) + { + global $board_config, $userdata, $template; + + switch ($mode) + { + case 'generate_backend_version': + $current_phpbb_version = $board_config['version']; + + $template->assign_vars(array( + 'PHPBB_BACKEND' => true, + 'PHPBB_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? $current_phpbb_version : '', + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + )); + + break; + } + } + + /** + * obtain_phpbb_config + * + * @access public + * @param boolean $use_cache + * @return unknown + */ + public function obtain_forum_config() + { + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) + { + global $table_prefix, $mx_root_path; + + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + if (($mx_cache->get('phpbb_config')) === false) + { + $config = $cached_config = array(); + + $sql = 'SELECT config_name, config_value, is_dynamic + FROM ' . CONFIG_TABLE; + if (!($result = $db->sql_query($sql))) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query config information, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); + } + } + + while ($row = $db->sql_fetchrow($result)) + { + if (!$row['is_dynamic']) + { + $cached_config[$row['config_name']] = $row['config_value']; + } + + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + $mx_cache->put('phpbb_config', $cached_config); + } + else + { + $sql = 'SELECT config_name, config_value + FROM ' . CONFIG_TABLE . ' + WHERE is_dynamic = 1'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + } + + return $config; + } + + /** + * Set phpbb config values + * + * @param unknown_type $config_name + * @param unknown_type $config_value + */ + public function set_forum_config($key, $new_value, $use_cache = false) + { + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) + { + global $table_prefix, $mx_root_path; + + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + // Read out config values + $config = $this->obtain_phpbb_config(); + $old_value = !isset($config[$key]) ? $config[$key] : false; + $use_cache = (($key == 'comments_pagination') || ($key == 'pagination')) ? true : false; + + $sql = 'UPDATE ' . CONFIG_TABLE . " + SET config_value = '" . $db->sql_escape($new_value) . "' + WHERE config_name = '" . $db->sql_escape($key) . "'"; + + if ($old_value !== false) + { + $sql .= " AND config_value = '" . $db->sql_escape($old_value) . "'"; + } + + $db->sql_query($sql); + + if (!$db->sql_affectedrows() && isset($config[$key])) + { + return false; + } + + if (!isset($config[$key])) + { + $sql = 'INSERT INTO ' . CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'config_name' => $key, + 'config_value' => $new_value)), + 'is_dynamic' => ($use_cache) ? 0 : 1)); + $db->sql_query($sql); + } + + $config[$key] = $new_value; + + + if ($use_cache) + { + $mx_cache->destroy('config'); + $mx_cache->put('config', $config); + } + + return true; + } + + /** + * Get MX-Publisher config data + * + * @access public + * @return unknown + */ + public function obtain_portal_config($use_cache = true) + { + global $db, $mx_cache; + + if ( ($portal_config = $mx_cache->get('mx_config')) && ($use_cache) ) + { + return $portal_config; + } + else + { + $sql = "SELECT * + FROM " . PORTAL_TABLE . " + WHERE portal_id = '1'"; + + if ( !($result = $db->sql_query($sql)) ) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query portal configuration, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query portal configuration', '', __LINE__, __FILE__, $sql ); + } + } + $row = $db->sql_fetchrow($result); + foreach ($row as $config_name => $config_value) + { + $portal_config[$config_name] = trim($config_value); + } + $db->sql_freeresult($result); + $mx_cache->put('mx_config', $portal_config); + + return ($portal_config); + } + } + + /** + * Set config value. Creates missing config entry. + * + */ + function set_portal_config($key, $new_value) + { + global $db, $mx_cache, $portal_config; + + // Read out config values + $portal_config = $this->obtain_portal_config(); + + $new[$key] = $new_value; + + $sql = "UPDATE " . PORTAL_TABLE . " SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)); + + if( !($db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($portal_config[$key])) + { + $sql = 'INSERT INTO ' . PORTAL_TABLE . ' ' . $db->sql_build_array('INSERT', array( + $db->sql_escape($key) => $db->sql_escape($new_value))); + $db->sql_query($sql); + } + + $portal_config[$key] = $new_value; + + $mx_cache->destroy('mx_config'); + } + + /** + * Get userdata + * + * Get Userdata, $mx_user can be username or user_id. If force_str is true, the username will be forced. + * Cached sql, since this function is used for every block. + * + * @param unknown_type $mx_user id or name + * @param boolean $force_str force clean_username + * @return array + */ + function get_userdata($mxuser, $force_str = false) + { + global $db, $phpBB2; + + if (!is_numeric($mxuser) || $force_str) + { + $mx_user = $phpBB2->phpbb_clean_username($mxuser); + } + else + { + $mx_user = intval($mxuser); + } + + $sql = "SELECT * + FROM " . USERS_TABLE . " + WHERE "; + $sql .= ((is_integer($mxuser)) ? "user_id = $mxuser" : "username = '" . str_replace("\'", "''", $mxuser) . "'" ) . " AND user_id <> " . ANONYMOUS; + if (!($result = $db->sql_query($sql, 120))) + { + if (!function_exists('mx_message_die')) + { + die("Tried obtaining data for a non-existent user. Function mx_backend->get_userdata()"); + } + else + { + mx_message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql); + } + } + $return = ($row = $db->sql_fetchrow($result)) ? $row : false; + /* + foreach ($row as $user_key => $user_value) + { + $userdata[$user_key] = trim($user_value); + } + */ + $db->sql_freeresult($result); + //return ($userdata); + return $return; + } + + /** + * Set user data value. + * + */ + function set_userdata($key, $new_value) + { + global $db, $mx_user; + + $new[$key] = $new_value; + + $sql = "UPDATE " . USERS_TABLE . " + SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)) . " + WHERE user_id = '" . $mx_user->data['user_id'] . "'"; + if (!($db->sql_query($sql))) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($mx_user->data[$key])) + { + mx_message_die(GENERAL_ERROR, "Wrong Backend? Adding missing entry key to update MXP configuration is not supported ATM.", "", __LINE__, __FILE__, $sql); + } + $mx_user->data[$key] = $new_value; + } + + /** + * Obtain ranks + */ + public function obtain_ranks() + { + global $mx_cache; + + if (($ranks = $mx_cache->get('_ranks')) === false) + { + global $db; + + $sql = 'SELECT * + FROM ' . RANKS_TABLE . ' + ORDER BY rank_min DESC'; + $result = $db->sql_query($sql); + + $ranks = array(); + while ($row = $db->sql_fetchrow($result)) + { + if ($row['rank_special']) + { + $ranks['special'][$row['rank_id']] = array( + 'rank_title' => $row['rank_title'], + 'rank_image' => $row['rank_image'] + ); + } + else + { + $ranks['normal'][] = array( + 'rank_title' => $row['rank_title'], + 'rank_min' => $row['rank_min'], + 'rank_image' => $row['rank_image'] + ); + } + } + $db->sql_freeresult($result); + + $mx_cache->put('_ranks', $ranks); + } + + return $ranks; + } + + /** + * Obtain allowed extensions + * + * @param mixed $forum_id If false then check for private messaging, if int then check for forum id. If true, then only return extension informations. + * + * @return array allowed extensions array. + */ + function obtain_attach_extensions($forum_id) + { + global $mx_cache; + + if (($extensions = $mx_cache->get('_extensions')) === false) + { + global $db; + + $extensions = array( + '_allowed_post' => array(), + '_allowed_pm' => array(), + ); + + // The rule is to only allow those extensions defined. ;) + $sql = 'SELECT e.extension, g.* + FROM ' . EXTENSIONS_TABLE . ' e, ' . EXTENSION_GROUPS_TABLE . ' g + WHERE e.group_id = g.group_id + AND (g.allow_group = 1 OR g.allow_in_pm = 1)'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $extension = strtolower(trim($row['extension'])); + + $extensions[$extension] = array( + 'display_cat' => (int) $row['cat_id'], + 'download_mode' => (int) $row['download_mode'], + 'upload_icon' => trim($row['upload_icon']), + 'max_filesize' => (int) $row['max_filesize'], + 'allow_group' => $row['allow_group'], + 'allow_in_pm' => $row['allow_in_pm'], + ); + + $allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array(); + + // Store allowed extensions forum wise + if ($row['allow_group']) + { + $extensions['_allowed_post'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums; + } + + if ($row['allow_in_pm']) + { + $extensions['_allowed_pm'][$extension] = 0; + } + } + $db->sql_freeresult($result); + + $mx_cache->put('_extensions', $extensions); + } + + // Forum post + if ($forum_id === false) + { + // We are checking for private messages, therefore we only need to get the pm extensions... + $return = array('_allowed_' => array()); + + foreach ($extensions['_allowed_pm'] as $extension => $check) + { + $return['_allowed_'][$extension] = 0; + $return[$extension] = $extensions[$extension]; + } + + $extensions = $return; + } + else if ($forum_id === true) + { + return $extensions; + } + else + { + $forum_id = (int) $forum_id; + $return = array('_allowed_' => array()); + + foreach ($extensions['_allowed_post'] as $extension => $check) + { + // Check for allowed forums + if (is_array($check)) + { + $allowed = (!in_array($forum_id, $check)) ? false : true; + } + else + { + $allowed = true; + } + + if ($allowed) + { + $return['_allowed_'][$extension] = 0; + $return[$extension] = $extensions[$extension]; + } + } + + $extensions = $return; + } + + if (!isset($extensions['_allowed_'])) + { + $extensions['_allowed_'] = array(); + } + + return $extensions; + } + + /** + * Obtain active bots + */ + function obtain_bots() + { + global $mx_cache; + + if (($bots = $mx_cache->get('_bots')) === false) + { + global $db; + + switch ($db->sql_layer) + { + case 'mssql': + case 'mssql_odbc': + $sql = 'SELECT user_id, bot_agent, bot_ip + FROM ' . BOTS_TABLE . ' + WHERE bot_active = 1 + ORDER BY LEN(bot_agent) DESC'; + break; + + case 'firebird': + $sql = 'SELECT user_id, bot_agent, bot_ip + FROM ' . BOTS_TABLE . ' + WHERE bot_active = 1 + ORDER BY CHAR_LENGTH(bot_agent) DESC'; + break; + + // LENGTH supported by MySQL, IBM DB2 and Oracle for sure... + default: + $sql = 'SELECT user_id, bot_agent, bot_ip + FROM ' . BOTS_TABLE . ' + WHERE bot_active = 1 + ORDER BY LENGTH(bot_agent) DESC'; + break; + } + $result = $db->sql_query($sql); + + $bots = array(); + while ($row = $db->sql_fetchrow($result)) + { + $bots[] = $row; + } + $db->sql_freeresult($result); + + $mx_cache->put('_bots', $bots); + } + + return $bots; + } + + /** + * Obtain cfg file data + * + * @param unknown_type $theme + * @return unknown + */ + function obtain_cfg_items($theme) + { + global $board_config, $phpbb_root_path, $mx_cache; + + $parsed_items = array( + 'theme' => array(), + 'template' => array(), + 'imageset' => array() + ); + + foreach ($parsed_items as $key => $parsed_array) + { + $parsed_array = $mx_cache->get('_cfg_' . $key . '_' . $theme[$key . '_path']); + + if ($parsed_array === false) + { + $parsed_array = array(); + } + + $reparse = false; + $filename = $phpbb_root_path . 'styles/' . $theme[$key . '_path'] . '/' . $key . '/' . $key . '.cfg'; + + if (!file_exists($filename)) + { + continue; + } + + if (!isset($parsed_array['filetime']) || (($board_config['load_tplcompile'] && @filemtime($filename) > $parsed_array['filetime']))) + { + $reparse = true; + } + + // Re-parse cfg file + if ($reparse) + { + $parsed_array = mx_parse_cfg_file($filename); + $parsed_array['filetime'] = @filemtime($filename); + + $mx_cache->put('_cfg_' . $key . '_' . $theme[$key . '_path'], $parsed_array); + } + $parsed_items[$key] = $parsed_array; + } + + return $parsed_items; + } + + /** + * Obtain disallowed usernames + */ + function obtain_disallowed_usernames() + { + global $mx_cache; + + if (($usernames = $mx_cache->get('_disallowed_usernames')) === false) + { + global $db; + + $sql = 'SELECT disallow_username + FROM ' . DISALLOW_TABLE; + $result = $db->sql_query($sql); + + $usernames = array(); + while ($row = $db->sql_fetchrow($result)) + { + $usernames[] = str_replace('%', '.*?', preg_quote(utf8_clean_string($row['disallow_username']), '#')); + } + $db->sql_freeresult($result); + + $mx_cache->put('_disallowed_usernames', $usernames); + } + + return $usernames; + } + + /** + * Obtain hooks... + */ + function obtain_hooks() + { + global $phpbb_root_path, $phpEx, $mx_cache; + + if (($hook_files = $mx_cache->get('_hooks')) === false) + { + $hook_files = array(); + + // Now search for hooks... + $dh = @opendir($phpbb_root_path . 'includes/hooks/'); + + if ($dh) + { + while (($file = readdir($dh)) !== false) + { + if (strpos($file, 'hook_') === 0 && substr($file, -(strlen($phpEx) + 1)) === '.' . $phpEx) + { + $hook_files[] = substr($file, 0, -(strlen($phpEx) + 1)); + } + } + closedir($dh); + } + + $mx_cache->put('_hooks', $hook_files); + } + + return $hook_files; + } + + /** + * Enter description here... + * + * @return unknown + */ + function generate_group_select_sql() + { + // Get us all the groups exept bots and guests + $sql = "SELECT g.group_id, g.group_name, g.group_type + FROM " . GROUPS_TABLE . " g + WHERE g.group_name NOT IN ('BOTS', 'GUESTS') + ORDER BY g.group_type ASC, g.group_name"; + return $sql; + } + + /** + * Enter description here... + * + * @return unknown + */ + function generate_session_online_sql($guest = false) + { + if ($guest) + { + $sql = "SELECT u.*, s.*, s.session_page AS user_session_page + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE u.user_id = " . ANONYMOUS . " + AND u.user_id = s.session_user_id + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY s.session_time DESC"; + } + else + { + $sql = "SELECT u.*, s.*, s.session_time AS user_session_time, s.session_page AS user_session_page + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE u.user_id <> " . ANONYMOUS . " + AND u.user_id = s.session_user_id + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY s.session_time DESC"; + } + return $sql; + } + + /** + * Enter description here... + * + * @param unknown_type $str_ip + * @return unknown + */ + function decode_ip($str_ip) + { + return $str_ip; + } + + /** + * Enter description here... + * + * @return unknown + */ + function get_phpbb_version() + { + global $board_config; + + return $board_config['version']; + } + + /** + * Enter description here... + * + * @return unknown + */ + function confirm_backend() + { + global $portal_config; + + return PORTAL_BACKEND == $portal_config['portal_backend']; + } + + /** + * Get username details for placing into templates. + * + * @param string $mode Can be profile (for getting an url to the profile), username (for obtaining the username), colour (for obtaining the user colour) or full (for obtaining a html string representing a coloured link to the users profile). + * @param int $user_id The users id + * @param string $username The users name + * @param string $username_colour The users colour + * @param string $guest_username optional parameter to specify the guest username. It will be used in favor of the GUEST language variable then. + * @param string $custom_profile_url optional parameter to specify a profile url. The user id get appended to this url as &u={user_id} + * + * @return string A string consisting of what is wanted based on $mode. + */ + function get_username_string($mode, $user_id, $username = false, $username_colour = '', $guest_username = false, $custom_profile_url = false) + { + global $phpbb_root_path, $mx_root_path, $phpEx, $mx_user, $phpbb_auth; + + $profile_url = ''; + + //Added by OryNider + if (($username == false) || ($username_colour == false)) + { + $this_userdata = mx_get_userdata($user_id, false); + $user_id = $this_userdata['user_id']; + $username = $this_userdata['username']; + $username_colour = $this_userdata['user_colour']; + } + //Added Ends + + $username_colour = ($username_colour) ? '#' . $username_colour : ''; + + if ($guest_username === false) + { + $username = ($username) ? $username : $mx_user->lang['GUEST']; + } + else + { + $username = ($user_id && $user_id != ANONYMOUS) ? $username : ((!empty($guest_username)) ? $guest_username : $mx_user->lang['GUEST']); + } + + // Only show the link if not anonymous + if ($user_id && $user_id != ANONYMOUS) + { + // Do not show the link if the user is already logged in but do not have u_viewprofile permissions (relevant for bots mostly). + // For all others the link leads to a login page or the profile. + if ($mx_user->data['user_id'] != ANONYMOUS && !$phpbb_auth->acl_get('u_viewprofile')) + { + $profile_url = ''; + } + else + { + $profile_url = ($custom_profile_url !== false) ? $custom_profile_url : mx3_append_sid(PHPBB_URL . "memberlist.$phpEx", 'mode=viewprofile'); + $profile_url .= '&u=' . (int) $user_id; + } + } + else + { + $profile_url = ''; + } + + switch ($mode) + { + case 'profile': + return $profile_url; + break; + + case 'username': + return $username; + break; + + case 'colour': + return $username_colour; + break; + + case 'full': + default: + + $tpl = ''; + if (!$profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if (!$profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + + return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), $tpl); + break; + } + } + + // + // ACP + // + /** + * Enter description here... + * + */ + function load_phpbb_acp_menu() + { + global $phpbb_root_path, $template, $lang, $phpEx, $userdata, $mx_user; + + $template->assign_block_vars('module_phpbb', array( + 'L_PHPBB' => $lang['Phpbb'], + "L_FORUM_INDEX" => $lang['Main_index'], + "L_PREVIEW_FORUM" => $lang['Preview_forum'], + "U_FORUM_INDEX" => mx_append_sid(PHPBB_URL . "index.$phpEx"), + )); + + $menu_cat_id = 0; + + $template->assign_block_vars('module_phpbb.catrow', array( + //+MOD: DHTML Menu for ACP + 'MENU_CAT_ID' => $menu_cat_id, + 'MENU_CAT_ROWS' => 1, + //-MOD: DHTML Menu for ACP + 'ADMIN_CATEGORY' => 'Olympus adminCP') + ); + + $template->assign_block_vars('module_phpbb.catrow.modulerow', array( + "ROW_COLOR" => "#" . $mx_user->theme['td_color1'], + "ROW_CLASS" => $mx_user->theme['td_class1'], + //+MOD: DHTML Menu for ACP + 'ROW_COUNT' => 0, + //-MOD: DHTML Menu for ACP + "ADMIN_MODULE" => 'Go!', + "U_ADMIN_MODULE" => mx_append_sid($phpbb_root_path . 'adm/index.php?sid='.$mx_user->session_id)) + ); + } + + /** + * Enter description here... + * + */ + function load_forum_stats() + { + global $db, $template, $board_config, $portal_config, $phpbb_root_path, $mx_root_path, $lang, $theme, $mx_user, $userdata; + + $template->assign_block_vars("forum_stats", array()); + // + // Get forum statistics + // + $total_posts = phpBB2::get_db_stat('postcount'); + $total_users = phpBB2::get_db_stat('usercount'); + $total_topics = phpBB2::get_db_stat('topiccount'); + + $start_date = phpBB2::create_date($board_config['default_dateformat'], $board_config['board_startdate'], $board_config['board_timezone']); + + $boarddays = ( time() - $board_config['board_startdate'] ) / 86400; + + $posts_per_day = sprintf("%.2f", $total_posts / $boarddays); + $topics_per_day = sprintf("%.2f", $total_topics / $boarddays); + $users_per_day = sprintf("%.2f", $total_users / $boarddays); + + $avatar_dir_size = 0; + + if ($avatar_dir = @opendir($phpbb_root_path . $board_config['avatar_path']) ) + { + while( $file = @readdir($avatar_dir) ) + { + if( $file != "." && $file != ".." ) + { + $avatar_dir_size += @filesize($phpbb_root_path . $board_config['avatar_path'] . "/" . $file); + } + } + @closedir($avatar_dir); + + // + // This bit of code translates the avatar directory size into human readable format + // Borrowed the code from the PHP.net annoted manual, origanally written by: + // Jesse (jesse@jess.on.ca) + // + if($avatar_dir_size >= 1048576) + { + $avatar_dir_size = round($avatar_dir_size / 1048576 * 100) / 100 . " MB"; + } + else if($avatar_dir_size >= 1024) + { + $avatar_dir_size = round($avatar_dir_size / 1024 * 100) / 100 . " KB"; + } + else + { + $avatar_dir_size = $avatar_dir_size . " Bytes"; + } + } + else + { + // Couldn't open Avatar dir. + $avatar_dir_size = $lang['Not_available']; + } + + if($posts_per_day > $total_posts) + { + $posts_per_day = $total_posts; + } + + if($topics_per_day > $total_topics) + { + $topics_per_day = $total_topics; + } + + if($users_per_day > $total_users) + { + $users_per_day = $total_users; + } + + // + // DB size ... MySQL only + // + // This code is heavily influenced by a similar routine + // in phpMyAdmin 2.2.0 + // + if( preg_match("/^mysql/", SQL_LAYER) ) + { + $sql = "SELECT VERSION() AS mysql_version"; + if($result = $db->sql_query($sql)) + { + $row = $db->sql_fetchrow($result); + $version = $row['mysql_version']; + + if( preg_match("/^(3\.23|4\.|5\.)/", $version) ) + { + static $dbname, $dbsize; + $db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)|(5\.)/", $version) ) ? "`$dbname`" : $dbname; + + $sql = "SHOW TABLE STATUS + FROM " . $db_name; + if($result = $db->sql_query($sql)) + { + $tabledata_ary = $db->sql_fetchrowset($result); + + $dbsize = 0; + for($i = 0; $i < count($tabledata_ary); $i++) + { + if( $tabledata_ary[$i]['Type'] != "MRG_MyISAM" ) + { + if( $table_prefix != "" ) + { + if( strstr($tabledata_ary[$i]['Name'], $table_prefix) ) + { + $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; + } + } + else + { + $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; + } + } + } + } // Else we couldn't get the table status. + } + else + { + $dbsize = $lang['Not_available']; + } + } + else + { + $dbsize = $lang['Not_available']; + } + $db->sql_freeresult($result); + } + else if( preg_match("/^mssql/", SQL_LAYER) ) + { + $sql = "SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize + FROM sysfiles"; + if( $result = $db->sql_query($sql) ) + { + $dbsize = ( $row = $db->sql_fetchrow($result) ) ? intval($row['dbsize']) : $lang['Not_available']; + } + else + { + $dbsize = $lang['Not_available']; + } + $db->sql_freeresult($result); + } + else + { + $dbsize = $lang['Not_available']; + } + + if ( is_integer($dbsize) ) + { + if( $dbsize >= 1048576 ) + { + $dbsize = sprintf("%.2f MB", ( $dbsize / 1048576 )); + } + else if( $dbsize >= 1024 ) + { + $dbsize = sprintf("%.2f KB", ( $dbsize / 1024 )); + } + else + { + $dbsize = sprintf("%.2f Bytes", $dbsize); + } + } + + $template->assign_vars(array( + "NUMBER_OF_POSTS" => $total_posts, + "NUMBER_OF_TOPICS" => $total_topics, + "NUMBER_OF_USERS" => $total_users, + "START_DATE" => $start_date, + "POSTS_PER_DAY" => $posts_per_day, + "TOPICS_PER_DAY" => $topics_per_day, + "USERS_PER_DAY" => $users_per_day, + "AVATAR_DIR_SIZE" => $avatar_dir_size, + "DB_SIZE" => $dbsize, + "GZIP_COMPRESSION" => ( $board_config['gzip_compress'] ) ? $lang['ON'] : $lang['OFF']) + ); + } + + /** + * Enter description here... + * + * @return unknown + */ + function phpbb_version_check($force_update = false, $warn_fail = false, $ttl = 86400) + { + global $mx_cache, $board_config, $lang, $phpbb_version_info; + + $errno = 0; + $errstr = $phpbb_version_info = ''; + $phpbb_version_info = $mx_cache->get('versioncheck'); + + if ($fsock = @fsockopen('www.phpbb.com', 80, $errno, $errstr, 10)) + { + //$phpbb_version_info = mx_get_remote_file('www.phpbb.com', '/updatecheck', ((defined('PHPBB_QA')) ? '30x_qa.txt' : '30x.txt'), $errstr, $errno); + if ($phpbb_version_info === false || $force_update) + { + $errstr = ''; + $errno = 0; + + $phpbb_version_info = mx_get_remote_file('version.phpbb.com', '/phpbb', + ((defined('PHPBB_QA')) ? '30x_qa.txt' : '30x.txt'), $errstr, $errno); + } + + if (empty($phpbb_version_info)) + { + $mx_cache->destroy('versioncheck'); + if ($warn_fail) + { + trigger_error($errstr, E_USER_WARNING); + } + return false; + } + + $mx_cache->put('versioncheck', $phpbb_version_info, $ttl); + + $phpbb_version_info = explode("\n", $phpbb_version_info); + //$latest_version = trim($phpbb_version_info[0]); + //$update_link = append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=update'); + $latest_phpbb_head_revision = $version1 = strtolower(trim($phpbb_version_info[0])); + $latest_phpbb_minor_revision = trim($phpbb_version_info[2]); + $latest_phpbb_version = trim($phpbb_version_info[0]) . '.' . trim($phpbb_version_info[1]) . '.' . trim($phpbb_version_info[2]); + $version2 = strtolower($board_config['version']); + $current_phpbb_version = explode(".", $board_config['version']); + $minor_phpbb_revision = $current_phpbb_version[2]; + $operator = '<='; + if (version_compare($version1, $version2, $operator)) + { + $phpbb_version_info = '

' . $lang['Version_up_to_date'] . '

'; + } + else + { + $phpbb_version_info = '

' . $lang['Version_not_up_to_date']; + $phpbb_version_info .= '
' . sprintf($lang['Latest_version_info'], $latest_phpbb_version) . sprintf($lang['Current_version_info'], $board_config['version']) . '

'; + } + } + else + { + if ($errstr) + { + $phpbb_version_info = '

' . sprintf($lang['Connect_socket_error'], $errstr) . '

'; + } + else + { + $phpbb_version_info = '

' . $lang['Socket_functions_disabled'] . '

'; + } + } + + $phpbb_version_info .= '

' . $lang['Mailing_list_subscribe_reminder'] . '

'; + + return $phpbb_version_info; + } +} + +// +// Now load some bbcodes, to be extended for this backend (see below) +// +include_once($mx_root_path . 'includes/sessions/ascraeus/bbcode.' . $phpEx); // BBCode associated functions + +?> \ No newline at end of file diff --git a/includes/sessions/proteus/functions.php b/includes/sessions/proteus/functions.php new file mode 100644 index 00000000..ef8c96cb --- /dev/null +++ b/includes/sessions/proteus/functions.php @@ -0,0 +1,278 @@ + (empty($mx_user->data)) ? ANONYMOUS : $mx_user->data['user_id'], + 'log_ip' => $mx_user->ip, + 'log_time' => time(), + 'log_operation' => $action, + 'log_data' => $data, + ); + + switch ($mode) + { + case 'admin': + $sql_ary['log_type'] = LOG_ADMIN; + break; + + case 'mod': + $sql_ary += array( + 'log_type' => LOG_MOD, + 'forum_id' => $forum_id, + 'topic_id' => $topic_id + ); + break; + + case 'user': + $sql_ary += array( + 'log_type' => LOG_USERS, + 'reportee_id' => $reportee_id + ); + break; + + case 'critical': + $sql_ary['log_type'] = LOG_CRITICAL; + break; + + default: + return false; + } + + $db->sql_query('INSERT INTO ' . LOG_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); + + return $db->sql_nextid(); +} + +/** +* Generate sort selection fields +*/ +function mx_gen_sort_selects(&$limit_days, &$sort_by_text, &$sort_days, &$sort_key, &$sort_dir, &$s_limit_days, &$s_sort_key, &$s_sort_dir, &$u_sort_param) +{ + global $mx_user; + + $sort_dir_text = array('a' => $mx_user->lang['ASCENDING'], 'd' => $mx_user->lang['DESCENDING']); + + // Check if the key is selectable. If not, we reset to the first key found. + // This ensures the values are always valid. + if (!isset($limit_days[$sort_days])) + { + @reset($limit_days); + $sort_days = key($limit_days); + } + + if (!isset($sort_by_text[$sort_key])) + { + @reset($sort_by_text); + $sort_key = key($sort_by_text); + } + + if (!isset($sort_dir_text[$sort_dir])) + { + @reset($sort_dir_text); + $sort_dir = key($sort_dir_text); + } + + $s_limit_days = ''; + + $s_sort_key = ''; + + $s_sort_dir = ''; + + $u_sort_param = "st=$sort_days&sk=$sort_key&sd=$sort_dir"; + + return; +} + +/** +* Get username details for placing into templates. +* +* @param string $mode Can be profile (for getting an url to the profile), username (for obtaining the username), colour (for obtaining the user colour) or full (for obtaining a html string representing a coloured link to the users profile). +* @param int $user_id The users id +* @param string $username The users name +* @param string $username_colour The users colour +* @param string $guest_username optional parameter to specify the guest username. It will be used in favor of the GUEST language variable then. +* @param string $custom_profile_url optional parameter to specify a profile url. The user id get appended to this url as &u={user_id} +* +* @return string A string consisting of what is wanted based on $mode. +*/ +function mx_get_username_string($mode, $user_id, $username, $username_colour = '', $guest_username = false, $custom_profile_url = false) +{ + global $phpbb_root_path, $phpEx, $mx_user, $phpbb_auth; + + $profile_url = ''; + $username_colour = ($username_colour) ? '#' . $username_colour : ''; + + if ($guest_username === false) + { + $username = ($username) ? $username : $mx_user->lang['GUEST']; + } + else + { + $username = ($user_id && $user_id != ANONYMOUS) ? $username : ((!empty($guest_username)) ? $guest_username : $mx_user->lang['GUEST']); + } + + // Only show the link if not anonymous + if ($user_id && $user_id != ANONYMOUS) + { + // Do not show the link if the user is already logged in but do not have u_viewprofile permissions (relevant for bots mostly). + // For all others the link leads to a login page or the profile. + if ($mx_user->data['user_id'] != ANONYMOUS && !$phpbb_auth->acl_get('u_viewprofile')) + { + $profile_url = ''; + } + else + { + $profile_url = ($custom_profile_url !== false) ? $custom_profile_url : mx3_append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile'); + $profile_url .= '&u=' . (int) $user_id; + } + } + else + { + $profile_url = ''; + } + + switch ($mode) + { + case 'profile_url': + case 'profile': + return $profile_url; + break; + + case 'username': + return $username; + break; + + case 'colour': + return $username_colour; + break; + + case 'full': + default: + + $tpl = ''; + if (!$profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if (!$profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + + return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), $tpl); + break; + } +} +?> \ No newline at end of file diff --git a/includes/sessions/proteus/index.htm b/includes/sessions/proteus/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/sessions/proteus/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/sessions/proteus/login.php b/includes/sessions/proteus/login.php new file mode 100644 index 00000000..3433bf07 --- /dev/null +++ b/includes/sessions/proteus/login.php @@ -0,0 +1,256 @@ +is_request('login') && ($userdata['user_id'] == ANONYMOUS || $mx_request_vars->is_post('admin')) ) +{ + $username = utf8_clean_string($mx_request_vars->post('username', MX_TYPE_NO_TAGS, '')); + $password = $mx_request_vars->post('password', MX_TYPE_NO_TAGS); + $viewonline = $mx_request_vars->post('viewonline', MX_TYPE_INT, 0); + + $sql = "SELECT * + FROM " . USERS_TABLE . " + WHERE username = '" . str_replace("\\'", "''", $username) . "' + OR username_clean = '" . str_replace("\\'", "''", $username) . "'"; + + if ( !($result = $db->sql_query($sql) ) ) + { + mx_message_die(GENERAL_ERROR, 'Error in obtaining userdata', '', __LINE__, __FILE__, $sql); + } + + if( $row = $db->sql_fetchrow($result) ) + { + //$user_type = $row['user_level']; // phpBB2 + $user_type = $row['user_type']; // phpBB3 + + if( $user_type != ADMIN && $board_config['board_disable'] ) + { + mx_redirect(mx3_append_sid("index.$phpEx", false)); + } + else + { + $user_login_attempts = $row['user_login_attempts']; + + if ( $user_login_attempts && $board_config['login_reset_time'] ) + { + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_attempts = 0 WHERE user_id = ' . $row['user_id']); + $row['user_last_login_try'] = $row['user_login_tries'] = 0; + } + + // Check to see if user is allowed to login again... if his tries are exceeded + if ($user_login_attempt && $board_config['login_reset_time'] && $board_config['max_login_attempts'] && $user_login_attempts >= $board_config['max_login_attempts'] && $userdata['user_level'] != ADMIN) + { + mx_message_die(GENERAL_MESSAGE, sprintf($lang['Login_attempts_exceeded'], $board_config['max_login_attempts'], $board_config['login_reset_time'])); + } + + // If the password convert flag is set we need to convert it + if ($row['user_pass_convert']) + { + // in phpBB2 passwords were used exactly as they were sent, with addslashes applied + $password_old_format = isset($_REQUEST['password']) ? $_REQUEST['password'] : $password; + $password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format; + $password_new_format = ''; + + phpBB3::set_var($password_new_format, stripslashes($password_old_format), 'string'); + + //mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", $password_new_format, ''); + + if ($password == $password_new_format) + { + if (!function_exists('utf8_to_cp1252')) + { + global $mx_root_path, $phpEx; + include_once($mx_root_path . 'includes/utf/data/recode_basic.' . $phpEx); + } + + // cp1252 is phpBB2's default encoding, characters outside ASCII range might work when converted into that encoding + if (md5($password_old_format) == $row['user_password'] || md5(utf8_to_cp1252($password_old_format)) == $row['user_password']) + { + $hash = phpBB3::phpbb_hash($password_new_format); + + // Update the password in the users table to the new format and remove user_pass_convert flag + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_password = \'' . $db->sql_escape($hash) . '\', + user_pass_convert = 0 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + + $row['user_pass_convert'] = 0; + $row['user_password'] = $hash; + } + else + { + // Although we weren't able to convert this password we have to + // increase login attempt count to make sure this cannot be exploited + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_login_attempts = user_login_attempts + 1 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + mx_message_die(GENERAL_MESSAGE, 'We are sorry but password convertion failed, please login direct in forums or rewuest a new activation link.'); + return array( + 'status' => LOGIN_ERROR_PASSWORD_CONVERT, + 'error_msg' => 'LOGIN_ERROR_PASSWORD_CONVERT', + 'user_row' => $row, + ); + } + } + } + else + { + // in phpBB2 passwords were used exactly as they were sent, with addslashes applied + $password_old_format = isset($_REQUEST['password']) ? $_REQUEST['password'] : $password; + $password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format; + $password_new_format = ''; + phpBB3::set_var($password_new_format, stripslashes($password_old_format), 'string'); + //mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", $password_new_format, ''); + + if ($password_new_format == $password_old_format) + { + if (!function_exists('utf8_to_cp1252')) + { + global $mx_root_path, $phpEx; + include_once($mx_root_path . 'includes/utf/data/recode_basic.' . $phpEx); + } + + // cp1252 is phpBB2's default encoding, characters outside ASCII range might work when converted into that encoding + if (md5($password_old_format) == $row['user_password'] || md5($password) == $row['user_password'] || phpBB3::phpbb_check_hash($password, $row['user_password'])) + { + $autologin = $mx_request_vars->is_post('autologin'); + $admin = $mx_request_vars->is_post('admin'); + $mx_user->session_create($row['user_id'], $admin, $autologin, $viewonline = true); + $session_id = $mx_user->session_id; + + + // Reset login tries + //$db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0, user_last_login_try = 0 WHERE user_id = ' . $row['user_id']); // phpBB2 + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_attempts = 0 WHERE user_id = ' . $row['user_id']); // phpBB3 + + if( $session_id ) + { + $fromurl = ( !empty($HTTP_REFERER) ) ? str_replace('&', '&', htmlspecialchars($HTTP_REFERER)) : "index.$phpEx"; + $url = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : $fromurl; + mx_redirect(mx3_append_sid($url, false, false, $session_id)); + } + else + { + mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__); + } + } + else + { + // Although we weren't able to convert this password we have to + // increase login attempt count to make sure this cannot be exploited + $sql = ' UPDATE ' . USERS_TABLE . ' + SET user_login_attempts = user_login_attempts + 1 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + + $redirect = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : ''; + $redirect = str_replace('?', '&', $redirect); + + if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r")) + { + mx_message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.'); + } + + $template->assign_vars(array( + 'META' => "") + ); + + $message = $lang['Error_login'] . '

' . sprintf($lang['Click_return_login'], "", '') . '

' . sprintf($lang['Click_return_index'], '', ''); + + mx_message_die(GENERAL_MESSAGE, $message); + } + } + // Check password ... + if (!$row['user_pass_convert'] && phpBB3::phpbb_check_hash($password, $row['user_password'])) + { + if ($row['user_login_attempts'] != 0) + { + // Successful, reset login attempts (the user passed all stages) + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_login_attempts = 0 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + } + + // User inactive... + if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) + { + mx_message_die(GENERAL_MESSAGE, 'Inactive User'); + } + + // Successful login... set user_login_attempts to zero... + if( $session_id ) + { + $url = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : "index.$phpEx"; + mx_redirect(mx3_append_sid($url, false)); + } + else + { + mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__); + } + } + } + } + } + else + { + $redirect = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : ''; + $redirect = str_replace("?", "&", $redirect); + + if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r")) + { + mx_message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.'); + } + + $template->assign_vars(array( + 'META' => "") + ); + + $message = $lang['Error_login'] . '

' . sprintf($lang['Click_return_login'], "", '') . '

' . sprintf($lang['Click_return_index'], '', ''); + mx_message_die(GENERAL_MESSAGE, $message); + } +} +else if ($mx_request_vars->is_request('logout') && $userdata['session_logged_in'] ) +{ + // session id check + if ($sid == '' || $sid != $userdata['session_id']) + { + mx_message_die(GENERAL_ERROR, 'Invalid_session' . $userdata['session_id']); + } + + if( $userdata['session_logged_in'] ) + { + $mx_user->session_kill(); + } + + if (!$mx_request_vars->is_empty_request('redirect')) + { + $url = $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS); + $url = str_replace('&', '&', $url); + mx_redirect(mx3_append_sid($url, false)); + } + else + { + mx_redirect(mx3_append_sid("index.$phpEx", false)); + } +} +else +{ + $url = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : "index.$phpEx"; + mx_redirect(mx3_append_sid($url, false)); +} +?> \ No newline at end of file diff --git a/includes/sessions/proteus/session.php b/includes/sessions/proteus/session.php new file mode 100644 index 00000000..f9a8c654 --- /dev/null +++ b/includes/sessions/proteus/session.php @@ -0,0 +1,3800 @@ + $board_config - by Jon + * - replaced $cache = new mx_nothing(); to disable bots() - by Jon + * - removed '?' in the returned $SID string - by Jon + * - in function setup() + * $auth -> $phpbb_auth - by OryNider + * -new globals: $mx_root_path, $mx_cache - by OryNider + * $this->lang_name was redefined to use in + * worst case the new $board_config['phpbb_lang'] + * wich was defined in mx_functions_style.php + * before lang name is expanded - by OryNider + * $template = new mx_Template(); - by OryNider + * - before $this->add_lang($lang_set); the phpBB common language is included + * if fails with $phpbb_root_path added + * - in function set_lang() + * - if empty $this->lang_path will be redefined + * from $phpbb_root_path and new $board_config['phpbb_lang'] + * wich in this case are set as globals - by OryNider + * (similar check has been added in the phpBB3 version too) + * - added function images() to help redefining $images var + * and indexes were is needed - by OryNider + */ + +/** + * Disable bots + * + */ +class mx_nothing +{ + function obtain_bots() + { + return array(); + } +} + +/** +* Session class +* @package MX-Publisher +*/ +class session +{ + var $cookie_data = array(); + var $page = array(); + var $data = array(); + var $browser = ''; + var $forwarded_for = ''; + var $host = ''; + var $session_id = ''; + var $ip = ''; + var $load = 0; + var $time_now = 0; + var $update_session_page = true; + + var $lang = array(); + var $help = array(); + var $theme = array(); + var $date_format; + var $timezone; + var $dst; + + var $lang_name; + var $lang_id = false; + var $lang_path; + var $img_lang; + var $img_array = array(); + + /** + * Load sessions + * @access public + * + */ + function load() + { + global $board_config, $cache; + + $board_config['auth_method'] = 'db'; + $cache = new mx_nothing(); + //define('NEED_SID', 1); + $this->session_begin(); + + // Redefine some MXP stylish userdata + $session_logged_in = $this->data['session_logged_in'] = $this->data['user_id'] != ANONYMOUS ? 1 : 0; + + //print_r($session_logged_in); + if ( $this->data['user_id'] == ANONYMOUS ) + { + $this->data['user_type'] = -1; + } + + switch ($this->data['user_type']) + { + case 3: + $this->data['user_level'] = 1; + break; + case 0: + $this->data['user_level'] = 2; + break; + default: + $this->data['user_level'] = 0; + break; + } + $this->data['session_id'] = $this->session_id; + $this->data['user_session_page'] = $this->data['session_page']; + } + + /** + * Extract current session page + * + * @param string $root_path current root path (phpbb_root_path) + */ + function extract_current_page($root_path) + { + $page_array = array(); + + // First of all, get the request uri... + $script_name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF'); + $args = (!empty($_SERVER['QUERY_STRING'])) ? explode('&', $_SERVER['QUERY_STRING']) : explode('&', getenv('QUERY_STRING')); + + // If we are unable to get the script name we use REQUEST_URI as a failover and note it within the page array for easier support... + if (!$script_name) + { + $script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI'); + $script_name = (($pos = strpos($script_name, '?')) !== false) ? substr($script_name, 0, $pos) : $script_name; + $page_array['failover'] = 1; + } + + // Replace backslashes and doubled slashes (could happen on some proxy setups) + $script_name = str_replace(array('\\', '//'), '/', $script_name); + + // Now, remove the sid and let us get a clean query string... + foreach ($args as $key => $argument) + { + if (strpos($argument, 'sid=') === 0 || strpos($argument, '_f_=') === 0) + { + unset($args[$key]); + } + } + + // The following examples given are for an request uri of {path to the phpbb directory}/adm/index.php?i=10&b=2 + + // The current query string + $query_string = trim(implode('&', $args)); + + // basenamed page name (for example: index.php) + $page_name = basename($script_name); + $page_name = urlencode(htmlspecialchars($page_name)); + + // current directory within the phpBB root (for example: adm) + $root_dirs = explode('/', str_replace('\\', '/', phpBB2::phpbb_realpath($root_path))); + $page_dirs = explode('/', str_replace('\\', '/', phpBB2::phpbb_realpath('./'))); + $intersection = array_intersect_assoc($root_dirs, $page_dirs); + + $root_dirs = array_diff_assoc($root_dirs, $intersection); + $page_dirs = array_diff_assoc($page_dirs, $intersection); + + $page_dir = str_repeat('../', sizeof($root_dirs)) . implode('/', $page_dirs); + + if ($page_dir && substr($page_dir, -1, 1) == '/') + { + $page_dir = substr($page_dir, 0, -1); + } + + // Current page from phpBB root (for example: adm/index.php?i=10&b=2) + $page = (($page_dir) ? $page_dir . '/' : '') . $page_name . (($query_string) ? "?$query_string" : ''); + + // The script path from the webroot to the current directory (for example: /phpBB3/adm/) : always prefixed with / and ends in / + $script_path = trim(str_replace('\\', '/', dirname($script_name))); + + // The script path from the webroot to the phpBB root (for example: /phpBB3/) + $script_dirs = explode('/', $script_path); + array_splice($script_dirs, -sizeof($page_dirs)); + $root_script_path = implode('/', $script_dirs) . (sizeof($root_dirs) ? '/' . implode('/', $root_dirs) : ''); + + // We are on the base level (phpBB root == webroot), lets adjust the variables a bit... + if (!$root_script_path) + { + $root_script_path = ($page_dir) ? str_replace($page_dir, '', $script_path) : $script_path; + } + + $script_path .= (substr($script_path, -1, 1) == '/') ? '' : '/'; + $root_script_path .= (substr($root_script_path, -1, 1) == '/') ? '' : '/'; + + $page_array += array( + 'page_name' => $page_name, + 'page_dir' => $page_dir, + + 'query_string' => $query_string, + 'script_path' => str_replace(' ', '%20', htmlspecialchars($script_path)), + 'root_script_path' => str_replace(' ', '%20', htmlspecialchars($root_script_path)), + + 'page' => $page + ); + + return $page_array; + } + + /** + * Start session management + * + * This is where all session activity begins. We gather various pieces of + * information from the client and server. We test to see if a session already + * exists. If it does, fine and dandy. If it doesn't we'll go on to create a + * new one ... pretty logical heh? We also examine the system load (if we're + * running on a system which makes such information readily available) and + * halt if it's above an admin definable limit. + * + * @param bool $update_session_page if true the session page gets updated. + * This can be set to circumvent certain scripts to update the users last visited page. + */ + function session_begin($update_session_page = true) + { + global $phpEx, $SID, $_SID, $_EXTRA_URL, $db, $board_config, $mx_root_path, $phpbb_root_path, $page_id; + + // Give us some basic information + $this->time_now = time(); + $this->cookie_data = array('u' => 0, 'k' => ''); + $this->update_session_page = $update_session_page; + $this->browser = (!empty($_SERVER['HTTP_USER_AGENT'])) ? htmlspecialchars((string) $_SERVER['HTTP_USER_AGENT']) : ''; + $this->referer = (!empty($_SERVER['HTTP_REFERER'])) ? htmlspecialchars((string) $_SERVER['HTTP_REFERER']) : ''; + $this->forwarded_for = (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) ? (string) $_SERVER['HTTP_X_FORWARDED_FOR'] : ''; + $this->host = (!empty($_SERVER['HTTP_HOST'])) ? (string) $_SERVER['HTTP_HOST'] : 'localhost'; + $this->page = $this->extract_current_page($phpbb_root_path); + + // if the forwarded for header shall be checked we have to validate its contents + if ($board_config['forwarded_for_check']) + { + $this->forwarded_for = preg_replace('#, +#', ', ', $this->forwarded_for); + + // Whoa these look impressive! + // The code to generate the following two regular expressions which match valid IPv4/IPv6 addresses + // can be found in the develop directory + $ipv4 = phpBB3::get_preg_expression('ipv4'); //'#^(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$#'; + $ipv6 = phpBB3::get_preg_expression('ipv6'); //'#^(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){5}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:))$#i'; + + // split the list of IPs + $ips = explode(', ', $this->forwarded_for); + foreach ($ips as $ip) + { + // check IPv4 first, the IPv6 is hopefully only going to be used very seldomly + if (!empty($ip) && !preg_match($ipv4, $ip) && !preg_match($ipv6, $ip)) + { + // contains invalid data, don't use the forwarded for header + $this->forwarded_for = ''; + break; + } + } + } + else + { + $this->forwarded_for = ''; + } + + // Add forum to the page for tracking online users - also adding a "x" to the end to properly identify the number + $this->page['page'] .= (isset($_REQUEST['f'])) ? ((strpos($this->page['page'], '?') !== false) ? '&' : '?') . '_f_=' . (int) $_REQUEST['f'] . 'x' : ''; + + if (isset($_COOKIE[$board_config['cookie_name'] . '_sid']) || isset($_COOKIE[$board_config['cookie_name'] . '_u'])) + { + $this->cookie_data['u'] = phpBB3::request_var($board_config['cookie_name'] . '_u', 0, false, true); + $this->cookie_data['k'] = phpBB3::request_var($board_config['cookie_name'] . '_k', '', false, true); + $this->session_id = phpBB3::request_var($board_config['cookie_name'] . '_sid', '', false, true); + + // original code: $SID = (defined('NEED_SID')) ? 'sid=' . $this->session_id : 'sid='; + $SID = (defined('NEED_SID')) ? 'sid=' . $this->session_id : ''; + $_SID = (defined('NEED_SID')) ? $this->session_id : ''; + + if (empty($this->session_id)) + { + $this->session_id = $_SID = phpBB3::request_var('sid', ''); + $SID = 'sid=' . $this->session_id; + $this->cookie_data = array('u' => 0, 'k' => ''); + } + } + else + { + $this->session_id = $_SID = phpBB3::request_var('sid', ''); + $SID = 'sid=' . $this->session_id; + } + + $_EXTRA_URL = array(); + + // Why no forwarded_for et al? Well, too easily spoofed. With the results of my recent requests + // it's pretty clear that in the majority of cases you'll at least be left with a proxy/cache ip. + $this->ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; + $this->ip = preg_replace('#[ ]{2,}#', ' ', str_replace(array(',', ' '), ' ', $this->ip)); + + // split the list of IPs + $ips = explode(' ', $this->ip); + + // Default IP if REMOTE_ADDR is invalid + $this->ip = '127.0.0.1'; + + foreach ($ips as $ip) + { + // check IPv4 first, the IPv6 is hopefully only going to be used very seldomly + if (!empty($ip) && !preg_match(phpBB3::get_preg_expression('ipv4'), $ip) && !preg_match(phpBB3::get_preg_expression('ipv6'), $ip)) + { + // Just break + break; + } + + // Quick check for IPv4-mapped address in IPv6 + if (stripos($ip, '::ffff:') === 0) + { + $ipv4 = substr($ip, 7); + + if (preg_match(phpBB3::get_preg_expression('ipv4'), $ipv4)) + { + $ip = $ipv4; + } + } + + // Use the last in chain + $this->ip = $ip; + } + + $this->load = false; + + // Load limit check (if applicable) + if ($board_config['limit_load'] || $board_config['limit_search_load']) + { + if ($load = @file_get_contents('/proc/loadavg')) + { + $this->load = array_slice(explode(' ', $load), 0, 1); + $this->load = floatval($this->load[0]); + } + else + { + set_config('limit_load', '0'); + set_config('limit_search_load', '0'); + } + } + + // Is session_id is set or session_id is set and matches the url param if required + if (!empty($this->session_id) && (!defined('NEED_SID') || (isset($_GET['sid']) && $this->session_id === $_GET['sid'])) ) + { + $sql = 'SELECT u.*, s.* + FROM ' . SESSIONS_TABLE . ' s, ' . USERS_TABLE . " u + WHERE s.session_id = '" . $db->sql_escape($this->session_id) . "' + AND u.user_id = s.session_user_id"; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + // Did the session exist in the DB? + if (isset($this->data['user_id'])) + { + // Validate IP length according to admin ... enforces an IP + // check on bots if admin requires this + //$quadcheck = ($board_config['ip_check_bot'] && $this->data['user_type'] & USER_BOT) ? 4 : $board_config['ip_check']; + + if (strpos($this->ip, ':') !== false && strpos($this->data['session_ip'], ':') !== false) + { + $s_ip = short_ipv6($this->data['session_ip'], $board_config['ip_check']); + $u_ip = short_ipv6($this->ip, $board_config['ip_check']); + } + else + { + $s_ip = implode('.', array_slice(explode('.', $this->data['session_ip']), 0, $board_config['ip_check'])); + $u_ip = implode('.', array_slice(explode('.', $this->ip), 0, $board_config['ip_check'])); + } + + $s_browser = ($board_config['browser_check']) ? strtolower(substr($this->data['session_browser'], 0, 149)) : ''; + $u_browser = ($board_config['browser_check']) ? strtolower(substr($this->browser, 0, 149)) : ''; + + $s_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->data['session_forwarded_for'], 0, 254) : ''; + $u_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->forwarded_for, 0, 254) : ''; + + // referer checks + // The @ before $config['referer_validation'] suppresses notices present while running the updater + $check_referer_path = (@$board_config['referer_validation'] == REFERER_VALIDATE_PATH); + $referer_valid = true; + + // we assume HEAD and TRACE to be foul play and thus only whitelist GET + if (@$board_config['referer_validation'] && isset($_SERVER['REQUEST_METHOD']) && strtolower($_SERVER['REQUEST_METHOD']) !== 'get') + { + $referer_valid = $this->validate_referer($check_referer_path); + } + + if ($u_ip === $s_ip && $s_browser === $u_browser && $s_forwarded_for === $u_forwarded_for) + { + $session_expired = false; + + // Check whether the session is still valid if we have one + $method = basename(trim($board_config['auth_method'])); + + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'File(s1) ' . $mx_root_path . "includes/shared/phpbb3/includes/auth/auth/auth_" . $method . ".$phpEx" . ' couldn\'t be opened.'); + } + } + + $method = 'validate_session_' . $method; + if (function_exists($method)) + { + if (!$method($this->data)) + { + $session_expired = true; + } + } + + if (!$session_expired) + { + // Check the session length timeframe if autologin is not enabled. + // Else check the autologin length... and also removing those having autologin enabled but no longer allowed board-wide. + if (!$this->data['session_autologin']) + { + if ($this->data['session_time'] < $this->time_now - ($board_config['session_length'] + 60)) + { + $session_expired = true; + } + } + else if (!$board_config['allow_autologin'] || ($board_config['max_autologin_time'] && $this->data['session_time'] < $this->time_now - (86400 * (int) $board_config['max_autologin_time']) + 60)) + { + $session_expired = true; + } + } + + if (!$session_expired) + { + // Only update session DB a minute or so after last update or if page changes + if ($this->time_now - $this->data['session_time'] > 60 || ($this->update_session_page && $this->data['session_page'] != $this->page['page'])) + { + $sql_ary = array('session_time' => $this->time_now); + + if ($this->update_session_page) + { + $sql_ary['session_page'] = substr($this->page['page'], 0, 199); + $sql_ary['session_forum_id'] = !empty($this->page['forum']) ? $this->page['forum'] : $page_id; //Added for phpBB 3.0.2 by Ory + } + + $db->sql_return_on_error(true); + + $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "'"; + $result = $db->sql_query($sql); + + $db->sql_return_on_error(false); + + // If the database is not yet updated, there will be an error due to the session_forum_id + // @todo REMOVE for 3.0.2 + if ($result === false) + { + unset($sql_ary['session_forum_id']); + + $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "'"; + $db->sql_query($sql); + } + + if ($this->data['user_id'] != ANONYMOUS && !empty($board_config['new_member_post_limit']) && $this->data['user_new'] && $board_config['new_member_post_limit'] <= $this->data['user_posts']) + { + $this->leave_newly_registered(); + } + } + + $this->data['is_registered'] = ($this->data['user_id'] != ANONYMOUS && ($this->data['user_type'] == USER_NORMAL || $this->data['user_type'] == USER_FOUNDER)) ? true : false; + $this->data['is_bot'] = (!$this->data['is_registered'] && $this->data['user_id'] != ANONYMOUS) ? true : false; + $this->data['user_lang'] = basename($this->data['user_lang']); + + return true; + } + } + else + { + // Added logging temporarly to help debug bugs... + if (defined('DEBUG_EXTRA') && $this->data['user_id'] != ANONYMOUS) + { + if ($referer_valid) + { + mx_add_log('critical', 'LOG_IP_BROWSER_FORWARDED_CHECK', $u_ip, $s_ip, $u_browser, $s_browser, htmlspecialchars($u_forwarded_for), htmlspecialchars($s_forwarded_for)); + } + else + { + mx_add_log('critical', 'LOG_REFERER_INVALID', $this->referer); + } + } + } + } + } + // If we reach here then no (valid) session exists. So we'll create a new one + return $this->session_create(); + } + + /** + * Create a new session + * + * If upon trying to start a session we discover there is nothing existing we + * jump here. Additionally this method is called directly during login to regenerate + * the session for the specific user. In this method we carry out a number of tasks; + * garbage collection, (search)bot checking, banned user comparison. Basically + * though this method will result in a new session for a specific user. + */ + function session_create($user_id = false, $set_admin = false, $persist_login = false, $viewonline = true) + { + global $SID, $_SID, $db, $board_config, $cache, $mx_root_path, $phpbb_root_path, $phpEx, $mx_backend; + + $this->data = array(); + + /* Garbage collection ... remove old sessions updating user information + // if necessary. It means (potentially) 11 queries but only infrequently + if ($this->time_now > $board_config['session_last_gc'] + $board_config['session_gc']) + { + $this->session_gc(); + }*/ + + // Do we allow autologin on this board? No? Then override anything + // that may be requested here + if (!$board_config['allow_autologin']) + { + $this->cookie_data['k'] = $persist_login = false; + } + + /** + * Here we do a bot check, oh er saucy! No, not that kind of bot + * check. We loop through the list of bots defined by the admin and + * see if we have any useragent and/or IP matches. If we do, this is a + * bot, act accordingly + */ + $bot = false; + $active_bots = $mx_backend->obtain_bots(); + + foreach ($active_bots as $row) + { + if ($row['bot_agent'] && preg_match('#' . str_replace('\*', '.*?', preg_quote($row['bot_agent'], '#')) . '#i', $this->browser)) + { + $bot = $row['user_id']; + } + + // If ip is supplied, we will make sure the ip is matching too... + if ($row['bot_ip'] && ($bot || !$row['bot_agent'])) + { + // Set bot to false, then we only have to set it to true if it is matching + $bot = false; + + foreach (explode(',', $row['bot_ip']) as $bot_ip) + { + $bot_ip = trim($bot_ip); + + if (!$bot_ip) + { + continue; + } + if (strpos($this->ip, $bot_ip) === 0) + { + $bot = (int) $row['user_id']; + break; + } + } + } + if ($bot) + { + break; + } + } + $method = basename(trim($board_config['auth_method'])); + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'File(s2) ' . $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx" . ' couldn\'t be opened.'); + } + } + //$provider = $phpbb_container->get('auth.provider.' . $method); + $method = 'autologin_' . $method; + if (function_exists($method)) + { + $this->data = $method(); + + if (sizeof($this->data)) + { + $this->cookie_data['k'] = ''; + $this->cookie_data['u'] = $this->data['user_id']; + } + } + + // If we're presented with an autologin key we'll join against it. + // Else if we've been passed a user_id we'll grab data based on that + if (isset($this->cookie_data['k']) && $this->cookie_data['k'] && $this->cookie_data['u'] && !sizeof($this->data)) + { + $sql = 'SELECT u.* + FROM ' . USERS_TABLE . ' u, ' . SESSIONS_KEYS_TABLE . ' k + WHERE u.user_id = ' . (int) $this->cookie_data['u'] . ' + AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ") + AND k.user_id = u.user_id + AND k.key_id = '" . $db->sql_escape(md5($this->cookie_data['k'])) . "'"; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $bot = false; + } + else if ($user_id !== false && !sizeof($this->data)) + { + $this->cookie_data['k'] = ''; + $this->cookie_data['u'] = $user_id; + + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . (int) $this->cookie_data['u'] . ' + AND user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')'; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $bot = false; + } + + // If no data was returned one or more of the following occurred: + // Key didn't match one in the DB + // User does not exist + // User is inactive + // User is bot + if (!sizeof($this->data) || !is_array($this->data)) + { + $this->cookie_data['k'] = ''; + $this->cookie_data['u'] = ($bot) ? $bot : ANONYMOUS; + + if (!$bot) + { + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . (int) $this->cookie_data['u']; + } + else + { + // We give bots always the same session if it is not yet expired. + $sql = 'SELECT u.*, s.* + FROM ' . USERS_TABLE . ' u + LEFT JOIN ' . SESSIONS_TABLE . ' s ON (s.session_user_id = u.user_id) + WHERE u.user_id = ' . (int) $bot; + } + + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + } + + if ($this->data['user_id'] != ANONYMOUS && !$bot) + { + $this->data['session_last_visit'] = (isset($this->data['session_time']) && $this->data['session_time']) ? $this->data['session_time'] : (($this->data['user_lastvisit']) ? $this->data['user_lastvisit'] : time()); + } + else + { + $this->data['session_last_visit'] = $this->time_now; + } + + // Force user id to be integer... + $this->data['user_id'] = (int) $this->data['user_id']; + + // At this stage we should have a filled data array, defined cookie u and k data. + // data array should contain recent session info if we're a real user and a recent + // session exists in which case session_id will also be set + + // Is user banned? Are they excluded? Won't return on ban, exists within method + if ($this->data['user_type'] != USER_FOUNDER) + { + if (!$board_config['forwarded_for_check']) + { + $this->check_ban($this->data['user_id'], $this->ip); + } + else + { + $ips = explode(', ', $this->forwarded_for); + $ips[] = $this->ip; + $this->check_ban($this->data['user_id'], $ips); + } + } + $this->data['is_registered'] = (!$bot && $this->data['user_id'] != ANONYMOUS && ($this->data['user_type'] == USER_NORMAL || $this->data['user_type'] == USER_FOUNDER)) ? true : false; + $this->data['is_bot'] = ($bot) ? true : false; + + // If our friend is a bot, we re-assign a previously assigned session + if ($this->data['is_bot'] && $bot == $this->data['user_id'] && $this->data['session_id']) + { + // Only assign the current session if the ip, browser and forwarded_for match... + if (strpos($this->ip, ':') !== false && strpos($this->data['session_ip'], ':') !== false) + { + $s_ip = short_ipv6($this->data['session_ip'], $board_config['ip_check']); + $u_ip = short_ipv6($this->ip, $board_config['ip_check']); + } + else + { + $s_ip = implode('.', array_slice(explode('.', $this->data['session_ip']), 0, $board_config['ip_check'])); + $u_ip = implode('.', array_slice(explode('.', $this->ip), 0, $board_config['ip_check'])); + } + + $s_browser = ($board_config['browser_check']) ? strtolower(substr($this->data['session_browser'], 0, 149)) : ''; + $u_browser = ($board_config['browser_check']) ? strtolower(substr($this->browser, 0, 149)) : ''; + + $s_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->data['session_forwarded_for'], 0, 254) : ''; + $u_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->forwarded_for, 0, 254) : ''; + + if ($u_ip === $s_ip && $s_browser === $u_browser && $s_forwarded_for === $u_forwarded_for) + { + $this->session_id = $this->data['session_id']; + + // Only update session DB a minute or so after last update or if page changes + if ($this->time_now - $this->data['session_time'] > 60 || ($this->update_session_page && $this->data['session_page'] != $this->page['page'])) + { + $this->data['session_time'] = $this->data['session_last_visit'] = $this->time_now; + + $sql_ary = array('session_time' => $this->time_now, 'session_last_visit' => $this->time_now, 'session_admin' => 0); + + if ($this->update_session_page) + { + $sql_ary['session_page'] = substr($this->page['page'], 0, 199); + } + + $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "'"; + $db->sql_query($sql); + + // Update the last visit time + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $this->data['session_time'] . ' + WHERE user_id = ' . (int) $this->data['user_id']; + $db->sql_query($sql); + } + + $SID = '?sid='; + $_SID = ''; + return true; + } + else + { + // If the ip and browser does not match make sure we only have one bot assigned to one session + $db->sql_query('DELETE FROM ' . SESSIONS_TABLE . ' WHERE session_user_id = ' . $this->data['user_id']); + } + } + + $session_autologin = (($this->cookie_data['k'] || $persist_login) && $this->data['is_registered']) ? true : false; + $set_admin = ($set_admin && $this->data['is_registered']) ? true : false; + + // Create or update the session + $sql_ary = array( + 'session_user_id' => (int) $this->data['user_id'], + 'session_start' => (int) $this->time_now, + 'session_last_visit' => (int) $this->data['session_last_visit'], + 'session_time' => (int) $this->time_now, + 'session_browser' => (string) substr($this->browser, 0, 149), + 'session_forwarded_for' => (string) $this->forwarded_for, + 'session_ip' => (string) $this->ip, + 'session_autologin' => ($session_autologin) ? 1 : 0, + 'session_admin' => ($set_admin) ? 1 : 0, + 'session_viewonline' => ($viewonline) ? 1 : 0, + ); + + if ($this->update_session_page) + { + $sql_ary['session_page'] = (string) substr($this->page['page'], 0, 199); + } + + $db->sql_return_on_error(true); + + $sql = 'DELETE + FROM ' . SESSIONS_TABLE . ' + WHERE session_id = \'' . $db->sql_escape($this->session_id) . '\' + AND session_user_id = ' . ANONYMOUS; + + if (!defined('IN_ERROR_HANDLER') && (!$this->session_id || !$db->sql_query($sql) || !$db->sql_affectedrows())) + { + // Limit new sessions in 1 minute period (if required) + if (empty($this->data['session_time']) && $board_config['active_sessions']) + { + $sql = 'SELECT COUNT(session_id) AS sessions + FROM ' . SESSIONS_TABLE . ' + WHERE session_time >= ' . ($this->time_now - 60); + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if ((int) $row['sessions'] > (int) $board_config['active_sessions']) + { + header('HTTP/1.1 503 Service Unavailable'); + trigger_error('BOARD_UNAVAILABLE'); + } + } + } + + $this->session_id = $this->data['session_id'] = md5(phpBB3::unique_id()); + + $sql_ary['session_id'] = (string) $this->session_id; + $sql_ary['session_page'] = (string) substr($this->page['page'], 0, 199); + + $sql = 'INSERT INTO ' . SESSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $db->sql_query($sql); + + $db->sql_return_on_error(false); + + // Regenerate autologin/persistent login key + if ($session_autologin) + { + $this->set_login_key(); + } + + // refresh data + $SID = '?sid=' . $this->session_id; + $_SID = $this->session_id; + $this->data = array_merge($this->data, $sql_ary); + + if (!$bot) + { + $cookie_expire = $this->time_now + (($board_config['max_autologin_time']) ? 86400 * (int) $board_config['max_autologin_time'] : 31536000); + + $this->set_cookie('u', $this->cookie_data['u'], $cookie_expire); + $this->set_cookie('k', $this->cookie_data['k'], $cookie_expire); + $this->set_cookie('sid', $this->session_id, $cookie_expire); + + unset($cookie_expire); + } + else + { + $this->data['session_time'] = $this->data['session_last_visit'] = $this->time_now; + + // Update the last visit time + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $this->data['session_time'] . ' + WHERE user_id = ' . (int) $this->data['user_id']; + $db->sql_query($sql); + + $SID = '?sid='; + $_SID = ''; + } + + return true; + } + + /** + * Kills a session + * + * This method does what it says on the tin. It will delete a pre-existing session. + * It resets cookie information (destroying any autologin key within that cookie data) + * and update the users information from the relevant session data. It will then + * grab guest user information. + */ + function session_kill($new_session = true) + { + global $SID, $_SID, $db, $board_config, $mx_root_path, $php_root_path, $phpEx; + + $sql = 'DELETE FROM ' . SESSIONS_TABLE . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "' + AND session_user_id = " . (int) $this->data['user_id']; + $db->sql_query($sql); + + // Allow connecting logout with external auth method logout + $method = basename(trim($board_config['auth_method'])); + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'File(s3) ' . $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx" . ' couldn\'t be opened.'); + } + } + //$provider = $phpbb_container->get('auth.provider.' . $method); + $method = 'logout_' . $method; + if (function_exists($method)) + { + $method($this->data, $new_session); + } + //$provider->logout($this->data, $new_session); + if ($this->data['user_id'] != ANONYMOUS) + { + // Delete existing session, update last visit info first! + if (!isset($this->data['session_time'])) + { + $this->data['session_time'] = time(); + } + + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $this->data['session_time'] . ' + WHERE user_id = ' . (int) $this->data['user_id']; + $db->sql_query($sql); + + if ($this->cookie_data['k']) + { + $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' + WHERE user_id = ' . (int) $this->data['user_id'] . " + AND key_id = '" . $db->sql_escape(md5($this->cookie_data['k'])) . "'"; + $db->sql_query($sql); + } + + // Reset the data array + $this->data = array(); + + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . ANONYMOUS; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + } + + $cookie_expire = $this->time_now - 31536000; + $this->set_cookie('u', '', $cookie_expire); + $this->set_cookie('k', '', $cookie_expire); + $this->set_cookie('sid', '', $cookie_expire); + unset($cookie_expire); + + $SID = '?sid='; + $this->session_id = $_SID = ''; + + // To make sure a valid session is created we create one for the anonymous user + if ($new_session) + { + $this->session_create(ANONYMOUS); + } + + return true; + } + + /** + * Session garbage collection + * + * This looks a lot more complex than it really is. Effectively we are + * deleting any sessions older than an admin definable limit. Due to the + * way in which we maintain session data we have to ensure we update user + * data before those sessions are destroyed. In addition this method + * removes autologin key information that is older than an admin defined + * limit. + */ + function session_gc() + { + global $db, $board_config; + + if (!$this->time_now) + { + $this->time_now = time(); + } + + // Firstly, delete guest sessions + $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' + WHERE session_user_id = ' . ANONYMOUS . ' + AND session_time < ' . (int) ($this->time_now - $board_config['session_length']); + $db->sql_query($sql); + + // Get expired sessions, only most recent for each user + $sql = 'SELECT session_user_id, session_page, MAX(session_time) AS recent_time + FROM ' . SESSIONS_TABLE . ' + WHERE session_time < ' . ($this->time_now - $board_config['session_length']) . ' + GROUP BY session_user_id, session_page'; + $result = $db->sql_query_limit($sql, 10); + + $del_user_id = array(); + $del_sessions = 0; + + while ($row = $db->sql_fetchrow($result)) + { + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $row['recent_time'] . ", user_lastpage = '" . $db->sql_escape($row['session_page']) . "' + WHERE user_id = " . (int) $row['session_user_id']; + $db->sql_query($sql); + + $del_user_id[] = (int) $row['session_user_id']; + $del_sessions++; + } + $db->sql_freeresult($result); + + if (sizeof($del_user_id)) + { + // Delete expired sessions + $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' + WHERE ' . $db->sql_in_set('session_user_id', $del_user_id) . ' + AND session_time < ' . ($this->time_now - $board_config['session_length']); + $db->sql_query($sql); + } + + if ($del_sessions < 10) + { + // Less than 10 sessions, update gc timer ... else we want gc + // called again to delete other sessions + set_config('session_last_gc', $this->time_now, true); + } + + if ($board_config['max_autologin_time']) + { + $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' + WHERE last_login < ' . (time() - (86400 * (int) $board_config['max_autologin_time'])); + $db->sql_query($sql); + } + + return; + } + + /** + * Sets a cookie + * + * Sets a cookie of the given name with the specified data for the given length of time. + */ + function set_cookie($name, $cookiedata, $cookietime) + { + global $board_config; + + $name_data = rawurlencode($board_config['cookie_name'] . '_' . $name) . '=' . rawurlencode($cookiedata); + $expire = gmdate('D, d-M-Y H:i:s \\G\\M\\T', $cookietime); + $domain = (!$board_config['cookie_domain'] || $board_config['cookie_domain'] == 'localhost' || $board_config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $board_config['cookie_domain']; + + header('Set-Cookie: ' . $name_data . '; expires=' . $expire . '; path=' . $board_config['cookie_path'] . $domain . ((!$board_config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false); + } + + /** + * Check for banned user + * + * Checks whether the supplied user is banned by id, ip or email. If no parameters + * are passed to the method pre-existing session data is used. If $return is false + * this routine does not return on finding a banned user, it outputs a relevant + * message and stops execution. + * + * @param string|array $user_ips Can contain a string with one IP or an array of multiple IPs + */ + function check_ban($user_id = false, $user_ips = false, $user_email = false, $return = false) + { + global $board_config, $db; + + if (defined('IN_CHECK_BAN')) + { + return; + } + + $banned = false; + + $sql = 'SELECT ban_ip, ban_userid, ban_email, ban_exclude, ban_give_reason, ban_end + FROM ' . BANLIST_TABLE . ' + WHERE (ban_end >= ' . time() . ' OR ban_end = 0)'; + + // Determine which entries to check, only return those + if ($user_email === false) + { + $sql .= " AND ban_email = ''"; + } + + if ($user_ips === false) + { + $sql .= " AND (ban_ip = '' OR ban_exclude = 1)"; + } + + if ($user_id === false) + { + $sql .= ' AND (ban_userid = 0 OR ban_exclude = 1)'; + } + else + { + $sql .= ' AND (ban_userid = ' . $user_id; + + if ($user_email !== false) + { + $sql .= " OR ban_email <> ''"; + } + + if ($user_ips !== false) + { + $sql .= " OR ban_ip <> ''"; + } + + $sql .= ')'; + } + + $result = $db->sql_query($sql); + + $ban_triggered_by = 'user'; + while ($row = $db->sql_fetchrow($result)) + { + $ip_banned = false; + if (!empty($row['ban_ip'])) + { + if (!is_array($user_ips)) + { + $ip_banned = preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_ip'], '#')) . '$#i', $user_ips); + } + else + { + foreach ($user_ips as $user_ip) + { + if (preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_ip'], '#')) . '$#i', $user_ip)) + { + $ip_banned = true; + break; + } + } + } + } + + if ((!empty($row['ban_userid']) && intval($row['ban_userid']) == $user_id) || + $ip_banned || + (!empty($row['ban_email']) && preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_email'], '#')) . '$#i', $user_email))) + { + if (!empty($row['ban_exclude'])) + { + $banned = false; + break; + } + else + { + $banned = true; + $ban_row = $row; + + if (!empty($row['ban_userid']) && intval($row['ban_userid']) == $user_id) + { + $ban_triggered_by = 'user'; + } + else if (!empty($row['ban_ip']) && preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_ip'], '#')) . '$#i', $user_ips)) + { + $ban_triggered_by = 'ip'; + } + else + { + $ban_triggered_by = 'email'; + } + + // Don't break. Check if there is an exclude rule for this user + } + } + } + $db->sql_freeresult($result); + + if ($banned && !$return) + { + global $template; + + // If the session is empty we need to create a valid one... + if (empty($this->session_id)) + { + $this->session_create(ANONYMOUS); + } + + // Initiate environment ... since it won't be set at this stage + $this->setup(); + + // Logout the user, banned users are unable to use the normal 'logout' link + if ($this->data['user_id'] != ANONYMOUS) + { + $this->session_kill(); + } + + // We show a login box here to allow founders accessing the board if banned by IP + if (defined('IN_LOGIN') && $this->data['user_id'] == ANONYMOUS) + { + global $phpEx; + + $this->setup('ucp'); + $this->data['is_registered'] = $this->data['is_bot'] = false; + + // Set as a precaution to allow login_box() handling this case correctly as well as this function not being executed again. + define('IN_CHECK_BAN', 1); + + login_box("index.$phpEx"); + + // The false here is needed, else the user is able to circumvent the ban. + $this->session_kill(false); + } + + // Ok, we catch the case of an empty session id for the anonymous user... + // This can happen if the user is logging in, banned by username and the login_box() being called "again". + if (empty($this->session_id) && defined('IN_CHECK_BAN')) + { + $this->session_create(ANONYMOUS); + } + + + // Determine which message to output + $till_date = ($ban_row['ban_end']) ? $this->format_date($ban_row['ban_end']) : ''; + $message = ($ban_row['ban_end']) ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM'; + + $message = sprintf($this->lang[$message], $till_date, '', ''); + $message .= ($ban_row['ban_give_reason']) ? '

' . sprintf($this->lang['BOARD_BAN_REASON'], $ban_row['ban_give_reason']) : ''; + $message .= '

' . $this->lang['BAN_TRIGGERED_BY_' . strtoupper($ban_triggered_by)] . ''; + + trigger_error($message); + } + + return ($banned) ? true : false; + } + + /** + * Check if ip is blacklisted + * This should be called only where absolutly necessary + * + * Only IPv4 (rbldns does not support AAAA records/IPv6 lookups) + * + * @author satmd (from the php manual) + * @param string $mode register/post - spamcop for example is ommitted for posting + * @return false if ip is not blacklisted, else an array([checked server], [lookup]) + */ + function check_dnsbl($mode, $ip = false) + { + if ($ip === false) + { + $ip = $this->ip; + } + + $dnsbl_check = array( + 'list.dsbl.org' => 'http://dsbl.org/listing?', + 'sbl-xbl.spamhaus.org' => 'http://www.spamhaus.org/query/bl?ip=', + ); + + if ($mode == 'register') + { + $dnsbl_check['bl.spamcop.net'] = 'http://spamcop.net/bl.shtml?'; + } + + if ($ip) + { + $quads = explode('.', $ip); + $reverse_ip = $quads[3] . '.' . $quads[2] . '.' . $quads[1] . '.' . $quads[0]; + + // Need to be listed on all servers... + $listed = true; + $info = array(); + + foreach ($dnsbl_check as $dnsbl => $lookup) + { + if (phpbb_checkdnsrr($reverse_ip . '.' . $dnsbl . '.', 'A') === true) + { + $info = array($dnsbl, $lookup . $ip); + } + else + { + $listed = false; + } + } + + if ($listed) + { + return $info; + } + } + + return false; + } + + /** + * Check if URI is blacklisted + * This should be called only where absolutly necessary, for example on the submitted website field + * This function is not in use at the moment and is only included for testing purposes, it may not work at all! + * This means it is untested at the moment and therefore commented out + * + * @param string $uri URI to check + * @return true if uri is on blacklist, else false. Only blacklist is checked (~zero FP), no grey lists + function check_uribl($uri) + { + // Normally parse_url() is not intended to parse uris + // We need to get the top-level domain name anyway... change. + $uri = parse_url($uri); + + if ($uri === false || empty($uri['host'])) + { + return false; + } + + $uri = trim($uri['host']); + + if ($uri) + { + // One problem here... the return parameter for the "windows" method is different from what + // we expect... this may render this check useless... + if (phpbb_checkdnsrr($uri . '.multi.uribl.com.', 'A') === true) + { + return true; + } + } + + return false; + } + */ + + /** + * Set/Update a persistent login key + * + * This method creates or updates a persistent session key. When a user makes + * use of persistent (formerly auto-) logins a key is generated and stored in the + * DB. When they revisit with the same key it's automatically updated in both the + * DB and cookie. Multiple keys may exist for each user representing different + * browsers or locations. As with _any_ non-secure-socket no passphrase login this + * remains vulnerable to exploit. + */ + function set_login_key($user_id = false, $key = false, $user_ip = false) + { + global $board_config, $db; + + $user_id = ($user_id === false) ? $this->data['user_id'] : $user_id; + $user_ip = ($user_ip === false) ? $this->ip : $user_ip; + $key = ($key === false) ? (($this->cookie_data['k']) ? $this->cookie_data['k'] : false) : $key; + + $key_id = phpBB3::unique_id(hexdec(substr($this->session_id, 0, 8))); + + $sql_ary = array( + 'key_id' => (string) md5($key_id), + 'last_ip' => (string) $this->ip, + 'last_login' => (int) time() + ); + + if (!$key) + { + $sql_ary += array( + 'user_id' => (int) $user_id + ); + } + + if ($key) + { + $sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' + WHERE user_id = ' . (int) $user_id . " + AND key_id = '" . $db->sql_escape(md5($key)) . "'"; + } + else + { + $sql = 'INSERT INTO ' . SESSIONS_KEYS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + } + $db->sql_query($sql); + + $this->cookie_data['k'] = $key_id; + + return false; + } + + /** + * Reset all login keys for the specified user + * + * This method removes all current login keys for a specified (or the current) + * user. It will be called on password change to render old keys unusable + */ + function reset_login_keys($user_id = false) + { + global $board_config, $db; + + $user_id = ($user_id === false) ? $this->data['user_id'] : $user_id; + + $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' + WHERE user_id = ' . (int) $user_id; + $db->sql_query($sql); + + // Let's also clear any current sessions for the specified user_id + // If it's the current user then we'll leave this session intact + $sql_where = 'session_user_id = ' . (int) $user_id; + $sql_where .= ($user_id === $this->data['user_id']) ? " AND session_id <> '" . $db->sql_escape($this->session_id) . "'" : ''; + + $sql = 'DELETE FROM ' . SESSIONS_TABLE . " + WHERE $sql_where"; + $db->sql_query($sql); + + // We're changing the password of the current user and they have a key + // Lets regenerate it to be safe + if ($user_id === $this->data['user_id'] && $this->cookie_data['k']) + { + $this->set_login_key($user_id); + } + } + + /** + * Check if the request originated from the same page. + * @param bool $check_script_path If true, the path will be checked as well + */ + function validate_referer($check_script_path = false) + { + global $board_config; + + // no referer - nothing to validate, user's fault for turning it off (we only check on POST; so meta can't be the reason) + if (empty($this->referer) || empty($this->host)) + { + return true; + } + + $host = htmlspecialchars($this->host); + $ref = substr($this->referer, strpos($this->referer, '://') + 3); + + if (!(stripos($ref, $host) === 0) && (!$board_config['force_server_vars'] || !(stripos($ref, $board_config['server_name']) === 0))) + { + return false; + } + else if ($check_script_path && rtrim($this->page['root_script_path'], '/') !== '') + { + $ref = substr($ref, strlen($host)); + $server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT'); + + if ($server_port !== 80 && $server_port !== 443 && stripos($ref, ":$server_port") === 0) + { + $ref = substr($ref, strlen(":$server_port")); + } + + if (!(stripos(rtrim($ref, '/'), rtrim($this->page['root_script_path'], '/')) === 0)) + { + return false; + } + } + + return true; + } + + function unset_admin() + { + global $db; + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_admin = 0 + WHERE session_id = \'' . $db->sql_escape($this->session_id) . '\''; + $db->sql_query($sql); + } + + /** ******************************************************************************************************* + * Include the User class + ******************************************************************************************************* */ + + /** + * Setup basic user-specific items (style, language, ...) + * Note: We've split original phpbb3 setup() method into setup() and setup_style() + */ + function setup($lang_set = false, $style = false) + { + global $db, $template, $board_config, $userdata, $phpbb_auth, $phpEx, $phpbb_root_path, $mx_root_path, $mx_cache; + global $mx_request_vars, $portal_config; //added for mxp + global $lang; //added for mxp + + $session_lang = ''; + /* + * Added here for reference and future implementation of a lang block in mx_coreblocks were board_config can be taken from portal_config + * + if ($board_config['lang_select_enable'] || $board_config['lang_click_enable']) + { + $session_lang_save = phpBB3::request_var('session_lang_save', false); + if (isset($session_lang_save) && $session_lang_save && $this->data['session_lang']) + { + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_lang = '" . $this->data['session_lang'] . "' + WHERE user_id = " . $this->data['user_id']; + $db->sql_query($sql); + } + + $session_lang_reset = phpBB3::request_var('session_lang_reset', false); + if (isset($session_lang_reset) && $session_lang_reset) + { + $session_lang = ''; + } + else + { + $session_lang = phpBB3::request_var('session_lang', ''); + } + + if ((isset($session_lang) && $session_lang) || $session_lang_reset) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . " + SET session_lang = '" . $session_lang . "' + WHERE session_id = '" . $this->session_id . "'"; + $db->sql_query($sql); + } + elseif (isset($this->data['session_lang']) && $this->data['session_lang']) + { + $session_lang = $this->data['session_lang']; + } + } + + if (($board_config['lang_select_enable'] || $board_config['lang_click_enable']) && isset($session_lang) && $session_lang) + { + $this->data['user_lang'] = $session_lang; + $this->lang_name = (file_exists($this->lang_path . $this->data['user_lang'] . "/common.$phpEx")) ? $this->data['user_lang'] : basename($this->encode_lang($this->lang['default_lang'])); + + if ($this->data['user_id'] != ANONYMOUS) + { + $this->date_format = $this->data['user_dateformat']; + $this->timezone = $this->data['user_timezone'] * 3600; + $this->dst = $this->data['user_dst'] * 3600; + } + else + { + $this->date_format = $board_config['default_dateformat']; + $this->timezone = $board_config['board_timezone'] * 3600; + $this->dst = $board_config['board_dst'] * 3600; + } + } + */ + $lang_set = !$lang_set ? (defined('IN_ADMIN') ? 'acp/common' : 'common') : $lang_set; + + if ($this->data['session_logged_in']) + { + $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->data['user_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->data['user_lang']) : ((file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'); + $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; + + $this->date_format = $this->data['user_dateformat']; + $this->timezone = $this->data['user_timezone'] * 3600; + $this->dst = $this->data['user_dst'] * 3600; + } + else + { + $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'; + $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; + $this->date_format = $board_config['default_dateformat']; + $this->timezone = $board_config['board_timezone'] * 3600; + $this->dst = $board_config['board_dst'] * 3600; + + /** + * If a guest user is surfing, we try to guess his/her language first by obtaining the browser language + * If re-enabled we need to make sure only those languages installed are checked + * Commented out so we do not loose the code. + * language checking added 2008-08-15 by Martin Truckenbrodt + **/ + if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) + { + $lang_iso_xx_yy = array(); + $lang_iso_xx = array(); + $accept_lang_xx_yy = array(); + $accept_lang_xx = array(); + + $sql = 'SELECT lang_iso FROM ' . LANG_TABLE; + $result = $db->sql_query($sql, 3600); + + while ($row = $db->sql_fetchrow($result)) + { + if (file_exists($phpbb_root_path . 'language/' . $row['lang_iso'] . "/common.$phpEx")) + { + $lang_iso_xx_yy[] = $row['lang_iso']; + if (strlen($row['lang_iso']) > 4) + { + $lang_iso_xx[$row['lang_iso']] = substr($row['lang_iso'], 0, 2); + } + } + } + $accept_lang_ary = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); + + foreach ($accept_lang_ary as $accept_lang) + { + // Set correct format ... guess full xx_yy form + $accept_lang_xx_yy = basename(substr($accept_lang, 0, 2) . '_' . strtolower(substr($accept_lang, 3, 2))); + // Set correct format ... guess only xx form + $accept_lang_xx = basename(substr($accept_lang, 0, 2)); + + // browser xx-YY == board xx_yy and + // browser xx == board xx + if (in_array($accept_lang_xx_yy, $lang_iso_xx_yy)) + { + $this->lang_name = $board_config['default_lang'] = $accept_lang_xx_yy; + break; + } + // browser xx-YY => xx == board xx + else if (in_array($accept_lang_xx, $lang_iso_xx_yy)) + { + $this->lang_name = $board_config['default_lang'] = $accept_lang_xx; + break; + } + // browser xx == board xx_yy => xx + else if (in_array($accept_lang_xx, $lang_iso_xx) && $lang_iso_xx != '') + { + $this->lang_name = $board_config['default_lang'] = array_search($accept_lang_xx, $lang_iso_xx); + break; + } + // board default language + else + { + $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'; + } + } + $this->data['user_lang'] = $this->lang_name; + } + /* + */ + } + + /* We include common language file here to not load it every time a custom language file is included + $lang = &$this->lang; + */ + $include_result = (defined('DEBUG_EXTRA')) ? "" : "@"; // Do not suppress error if in DEBUG_EXTRA mode + if (("$include_result".include $this->lang_path . "common.$phpEx") === false) + { + //this will fix the path for anonymouse users + if ((@include $phpbb_root_path . $this->lang_path . "common.$phpEx") === false) + { + die('Language file ' . $this->lang_path . "common.$phpEx" . ' couldn\'t be opened.'); + } + } + + // + // We include common language file here to not load it every time a custom language file is included + // + $this->add_lang($lang_set); + + unset($lang_set); + } + + /** + * Enter description here... + * Note: We've split original phpbb3 setup() method into setup() and setup_style() + */ + function setup_style() + { + global $db, $template, $board_config, $userdata, $phpbb_auth, $phpEx, $phpbb_root_path, $mx_root_path, $mx_cache; + global $mx_request_vars, $portal_config, $board_config, $mx_backend; //added for mxp + + if (!empty($_GET['style']) && $phpbb_auth->acl_get('a_styles')) + { + global $SID, $_EXTRA_URL; + $style = phpBB3::request_var('style', 0); + // BEGIN Styles_Demo MOD for phpBB Block + $style_value = ''; + $SID .= '&style=' . $style; + $_EXTRA_URL = array('style=' . $style); + } + else + { + $style = $this->style; // From main style init. Should be correct and valid. + $style_value = $this->style_name; + // BEGIN Styles_Demo MOD for phpBB Block + /* */ + if(!$board_config['override_user_style'] && ($this->data['user_id'] != ANONYMOUS)) + { + // Set up style + $user_style = $this->data['user_style'] ? $this->data['user_style'] : $this->phpbb_style['style_id']; + //If user have other style in mxp then the one from phpBB not to have forum page and modules graphics will be messaed up + //Anonymouse users should see all block graphic corect + //Query phpBB style_id corepondent to mxp themes_id + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE m.themes_id = " . (int) $user_style . " + AND t.template_path = m.template_name + AND t.template_id = s.template_id"; + if ($row = $db->sql_fetchrow($db->sql_query($sql))) + { + $style = $row['style_id']; //User style + $style_value = $row['style_name']; //User style name + } + else + { + $style = $this->data['user_style'] ? $this->data['user_style'] : $board_config['default_style']; + } + } + else + { + $default_style = $portal_config['default_style']; + //If user have other style in mxp then the one from phpBB not to have forum page and modules graphics will be messaed up + //Anonymouse users should see all block graphic corect + //Query phpBB style_id corepondent to mxp themes_id + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE m.themes_id = " . (int) $default_style . " + AND t.template_path = m.template_name + AND t.template_id = s.template_id"; + if ($row = $db->sql_fetchrow($db->sql_query($sql))) + { + $style = $row['style_id']; //User style + $style_value = $row['style_name']; //User style name + } + else + { + $style = $this->data['user_style'] ? $this->data['user_style'] : $board_config['default_style']; + } + } + /* */ + // Set up style Temp code should be removed after bugtraking + //$style = ($style) ? $style : ((!$board_config['override_user_style'] && $this->data['user_id'] != ANONYMOUS) ? $this->data['user_style'] : $this->phpbb_style['style_id']); + } + + if (isset($_GET['demostyle'])) + { + $style_value = phpBB3::request_var('demostyle', ''); + if (intval($style_value) == 0) + { + //Query phpBB style_id corepondent to mxp style_name + //Any Demo Style here should work also for portal and forums + //Any Demo Style Name should be supported using same guild lines for portal as for forums for e.g. with spaces etc. + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE s.style_active = 1 AND s.style_name = '$style_value' + AND s.style_name = m.style_name + AND t.template_id = s.template_id"; + if(!$row = @$db->sql_fetchrow(@$db->sql_query($sql))) + { + die('Could not find style name '. $style_value . '!'); + } + else + { + $style_value = $row['style_id']; + } + } + else + { + //Query phpBB style_id corepondent to mxp themes_id + //Any Demo Style here should work also for portal and forums + //Any Demo Style Name should be supported using same guild lines for portal as for forums for e.g. with spaces etc. + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE m.themes_id = " . (int) $style_value . " + AND s.style_name = m.style_name + AND t.template_id = s.template_id"; + if(!$row = $db->sql_fetchrow($db->sql_query($sql))) + { + die('style_id ' . $style_value . ' not found'); + } + } + $this->set_cookie('change_style', $style_value, time() + 31536000); + } + elseif (isset($_COOKIE[$board_config['cookie_name'] . '_change_style'])) + { + $style_value = $_COOKIE[$board_config['cookie_name'] . '_change_style']; + } + + //Change the value before query + if (!empty($style_value)) + { + $style = $style_value; + } + + //We should never get this, temp fix for GoogleBot-2.1 crawler + //Remove this Deguging Code after solved + if ((intval($style) == 0) && empty($style_value)) + { + $style_value = 'prosilver'; + } + $phpbb_style = $style; + $phpbb_style_value = $style_value; + + // END Styles_Demo MOD + if (isset($style_value)) + { + //Query phpBB style_name + $sql = "SELECT s.style_id, s.style_name, t.template_storedb, t.template_path, t.template_id, t.bbcode_bitfield, c.theme_path, c.theme_name, c.theme_storedb, c.theme_id, i.imageset_path, i.imageset_id, i.imageset_name + FROM " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t, " . STYLES_THEME_TABLE . " AS c, " . STYLES_IMAGESET_TABLE . " i + WHERE s.style_active = 1 AND s.style_name = '$style_value' + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id"; + if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) + { + $style = $row['style_id']; + $style_value = $row['style_name']; + } + else + { + mx_message_die(CRITICAL_ERROR, "Could not query database for phpbb_styles info style_name [$style]", "", __LINE__, __FILE__, $sql); + } + } + elseif (intval($style) !== 0) + { + //Query phpBB style_id get from main style init. Should be correct and valid. + $sql = "SELECT s.style_id, s.style_name, t.template_storedb, t.template_path, t.template_id, t.bbcode_bitfield, c.theme_path, c.theme_name, c.theme_storedb, c.theme_id, i.imageset_path, i.imageset_id, i.imageset_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t, " . STYLES_THEME_TABLE . " AS c, " . STYLES_IMAGESET_TABLE . " i + WHERE s.style_id = " . (int) $style . " + AND s.style_name = m.style_name + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id"; + if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) + { + $style = $row['style_id']; + $style_value = $row['style_name']; + // MXP themes_id = $row['themes_id'] + } + else + { + mx_message_die(CRITICAL_ERROR, "Could not query database for phpbb_styles info style_id [$style]", "", __LINE__, __FILE__, $sql); + } + } + + $this->theme = is_array($this->theme) ? array_merge($this->theme, $row) : $row; + $db->sql_freeresult($result); + + // User has wrong style + if (!$this->theme && $style == $this->data['user_style']) + { + $style = $this->data['user_style'] = $board_config['default_style']; + + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_style = $style + WHERE user_id = {$this->data['user_id']}"; + $db->sql_query($sql); + + $sql = 'SELECT s.style_id, s.style_name, t.template_storedb, t.template_path, t.template_id, t.bbcode_bitfield, c.theme_path, c.theme_name, c.theme_storedb, c.theme_id, i.imageset_path, i.imageset_id, i.imageset_name + FROM ' . STYLES_TABLE . ' s, ' . STYLES_TEMPLATE_TABLE . ' t, ' . STYLES_THEME_TABLE . ' c, ' . STYLES_IMAGESET_TABLE . " i + WHERE s.style_id = $style + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id"; + $result = $db->sql_query($sql, 3600); + $this->theme = is_array($this->theme) ? array_merge($this->theme, $db->sql_fetchrow($result)) : $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $style = $this->theme['style_id']; + $style_value = $this->theme['style_name']; + } + + if (!$this->theme) + { + trigger_error('Could not get style data', E_USER_ERROR); + } + + // Now parse the cfg file and cache it + $parsed_items = $mx_backend->obtain_cfg_items($this->theme); + + // We are only interested in the theme configuration for now + $parsed_items = $parsed_items['theme']; + + $check_for = array( + 'parse_css_file' => (int) 0, + 'pagination_sep' => (string) ', ' + ); + + foreach ($check_for as $key => $default_value) + { + $this->theme[$key] = (isset($parsed_items[$key])) ? $parsed_items[$key] : $default_value; + settype($this->theme[$key], gettype($default_value)); + + if (is_string($default_value)) + { + $this->theme[$key] = htmlspecialchars($this->theme[$key]); + } + } + + // If the style author specified the theme needs to be cached + // (because of the used paths and variables) than make sure it is the case. + // For example, if the theme uses language-specific images it needs to be stored in db. + if (!$this->theme['theme_storedb'] && $this->theme['parse_css_file']) + { + $this->theme['theme_storedb'] = 1; + + $stylesheet = file_get_contents("{$phpbb_root_path}styles/{$this->theme['theme_path']}/theme/stylesheet.css"); + // Match CSS imports + $matches = array(); + preg_match_all('/@import url\(["\'](.*)["\']\);/i', $stylesheet, $matches); + if (sizeof($matches)) + { + $content = ''; + foreach ($matches[0] as $idx => $match) + { + if ($content = @file_get_contents("{$phpbb_root_path}styles/{$this->theme['theme_path']}/theme/" . $matches[1][$idx])) + { + $content = trim($content); + } + else + { + $content = ''; + } + $stylesheet = str_replace($match, $content, $stylesheet); + } + unset($content); + } + + $stylesheet = str_replace('./', 'styles/' . $this->theme['theme_path'] . '/theme/', $stylesheet); + + $sql_ary = array( + 'theme_data' => $stylesheet, + 'theme_mtime' => time(), + 'theme_storedb' => 1 + ); + + $sql = 'UPDATE ' . STYLES_THEME_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' + WHERE theme_id = ' . $this->theme['theme_id']; + $db->sql_query($sql); + + unset($sql_ary); + } + + $template->set_template(); + + $this->img_lang = (file_exists($phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . $this->lang_name)) ? $this->lang_name : $this->encode_lang($board_config['default_lang']); + + $sql = 'SELECT image_name, image_filename, image_lang, image_height, image_width + FROM ' . STYLES_IMAGESET_DATA_TABLE . ' + WHERE imageset_id = ' . $this->theme['imageset_id'] . " + AND image_filename <> '' + AND image_lang IN ('" . $db->sql_escape($this->img_lang) . "', '')"; + $result = $db->sql_query($sql, 3600); + + $localised_images = false; + while ($row = $db->sql_fetchrow($result)) + { + if ($row['image_lang']) + { + $localised_images = true; + } + + $this->img_array[$row['image_name']] = $row; + } + $db->sql_freeresult($result); + // there were no localised images, try to refresh the localised imageset for the user's language + if (!$localised_images) + { + // Attention: this code ignores the image definition list from acp_styles and just takes everything + // that the config file contains + $sql_ary = array(); + + $db->sql_transaction('begin'); + + $sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . ' + WHERE imageset_id = ' . $this->theme['imageset_id'] . ' + AND image_lang = \'' . $db->sql_escape($this->img_lang) . '\''; + $result = $db->sql_query($sql); + + if (@file_exists("{$phpbb_root_path}styles/{$this->theme['imageset_path']}/imageset/{$this->img_lang}/imageset.cfg")) + { + $cfg_data_imageset_data = phpBB3::parse_cfg_file("{$phpbb_root_path}styles/{$this->theme['imageset_path']}/imageset/{$this->img_lang}/imageset.cfg"); + foreach ($cfg_data_imageset_data as $image_name => $value) + { + if (strpos($value, '*') !== false) + { + if (substr($value, -1, 1) === '*') + { + list($image_filename, $image_height) = explode('*', $value); + $image_width = 0; + } + else + { + list($image_filename, $image_height, $image_width) = explode('*', $value); + } + } + else + { + $image_filename = $value; + $image_height = $image_width = 0; + } + + if (strpos($image_name, 'img_') === 0 && $image_filename) + { + $image_name = substr($image_name, 4); + $sql_ary[] = array( + 'image_name' => (string) $image_name, + 'image_filename' => (string) $image_filename, + 'image_height' => (int) $image_height, + 'image_width' => (int) $image_width, + 'imageset_id' => (int) $this->theme['imageset_id'], + 'image_lang' => (string) $this->img_lang, + ); + } + } + } + + if (sizeof($sql_ary)) + { + $db->sql_multi_insert(STYLES_IMAGESET_DATA_TABLE, $sql_ary); + $db->sql_transaction('commit'); + $mx_cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE); + + mx_add_log('admin', 'LOG_IMAGESET_LANG_REFRESHED', $this->theme['imageset_name'], $this->img_lang); + } + else + { + $db->sql_transaction('commit'); + mx_add_log('admin', 'LOG_IMAGESET_LANG_MISSING', $this->theme['imageset_name'], $this->img_lang); + } + } + // If this function got called from the error handler we are finished here. + if (defined('IN_ERROR_HANDLER')) + { + return; + } + // Disable board if the install/ directory is still present + // For the brave development army we do not care about this, else we need to comment out this everytime we develop locally + if (!defined('DEBUG_EXTRA') && !defined('ADMIN_START') && !defined('IN_INSTALL') && !defined('IN_LOGIN') && file_exists($phpbb_root_path . 'install')) + { + // Adjust the message slightly according to the permissions + if ($phpbb_auth->acl_gets('a_', 'm_') || $phpbb_auth->acl_getf_global('m_')) + { + $message = 'REMOVE_INSTALL'; + } + else + { + $message = (!empty($portal_config['disabled_message'])) ? $portal_config['disabled_message'] : 'BOARD_DISABLE'; + } + trigger_error($message); + } + // Is portal disabled and user not an admin or moderator? + if (($portal_config['portal_status'] == '0') && !defined('IN_LOGIN') && !$phpbb_auth->acl_gets('a_', 'm_') && !$phpbb_auth->acl_getf_global('m_')) + { + @header('HTTP/1.1 503 Service Unavailable'); + // Is board disabled and user not an admin or moderator? + if($board_config['board_disable_mess_st']) + { + $message_st = $board_config['board_disable_message']; + } + else + { + $message_st = (!empty($lang['Board_disabled'])) ? $lang['Board_disabled'] : 'BOARD_DISABLE'; + } + $message = (!empty($portal_config['disabled_message'])) ? $portal_config['disabled_message'] : $message_st; + trigger_error($message); + } + // Is load exceeded? + if ($board_config['limit_load'] && $this->load !== false) + { + if ($this->load > floatval($board_config['limit_load']) && !defined('IN_LOGIN')) + { + // Set board disabled to true to let the admins/mods get the proper notification + $board_config['board_disable'] = '1'; + $portal_config['portal_status'] = '0'; + if (!$phpbb_auth->acl_gets('a_', 'm_') && !$phpbb_auth->acl_getf_global('m_')) + { + @header('HTTP/1.1 503 Service Unavailable'); + trigger_error('BOARD_UNAVAILABLE'); + } + } + } + if (isset($this->data['session_viewonline'])) + { + // Make sure the user is able to hide his session + if (!$this->data['session_viewonline']) + { + // Reset online status if not allowed to hide the session... + if (!$phpbb_auth->acl_get('u_hideonline')) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_viewonline = 1 + WHERE session_user_id = ' . $this->data['user_id']; + $db->sql_query($sql); + $this->data['session_viewonline'] = 1; + } + } + else if (!$this->data['user_allow_viewonline']) + { + // the user wants to hide and is allowed to -> cloaking device on. + if ($phpbb_auth->acl_get('u_hideonline')) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_viewonline = 0 + WHERE session_user_id = ' . $this->data['user_id']; + $db->sql_query($sql); + $this->data['session_viewonline'] = 0; + } + } + } + // Does the user need to change their password? If so, redirect to the + // ucp profile reg_details page ... of course do not redirect if we're already in the ucp + if (!defined('IN_ADMIN') && !defined('ADMIN_START') && $board_config['chg_passforce'] && $this->data['is_registered'] && $phpbb_auth->acl_get('u_chgpasswd') && $this->data['user_passchg'] < time() - ($board_config['chg_passforce'] * 86400)) + { + if (strpos($this->page['query_string'], 'mode=reg_details') === false && $this->page['page_name'] != "ucp.$phpEx") + { + mx_redirect(mx_append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=profile&mode=reg_details')); + } + } + return; + } + + /** + * Add Language Items - use_db and use_help are assigned where needed (only use them to force inclusion) + * + * @param mixed $lang_set specifies the language entries to include + * @param bool $use_db internal variable for recursion, do not use + * @param bool $use_help internal variable for recursion, do not use + * + * Examples: + * + * $lang_set = array('posting', 'help' => 'faq'); + * $lang_set = array('posting', 'viewtopic', 'help' => array('bbcode', 'faq')) + * $lang_set = array(array('posting', 'viewtopic'), 'help' => array('bbcode', 'faq')) + * $lang_set = 'posting' + * $lang_set = array('help' => 'faq', 'db' => array('help:faq', 'posting')) + * + */ + function add_lang($lang_set, $use_db = false, $use_help = false) + { + global $phpEx; + + if (is_array($lang_set)) + { + foreach ($lang_set as $key => $lang_file) + { + // Please do not delete this line. + // We have to force the type here, else [array] language inclusion will not work + $key = (string) $key; + + if ($key == 'db') + { + $this->add_lang($lang_file, true, $use_help); + } + else if ($key == 'help') + { + $this->add_lang($lang_file, $use_db, true); + } + else if (!is_array($lang_file)) + { + $this->set_lang($this->lang, $this->help, $lang_file, $use_db, $use_help); + } + else + { + $this->add_lang($lang_file, $use_db, $use_help); + } + } + unset($lang_set); + } + elseif ($lang_set) + { + $this->set_lang($this->lang, $this->help, $lang_set, $use_db, $use_help); + } + } + + /** + * Set language entry (called by add_lang) + * @access private + */ + function set_lang(&$lang, &$help, $lang_file, $use_db = false, $use_help = false) + { + global $phpbb_root_path, $phpEx; + + // Make sure the language path is set (if the user setup did not happen it is not set) + if (!$this->lang_path) + { + global $board_config; + + $this->lang_path = $phpbb_root_path . 'language/' . basename($board_config['phpbb_lang']) . '/'; + } + + // $lang == $this->lang + // $help == $this->help + // - add appropriate variables here, name them as they are used within the language file... + if (!$use_db) + { + if ($use_help && strpos($lang_file, '/') !== false) + { + $language_filename = $this->lang_path . substr($lang_file, 0, stripos($lang_file, '/') + 1) . 'help_' . substr($lang_file, stripos($lang_file, '/') + 1) . '.' . $phpEx; + } + else + { + $language_filename = $this->lang_path . (($use_help) ? 'help_' : '') . $lang_file . '.' . $phpEx; + } + + //fix for mxp + if ((@include $language_filename) === false) + { + //this will fix the path for anonymouse users + if ((@include $phpbb_root_path . $language_filename) === false) + { + die('Language file ' . $language_filename . ' couldn\'t be opened.'); + } + } + } + else + { + // Get Database Language Strings + // Put them into $lang if nothing is prefixed, put them into $help if help: is prefixed + // For example: help:faq, posting + die("You should not use db with MX-Publisher!"); + } + + // We include common language file here to not load it every time a custom language file is included + $this->lang = &$lang; + } + + /** + * Format user date + * + * @param int $gmepoch unix timestamp + * @param string $format date format in date() notation. | used to indicate relative dates, for example |d m Y|, h:i is translated to Today, h:i. + * @param bool $forcedate force non-relative date format. + * + * @return mixed translated date + */ + function format_date($gmepoch, $format = false, $forcedate = false) + { + static $midnight; + static $date_cache; + + $format = (!$format) ? $this->date_format : $format; + $now = time(); + $delta = $now - $gmepoch; + + if (!isset($date_cache[$format])) + { + // Is the user requesting a friendly date format (i.e. 'Today 12:42')? + $date_cache[$format] = array( + 'is_short' => strpos($format, '|'), + 'format_short' => substr($format, 0, strpos($format, '|')) . '||' . substr(strrchr($format, '|'), 1), + 'format_long' => str_replace('|', '', $format), + // Filter out values that are not strings (e.g. arrays) for strtr(). + 'lang' => array_filter($this->lang['datetime'], 'is_string'), + ); + + // Short representation of month in format? Some languages use different terms for the long and short format of May + if ((strpos($format, '\M') === false && strpos($format, 'M') !== false) || (strpos($format, '\r') === false && strpos($format, 'r') !== false)) + { + $date_cache[$format]['lang']['May'] = $this->lang['datetime']['May_short']; + } + } + + // Zone offset + $zone_offset = $this->timezone + $this->dst; + + // Show date <= 1 hour ago as 'xx min ago' but not greater than 60 seconds in the future + // A small tolerence is given for times in the future but in the same minute are displayed as '< than a minute ago' + if ($delta <= 3600 && $delta > -60 && ($delta >= -5 || (($now / 60) % 60) == (($gmepoch / 60) % 60)) && $date_cache[$format]['is_short'] !== false && !$forcedate && isset($this->lang['datetime']['AGO'])) + { + return $this->lang(array('datetime', 'AGO'), max(0, (int) floor($delta / 60))); + } + + if (!$midnight) + { + list($d, $m, $y) = explode(' ', gmdate('j n Y', time() + $zone_offset)); + $midnight = gmmktime(0, 0, 0, $m, $d, $y) - $zone_offset; + } + + if ($date_cache[$format]['is_short'] !== false && !$forcedate && !($gmepoch < $midnight - 86400 || $gmepoch > $midnight + 172800)) + { + $day = false; + + if ($gmepoch > $midnight + 86400) + { + $day = 'TOMORROW'; + } + else if ($gmepoch > $midnight) + { + $day = 'TODAY'; + } + else if ($gmepoch > $midnight - 86400) + { + $day = 'YESTERDAY'; + } + + if ($day !== false) + { + return str_replace('||', $this->lang['datetime'][$day], strtr(@gmdate($date_cache[$format]['format_short'], $gmepoch + $zone_offset), $date_cache[$format]['lang'])); + } + } + + return strtr(@gmdate($date_cache[$format]['format_long'], $gmepoch + $zone_offset), $date_cache[$format]['lang']); + } + + /** + * Get language id currently used by the user + **/ + function get_iso_lang_id() + { + global $board_config, $db; + + if (!empty($this->lang_id)) + { + return $this->lang_id; + } + + if (!$this->lang_name) + { + $this->lang_name = $board_config['default_lang']; + } + + $sql = 'SELECT lang_id + FROM ' . LANG_TABLE . " + WHERE lang_iso = '" . $db->sql_escape($this->lang_name) . "'"; + $result = $db->sql_query($sql); + $this->lang_id = (int) $db->sql_fetchfield('lang_id'); + $db->sql_freeresult($result); + + return $this->lang_id; + } + + /** + * Get users profile fields + */ + function get_profile_fields($user_id) + { + global $db; + + if (isset($this->profile_fields)) + { + return; + } + + $sql = 'SELECT * + FROM ' . PROFILE_FIELDS_DATA_TABLE . " + WHERE user_id = $user_id"; + $result = $db->sql_query_limit($sql, 1); + $this->profile_fields = (!($row = $db->sql_fetchrow($result))) ? array() : $row; + $db->sql_freeresult($result); + } + + /** + * Gets the user's info + * + * Will take the users email, username or member id and return their data + * + * @param int || string $username the user's email address username or member id + * @return array $results containing the user info || bool false + * @since 0.1.2 + */ + function load_user($user, $force_str = false) + { + if (!is_numeric($user) || $force_str) + { + $user = phpBB2::phpbb_clean_username($user); + } + else + { + $user = intval($user); + } + + //$this->data = array(); + + // we'll try id || email, then username + if (is_numeric($user)) + { + // number is most likely a member id + $this->data = get_user_by_id($user); + } + else + { + // the email can't be purely numeric + $this->data = get_user_by_email($user); + } + + if (empty($this->data)) + { + $this->data = get_user_by_username($user); + } + /* + if (empty($this->data)) + { + return false; + } + else + { + return $this->data; + } + */ + } + + /** + * Load user helper + * + * @param array $user_ids + */ + function load_users(array $user_ids) + { + $user_ids[] = ANONYMOUS; + + // Make user_ids unique and convert to integer. + $user_ids = array_map('intval', array_unique($user_ids)); + + // Do not load users we already have in $this->users + $user_ids = array_diff($user_ids, array_keys($this->users)); + + if (sizeof($user_ids)) + { + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE ' . $db->sql_in_set('user_id', $user_ids); + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $this->users[$row['user_id']] = $row; + } + $db->sql_freeresult($result); + } + } + + /** + * Gets the user's info from their email address + * + * Will take the users email address and return an array containing all the + * user's information in the db. Will return false on failure + * + * @param string $email the user's email address + * @return array $results containing the user info || bool false + * @since 0.1.0 + */ + function get_user_by_email($email_address = '') + { + global $db; + if ('' == $email_address || !is_string($email_address) || 2 > count(explode('@', $email_address))) + { + return false; + } + $sql = $db->sql_build_query('SELECT', ' + SELECT * FROM ' . USERS_TABLE . ' + WHERE email_address = {string:email_address}', + array('email_address' => $email_address, )); + $result = $db->sql_query_limit($sql, 1); + $return = $db->sql_fetchrow($result); + if (!$return) + { + $db->sql_freeresult($result); + //trigger_error($mx_user->lang['NO_USER'] . adm_back_link($this->u_action), E_USER_WARNING); + } + if (empty($return)) + { + return false; + } + else + { + // return all the results. + return $return; + } + } + + /** + * Gets the user's info from their member id + * + * Will take the users member id and return an array containing all the + * user's information in the db. Will return false on failure + * + * @param int $id the user's member id + * @return array $results containing the user info || bool false + * @since 0.1.2 + */ + function get_user_by_id($user_id = '') + { + global $db; + if ('' == $user_id || !is_numeric($user_id)) + { + return false; + } + else + { + $id = intval($user_id); + if (0 == $user_id) + { + return false; + } + } + $sql = $db->sql_build_query('SELECT', ' + SELECT * FROM ' . USERS_TABLE . ' + WHERE user_id = {int:user_id}', + array('user_id' => $user_id, )); + $result = $db->sql_query_limit($sql, 1); + $return = $db->sql_fetchrow($result); + if (!$return) + { + $db->sql_freeresult($result); + //trigger_error($mx_user->lang['NO_USER'] . adm_back_link($this->u_action), E_USER_WARNING); + } + if (empty($return)) + { + return false; + } + else + { + // return all the results. + return $return; + } + } + + /** + * Gets the user's info from their member name (username) + * + * Will take the users member name and return an array containing all the + * user's information in the db. Will return false on failure + * + * @param string $username the user's member name + * @return array $results containing the user info || bool false + * @since 0.1.0 + */ + function get_user_by_name($user_name = '') + { + global $db; + if ('' == $user_name || !is_string($user_name)) + { + return false; + } + $sql = $db->sql_build_query('SELECT', ' + SELECT * FROM ' . USERS_TABLE . ' + WHERE user_name = {string:user_name}', + array('user_name' => $user_name, )); + $result = $db->sql_query_limit($sql, 1); + $return = $db->sql_fetchrow($result); + if (!$return) + { + $db->sql_freeresult($result); + //trigger_error($mx_user->lang['NO_USER'] . adm_back_link($this->u_action), E_USER_WARNING); + } + if (empty($return)) + { + return false; + } + else + { + // return all the results. + return $return; + } + } + + /** + * Specify/Get images + */ + function images($img, $alt = '', $width = false, $suffix = '', $type = 'src') + { + static $imgs; + global $phpbb_root_path, $mx_root_path; + $img_data = &$imgs[$img]; + + if (empty($img_data)) + { + if (!isset($this->img_array[$img])) + { + // Do not fill the image to let designers decide what to do if the image is empty + $img_data = ''; + return $img_data; + } + $img_data['image_lang'] = $this->img_array[$img]['image_lang']; + $img_data['src'] = (!empty($img_data['image_lang']) ? (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/' . $img_data['image_lang'] . '/' . $this->img_array[$img]['image_filename']) : (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/images/' . $this->img_array[$img]['image_filename'])); + $img_data['width'] = $this->img_array[$img]['image_width']; + $img_data['height'] = $this->img_array[$img]['image_height']; + } + + $alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt; + + switch ($type) + { + case 'full_tag': + $use_width = ($width === false) ? $img_data['width'] : $width; + + return '' . $alt . ''; + break; + + case 'width': + return ($width === false) ? $img_data['width'] : $width; + break; + + case 'height': + return $img_data['height']; + break; + + default: + return $img_data['src']; + break; + } + } + + /** + * Specify/Get image + */ + function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag') + { + static $imgs; + global $phpbb_root_path, $mx_root_path; + + $img_data = &$imgs[$img]; + + if (empty($img_data)) + { + if (!isset($this->img_array[$img])) + { + // Do not fill the image to let designers decide what to do if the image is empty + $img_data = ''; + return $img_data; + } + $img_data['src'] = (!empty($this->img_array[$img]['image_lang']) ? (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/' . $this->img_array[$img]['image_lang'] . '/' . $this->img_array[$img]['image_filename']) : (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/images/' . $this->img_array[$img]['image_filename'])); + $img_data['width'] = $this->img_array[$img]['image_width']; + $img_data['height'] = $this->img_array[$img]['image_height']; + } + + $alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt; + //die($img_data); + switch ($type) + { + case 'src': + return $img_data['src']; + break; + + case 'width': + return ($width === false) ? $img_data['width'] : $width; + break; + + case 'height': + return $img_data['height']; + break; + + default: + $use_width = ($width === false) ? $img_data['width'] : $width; + + return '' . $alt . ''; + break; + } + } + + /** + * Get option bit field from user options + */ + function optionget($key, $data = false) + { + if (!isset($this->keyvalues[$key])) + { + $var = ($data) ? $data : $this->data['user_options']; + $this->keyvalues[$key] = ($var & 1 << $this->keyoptions[$key]) ? true : false; + } + + return $this->keyvalues[$key]; + } + + /** + * Set option bit field for user options + */ + function optionset($key, $value, $data = false) + { + $var = ($data) ? $data : $this->data['user_options']; + + if ($value && !($var & 1 << $this->keyoptions[$key])) + { + $var += 1 << $this->keyoptions[$key]; + } + else if (!$value && ($var & 1 << $this->keyoptions[$key])) + { + $var -= 1 << $this->keyoptions[$key]; + } + else + { + return ($data) ? $var : false; + } + + if (!$data) + { + $this->data['user_options'] = $var; + return true; + } + else + { + return $var; + } + } + + /** + * encode_lang + * + * $default_lang = $mx_user->encode_lang($board_config['default_lang']); + * + * @param unknown_type $lang + * @return unknown + */ + function encode_lang($lang) + { + switch($lang) + { + case 'afar': + $lang_name = 'aa'; + break; + case 'abkhazian': + $lang_name = 'ab'; + break; + case 'avestan': + $lang_name = 'ae'; + break; + case 'afrikaans': + $lang_name = 'af'; + break; + case 'akan': + $lang_name = 'ak'; + break; + case 'amharic': + $lang_name = 'am'; + break; + case 'aragonese': + $lang_name = 'an'; + break; + case 'arabic': + $lang_name = 'ar'; + break; + case 'assamese': + $lang_name = 'as'; + break; + case 'avaric': + $lang_name = 'av'; + break; + case 'aymara': + $lang_name = 'ay'; + break; + case 'azerbaijani': + $lang_name = 'az'; + break; + case 'bashkir': + $lang_name = 'ba'; + break; + case 'belarusian': + $lang_name = 'be'; + break; + case 'bulgarian': + $lang_name = 'bg'; + break; + case 'bihari': + $lang_name = 'bh'; + break; + case 'bislama': + $lang_name = 'bi'; + break; + case 'bambara': + $lang_name = 'bm'; + break; + case 'bengali': + $lang_name = 'bn'; + break; + case 'tibetan': + $lang_name = 'bo'; + break; + case 'breton': + $lang_name = 'br'; + break; + case 'bosnian': + $lang_name = 'bs'; + break; + case 'catalan': + $lang_name = 'ca'; + break; + case 'chechen': + $lang_name = 'ce'; + break; + case 'chamorro': + $lang_name = 'ch'; + break; + case 'corsican': + $lang_name = 'co'; + break; + case 'cree': + $lang_name = 'cr'; + break; + case 'czech': + $lang_name = 'cs'; + break; + case 'slavonic': + $lang_name = 'cu'; + break; + case 'chuvash': + $lang_name = 'cv'; + break; + case 'welsh_cymraeg': + $lang_name = 'cy'; + break; + case 'danish': + $lang_name = 'da'; + break; + case 'german': + $lang_name = 'de'; + break; + case 'divehi': + $lang_name = 'dv'; + break; + case 'dzongkha': + $lang_name = 'dz'; + break; + case 'ewe': + $lang_name = 'ee'; + break; + case 'greek': + $lang_name = 'el'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'english': + $lang_name = 'en'; + break; + case 'english_us': + $lang_name = 'en_us'; + break; + case 'esperanto': + $lang_name = 'eo'; + break; + case 'spanish': + $lang_name = 'es'; + break; + case 'estonian': + $lang_name = 'et'; + break; + case 'basque': + $lang_name = 'eu'; + break; + case 'persian': + $lang_name = 'fa'; + break; + case 'fulah': + $lang_name = 'ff'; + break; + case 'finnish': + $lang_name = 'fi'; + break; + case 'fijian': + $lang_name = 'fj'; + break; + case 'faroese': + $lang_name = 'fo'; + break; + case 'french': + $lang_name = 'fr'; + break; + case 'frisian': + $lang_name = 'fy'; + break; + case 'irish': + $lang_name = 'ga'; + break; + case 'scottish': + $lang_name = 'gd'; + break; + case 'galician': + $lang_name = 'gl'; + break; + case 'guaraní': + $lang_name = 'gn'; + break; + case 'gujarati': + $lang_name = 'gu'; + break; + case 'manx': + $lang_name = 'gv'; + break; + case 'hausa': + $lang_name = 'ha'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'hindi': + $lang_name = 'hi'; + break; + case 'hiri_motu': + $lang_name = 'ho'; + break; + case 'croatian': + $lang_name = 'hr'; + break; + case 'haitian': + $lang_name = 'ht'; + break; + case 'hungarian': + $lang_name = 'hu'; + break; + case 'armenian': + $lang_name = 'hy'; + break; + case 'herero': + $lang_name = 'hz'; + break; + case 'interlingua': + $lang_name = 'ia'; + break; + case 'indonesian': + $lang_name = 'id'; + break; + case 'interlingue': + $lang_name = 'ie'; + break; + case 'igbo': + $lang_name = 'ig'; + break; + case 'sichuan_yi': + $lang_name = 'ii'; + break; + case 'inupiaq': + $lang_name = 'ik'; + break; + case 'ido': + $lang_name = 'io'; + break; + case 'icelandic': + $lang_name = 'is'; + break; + case 'italian': + $lang_name = 'it'; + break; + case 'inuktitut': + $lang_name = 'iu'; + break; + case 'japanese': + $lang_name = 'ja'; + break; + case 'javanese': + $lang_name = 'jv'; + break; + case 'georgian': + $lang_name = 'ka'; + break; + case 'kongo': + $lang_name = 'kg'; + break; + case 'kikuyu': + $lang_name = 'ki'; + break; + case 'kwanyama': + $lang_name = 'kj'; + break; + case 'kazakh': + $lang_name = 'kk'; + break; + case 'kalaallisut': + $lang_name = 'kl'; + break; + case 'khmer': + $lang_name = 'km'; + break; + case 'kannada': + $lang_name = 'kn'; + break; + case 'korean': + $lang_name = 'ko'; + break; + case 'kanuri': + $lang_name = 'kr'; + break; + case 'kashmiri': + $lang_name = 'ks'; + break; + case 'kurdish': + $lang_name = 'ku'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'cornish_kernewek': + $lang_name = 'kw'; + break; + case 'kirghiz': + $lang_name = 'ky'; + break; + case 'latin': + $lang_name = 'la'; + break; + case 'luxembourgish': + $lang_name = 'lb'; + break; + case 'ganda': + $lang_name = 'lg'; + break; + case 'limburgish': + $lang_name = 'li'; + break; + case 'lingala': + $lang_name = 'ln'; + break; + case 'lao': + $lang_name = 'lo'; + break; + case 'lithuanian': + $lang_name = 'lt'; + break; + case 'luba-katanga': + $lang_name = 'lu'; + break; + case 'latvian': + $lang_name = 'lv'; + break; + case 'malagasy': + $lang_name = 'mg'; + break; + case 'marshallese': + $lang_name = 'mh'; + break; + case 'maori': + $lang_name = 'mi'; + break; + case 'macedonian': + $lang_name = 'mk'; + break; + case 'malayalam': + $lang_name = 'ml'; + break; + case 'mongolian': + $lang_name = 'mn'; + break; + case 'moldavian': + $lang_name = 'mo'; + break; + case 'marathi': + $lang_name = 'mr'; + break; + case 'malay': + $lang_name = 'ms'; + break; + case 'maltese': + $lang_name = 'mt'; + break; + case 'burmese': + $lang_name = 'my'; + break; + case 'nauruan': + $lang_name = 'na'; + break; + case 'norwegian': + $lang_name = 'nb'; + break; + case 'ndebele': + $lang_name = 'nd'; + break; + case 'nepali': + $lang_name = 'ne'; + break; + case 'ndonga': + $lang_name = 'ng'; + break; + case 'dutch': + $lang_name = 'nl'; + break; + case 'norwegian_nynorsk': + $lang_name = 'nn'; + break; + case 'norwegian': + $lang_name = 'no'; + break; + case 'southern_ndebele': + $lang_name = 'nr'; + break; + case 'navajo': + $lang_name = 'nv'; + break; + case 'chichewa': + $lang_name = 'ny'; + break; + case 'occitan': + $lang_name = 'oc'; + break; + case 'ojibwa': + $lang_name = 'oj'; + break; + case 'oromo': + $lang_name = 'om'; + break; + case 'oriya': + $lang_name = 'or'; + break; + case 'ossetian': + $lang_name = 'os'; + break; + case 'panjabi': + $lang_name = 'pa'; + break; + case 'pali': + $lang_name = 'pi'; + break; + case 'polish': + $lang_name = 'pl'; + break; + case 'pashto': + $lang_name = 'ps'; + break; + case 'portuguese': + $lang_name = 'pt'; + break; + case 'portuguese_brasil': + $lang_name = 'pt_br'; + break; + case 'quechua': + $lang_name = 'qu'; + break; + case 'romansh': + $lang_name = 'rm'; + break; + case 'kirundi': + $lang_name = 'rn'; + break; + case 'romanian': + $lang_name = 'ro'; + break; + case 'russian': + $lang_name = 'ru'; + break; + case 'kinyarwanda': + $lang_name = 'rw'; + break; + case 'sanskrit': + $lang_name = 'sa'; + break; + case 'sardinian': + $lang_name = 'sc'; + break; + case 'sindhi': + $lang_name = 'sd'; + break; + case 'northern_sami': + $lang_name = 'se'; + break; + case 'sango': + $lang_name = 'sg'; + break; + case 'serbo-croatian': + $lang_name = 'sh'; + break; + case 'sinhala': + $lang_name = 'si'; + break; + case 'slovak': + $lang_name = 'sk'; + break; + case 'slovenian': + $lang_name = 'sl'; + break; + case 'samoan': + $lang_name = 'sm'; + break; + case 'shona': + $lang_name = 'sn'; + break; + case 'somali': + $lang_name = 'so'; + break; + case 'albanian': + $lang_name = 'sq'; + break; + case 'serbian': + $lang_name = 'sr'; + break; + case 'swati': + $lang_name = 'ss'; + break; + case 'sotho': + $lang_name = 'st'; + break; + case 'sundanese': + $lang_name = 'su'; + break; + case 'swedish': + $lang_name = 'sv'; + break; + case 'swahili': + $lang_name = 'sw'; + break; + case 'tamil': + $lang_name = 'ta'; + break; + case 'telugu': + $lang_name = 'te'; + break; + case 'tajik': + $lang_name = 'tg'; + break; + case 'thai': + $lang_name = 'th'; + break; + case 'tigrinya': + $lang_name = 'ti'; + break; + case 'turkmen': + $lang_name = 'tk'; + break; + case 'tagalog': + $lang_name = 'tl'; + break; + case 'tswana': + $lang_name = 'tn'; + break; + case 'tonga': + $lang_name = 'to'; + break; + case 'turkish': + $lang_name = 'tr'; + break; + case 'tsonga': + $lang_name = 'ts'; + break; + case 'tatar': + $lang_name = 'tt'; + break; + case 'twi': + $lang_name = 'tw'; + break; + case 'tahitian': + $lang_name = 'ty'; + break; + case 'uighur': + $lang_name = 'ug'; + break; + case 'ukrainian': + $lang_name = 'uk'; + break; + case 'urdu': + $lang_name = 'ur'; + break; + case 'uzbek': + $lang_name = 'uz'; + break; + case 'venda': + $lang_name = 've'; + break; + case 'vietnamese': + $lang_name = 'vi'; + break; + case 'volapuk': + $lang_name = 'vo'; + break; + case 'walloon': + $lang_name = 'wa'; + break; + case 'wolof': + $lang_name = 'wo'; + break; + case 'xhosa': + $lang_name = 'xh'; + break; + case 'yiddish': + $lang_name = 'yi'; + break; + case 'yoruba': + $lang_name = 'yo'; + break; + case 'zhuang': + $lang_name = 'za'; + break; + case 'chinese': + $lang_name = 'zh'; + break; + case 'chinese_simplified': + $lang_name = 'zh_cmn_hans'; + break; + case 'chinese_traditional': + $lang_name = 'zh_cmn_hant'; + break; + case 'zulu': + $lang_name = 'zu'; + break; + default: + $lang_name = $lang; + break; + } + return $lang_name; + } + + /** + * decode_lang + * + * $default_lang = $mx_user->decode_lang($board_config['default_lang']); + * + * @param unknown_type $lang + * @return unknown + */ + function decode_lang($lang) + { + switch($lang) + { + case 'aa': + $lang_name = 'afar'; + break; + case 'ab': + $lang_name = 'abkhazian'; + break; + case 'ae': + $lang_name = 'avestan'; + break; + case 'af': + $lang_name = 'afrikaans'; + break; + case 'ak': + $lang_name = 'akan'; + break; + case 'am': + $lang_name = 'amharic'; + break; + case 'an': + $lang_name = 'aragonese'; + break; + case 'ar': + $lang_name = 'arabic'; + break; + case 'as': + $lang_name = 'assamese'; + break; + case 'av': + $lang_name = 'avaric'; + break; + case 'ay': + $lang_name = 'aymara'; + break; + case 'az': + $lang_name = 'azerbaijani'; + break; + case 'ba': + $lang_name = 'bashkir'; + break; + case 'be': + $lang_name = 'belarusian'; + break; + case 'bg': + $lang_name = 'bulgarian'; + break; + case 'bh': + $lang_name = 'bihari'; + break; + case 'bi': + $lang_name = 'bislama'; + break; + case 'bm': + $lang_name = 'bambara'; + break; + case 'bn': + $lang_name = 'bengali'; + break; + case 'bo': + $lang_name = 'tibetan'; + break; + case 'br': + $lang_name = 'breton'; + break; + case 'bs': + $lang_name = 'bosnian'; + break; + case 'ca': + $lang_name = 'catalan'; + break; + case 'ce': + $lang_name = 'chechen'; + break; + case 'ch': + $lang_name = 'chamorro'; + break; + case 'co': + $lang_name = 'corsican'; + break; + case 'cr': + $lang_name = 'cree'; + break; + case 'cs': + $lang_name = 'czech'; + break; + case 'cu': + $lang_name = 'slavonic'; + break; + case 'cv': + $lang_name = 'chuvash'; + break; + case 'cy': + $lang_name = 'welsh_cymraeg'; + break; + case 'da': + $lang_name = 'danish'; + break; + case 'de': + $lang_name = 'german'; + break; + case 'dv': + $lang_name = 'divehi'; + break; + case 'dz': + $lang_name = 'dzongkha'; + break; + case 'ee': + $lang_name = 'ewe'; + break; + case 'el': + $lang_name = 'greek'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'en': + $lang_name = 'english'; + break; + case 'en_us': + $lang_name = 'english'; + break; + case 'eo': + $lang_name = 'esperanto'; + break; + case 'es': + $lang_name = 'spanish'; + break; + case 'et': + $lang_name = 'estonian'; + break; + case 'eu': + $lang_name = 'basque'; + break; + case 'fa': + $lang_name = 'persian'; + break; + case 'ff': + $lang_name = 'fulah'; + break; + case 'fi': + $lang_name = 'finnish'; + break; + case 'fj': + $lang_name = 'fijian'; + break; + case 'fo': + $lang_name = 'faroese'; + break; + case 'fr': + $lang_name = 'french'; + break; + case 'fy': + $lang_name = 'frisian'; + break; + case 'ga': + $lang_name = 'irish'; + break; + case 'gd': + $lang_name = 'scottish'; + break; + case 'gl': + $lang_name = 'galician'; + break; + case 'gn': + $lang_name = 'guaraní'; + break; + case 'gu': + $lang_name = 'gujarati'; + break; + case 'gv': + $lang_name = 'manx'; + break; + case 'ha': + $lang_name = 'hausa'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'hi': + $lang_name = 'hindi'; + break; + case 'ho': + $lang_name = 'hiri_motu'; + break; + case 'hr': + $lang_name = 'croatian'; + break; + case 'ht': + $lang_name = 'haitian'; + break; + case 'hu': + $lang_name = 'hungarian'; + break; + case 'hy': + $lang_name = 'armenian'; + break; + case 'hz': + $lang_name = 'herero'; + break; + case 'ia': + $lang_name = 'interlingua'; + break; + case 'id': + $lang_name = 'indonesian'; + break; + case 'ie': + $lang_name = 'interlingue'; + break; + case 'ig': + $lang_name = 'igbo'; + break; + case 'ii': + $lang_name = 'sichuan_yi'; + break; + case 'ik': + $lang_name = 'inupiaq'; + break; + case 'io': + $lang_name = 'ido'; + break; + case 'is': + $lang_name = 'icelandic'; + break; + case 'it': + $lang_name = 'italian'; + break; + case 'iu': + $lang_name = 'inuktitut'; + break; + case 'ja': + $lang_name = 'japanese'; + break; + case 'jv': + $lang_name = 'javanese'; + break; + case 'ka': + $lang_name = 'georgian'; + break; + case 'kg': + $lang_name = 'kongo'; + break; + case 'ki': + $lang_name = 'kikuyu'; + break; + case 'kj': + $lang_name = 'kwanyama'; + break; + case 'kk': + $lang_name = 'kazakh'; + break; + case 'kl': + $lang_name = 'kalaallisut'; + break; + case 'km': + $lang_name = 'khmer'; + break; + case 'kn': + $lang_name = 'kannada'; + break; + case 'ko': + $lang_name = 'korean'; + break; + case 'kr': + $lang_name = 'kanuri'; + break; + case 'ks': + $lang_name = 'kashmiri'; + break; + case 'ku': + $lang_name = 'kurdish'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'kw': + $lang_name = 'cornish_kernewek'; + break; + case 'ky': + $lang_name = 'kirghiz'; + break; + case 'la': + $lang_name = 'latin'; + break; + case 'lb': + $lang_name = 'luxembourgish'; + break; + case 'lg': + $lang_name = 'ganda'; + break; + case 'li': + $lang_name = 'limburgish'; + break; + case 'ln': + $lang_name = 'lingala'; + break; + case 'lo': + $lang_name = 'lao'; + break; + case 'lt': + $lang_name = 'lithuanian'; + break; + case 'lu': + $lang_name = 'luba-katanga'; + break; + case 'lv': + $lang_name = 'latvian'; + break; + case 'mg': + $lang_name = 'malagasy'; + break; + case 'mh': + $lang_name = 'marshallese'; + break; + case 'mi': + $lang_name = 'maori'; + break; + case 'mk': + $lang_name = 'macedonian'; + break; + case 'ml': + $lang_name = 'malayalam'; + break; + case 'mn': + $lang_name = 'mongolian'; + break; + case 'mo': + $lang_name = 'moldavian'; + break; + case 'mr': + $lang_name = 'marathi'; + break; + case 'ms': + $lang_name = 'malay'; + break; + case 'mt': + $lang_name = 'maltese'; + break; + case 'my': + $lang_name = 'burmese'; + break; + case 'na': + $lang_name = 'nauruan'; + break; + case 'nb': + $lang_name = 'norwegian'; + break; + case 'nd': + $lang_name = 'ndebele'; + break; + case 'ne': + $lang_name = 'nepali'; + break; + case 'ng': + $lang_name = 'ndonga'; + break; + case 'nl': + $lang_name = 'dutch'; + break; + case 'nn': + $lang_name = 'norwegian_nynorsk'; + break; + case 'no': + $lang_name = 'norwegian'; + break; + case 'nr': + $lang_name = 'southern_ndebele'; + break; + case 'nv': + $lang_name = 'navajo'; + break; + case 'ny': + $lang_name = 'chichewa'; + break; + case 'oc': + $lang_name = 'occitan'; + break; + case 'oj': + $lang_name = 'ojibwa'; + break; + case 'om': + $lang_name = 'oromo'; + break; + case 'or': + $lang_name = 'oriya'; + break; + case 'os': + $lang_name = 'ossetian'; + break; + case 'pa': + $lang_name = 'panjabi'; + break; + case 'pi': + $lang_name = 'pali'; + break; + case 'pl': + $lang_name = 'polish'; + break; + case 'ps': + $lang_name = 'pashto'; + break; + case 'pt': + $lang_name = 'portuguese'; + break; + case 'pt_br': + $lang_name = 'portuguese_brasil'; + break; + case 'qu': + $lang_name = 'quechua'; + break; + case 'rm': + $lang_name = 'romansh'; + break; + case 'rn': + $lang_name = 'kirundi'; + break; + case 'ro': + $lang_name = 'romanian'; + break; + case 'ru': + $lang_name = 'russian'; + break; + case 'rw': + $lang_name = 'kinyarwanda'; + break; + case 'sa': + $lang_name = 'sanskrit'; + break; + case 'sc': + $lang_name = 'sardinian'; + break; + case 'sd': + $lang_name = 'sindhi'; + break; + case 'se': + $lang_name = 'northern_sami'; + break; + case 'sg': + $lang_name = 'sango'; + break; + case 'sh': + $lang_name = 'serbo-croatian'; + break; + case 'si': + $lang_name = 'sinhala'; + break; + case 'sk': + $lang_name = 'slovak'; + break; + case 'sl': + $lang_name = 'slovenian'; + break; + case 'sm': + $lang_name = 'samoan'; + break; + case 'sn': + $lang_name = 'shona'; + break; + case 'so': + $lang_name = 'somali'; + break; + case 'sq': + $lang_name = 'albanian'; + break; + case 'sr': + $lang_name = 'serbian'; + break; + case 'ss': + $lang_name = 'swati'; + break; + case 'st': + $lang_name = 'sotho'; + break; + case 'su': + $lang_name = 'sundanese'; + break; + case 'sv': + $lang_name = 'swedish'; + break; + case 'sw': + $lang_name = 'swahili'; + break; + case 'ta': + $lang_name = 'tamil'; + break; + case 'te': + $lang_name = 'telugu'; + break; + case 'tg': + $lang_name = 'tajik'; + break; + case 'th': + $lang_name = 'thai'; + break; + case 'ti': + $lang_name = 'tigrinya'; + break; + case 'tk': + $lang_name = 'turkmen'; + break; + case 'tl': + $lang_name = 'tagalog'; + break; + case 'tn': + $lang_name = 'tswana'; + break; + case 'to': + $lang_name = 'tonga'; + break; + case 'tr': + $lang_name = 'turkish'; + break; + case 'ts': + $lang_name = 'tsonga'; + break; + case 'tt': + $lang_name = 'tatar'; + break; + case 'tw': + $lang_name = 'twi'; + break; + case 'ty': + $lang_name = 'tahitian'; + break; + case 'ug': + $lang_name = 'uighur'; + break; + case 'uk': + $lang_name = 'ukrainian'; + break; + case 'ur': + $lang_name = 'urdu'; + break; + case 'uz': + $lang_name = 'uzbek'; + break; + case 've': + $lang_name = 'venda'; + break; + case 'vi': + $lang_name = 'vietnamese'; + break; + case 'vo': + $lang_name = 'volapuk'; + break; + case 'wa': + $lang_name = 'walloon'; + break; + case 'wo': + $lang_name = 'wolof'; + break; + case 'xh': + $lang_name = 'xhosa'; + break; + case 'yi': + $lang_name = 'yiddish'; + break; + case 'yo': + $lang_name = 'yoruba'; + break; + case 'za': + $lang_name = 'zhuang'; + break; + case 'zh': + $lang_name = 'chinese'; + break; + case 'zh_cmn_hans': + $lang_name = 'chinese_simplified'; + break; + case 'zh_cmn_hant': + $lang_name = 'chinese_traditional'; + break; + case 'zu': + $lang_name = 'zulu'; + break; + default: + $lang_name = $lang; + break; + } + return $lang_name; + } +} +?> \ No newline at end of file diff --git a/includes/sessions/rhea/CVS/Entries b/includes/sessions/rhea/CVS/Entries new file mode 100644 index 00000000..17848105 --- /dev/null +++ b/includes/sessions/rhea/CVS/Entries @@ -0,0 +1 @@ +D diff --git a/includes/sessions/rhea/CVS/Entries.Extra b/includes/sessions/rhea/CVS/Entries.Extra new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/rhea/CVS/Entries.Extra.Old b/includes/sessions/rhea/CVS/Entries.Extra.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/rhea/CVS/Entries.Old b/includes/sessions/rhea/CVS/Entries.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/rhea/CVS/Repository b/includes/sessions/rhea/CVS/Repository new file mode 100644 index 00000000..990aebee --- /dev/null +++ b/includes/sessions/rhea/CVS/Repository @@ -0,0 +1 @@ +core/includes/sessions/rhea diff --git a/includes/sessions/rhea/CVS/Root b/includes/sessions/rhea/CVS/Root new file mode 100644 index 00000000..6ab1483d --- /dev/null +++ b/includes/sessions/rhea/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@mxbb.cvs.sourceforge.net:/cvsroot/mxbb diff --git a/includes/sessions/rhea/auth.php b/includes/sessions/rhea/auth.php new file mode 100644 index 00000000..c18e3d20 --- /dev/null +++ b/includes/sessions/rhea/auth.php @@ -0,0 +1,998 @@ +acl = $this->cache = $this->acl_options = array(); + $this->acl_forum_ids = false; + + if (($this->acl_options = $mx_cache->get('_acl_options')) === false) + { + $sql = 'SELECT auth_option_id, auth_option, is_global, is_local + FROM ' . ACL_OPTIONS_TABLE . ' + ORDER BY auth_option_id'; + $result = $db->sql_query($sql); + + $global = $local = 0; + $this->acl_options = array(); + while ($row = $db->sql_fetchrow($result)) + { + if ($row['is_global']) + { + $this->acl_options['global'][$row['auth_option']] = $global++; + } + + if ($row['is_local']) + { + $this->acl_options['local'][$row['auth_option']] = $local++; + } + $this->acl_options['id'][$row['auth_option']] = (int) $row['auth_option_id']; + $this->acl_options['option'][(int) $row['auth_option_id']] = $row['auth_option']; + } + $db->sql_freeresult($result); + + $mx_cache->put('_acl_options', $this->acl_options); + $this->acl_cache($userdata); + } + else if (!trim($userdata['user_permissions'])) + { + $this->acl_cache($userdata); + } + + $user_permissions = explode("\n", $userdata['user_permissions']); + + foreach ($user_permissions as $f => $seq) + { + if ($seq) + { + $i = 0; + + if (!isset($this->acl[$f])) + { + $this->acl[$f] = ''; + } + + while ($subseq = substr($seq, $i, 6)) + { + // We put the original bitstring into the acl array + $this->acl[$f] .= str_pad(base_convert($subseq, 36, 2), 31, 0, STR_PAD_LEFT); + $i += 6; + } + } + } + + return; + } + + /** + * Look up an option + * if the option is prefixed with !, then the result becomes negated + * + * If a forum id is specified the local option will be combined with a global option if one exist. + * If a forum id is not specified, only the global option will be checked. + */ + function acl_get($opt, $f = 0) + { + $negate = false; + + if (strpos($opt, '!') === 0) + { + $negate = true; + $opt = substr($opt, 1); + } + + if (!isset($this->cache[$f][$opt])) + { + // We combine the global/local option with an OR because some options are global and local. + // If the user has the global permission the local one is true too and vice versa + $this->cache[$f][$opt] = false; + + // Is this option a global permission setting? + if (isset($this->acl_options['global'][$opt])) + { + if (isset($this->acl[0])) + { + $this->cache[$f][$opt] = $this->acl[0][$this->acl_options['global'][$opt]]; + } + } + + // Is this option a local permission setting? + // But if we check for a global option only, we won't combine the options... + if ($f != 0 && isset($this->acl_options['local'][$opt])) + { + if (isset($this->acl[$f]) && isset($this->acl[$f][$this->acl_options['local'][$opt]])) + { + $this->cache[$f][$opt] |= $this->acl[$f][$this->acl_options['local'][$opt]]; + } + } + } + + // Founder always has all global options set to true... + return ($negate) ? !$this->cache[$f][$opt] : $this->cache[$f][$opt]; + } + + /** + * Get forums with the specified permission setting + * if the option is prefixed with !, then the result becomes nagated + * + * @param bool $clean set to true if only values needs to be returned which are set/unset + */ + function acl_getf($opt, $clean = false) + { + $acl_f = array(); + $negate = false; + + if (strpos($opt, '!') === 0) + { + $negate = true; + $opt = substr($opt, 1); + } + + // If we retrieve a list of forums not having permissions in, we need to get every forum_id + if ($negate) + { + if ($this->acl_forum_ids === false) + { + global $db; + + $sql = 'SELECT forum_id + FROM ' . FORUMS_TABLE; + + if (sizeof($this->acl)) + { + $sql .= ' WHERE ' . $db->sql_in_set('forum_id', array_keys($this->acl), true); + } + $result = $db->sql_query($sql); + + $this->acl_forum_ids = array(); + while ($row = $db->sql_fetchrow($result)) + { + $this->acl_forum_ids[] = $row['forum_id']; + } + $db->sql_freeresult($result); + } + } + + if (isset($this->acl_options['local'][$opt])) + { + foreach ($this->acl as $f => $bitstring) + { + // Skip global settings + if (!$f) + { + continue; + } + + $allowed = (!isset($this->cache[$f][$opt])) ? $this->acl_get($opt, $f) : $this->cache[$f][$opt]; + + if (!$clean) + { + $acl_f[$f][$opt] = ($negate) ? !$allowed : $allowed; + } + else + { + if (($negate && !$allowed) || (!$negate && $allowed)) + { + $acl_f[$f][$opt] = 1; + } + } + } + } + + // If we get forum_ids not having this permission, we need to fill the remaining parts + if ($negate && sizeof($this->acl_forum_ids)) + { + foreach ($this->acl_forum_ids as $f) + { + $acl_f[$f][$opt] = 1; + } + } + + return $acl_f; + } + + /** + * Get local permission state for any forum. + * + * Returns true if user has the permission in one or more forums, false if in no forum. + * If global option is checked it returns the global state (same as acl_get($opt)) + * Local option has precedence... + */ + function acl_getf_global($opt) + { + if (is_array($opt)) + { + // evaluates to true as soon as acl_getf_global is true for one option + foreach ($opt as $check_option) + { + if ($this->acl_getf_global($check_option)) + { + return true; + } + } + + return false; + } + + if (isset($this->acl_options['local'][$opt])) + { + foreach ($this->acl as $f => $bitstring) + { + // Skip global settings + if (!$f) + { + continue; + } + + // as soon as the user has any permission we're done so return true + if ((!isset($this->cache[$f][$opt])) ? $this->acl_get($opt, $f) : $this->cache[$f][$opt]) + { + return true; + } + } + } + else if (isset($this->acl_options['global'][$opt])) + { + return $this->acl_get($opt); + } + + return false; + } + + /** + * Get permission settings (more than one) + */ + function acl_gets() + { + $args = func_get_args(); + $f = array_pop($args); + + if (!is_numeric($f)) + { + $args[] = $f; + $f = 0; + } + + // alternate syntax: acl_gets(array('m_', 'a_'), $forum_id) + if (is_array($args[0])) + { + $args = $args[0]; + } + + $acl = 0; + foreach ($args as $opt) + { + $acl |= $this->acl_get($opt, $f); + } + + return $acl; + } + + /** + * Get permission listing based on user_id/options/forum_ids + */ + function acl_get_list($user_id = false, $opts = false, $forum_id = false) + { + if ($user_id !== false && !is_array($user_id) && $opts === false && $forum_id === false) + { + $hold_ary = array($user_id => $this->acl_raw_data_single_user($user_id)); + } + else + { + $hold_ary = $this->acl_raw_data($user_id, $opts, $forum_id); + } + + $auth_ary = array(); + foreach ($hold_ary as $user_id => $forum_ary) + { + foreach ($forum_ary as $forum_id => $auth_option_ary) + { + foreach ($auth_option_ary as $auth_option => $auth_setting) + { + if ($auth_setting) + { + $auth_ary[$forum_id][$auth_option][] = $user_id; + } + } + } + } + + return $auth_ary; + } + + /** + * Cache data to user_permissions row + */ + function acl_cache(&$userdata) + { + global $db; + + // Empty user_permissions + $userdata['user_permissions'] = ''; + + $hold_ary = $this->acl_raw_data_single_user($userdata['user_id']); + + // Key 0 in $hold_ary are global options, all others are forum_ids + + // If this user is founder we're going to force fill the admin options ... + if ($userdata['user_type'] == USER_FOUNDER) + { + foreach ($this->acl_options['global'] as $opt => $id) + { + if (strpos($opt, 'a_') === 0) + { + $hold_ary[0][$this->acl_options['id'][$opt]] = ACL_YES; + } + } + } + + $hold_str = $this->build_bitstring($hold_ary); + + if ($hold_str) + { + $userdata['user_permissions'] = $hold_str; + + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_permissions = '" . $db->sql_escape($userdata['user_permissions']) . "', + user_perm_from = 0 + WHERE user_id = " . $userdata['user_id']; + $db->sql_query($sql); + } + + return; + } + + /** + * Build bitstring from permission set + */ + function build_bitstring(&$hold_ary) + { + $hold_str = ''; + + if (sizeof($hold_ary)) + { + ksort($hold_ary); + + $last_f = 0; + + foreach ($hold_ary as $f => $auth_ary) + { + $ary_key = (!$f) ? 'global' : 'local'; + + $bitstring = array(); + foreach ($this->acl_options[$ary_key] as $opt => $id) + { + if (isset($auth_ary[$this->acl_options['id'][$opt]])) + { + $bitstring[$id] = $auth_ary[$this->acl_options['id'][$opt]]; + + $option_key = substr($opt, 0, strpos($opt, '_') + 1); + + // If one option is allowed, the global permission for this option has to be allowed too + // example: if the user has the a_ permission this means he has one or more a_* permissions + if ($auth_ary[$this->acl_options['id'][$opt]] == ACL_YES && (!isset($bitstring[$this->acl_options[$ary_key][$option_key]]) || $bitstring[$this->acl_options[$ary_key][$option_key]] == ACL_NEVER)) + { + $bitstring[$this->acl_options[$ary_key][$option_key]] = ACL_YES; + } + } + else + { + $bitstring[$id] = ACL_NEVER; + } + } + + // Now this bitstring defines the permission setting for the current forum $f (or global setting) + $bitstring = implode('', $bitstring); + + // The line number indicates the id, therefore we have to add empty lines for those ids not present + $hold_str .= str_repeat("\n", $f - $last_f); + + // Convert bitstring for storage - we do not use binary/bytes because PHP's string functions are not fully binary safe + for ($i = 0, $bit_length = strlen($bitstring); $i < $bit_length; $i += 31) + { + $hold_str .= str_pad(base_convert(str_pad(substr($bitstring, $i, 31), 31, 0, STR_PAD_RIGHT), 2, 36), 6, 0, STR_PAD_LEFT); + } + + $last_f = $f; + } + unset($bitstring); + + $hold_str = rtrim($hold_str); + } + + return $hold_str; + } + + /** + * Clear one or all users cached permission settings + */ + function acl_clear_prefetch($user_id = false) + { + global $db, $mx_cache; + + // Rebuild options cache + $mx_cache->destroy('_role_cache'); + + $sql = 'SELECT * + FROM ' . ACL_ROLES_DATA_TABLE . ' + ORDER BY role_id ASC'; + $result = $db->sql_query($sql); + + $this->role_cache = array(); + while ($row = $db->sql_fetchrow($result)) + { + $this->role_cache[$row['role_id']][$row['auth_option_id']] = (int) $row['auth_setting']; + } + $db->sql_freeresult($result); + + foreach ($this->role_cache as $role_id => $role_options) + { + $this->role_cache[$role_id] = serialize($role_options); + } + + $mx_cache->put('_role_cache', $this->role_cache); + + // Now empty user permissions + + $where_sql = ''; + + if ($user_id !== false) + { + $user_id = (!is_array($user_id)) ? $user_id = array((int) $user_id) : array_map('intval', $user_id); + $where_sql = ' WHERE ' . $db->sql_in_set('user_id', $user_id); + } + + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_permissions = '', + user_perm_from = 0 + $where_sql"; + $db->sql_query($sql); + + return; + } + + /** + * Get assigned roles + */ + function acl_role_data($user_type, $role_type, $ug_id = false, $forum_id = false) + { + global $db; + + $roles = array(); + + $sql_id = ($user_type == 'user') ? 'user_id' : 'group_id'; + + $sql_ug = ($ug_id !== false) ? ((!is_array($ug_id)) ? "AND a.$sql_id = $ug_id" : 'AND ' . $db->sql_in_set("a.$sql_id", $ug_id)) : ''; + $sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? "AND a.forum_id = $forum_id" : 'AND ' . $db->sql_in_set('a.forum_id', $forum_id)) : ''; + + // Grab assigned roles... + $sql = 'SELECT a.auth_role_id, a.' . $sql_id . ', a.forum_id + FROM ' . (($user_type == 'user') ? ACL_USERS_TABLE : ACL_GROUPS_TABLE) . ' a, ' . ACL_ROLES_TABLE . " r + WHERE a.auth_role_id = r.role_id + AND r.role_type = '" . $db->sql_escape($role_type) . "' + $sql_ug + $sql_forum + ORDER BY r.role_order ASC"; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $roles[$row[$sql_id]][$row['forum_id']] = $row['auth_role_id']; + } + $db->sql_freeresult($result); + + return $roles; + } + + /** + * Get raw acl data based on user/option/forum + */ + function acl_raw_data($user_id = false, $opts = false, $forum_id = false) + { + global $db; + + $sql_user = ($user_id !== false) ? ((!is_array($user_id)) ? 'user_id = ' . (int) $user_id : $db->sql_in_set('user_id', array_map('intval', $user_id))) : ''; + $sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? 'AND a.forum_id = ' . (int) $forum_id : 'AND ' . $db->sql_in_set('a.forum_id', array_map('intval', $forum_id))) : ''; + + $sql_opts = $sql_opts_select = $sql_opts_from = ''; + $hold_ary = array(); + + if ($opts !== false) + { + $sql_opts_select = ', ao.auth_option'; + $sql_opts_from = ', ' . ACL_OPTIONS_TABLE . ' ao'; + $this->build_auth_option_statement('ao.auth_option', $opts, $sql_opts); + } + + $sql_ary = array(); + + // Grab non-role settings - user-specific + $sql_ary[] = 'SELECT a.user_id, a.forum_id, a.auth_setting, a.auth_option_id' . $sql_opts_select . ' + FROM ' . ACL_USERS_TABLE . ' a' . $sql_opts_from . ' + WHERE a.auth_role_id = 0 ' . + (($sql_opts_from) ? 'AND a.auth_option_id = ao.auth_option_id ' : '') . + (($sql_user) ? 'AND a.' . $sql_user : '') . " + $sql_forum + $sql_opts"; + + // Now the role settings - user-specific + $sql_ary[] = 'SELECT a.user_id, a.forum_id, r.auth_option_id, r.auth_setting, r.auth_option_id' . $sql_opts_select . ' + FROM ' . ACL_USERS_TABLE . ' a, ' . ACL_ROLES_DATA_TABLE . ' r' . $sql_opts_from . ' + WHERE a.auth_role_id = r.role_id ' . + (($sql_opts_from) ? 'AND r.auth_option_id = ao.auth_option_id ' : '') . + (($sql_user) ? 'AND a.' . $sql_user : '') . " + $sql_forum + $sql_opts"; + + foreach ($sql_ary as $sql) + { + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $option = ($sql_opts_select) ? $row['auth_option'] : $this->acl_options['option'][$row['auth_option_id']]; + $hold_ary[$row['user_id']][$row['forum_id']][$option] = $row['auth_setting']; + } + $db->sql_freeresult($result); + } + + $sql_ary = array(); + + // Now grab group settings - non-role specific... + $sql_ary[] = 'SELECT ug.user_id, a.forum_id, a.auth_setting, a.auth_option_id' . $sql_opts_select . ' + FROM ' . ACL_GROUPS_TABLE . ' a, ' . USER_GROUP_TABLE . ' ug' . $sql_opts_from . ' + WHERE a.auth_role_id = 0 ' . + (($sql_opts_from) ? 'AND a.auth_option_id = ao.auth_option_id ' : '') . ' + AND a.group_id = ug.group_id + AND ug.user_pending = 0 + ' . (($sql_user) ? 'AND ug.' . $sql_user : '') . " + $sql_forum + $sql_opts"; + + // Now grab group settings - role specific... + $sql_ary[] = 'SELECT ug.user_id, a.forum_id, r.auth_setting, r.auth_option_id' . $sql_opts_select . ' + FROM ' . ACL_GROUPS_TABLE . ' a, ' . USER_GROUP_TABLE . ' ug, ' . ACL_ROLES_DATA_TABLE . ' r' . $sql_opts_from . ' + WHERE a.auth_role_id = r.role_id ' . + (($sql_opts_from) ? 'AND r.auth_option_id = ao.auth_option_id ' : '') . ' + AND a.group_id = ug.group_id + AND ug.user_pending = 0 + ' . (($sql_user) ? 'AND ug.' . $sql_user : '') . " + $sql_forum + $sql_opts"; + + foreach ($sql_ary as $sql) + { + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $option = ($sql_opts_select) ? $row['auth_option'] : $this->acl_options['option'][$row['auth_option_id']]; + + if (!isset($hold_ary[$row['user_id']][$row['forum_id']][$option]) || (isset($hold_ary[$row['user_id']][$row['forum_id']][$option]) && $hold_ary[$row['user_id']][$row['forum_id']][$option] != ACL_NEVER)) + { + $hold_ary[$row['user_id']][$row['forum_id']][$option] = $row['auth_setting']; + + // If we detect ACL_NEVER, we will unset the flag option (within building the bitstring it is correctly set again) + if ($row['auth_setting'] == ACL_NEVER) + { + $flag = substr($option, 0, strpos($option, '_') + 1); + + if (isset($hold_ary[$row['user_id']][$row['forum_id']][$flag]) && $hold_ary[$row['user_id']][$row['forum_id']][$flag] == ACL_YES) + { + unset($hold_ary[$row['user_id']][$row['forum_id']][$flag]); + +/* if (in_array(ACL_YES, $hold_ary[$row['user_id']][$row['forum_id']])) + { + $hold_ary[$row['user_id']][$row['forum_id']][$flag] = ACL_YES; + } +*/ + } + } + } + } + $db->sql_freeresult($result); + } + + return $hold_ary; + } + + /** + * Get raw user based permission settings + */ + function acl_user_raw_data($user_id = false, $opts = false, $forum_id = false) + { + global $db; + + $sql_user = ($user_id !== false) ? ((!is_array($user_id)) ? 'user_id = ' . (int) $user_id : $db->sql_in_set('user_id', array_map('intval', $user_id))) : ''; + $sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? 'AND a.forum_id = ' . (int) $forum_id : 'AND ' . $db->sql_in_set('a.forum_id', array_map('intval', $forum_id))) : ''; + + $sql_opts = ''; + $hold_ary = $sql_ary = array(); + + if ($opts !== false) + { + $this->build_auth_option_statement('ao.auth_option', $opts, $sql_opts); + } + + // Grab user settings - non-role specific... + $sql_ary[] = 'SELECT a.user_id, a.forum_id, a.auth_setting, a.auth_option_id, ao.auth_option + FROM ' . ACL_USERS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . ' ao + WHERE a.auth_role_id = 0 + AND a.auth_option_id = ao.auth_option_id ' . + (($sql_user) ? 'AND a.' . $sql_user : '') . " + $sql_forum + $sql_opts + ORDER BY a.forum_id, ao.auth_option"; + + // Now the role settings - user-specific + $sql_ary[] = 'SELECT a.user_id, a.forum_id, r.auth_option_id, r.auth_setting, r.auth_option_id, ao.auth_option + FROM ' . ACL_USERS_TABLE . ' a, ' . ACL_ROLES_DATA_TABLE . ' r, ' . ACL_OPTIONS_TABLE . ' ao + WHERE a.auth_role_id = r.role_id + AND r.auth_option_id = ao.auth_option_id ' . + (($sql_user) ? 'AND a.' . $sql_user : '') . " + $sql_forum + $sql_opts + ORDER BY a.forum_id, ao.auth_option"; + + foreach ($sql_ary as $sql) + { + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $hold_ary[$row['user_id']][$row['forum_id']][$row['auth_option']] = $row['auth_setting']; + } + $db->sql_freeresult($result); + } + return $hold_ary; + } + + /** + * Get raw group based permission settings + */ + function acl_group_raw_data($group_id = false, $opts = false, $forum_id = false) + { + global $db; + + $sql_group = ($group_id !== false) ? ((!is_array($group_id)) ? 'group_id = ' . (int) $group_id : $db->sql_in_set('group_id', array_map('intval', $group_id))) : ''; + $sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? 'AND a.forum_id = ' . (int) $forum_id : 'AND ' . $db->sql_in_set('a.forum_id', array_map('intval', $forum_id))) : ''; + + $sql_opts = ''; + $hold_ary = $sql_ary = array(); + + if ($opts !== false) + { + $this->build_auth_option_statement('ao.auth_option', $opts, $sql_opts); + } + + // Grab group settings - non-role specific... + $sql_ary[] = 'SELECT a.group_id, a.forum_id, a.auth_setting, a.auth_option_id, ao.auth_option + FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . ' ao + WHERE a.auth_role_id = 0 + AND a.auth_option_id = ao.auth_option_id ' . + (($sql_group) ? 'AND a.' . $sql_group : '') . " + $sql_forum + $sql_opts + ORDER BY a.forum_id, ao.auth_option"; + + // Now grab group settings - role specific... + $sql_ary[] = 'SELECT a.group_id, a.forum_id, r.auth_setting, r.auth_option_id, ao.auth_option + FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_ROLES_DATA_TABLE . ' r, ' . ACL_OPTIONS_TABLE . ' ao + WHERE a.auth_role_id = r.role_id + AND r.auth_option_id = ao.auth_option_id ' . + (($sql_group) ? 'AND a.' . $sql_group : '') . " + $sql_forum + $sql_opts + ORDER BY a.forum_id, ao.auth_option"; + + foreach ($sql_ary as $sql) + { + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $hold_ary[$row['group_id']][$row['forum_id']][$row['auth_option']] = $row['auth_setting']; + } + $db->sql_freeresult($result); + } + + return $hold_ary; + } + + /** + * Get raw acl data based on user for caching user_permissions + * This function returns the same data as acl_raw_data(), but without the user id as the first key within the array. + */ + function acl_raw_data_single_user($user_id) + { + global $db, $mx_cache; + + // Check if the role-cache is there + if (($this->role_cache = $mx_cache->get('_role_cache')) === false) + { + $this->role_cache = array(); + + // We pre-fetch roles + $sql = 'SELECT * + FROM ' . ACL_ROLES_DATA_TABLE . ' + ORDER BY role_id ASC'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $this->role_cache[$row['role_id']][$row['auth_option_id']] = (int) $row['auth_setting']; + } + $db->sql_freeresult($result); + + foreach ($this->role_cache as $role_id => $role_options) + { + $this->role_cache[$role_id] = serialize($role_options); + } + + $mx_cache->put('_role_cache', $this->role_cache); + } + + $hold_ary = array(); + + // Grab user-specific permission settings + $sql = 'SELECT forum_id, auth_option_id, auth_role_id, auth_setting + FROM ' . ACL_USERS_TABLE . ' + WHERE user_id = ' . $user_id; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + // If a role is assigned, assign all options included within this role. Else, only set this one option. + if ($row['auth_role_id']) + { + $hold_ary[$row['forum_id']] = (empty($hold_ary[$row['forum_id']])) ? unserialize($this->role_cache[$row['auth_role_id']]) : $hold_ary[$row['forum_id']] + unserialize($this->role_cache[$row['auth_role_id']]); + } + else + { + $hold_ary[$row['forum_id']][$row['auth_option_id']] = $row['auth_setting']; + } + } + $db->sql_freeresult($result); + + // Now grab group-specific permission settings + $sql = 'SELECT a.forum_id, a.auth_option_id, a.auth_role_id, a.auth_setting + FROM ' . ACL_GROUPS_TABLE . ' a, ' . USER_GROUP_TABLE . ' ug + WHERE a.group_id = ug.group_id + AND ug.user_pending = 0 + AND ug.user_id = ' . $user_id; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + if (!$row['auth_role_id']) + { + $this->_set_group_hold_ary($hold_ary[$row['forum_id']], $row['auth_option_id'], $row['auth_setting']); + } + else + { + foreach (unserialize($this->role_cache[$row['auth_role_id']]) as $option_id => $setting) + { + $this->_set_group_hold_ary($hold_ary[$row['forum_id']], $option_id, $setting); + } + } + } + $db->sql_freeresult($result); + + return $hold_ary; + } + + /** + * Private function snippet for setting a specific piece of the hold_ary + */ + function _set_group_hold_ary(&$hold_ary, $option_id, $setting) + { + if (!isset($hold_ary[$option_id]) || (isset($hold_ary[$option_id]) && $hold_ary[$option_id] != ACL_NEVER)) + { + $hold_ary[$option_id] = $setting; + + // If we detect ACL_NEVER, we will unset the flag option (within building the bitstring it is correctly set again) + if ($setting == ACL_NEVER) + { + $flag = substr($this->acl_options['option'][$option_id], 0, strpos($this->acl_options['option'][$option_id], '_') + 1); + $flag = (int) $this->acl_options['id'][$flag]; + + if (isset($hold_ary[$flag]) && $hold_ary[$flag] == ACL_YES) + { + unset($hold_ary[$flag]); + +/* This is uncommented, because i suspect this being slightly wrong due to mixed permission classes being possible + if (in_array(ACL_YES, $hold_ary)) + { + $hold_ary[$flag] = ACL_YES; + }*/ + } + } + } + } + + /** + * Authentication plug-ins is largely down to Sergey Kanareykin, our thanks to him. + */ + function login($username, $password, $autologin = false, $viewonline = 1, $admin = 0) + { + global $board_config, $db, $mx_user, $phpbb_root_path, $phpEx; + + $method = trim(basename($board_config['auth_method'])); + include_once($mx_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx); + //$provider = $phpbb_container->get('auth.provider.' . $method); + $method = 'login_' . $method; + if (function_exists($method)) + { + $login = $method($username, $password); + + // If the auth module wants us to create an empty profile do so and then treat the status as LOGIN_SUCCESS + if ($login['status'] == LOGIN_SUCCESS_CREATE_PROFILE) + { + // we are going to use the user_add function so include functions_user.php if it wasn't defined yet + if (!function_exists('user_add')) + { + include($phpbb_root_path . 'includes/functions_user.' . $phpEx); + } + + user_add($login['user_row'], (isset($login['cp_data'])) ? $login['cp_data'] : false); + + $sql = 'SELECT user_id, username, user_password, user_passchg, user_email, user_type + FROM ' . USERS_TABLE . " + WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'"; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if (!$row) + { + return array( + 'status' => LOGIN_ERROR_EXTERNAL_AUTH, + 'error_msg' => 'AUTH_NO_PROFILE_CREATED', + 'user_row' => array('user_id' => ANONYMOUS), + ); + } + + $login = array( + 'status' => LOGIN_SUCCESS, + 'error_msg' => false, + 'user_row' => $row, + ); + } + + // If login succeeded, we will log the user in... else we pass the login array through... + if ($login['status'] == LOGIN_SUCCESS) + { + $old_session_id = $mx_user->session_id; + + if ($admin) + { + global $SID, $_SID; + + $cookie_expire = time() - 31536000; + $mx_user->set_cookie('u', '', $cookie_expire); + $mx_user->set_cookie('sid', '', $cookie_expire); + unset($cookie_expire); + + $SID = '?sid='; + $mx_user->session_id = $_SID = ''; + } + + $result = $mx_user->session_create($login['user_row']['user_id'], $admin, $autologin, $viewonline); + + // Successful session creation + if ($result === true) + { + // If admin re-authentication we remove the old session entry because a new one has been created... + if ($admin) + { + // the login array is used because the user ids do not differ for re-authentication + $sql = 'DELETE FROM ' . SESSIONS_TABLE . " + WHERE session_id = '" . $db->sql_escape($old_session_id) . "' + AND session_user_id = {$login['user_row']['user_id']}"; + $db->sql_query($sql); + } + + return array( + 'status' => LOGIN_SUCCESS, + 'error_msg' => false, + 'user_row' => $login['user_row'], + ); + } + + return array( + 'status' => LOGIN_BREAK, + 'error_msg' => $result, + 'user_row' => $login['user_row'], + ); + } + + return $login; + } + + trigger_error('Authentication method not found', E_USER_ERROR); + } + + /** + * Fill auth_option statement for later querying based on the supplied options + */ + function build_auth_option_statement($key, $auth_options, &$sql_opts) + { + global $db; + + if (!is_array($auth_options)) + { + if (strpos($auth_options, '%') !== false) + { + $sql_opts = "AND $key " . $db->sql_like_expression(str_replace('%', $db->any_char, $auth_options)); + } + else + { + $sql_opts = "AND $key = '" . $db->sql_escape($auth_options) . "'"; + } + } + else + { + $is_like_expression = false; + + foreach ($auth_options as $option) + { + if (strpos($option, '%') !== false) + { + $is_like_expression = true; + } + } + + if (!$is_like_expression) + { + $sql_opts = 'AND ' . $db->sql_in_set($key, $auth_options); + } + else + { + $sql = array(); + + foreach ($auth_options as $option) + { + if (strpos($option, '%') !== false) + { + $sql[] = $key . ' ' . $db->sql_like_expression(str_replace('%', $db->any_char, $option)); + } + else + { + $sql[] = $key . " = '" . $db->sql_escape($option) . "'"; + } + } + + $sql_opts = 'AND (' . implode(' OR ', $sql) . ')'; + } + } + } +} +?> \ No newline at end of file diff --git a/includes/sessions/rhea/bbcode.php b/includes/sessions/rhea/bbcode.php new file mode 100644 index 00000000..b3a777da --- /dev/null +++ b/includes/sessions/rhea/bbcode.php @@ -0,0 +1,2079 @@ +bbcode_bitfield = $bitfield; + $this->bbcode_cache_init(); + } + + $this->smiley_path_url = PHPBB_URL; //change this to PORTAL_URL when shared folder will be removed + $this->smiley_root_path = $phpbb_root_path; //same here + $board_config['smilies_path'] = str_replace("smiles", "smilies", $board_config['smilies_path']); + $this->smilies_path = str_replace("//", "/", $board_config['smilies_path']); + } + + /** + * Second pass bbcodes + */ + function bbcode_second_pass(&$message, $bbcode_uid = '', $bbcode_bitfield = false) + { + if ($bbcode_uid) + { + $this->bbcode_uid = $bbcode_uid; + } + + if ($bbcode_bitfield !== false) + { + //$this->bbcode_bitfield = $bbcode_bitfield; + + // Init those added with a new bbcode_bitfield (already stored codes will not get parsed again) + $this->bbcode_cache_init(); + } + + //We are called from a Core block or non phpBB3, this should never be riched only when function is called direct + if (!$this->bbcode_bitfield) + { + // Remove the uid from tags that have not been transformed into HTML + /* + if ($this->bbcode_uid) + { + $message = str_replace(':' . $this->bbcode_uid, '', $message); + } + */ + return; + } + + $str = array('search' => array(), 'replace' => array()); + $preg = array('search' => array(), 'replace' => array()); + + $bitfield = new bitfield($this->bbcode_bitfield); + $bbcodes_set = $bitfield->get_all_set(); + + $undid_bbcode_specialchars = false; + foreach ($bbcodes_set as $bbcode_id) + { + if (!empty($this->bbcode_cache[$bbcode_id])) + { + foreach ($this->bbcode_cache[$bbcode_id] as $type => $array) + { + foreach ($array as $search => $replace) + { + ${$type}['search'][] = str_replace('$uid', $this->bbcode_uid, $search); + ${$type}['replace'][] = $replace; + } + + if (sizeof($str['search'])) + { + $message = str_replace($str['search'], $str['replace'], $message); + $str = array('search' => array(), 'replace' => array()); + } + + if (sizeof($preg['search'])) + { + // we need to turn the entities back into their original form to allow the + // search patterns to work properly + if (!$undid_bbcode_specialchars) + { + $message = str_replace(array(':', '.'), array(':', '.'), $message); + $undid_bbcode_specialchars = true; + } + + $message = preg_replace($preg['search'], $preg['replace'], $message); + $preg = array('search' => array(), 'replace' => array()); + } + } + } + } + + // Remove the uid from tags that have not been transformed into HTML + $message = str_replace(':' . $this->bbcode_uid, '', $message); + } + + /** + * Init bbcode cache + * + * requires: $this->bbcode_bitfield + * sets: $this->bbcode_cache with bbcode templates needed for bbcode_bitfield + */ + function bbcode_cache_init() + { + global $mx_user, $phpbb_root_path; + + if (empty($this->template_filename)) + { + $this->template_bitfield = new bitfield($mx_user->theme['bbcode_bitfield']); + $this->template_filename = $phpbb_root_path . 'styles/' . $mx_user->theme['template_path'] . '/template/bbcode.html'; + + if (!@file_exists($this->template_filename)) + { + trigger_error('The file ' . $this->template_filename . ' is missing.', E_USER_ERROR); + } + } + + $bbcode_ids = $rowset = $sql = array(); + + $bitfield = new bitfield($this->bbcode_bitfield); + $bbcodes_set = $bitfield->get_all_set(); + + foreach ($bbcodes_set as $bbcode_id) + { + if (isset($this->bbcode_cache[$bbcode_id])) + { + // do not try to re-cache it if it's already in + continue; + } + $bbcode_ids[] = $bbcode_id; + + if ($bbcode_id > NUM_CORE_BBCODES) + { + $sql[] = $bbcode_id; + } + } + + if (sizeof($sql)) + { + global $db; + + $sql = 'SELECT * + FROM ' . BBCODES_TABLE . ' + WHERE ' . $db->sql_in_set('bbcode_id', $sql); + $result = $db->sql_query($sql, 3600); + + while ($row = $db->sql_fetchrow($result)) + { + // To circumvent replacing newlines with
for the generated html, + // we use carriage returns here. They are later changed back to newlines + $row['bbcode_tpl'] = str_replace("\n", "\r", $row['bbcode_tpl']); + $row['second_pass_replace'] = str_replace("\n", "\r", $row['second_pass_replace']); + + $rowset[$row['bbcode_id']] = $row; + } + $db->sql_freeresult($result); + } + + foreach ($bbcode_ids as $bbcode_id) + { + switch ($bbcode_id) + { + case 0: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[/quote:$uid]' => $this->bbcode_tpl('quote_close', $bbcode_id) + ), + 'preg' => array( + '#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise' => "\$this->bbcode_second_pass_quote('\$1', '\$2')" + ) + ); + break; + + case 1: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[b:$uid]' => $this->bbcode_tpl('b_open', $bbcode_id), + '[/b:$uid]' => $this->bbcode_tpl('b_close', $bbcode_id), + ) + ); + break; + + case 2: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[i:$uid]' => $this->bbcode_tpl('i_open', $bbcode_id), + '[/i:$uid]' => $this->bbcode_tpl('i_close', $bbcode_id), + ) + ); + break; + + case 3: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[url:$uid\]((.*?))\[/url:$uid\]#s' => $this->bbcode_tpl('url', $bbcode_id), + '#\[url=([^\[]+?):$uid\](.*?)\[/url:$uid\]#s' => $this->bbcode_tpl('url', $bbcode_id), + ) + ); + break; + + case 4: + if ($mx_user->optionget('viewimg')) + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[img:$uid\](.*?)\[/img:$uid\]#s' => $this->bbcode_tpl('img', $bbcode_id), + ) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[img:$uid\](.*?)\[/img:$uid\]#s' => str_replace('$2', '[ img ]', $this->bbcode_tpl('url', $bbcode_id, true)), + ) + ); + } + break; + + case 5: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[size=([\-\+]?\d+):$uid\](.*?)\[/size:$uid\]#s' => $this->bbcode_tpl('size', $bbcode_id), + ) + ); + break; + + case 6: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '!\[color=(#[0-9a-f]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!is' => $this->bbcode_tpl('color', $bbcode_id), + ) + ); + break; + + case 7: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[u:$uid]' => $this->bbcode_tpl('u_open', $bbcode_id), + '[/u:$uid]' => $this->bbcode_tpl('u_close', $bbcode_id), + ) + ); + break; + + case 8: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#ise' => "\$this->bbcode_second_pass_code('\$1', '\$2')", + ) + ); + break; + + case 9: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#(\[\/?(list|\*):[mou]?:?$uid\])[\n]{1}#' => "\$1", + '#(\[list=([^\[]+):$uid\])[\n]{1}#' => "\$1", + '#\[list=([^\[]+):$uid\]#e' => "\$this->bbcode_list('\$1')", + ), + 'str' => array( + '[list:$uid]' => $this->bbcode_tpl('ulist_open_default', $bbcode_id), + '[/list:u:$uid]' => $this->bbcode_tpl('ulist_close', $bbcode_id), + '[/list:o:$uid]' => $this->bbcode_tpl('olist_close', $bbcode_id), + '[*:$uid]' => $this->bbcode_tpl('listitem', $bbcode_id), + '[/*:$uid]' => $this->bbcode_tpl('listitem_close', $bbcode_id), + '[/*:m:$uid]' => $this->bbcode_tpl('listitem_close', $bbcode_id) + ), + ); + break; + + case 10: + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[email:$uid\]((.*?))\[/email:$uid\]#is' => $this->bbcode_tpl('email', $bbcode_id), + '#\[email=([^\[]+):$uid\](.*?)\[/email:$uid\]#is' => $this->bbcode_tpl('email', $bbcode_id) + ) + ); + break; + + case 11: + if ($mx_user->optionget('viewflash')) + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#' => $this->bbcode_tpl('flash', $bbcode_id), + ) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array( + '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#' => str_replace('$1', '$3', str_replace('$2', '[ flash ]', $this->bbcode_tpl('url', $bbcode_id, true))) + ) + ); + } + break; + + case 12: + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array( + '[/attachment:$uid]' => $this->bbcode_tpl('inline_attachment_close', $bbcode_id) + ), + 'preg' => array( + '#\[attachment=([0-9]+):$uid\]#' => $this->bbcode_tpl('inline_attachment_open', $bbcode_id) + ) + ); + break; + + + default: + if (isset($rowset[$bbcode_id])) + { + if ($this->template_bitfield->get($bbcode_id)) + { + // The bbcode requires a custom template to be loaded + if (!$bbcode_tpl = $this->bbcode_tpl($rowset[$bbcode_id]['bbcode_tag'], $bbcode_id)) + { + // For some reason, the required template seems not to be available, use the default template + $bbcode_tpl = (!empty($rowset[$bbcode_id]['second_pass_replace'])) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl']; + } + else + { + // In order to use templates with custom bbcodes we need + // to replace all {VARS} to corresponding backreferences + // Note that backreferences are numbered from bbcode_match + if (preg_match_all('/\{(URL|LOCAL_URL|WEB|IPAPERLINK|EMAIL|TEXT|SIMPLETEXT|IDENTIFIER|COLOR|NUMBER)[0-9]*\}/', $rowset[$bbcode_id]['bbcode_match'], $m)) + { + foreach ($m[0] as $i => $tok) + { + $bbcode_tpl = str_replace($tok, '$' . ($i + 1), $bbcode_tpl); + } + } + } + } + else + { + // Default template + $bbcode_tpl = ($rowset[$bbcode_id]['second_pass_replace']) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl']; + } + + // Replace {L_*} lang strings + $bbcode_tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$mx_user->lang['\$1'])) ? \$mx_user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl); + + if (!empty($rowset[$bbcode_id]['second_pass_replace'])) + { + // The custom BBCode requires second-pass pattern replacements + $this->bbcode_cache[$bbcode_id] = array( + 'preg' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl) + ); + } + else + { + $this->bbcode_cache[$bbcode_id] = array( + 'str' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl) + ); + } + } + else + { + $this->bbcode_cache[$bbcode_id] = false; + } + break; + } + } + } + + /** + * Return bbcode template + */ + function bbcode_tpl($tpl_name, $bbcode_id = -1, $skip_bitfield_check = false) + { + static $bbcode_hardtpl = array(); + if (empty($bbcode_hardtpl)) + { + global $mx_user; + + $bbcode_hardtpl = array( + 'b_open' => '', + 'b_close' => '', + 'i_open' => '', + 'i_close' => '', + 'ipaper_open' => '', + 'ipaper_close' => '', + 'u_open' => '', + 'u_close' => '', + 'img' => '
' . $mx_user->lang['IMAGE'] . '
', + 'size' => '$2', + 'color' => '$2', + 'email' => '$2' + ); + } + + if ($bbcode_id != -1 && !$skip_bitfield_check && !$this->template_bitfield->get($bbcode_id)) + { + return (isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false; + } + + if (empty($this->bbcode_template)) + { + if (($tpl = file_get_contents($this->template_filename)) === false) + { + trigger_error('Could not load bbcode template', E_USER_ERROR); + } + + // replace \ with \\ and then ' with \'. + $tpl = str_replace('\\', '\\\\', $tpl); + $tpl = str_replace("'", "\'", $tpl); + + // strip newlines and indent + $tpl = preg_replace("/\n[\n\r\s\t]*/", '', $tpl); + + // Turn template blocks into PHP assignment statements for the values of $bbcode_tpl.. + $this->bbcode_template = array(); + + $matches = preg_match_all('#(.*?)#', $tpl, $match); + + for ($i = 0; $i < $matches; $i++) + { + if (empty($match[1][$i])) + { + continue; + } + + $this->bbcode_template[$match[1][$i]] = $this->bbcode_tpl_replace($match[1][$i], $match[2][$i]); + } + } + + + return (isset($this->bbcode_template[$tpl_name])) ? $this->bbcode_template[$tpl_name] : ((isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false); + } + + /** + * Return bbcode template replacement + */ + function bbcode_tpl_replace($tpl_name, $tpl) + { + global $mx_user; + + static $replacements = array( + 'quote_username_open' => array('{USERNAME}' => '$1'), + 'color' => array('{COLOR}' => '$1', '{TEXT}' => '$2'), + 'size' => array('{SIZE}' => '$1', '{TEXT}' => '$2'), + 'img' => array('{URL}' => '$1'), + 'flash' => array('{WIDTH}' => '$1', '{HEIGHT}' => '$2', '{URL}' => '$3'), + 'scribd' => array('{WIDTH}' => '$1', '{HEIGHT}' => '$2', '{SCRIBDURL}' => '$3'), + 'youtube' => array('{YOUTUBEID}' => '$1', '{YOUTUBELINK}' => '$2', '{WIDTH}' => '$3', '{HEIGHT}' => '$4'), + 'ipaper' => array('{IPAPERID}' => '$1', '{IPAPERKEY}' => '$2', '{WIDTH}' => '$3', '{HEIGHT}' => '$4', '{IPAPERLINK}' => '$5'), + 'ipaper_open' => array('{IPAPERCODE}' => '$1'), + 'url' => array('{URL}' => '$1', '{DESCRIPTION}' => '$2'), + 'web' => array('{URL}' => '$1', '{DESCRIPTION}' => '$2'), + 'size' => array('{ID}' => '$1', '{TEXT}' => '$2'), + 'email' => array('{EMAIL}' => '$1', '{DESCRIPTION}' => '$2') + ); + + $tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$mx_user->lang['\$1'])) ? \$mx_user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl); + + if (!empty($replacements[$tpl_name])) + { + $tpl = strtr($tpl, $replacements[$tpl_name]); + } + + return trim($tpl); + } + + /** + * Second parse list bbcode + */ + function bbcode_list($type) + { + if ($type == '') + { + $tpl = 'ulist_open_default'; + $type = 'default'; + } + else if ($type == 'i') + { + $tpl = 'olist_open'; + $type = 'lower-roman'; + } + else if ($type == 'I') + { + $tpl = 'olist_open'; + $type = 'upper-roman'; + } + else if (preg_match('#^(disc|circle|square)$#i', $type)) + { + $tpl = 'ulist_open'; + $type = strtolower($type); + } + else if (preg_match('#^[a-z]$#', $type)) + { + $tpl = 'olist_open'; + $type = 'lower-alpha'; + } + else if (preg_match('#[A-Z]#', $type)) + { + $tpl = 'olist_open'; + $type = 'upper-alpha'; + } + else if (is_numeric($type)) + { + $tpl = 'olist_open'; + $type = 'arabic-numbers'; + } + else + { + $tpl = 'olist_open'; + $type = 'arabic-numbers'; + } + + return str_replace('{LIST_TYPE}', $type, $this->bbcode_tpl($tpl)); + } + + /** + * Second parse quote tag + */ + function bbcode_second_pass_quote($mx_username, $quote) + { + // when using the /e modifier, preg_replace slashes double-quotes but does not + // seem to slash anything else + $quote = str_replace('\"', '"', $quote); + $mx_username = str_replace('\"', '"', $mx_username); + + // remove newline at the beginning + if ($quote == "\n") + { + $quote = ''; + } + + $quote = (($mx_username) ? str_replace('$1', $mx_username, $this->bbcode_tpl('quote_username_open')) : $this->bbcode_tpl('quote_open')) . $quote; + + return $quote; + } + + /** + * Second parse code tag + */ + function bbcode_second_pass_code($type, $code) + { + // when using the /e modifier, preg_replace slashes double-quotes but does not + // seem to slash anything else + $code = str_replace('\"', '"', $code); + + switch ($type) + { + case 'php': + // Not the english way, but valid because of hardcoded syntax highlighting + if (strpos($code, '
') === 0) + { + $code = substr($code, 41); + } + + // no break; + + default: + $code = str_replace("\t", '   ', $code); + $code = str_replace(' ', '  ', $code); + $code = str_replace(' ', '  ', $code); + + // remove newline at the beginning + if (!empty($code) && $code[0] == "\n") + { + $code = substr($code, 1); + } + break; + } + + $code = $this->bbcode_tpl('code_open') . $code . $this->bbcode_tpl('code_close'); + + return $code; + } + + + /** + * Loads bbcode templates from the bbcode.tpl file of the current template set. + * Creates an array, keys are bbcode names like "b_open" or "url", values + * are the associated template. + * Probably pukes all over the place if there's something really screwed + * with the bbcode.tpl file. + * + * Nathan Codding, Sept 26 2001. + * This a temporary function + */ + function load_bbcode_template() + { + global $template; + $tpl_filename = $template->make_filename('bbcode.tpl'); + $tpl = fread(fopen($tpl_filename, 'r'), filesize($tpl_filename)); + + // replace \ with \\ and then ' with \'. + $tpl = str_replace('\\', '\\\\', $tpl); + $tpl = str_replace('\'', '\\\'', $tpl); + + // strip newlines. + $tpl = str_replace("\n", '', $tpl); + + // Turn template blocks into PHP assignment statements for the values of $bbcode_tpls.. + $tpl = preg_replace('#(.*?)#', "\n" . '$bbcode_tpls[\'\\1\'] = \'\\2\';', $tpl); + + $bbcode_tpls = array(); + + eval($tpl); + + return $bbcode_tpls; + } + + /** + * Prepares the loaded bbcode templates for insertion into preg_replace() + * or str_replace() calls in the bbencode_second_pass functions. This + * means replacing template placeholders with the appropriate preg backrefs + * or with language vars. NOTE: If you change how the regexps work in + * bbencode_second_pass(), you MUST change this function. + * + * Nathan Codding, Sept 26 2001 + * + * This a temporary function + */ + function prepare_bbcode_template($bbcode_tpl) + { + global $document_id, $access_key, $height, $width; + global $lang; + + $bbcode_tpl['olist_open'] = str_replace('{LIST_TYPE}', '\\1', $bbcode_tpl['olist_open']); + + $bbcode_tpl['color_open'] = str_replace('{COLOR}', '\\1', $bbcode_tpl['color_open']); + + $bbcode_tpl['size_open'] = str_replace('{SIZE}', '\\1', $bbcode_tpl['size_open']); + + $bbcode_tpl['quote_open'] = str_replace('{L_QUOTE}', $lang['Quote'], $bbcode_tpl['quote_open']); + + $bbcode_tpl['quote_username_open'] = str_replace('{L_QUOTE}', $lang['Quote'], $bbcode_tpl['quote_username_open']); + $bbcode_tpl['quote_username_open'] = str_replace('{L_WROTE}', $lang['wrote'], $bbcode_tpl['quote_username_open']); + $bbcode_tpl['quote_username_open'] = str_replace('{USERNAME}', '\\1', $bbcode_tpl['quote_username_open']); + + $bbcode_tpl['code_open'] = str_replace('{L_CODE}', $lang['Code'], $bbcode_tpl['code_open']); + + $bbcode_tpl['img'] = str_replace('{URL}', '\\1', $bbcode_tpl['img']); + + // We do URLs in several different ways.. + $bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']); + $bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url1']); + + $bbcode_tpl['url2'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']); + $bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url2']); + + $bbcode_tpl['url3'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']); + $bbcode_tpl['url3'] = str_replace('{DESCRIPTION}', '\\2', $bbcode_tpl['url3']); + + $bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']); + $bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\3', $bbcode_tpl['url4']); + + $bbcode_tpl['email'] = str_replace('{EMAIL}', '\\1', $bbcode_tpl['email']); + + // bbcode_box Mod + $bbcode_tpl['align_open'] = str_replace('{ALIGN}', '\\1', $bbcode_tpl['align_open']); + // $bbcode_tpl['stream'] = str_replace('{URL}', '\\1', $bbcode_tpl['stream']); + $bbcode_tpl['ram'] = str_replace('{URL}', '\\1', $bbcode_tpl['ram']); + $bbcode_tpl['marq_open'] = str_replace('{MARQ}', '\\1', $bbcode_tpl['marq_open']); + $bbcode_tpl['table_open'] = str_replace('{TABLE}', '\\1', $bbcode_tpl['table_open']); + $bbcode_tpl['cell_open'] = str_replace('{CELL}', '\\1', $bbcode_tpl['cell_open']); + $bbcode_tpl['web'] = str_replace('{URL}', '\\1', $bbcode_tpl['web']); + //$bbcode_tpl['center_open'] = str_replace('{CENTER}', '\\1', $bbcode_tpl['center_open']); + //$bbcode_tpl['flash'] = str_replace('{WIDTH}', '\\1', $bbcode_tpl['flash']); + //$bbcode_tpl['flash'] = str_replace('{HEIGHT}', '\\2', $bbcode_tpl['flash']); + //$bbcode_tpl['flash'] = str_replace('{URL}', '\\3', $bbcode_tpl['flash']); + //$bbcode_tpl['video'] = str_replace('{URL}', '\\3', $bbcode_tpl['video']); + //$bbcode_tpl['video'] = str_replace('{WIDTH}', '\\1', $bbcode_tpl['video']); + //$bbcode_tpl['video'] = str_replace('{HEIGHT}', '\\2', $bbcode_tpl['video']); + $bbcode_tpl['font_open'] = str_replace('{FONT}', '\\1', $bbcode_tpl['font_open']); + $bbcode_tpl['poet_open'] = str_replace('{POET}', '\\1', $bbcode_tpl['poet_open']); + // bbcode_box Mod + + //Start more bbcode + $bbcode_tpl['stream'] = str_replace('{URL}', '\\1', $bbcode_tpl['stream']); + $bbcode_tpl['flash'] = str_replace('{WIDTH}', '\\1', $bbcode_tpl['flash']); + $bbcode_tpl['flash'] = str_replace('{HEIGHT}', '\\2', $bbcode_tpl['flash']); + $bbcode_tpl['flash'] = str_replace('{URL}', '\\3', $bbcode_tpl['flash']); + $bbcode_tpl['video'] = str_replace('{URL}', '\\3', $bbcode_tpl['video']); + $bbcode_tpl['video'] = str_replace('{WIDTH}', '\\1', $bbcode_tpl['video']); + $bbcode_tpl['video'] = str_replace('{HEIGHT}', '\\2', $bbcode_tpl['video']); + $bbcode_tpl['GVideo'] = str_replace('{GVIDEOID}', '\\1', $bbcode_tpl['GVideo']); + $bbcode_tpl['GVideo'] = str_replace('{GVIDEOLINK}', $lang['Link'], $bbcode_tpl['GVideo']); + $bbcode_tpl['youtube'] = str_replace('{YOUTUBEID}', '\\1', $bbcode_tpl['youtube']); + $bbcode_tpl['youtube'] = str_replace('{YOUTUBELINK}', $lang['Link'], $bbcode_tpl['youtube']); + $bbcode_tpl['youtube'] = str_replace('{WIDTH}', '\\3', $bbcode_tpl['youtube']); + $bbcode_tpl['youtube'] = str_replace('{HEIGHT}', '\\4', $bbcode_tpl['youtube']); + $bbcode_tpl['ipaper'] = str_replace('{IPAPERID}', '\\1', $bbcode_tpl['ipaper']); + $bbcode_tpl['ipaper'] = str_replace('{IPAPERKEY}', '\\2', $bbcode_tpl['ipaper']); + $bbcode_tpl['ipaper'] = str_replace('{WIDTH}', '\\3', $bbcode_tpl['ipaper']); + $bbcode_tpl['ipaper'] = str_replace('{HEIGHT}', '\\4', $bbcode_tpl['ipaper']); + $bbcode_tpl['ipaper'] = str_replace('{IPAPERLINK}', '\\5', $bbcode_tpl['ipaper']); + //$bbcode_tpl['scribd'] = str_replace('{WIDTH}', '\\1', $bbcode_tpl['scribd']); + //$bbcode_tpl['scribd'] = str_replace('{HEIGHT}', '\\2', $bbcode_tpl['scribd']); + $bbcode_tpl['scribd'] = str_replace('{SCRIBDID}', '\\1', $bbcode_tpl['scribd']); + $bbcode_tpl['scribd'] = str_replace('{SCRIBDURL}', $lang['Link'], $bbcode_tpl['scribd']); + //Stop more bbcode + + define("BBCODE_TPL_READY", true); + + return $bbcode_tpl; + } + + /** + * custom version of nl2br which takes custom BBCodes into account + */ + function bbcode_nl2br($text) + { + // custom BBCodes might contain carriage returns so they + // are not converted into
so now revert that + $text = str_replace(array("\n", "\r"), array('
', "\n"), $text); + return $text; + } + + /** + * Does second-pass bbencoding. This should be used before displaying the message in + * a thread. Assumes the message is already first-pass encoded, and we are given the + * correct UID as used in first-pass encoding. + * This a temporary function + */ + function bbencode_second_pass($text, $uid = '', $bitfield = false) + { + global $lang, $bbcode_tpl; + + if ($uid) + { + $this->bbcode_uid = $uid; + } + + if ($bitfield !== false) + { + $this->bbcode_bitfield = $bitfield; + + // Init those added with a new bbcode_bitfield (already stored codes will not get parsed again) + $this->bbcode_cache_init(); + } + + //Check if it's a phpBB3 block + if ($bitfield) + { + $this->bbcode_second_pass($text, $uid, $bitfield); + } + + //$text = str_replace(array("\n", "\r"), array('
', "\n"), $text); + $text = str_replace(array("\n", "\r"), array('
', ""), $text); + $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text); + + // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0). + // This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it. + $text = " " . $text; + + // First: If there isn't a "[" and a "]" in the message, don't bother. + if (! (strpos($text, "[") && strpos($text, "]")) ) + { + // Remove padding, return. + $text = substr($text, 1); + return $text; + } + + // Only load the templates ONCE.. + if (!defined("BBCODE_TPL_READY")) + { + // load templates from file into array. + $bbcode_tpl = $this->load_bbcode_template(); + + // prepare array for use in regexps. + $bbcode_tpl = $this->prepare_bbcode_template($bbcode_tpl); + } + + // [CODE] and [/CODE] for posting code (HTML, PHP, C etc etc) in your posts. + $text = $this->bbencode_second_pass_code($text, $uid, $bbcode_tpl); + + // [IPAPER] and [/IPAPER] for posting iPaper in your posts. + $text = $this->bbencode_ipaper_pass_render($text, $uid, $bbcode_tpl); + + // [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff. + $text = str_replace("[quote:$uid]", $bbcode_tpl['quote_open'], $text); + $text = str_replace("[/quote:$uid]", $bbcode_tpl['quote_close'], $text); + + // New one liner to deal with opening quotes with usernames... + // replaces the two line version that I had here before.. + $text = preg_replace("/\[quote:$uid=\"(.*?)\"\]/si", $bbcode_tpl['quote_username_open'], $text); + + // [list] and [list=x] for (un)ordered lists. + // unordered lists + $text = str_replace("[list:$uid]", $bbcode_tpl['ulist_open'], $text); + // li tags + $text = str_replace("[*:$uid]", $bbcode_tpl['listitem'], $text); + // ending tags + $text = str_replace("[/list:u:$uid]", $bbcode_tpl['ulist_close'], $text); + $text = str_replace("[/list:o:$uid]", $bbcode_tpl['olist_close'], $text); + // Ordered lists + $text = preg_replace("/\[list=([a1]):$uid\]/si", $bbcode_tpl['olist_open'], $text); + + // colours + $text = preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+):$uid\]/si", $bbcode_tpl['color_open'], $text); + $text = str_replace("[/color:$uid]", $bbcode_tpl['color_close'], $text); + + // size + $text = preg_replace("/\[size=([1-2]?[0-9]):$uid\]/si", $bbcode_tpl['size_open'], $text); + $text = str_replace("[/size:$uid]", $bbcode_tpl['size_close'], $text); + + // [b] and [/b] for bolding text. + $text = str_replace("[b:$uid]", $bbcode_tpl['b_open'], $text); + $text = str_replace("[/b:$uid]", $bbcode_tpl['b_close'], $text); + + // [u] and [/u] for underlining text. + $text = str_replace("[u:$uid]", $bbcode_tpl['u_open'], $text); + $text = str_replace("[/u:$uid]", $bbcode_tpl['u_close'], $text); + + // [i] and [/i] for italicizing text. + $text = str_replace("[i:$uid]", $bbcode_tpl['i_open'], $text); + $text = str_replace("[/i:$uid]", $bbcode_tpl['i_close'], $text); + + //$text = str_replace('url:' . $uid, 'url', $text); + + // Patterns and replacements for URL and email tags.. + $patterns = array(); + $replacements = array(); + + // [img]image_url_here[/img] code.. + // This one gets first-passed.. + $patterns[] = "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i"; + $replacements[] = $bbcode_tpl['img']; + + // matches a [url]xxxx://www.phpbb.com[/url] code.. + $patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url1']; + + // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix). + $patterns[] = "#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url2']; + + // [url=xxxx://www.phpbb.com]phpBB[/url] code.. + $patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url3']; + + // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix). + $patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"; + $replacements[] = $bbcode_tpl['url4']; + + // [email]user@domain.tld[/email] code.. + $patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si"; + $replacements[] = $bbcode_tpl['email']; + + //Strat more bbcode + $text = preg_replace($patterns, $replacements, $text); + // align + $text = preg_replace("/\[align=(left|right|center|justify):$uid\]/si", $bbcode_tpl['align_open'], $text); + $text = str_replace("[/align:$uid]", $bbcode_tpl['align_close'], $text); + // marquee + $text = preg_replace("/\[marq=(left|right|up|down):$uid\]/si", $bbcode_tpl['marq_open'], $text); + $text = str_replace("[/marq:$uid]", $bbcode_tpl['marq_close'], $text); + // table + $text = preg_replace("/\[table=(.*?):$uid\]/si", $bbcode_tpl['table_open'], $text); + $text = str_replace("[/table:$uid]", $bbcode_tpl['table_close'], $text); + // cell + $text = preg_replace("/\[cell=(.*?):$uid\]/si", $bbcode_tpl['cell_open'], $text); + $text = str_replace("[/cell:$uid]", $bbcode_tpl['cell_close'], $text); + // center + $text = preg_replace("/\[center:$uid\]/si", $bbcode_tpl['center_open'], $text); + $text = str_replace("[/center:$uid]", $bbcode_tpl['center_close'], $text); + // font + $text = preg_replace("/\[font=(.*?):$uid\]/si", $bbcode_tpl['font_open'], $text); + $text = str_replace("[/font:$uid]", $bbcode_tpl['font_close'], $text); + // poet + $text = preg_replace("/\[poet(.*?):$uid\]/si", $bbcode_tpl['poet_open'], $text); + $text = str_replace("[/poet:$uid]", $bbcode_tpl['poet_close'], $text); + //[hr] + $text = str_replace("[hr:$uid]", $bbcode_tpl['hr'], $text); + // bbcode_box Mod + // [fade] and [/fade] for faded text. + $text = str_replace("[fade:$uid]", $bbcode_tpl['fade_open'], $text); + $text = str_replace("[/fade:$uid]", $bbcode_tpl['fade_close'], $text); + // real + $patterns[] = "#\[ram:$uid\](.*?)\[/ram:$uid\]#si"; + $replacements[] = $bbcode_tpl['ram']; + // [stream]Sound URL[/stream] code.. + $patterns[] = "#\[stream:$uid\](.*?)\[/stream:$uid\]#si"; + $replacements[] = $bbcode_tpl['stream']; + //web + $patterns[] = "#\[web:$uid\](.*?)\[/web:$uid\]#si"; + $replacements[] = $bbcode_tpl['web']; + // [flash width= height= loop= ] and [/flash] code.. + $patterns[] = "#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/flash:$uid\]#si"; + $replacements[] = $bbcode_tpl['flash']; + // [flash width= height= loop= ] and [/flash] code.. + $patterns[10] = "#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/video:$uid\]#si"; + $replacements[10] = $bbcode_tpl['video']; + + // [flash width=X height=X]Flash URL[/flash] code.. + $patterns[] = "#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/flash:$uid\]#si"; + $replacements[] = $bbcode_tpl['flash']; + + // [video width=X height=X]Video URL[/video] code.. + $patterns[] = "#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9]):$uid\](.*?)\[/video:$uid\]#si"; + $replacements[] = $bbcode_tpl['video']; + + // [GVideo]GVideo URL[/GVideo] code.. + $patterns[] = "#\[GVideo\]http://video.google.[A-Za-z0-9.]{2,5}/videoplay\?docid=([0-9A-Za-z-_]*)[^[]*\[/GVideo\]#is"; + $replacements[] = $bbcode_tpl['GVideo']; + + // [youtube]www.youtube.com[/youtube] + $patterns[] = "#\[youtube\]http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})[^[]*\[/youtube\]#is"; + $replacements[] = $bbcode_tpl['youtube']; + + // [youtube=xxxx://www.youtube.com]Youtube[/youtube] code.. + //$patterns[] = "#\[youtube=http://(?:www\.)?youtube.com/watch\?v=([0-9A-Za-z-_]{11})]([^?\n\r\t].*?)\[/youtube\]#is"; + //$replacements[] = $bbcode_tpl['youtube']; + + // [scribd]Scribd URL[/scribd] code.. + $patterns[] = "#\[scribd\]http://(?:d\.)?scribd.com/ScribdViewer.swf\?document_id=([0-9A-Za-z-_]*)[^[]*\[/scribd\]#is"; + $replacements[] = $bbcode_tpl['scribd']; + + // [scribd]Scribd URL[/scribd] code.. + $patterns[] = "#\[scribd id=([0-9A-Za-z-_]{8}) key=([0-9A-Za-z-_]{24})\](.*?)\[/scribd\]#is"; + $replacements[] = $bbcode_tpl['scribd']; + + // [ipaper]Scribd URL[/ipaper] code.. + $patterns[] = "#\[ipaper\]http://(?:d\.)?scribd.com/ScribdViewer.swf\?document_id=([0-9A-Za-z-_]*)\&access_key=([0-9A-Za-z-_]*)[^[]*\[/ipaper\]#is"; + $replacements[] = $bbcode_tpl['ipaper']; + + //Stop more bbcode + $text = preg_replace($patterns, $replacements, $text); + + // Remove the uid from tags that have not been transformed into HTML + $text = str_replace(':' . $uid, '', $text); + + // Remove our padding from the string.. + $text = substr($text, 1); + + return $text; + + } // bbencode_second_pass() + + /** + * This is used to change a [*] tag into a [*:$uid] tag as part + * of the first-pass bbencoding of [list] tags. It fits the + * standard required in order to be passed as a variable + * function into bbencode_first_pass_pda(). + */ + function replace_listitems($text, $uid) + { + $text = str_replace("[*]", "[*:$uid]", $text); + + return $text; + } + + function make_bbcode_uid() + { + global $mx_backend; + // Unique ID for this message.. + + $uid = $mx_backend->dss_rand(); + + // BBCode UID length fix + @define('BBCODE_UID_LEN', (PORTAL_BACKEND == 'phpbb3') ? 8 : 10); + + $uid = substr($uid, 0, BBCODE_UID_LEN); + + return $uid; + } + + function bbencode_first_pass($text, $uid) + { + // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0). + // This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it. + $text = " " . $text; + + // [CODE] and [/CODE] for posting code (HTML, PHP, C etc etc) in your posts. + $text = $this->bbencode_first_pass_pda($text, $uid, '[code]', '[/code]', '', true, ''); + + // [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff. + $text = $this->bbencode_first_pass_pda($text, $uid, '[quote]', '[/quote]', '', false, ''); + $text = $this->bbencode_first_pass_pda($text, $uid, '/\[quote=\\\\"(.*?)\\\\"\]/is', '[/quote]', '', false, '', "[quote:$uid=\\\"\\1\\\"]"); + + // [ipaper] and [/ipaper] for posting scribd embed bbcode in your posts. + $text = $this->bbencode_first_pass_pda($text, $uid, '[ipaper]', '[/ipaper]', '', true, ''); + + // [youtube] and [/youtube] for posting scribd embed bbcode in your posts. + $text = $this->bbencode_first_pass_pda($text, $uid, '[youtube]', '[/youtube]', '', true, ''); + + // [scribd] and [/scribd] for posting scribd embed bbcode in your posts. + $text = $this->bbencode_first_pass_pda($text, $uid, '[scribd]', '[/scribd]', '', false, ''); + $text = $this->bbencode_first_pass_pda($text, $uid, '/\[scribd\\\\id=([0-9A-Za-z-_]{8})\\\\key=([0-9A-Za-z-_]{24})\](.*?)\]/is', '[/scribd]', '', false, '', "[scribd:$uid=\\\id=\\1\\\key=\\2\\\]"); + + // [list] and [list=x] for (un)ordered lists. + $open_tag = array(); + $open_tag[0] = "[list]"; + + // unordered.. + $text = $this->bbencode_first_pass_pda($text, $uid, $open_tag, "[/list]", "[/list:u]", false, 'replace_listitems'); + + $open_tag[0] = "[list=1]"; + $open_tag[1] = "[list=a]"; + + // ordered. + $text = $this->bbencode_first_pass_pda($text, $uid, $open_tag, "[/list]", "[/list:o]", false, 'replace_listitems'); + + // [color] and [/color] for setting text color + $text = preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "[color=\\1:$uid]\\2[/color:$uid]", $text); + + // [size] and [/size] for setting text size + $text = preg_replace("#\[size=([1-2]?[0-9])\](.*?)\[/size\]#si", "[size=\\1:$uid]\\2[/size:$uid]", $text); + + // [b] and [/b] for bolding text. + $text = preg_replace("#\[b\](.*?)\[/b\]#si", "[b:$uid]\\1[/b:$uid]", $text); + + // [u] and [/u] for underlining text. + $text = preg_replace("#\[u\](.*?)\[/u\]#si", "[u:$uid]\\1[/u:$uid]", $text); + + // [i] and [/i] for italicizing text. + $text = preg_replace("#\[i\](.*?)\[/i\]#si", "[i:$uid]\\1[/i:$uid]", $text); + + // [img]image_url_here[/img] code.. + $text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text); + + // bbcode_box Mod + // [fade] and [/fade] for faded text. + $text = preg_replace("#\[fade\](.*?)\[/fade\]#si", "[fade:$uid]\\1[/fade:$uid]", $text); + // [align] and [/align] + $text = preg_replace("#\[align=(left|right|center|justify)\](.*?)\[/align\]#si", "[align=\\1:$uid]\\2[/align:$uid]", $text); + // [marq] and [/marq] + $text = preg_replace("#\[marq=(left|right|up|down)\](.*?)\[/marq\]#si", "[marq=\\1:$uid]\\2[/marq:$uid]", $text); + // [table] and [/table] + $text = preg_replace("#\[table=(.*?)\](.*?)\[/table\]#si", "[table=\\1:$uid]\\2[/table:$uid]", $text); + // [cell] and [/cell] + $text = preg_replace("#\[cell=(.*?)\](.*?)\[/cell\]#si", "[cell=\\1:$uid]\\2[/cell:$uid]", $text); + // [font] and [/font] + $text = preg_replace("#\[font=(.*?)\](.*?)\[/font\]#si", "[font=\\1:$uid]\\2[/font:$uid]", $text); + // [poet] and [/poet] + $text = preg_replace("#\[poet(.*?)\](.*?)\[/poet\]#si", "[poet\\1:$uid]\\2[/poet:$uid]", $text); + // [center] and [/center] + $text = preg_replace("#\[center\](.*?)\[/center\]#si", "[center:$uid]\\1[/center:$uid]", $text); + // [real]and[/real] + $text = preg_replace("#\[ram\](.*?)\[/ram\]#si", "[ram:$uid]\\1[/ram:$uid]", $text); + // [stream]and[/stream] + //$text = preg_replace("#\[stream\](.*?)\[/stream\]#si", "[stream:$uid]\\1[/stream:$uid]", $text); + // [web]and[/web] + $text = preg_replace("#\[web\](http(s)?://)([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)\[/web\]#si", "[web:$uid]\\1\\3[/web:$uid]", $text); + //[flash width= heigth= loop=] and [/flash] + //$text = preg_replace("#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\](([a-z]+?)://([^, \n\r]+))\[\/flash\]#si","[flash width=\\1 height=\\2:$uid\]\\3[/flash:$uid]", $text); + //[video width= heigth=] and [/video] + //$text = preg_replace("#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\](([a-z]+?)://([^, \n\r]+))\[\/video\]#si","[video width=\\1 height=\\2:$uid\]\\3[/video:$uid]", $text); + // [hr] + $text = preg_replace("#\[hr\]#si", "[hr:$uid]", $text); + // bbcode_box Mod + + //Start more bbcode + $text = str_replace('url:' . $uid, 'url', $text); + + // [stream]Sound URL[/stream] code.. + $text = preg_replace("#\[stream\](.*?)\[/stream\]#si", "[stream:$uid]\\1[/stream:$uid]", $text); + + // [scribd width=X height=X]Scribd URL[/scribd] code.. + $text = preg_replace("#\[scribd width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\](([a-z]+?)://([^, \n\r]+))\[\/scribd\]#si","[scribd width=\\1 height=\\2:$uid\]\\3[/scribd:$uid]", $text); + + // [flash width=X height=X]Flash URL[/flash] code.. + $text = preg_replace("#\[flash width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\](([a-z]+?)://([^, \n\r]+))\[\/flash\]#si","[flash width=\\1 height=\\2:$uid\]\\3[/flash:$uid]", $text); + + // [video width=X height=X]Video URL[/video] code.. + $text = preg_replace("#\[video width=([0-6]?[0-9]?[0-9]) height=([0-4]?[0-9]?[0-9])\](([a-z]+?)://([^, \n\r]+))\[\/video\]#si","[video width=\\1 height=\\2:$uid\]\\3[/video:$uid]", $text); + + //Stop more bbcode + + // Remove our padding from the string.. + return substr($text, 1);; + + } // bbencode_first_pass() + + + /** + * $text - The text to operate on. + * $uid - The UID to add to matching tags. + * $open_tag - The opening tag to match. Can be an array of opening tags. + * $close_tag - The closing tag to match. + * $close_tag_new - The closing tag to replace with. + * $mark_lowest_level - boolean - should we specially mark the tags that occur + * at the lowest level of nesting? (useful for [code], because + * we need to match these tags first and transform HTML tags + * in their contents.. + * $func - This variable should contain a string that is the name of a function. + * That function will be called when a match is found, and passed 2 + * parameters: ($text, $uid). The function should return a string. + * This is used when some transformation needs to be applied to the + * text INSIDE a pair of matching tags. If this variable is FALSE or the + * empty string, it will not be executed. + * If open_tag is an array, then the pda will try to match pairs consisting of + * any element of open_tag followed by close_tag. This allows us to match things + * like [list=A]...[/list] and [list=1]...[/list] in one pass of the PDA. + * + * NOTES: - this function assumes the first character of $text is a space. + * - every opening tag and closing tag must be of the [...] format. + */ + function bbencode_first_pass_pda($text, $uid, $open_tag, $close_tag, $close_tag_new, $mark_lowest_level, $func, $open_regexp_replace = false) + { + $open_tag_count = 0; + + if (!$close_tag_new || ($close_tag_new == '')) + { + $close_tag_new = $close_tag; + } + + $close_tag_length = strlen($close_tag); + $close_tag_new_length = strlen($close_tag_new); + $uid_length = strlen($uid); + + $use_function_pointer = ($func && ($func != '')); + + $stack = array(); + + if (is_array($open_tag)) + { + if (0 == count($open_tag)) + { + // No opening tags to match, so return. + return $text; + } + $open_tag_count = count($open_tag); + } + else + { + // only one opening tag. make it into a 1-element array. + $open_tag_temp = $open_tag; + $open_tag = array(); + $open_tag[0] = $open_tag_temp; + $open_tag_count = 1; + } + + $open_is_regexp = false; + + if ($open_regexp_replace) + { + $open_is_regexp = true; + if (!is_array($open_regexp_replace)) + { + $open_regexp_temp = $open_regexp_replace; + $open_regexp_replace = array(); + $open_regexp_replace[0] = $open_regexp_temp; + } + } + + if ($mark_lowest_level && $open_is_regexp) + { + mx_message_die(GENERAL_ERROR, "Unsupported operation for bbcode_first_pass_pda()."); + } + + // Start at the 2nd char of the string, looking for opening tags. + $curr_pos = 1; + while ($curr_pos && ($curr_pos < strlen($text))) + { + $curr_pos = strpos($text, "[", $curr_pos); + + // If not found, $curr_pos will be 0, and the loop will end. + if ($curr_pos) + { + // We found a [. It starts at $curr_pos. + // check if it's a starting or ending tag. + $found_start = false; + $which_start_tag = ""; + $start_tag_index = -1; + + for ($i = 0; $i < $open_tag_count; $i++) + { + // Grab everything until the first "]"... + $possible_start = substr($text, $curr_pos, strpos($text, ']', $curr_pos + 1) - $curr_pos + 1); + + // + // We're going to try and catch usernames with "[' characters. + // + if( preg_match('#\[quote=\\\"#si', $possible_start, $match) && !preg_match('#\[quote=\\\"(.*?)\\\"\]#si', $possible_start) ) + { + // OK we are in a quote tag that probably contains a ] bracket. + // Grab a bit more of the string to hopefully get all of it.. + if ($close_pos = strpos($text, '"]', $curr_pos + 14)) + { + if (strpos(substr($text, $curr_pos + 14, $close_pos - ($curr_pos + 14)), '[quote') === false) + { + $possible_start = substr($text, $curr_pos, $close_pos - $curr_pos + 7); + } + } + } + + // Now compare, either using regexp or not. + if ($open_is_regexp) + { + $match_result = array(); + if (preg_match($open_tag[$i], $possible_start, $match_result)) + { + $found_start = true; + $which_start_tag = $match_result[0]; + $start_tag_index = $i; + break; + } + } + else + { + // straightforward string comparison. + if (0 == strcasecmp($open_tag[$i], $possible_start)) + { + $found_start = true; + $which_start_tag = $open_tag[$i]; + $start_tag_index = $i; + break; + } + } + } + + if ($found_start) + { + // We have an opening tag. + // Push its position, the text we matched, and its index in the open_tag array on to the stack, and then keep going to the right. + $match = array("pos" => $curr_pos, "tag" => $which_start_tag, "index" => $start_tag_index); + array_push($stack, $match); + // + // Rather than just increment $curr_pos + // Set it to the ending of the tag we just found + // Keeps error in nested tag from breaking out + // of table structure.. + // + $curr_pos += strlen($possible_start); + } + else + { + // check for a closing tag.. + $possible_end = substr($text, $curr_pos, $close_tag_length); + if (0 == strcasecmp($close_tag, $possible_end)) + { + // We have an ending tag. + // Check if we've already found a matching starting tag. + if (sizeof($stack) > 0) + { + // There exists a starting tag. + $curr_nesting_depth = sizeof($stack); + // We need to do 2 replacements now. + $match = array_pop($stack); + $start_index = $match['pos']; + $start_tag = $match['tag']; + $start_length = strlen($start_tag); + $start_tag_index = $match['index']; + + if ($open_is_regexp) + { + $start_tag = preg_replace($open_tag[$start_tag_index], $open_regexp_replace[$start_tag_index], $start_tag); + } + + // everything before the opening tag. + $before_start_tag = substr($text, 0, $start_index); + + // everything after the opening tag, but before the closing tag. + $between_tags = substr($text, $start_index + $start_length, $curr_pos - $start_index - $start_length); + + // Run the given function on the text between the tags.. + if ($use_function_pointer) + { + $between_tags = $this->$func($between_tags, $uid); + } + + // everything after the closing tag. + $after_end_tag = substr($text, $curr_pos + $close_tag_length); + + // Mark the lowest nesting level if needed. + if ($mark_lowest_level && ($curr_nesting_depth == 1)) + { + if ($open_tag[0] == '[code]') + { + $code_entities_match = array('#<#', '#>#', '#"#', '#:#', '#\[#', '#\]#', '#\(#', '#\)#', '#\{#', '#\}#'); + $code_entities_replace = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}'); + $between_tags = preg_replace($code_entities_match, $code_entities_replace, $between_tags); + } + $text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$curr_nesting_depth:$uid]"; + $text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$curr_nesting_depth:$uid]"; + } + else + { + if ($open_tag[0] == '[code]') + { + $text = $before_start_tag . '[code]'; + $text .= $between_tags . '[/code]'; + } + else + { + if ($open_is_regexp) + { + $text = $before_start_tag . $start_tag; + } + else + { + $text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$uid]"; + } + $text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$uid]"; + } + } + + $text .= $after_end_tag; + + // Now.. we've screwed up the indices by changing the length of the string. + // So, if there's anything in the stack, we want to resume searching just after it. + // otherwise, we go back to the start. + if (sizeof($stack) > 0) + { + $match = array_pop($stack); + $curr_pos = $match['pos']; + // bbcode_array_push($stack, $match); + // ++$curr_pos; + } + else + { + $curr_pos = 1; + } + } + else + { + // No matching start tag found. Increment pos, keep going. + ++$curr_pos; + } + } + else + { + // No starting tag or ending tag.. Increment pos, keep looping., + ++$curr_pos; + } + } + } + } // while + + return $text; + + } // bbencode_first_pass_pda() + + /** + * Does second-pass bbencoding of the [code] tags. This includes + * running htmlspecialchars() over the text contained between + * any pair of [code] tags that are at the first level of + * nesting. Tags at the first level of nesting are indicated + * by this format: [code:1:$uid] ... [/code:1:$uid] + * Other tags are in this format: [code:$uid] ... [/code:$uid] + * This a temporary function + */ + function bbencode_second_pass_code($text, $uid, $bbcode_tpl) + { + global $lang; + + $code_start_html = $bbcode_tpl['code_open']; + $code_end_html = $bbcode_tpl['code_close']; + + // First, do all the 1st-level matches. These need an htmlspecialchars() run, + // so they have to be handled differently. + $match_count = preg_match_all("#\[code:1:$uid\](.*?)\[/code:1:$uid\]#si", $text, $matches); + + for ($i = 0; $i < $match_count; $i++) + { + $before_replace = $matches[1][$i]; + $after_replace = $matches[1][$i]; + + // Replace 2 spaces with "  " so non-tabbed code indents without making huge long lines. + $after_replace = str_replace(" ", "  ", $after_replace); + // now Replace 2 spaces with "  " to catch odd #s of spaces. + $after_replace = str_replace(" ", "  ", $after_replace); + + // Replace tabs with "   " so tabbed code indents sorta right without making huge long lines. + $after_replace = str_replace("\t", "   ", $after_replace); + + // now Replace space occurring at the beginning of a line + $after_replace = preg_replace("/^ {1}/m", ' ', $after_replace); + + $str_to_match = "[code:1:$uid]" . $before_replace . "[/code:1:$uid]"; + + $replacement = $code_start_html; + $replacement .= $after_replace; + $replacement .= $code_end_html; + + $text = str_replace($str_to_match, $replacement, $text); + } + + // Now, do all the non-first-level matches. These are simple. + $text = str_replace("[code:$uid]", $code_start_html, $text); + $text = str_replace("[/code:$uid]", $code_end_html, $text); + + return $text; + + } // bbencode_second_pass_code() + + /** + * Rewritten by Florin C Bodin - July 10, 2009. + * Description: Pass Embed Scibd iPaper in a post Pass + * Version: 0.2 + * Original Author: Stuart Marsh + * Author URI: http://www.beardygeek.com + * This should be used before displaying the message. + */ + function bbencode_ipaper_pass_render($text, $uid, $bbcode_tpl) + { + global $document_id, $access_key, $height, $width; + global $lang; + + $params = array('document_id','access_key','height','width'); + + $ipaper_start_html = $bbcode_tpl['ipaper_open']; + $ipaper_end_html = $bbcode_tpl['ipaper_close']; + + // First, do all the 1st-level matches. + $match_count = preg_match_all("#\[ipaper:1:$uid\](.*?)\[/ipaper:1:$uid\]#si", $text, $matches); + + for ($i = 0; $i < $match_count; $i++) + { + + $before_replace = $matches[1][$i]; + $after_replace = $matches[1][$i]; + + //Remove ipaper open and close bbcode tags. + $before_replace = str_replace(array($ipaper_start_html, $ipaper_end_html), "", $before_replace); + $after_replace = str_replace(array($ipaper_start_html, $ipaper_end_html), "", $after_replace); + $after_replace = str_replace(array('”','″'), '', $after_replace); + + // Then, do the 2nd-level matches. + $total = preg_match_all("|([^?&#=]+)=([^?&#=]+)(#{0,}[^?&#=]*)|", $after_replace, $attributes, PREG_SET_ORDER); + + if ($total) + { + $this->ipaper_head(); + } + + $arguments[] = array(); + + foreach ((array) $attributes as $elem) + { + if(!in_array($elem[$i], $params)) + { + $arguments[$elem[1]] = $elem[2]; + } + } + + if ((!array_key_exists('document_id', $arguments)) && (!array_key_exists('access_key', $arguments))) + { + return '
Error: Required parameter "docId" or "access_key" is missing!
'; + } + + // First, do all the 1st-level matches. + if (array_key_exists('document_id', $arguments)) + { + $document_id = $arguments['document_id']; + } + else + { + $document_id = ''; + } + + if (array_key_exists('access_key', $arguments)) + { + $access_key = $arguments['access_key']; + } + else + { + $access_key = 'key-'; + } + + if (array_key_exists('height', $arguments)) + { + $height = $arguments['height']; + } + else + { + $height = 600; + } + + if (array_key_exists('width', $arguments)) + { + $width = $arguments['width']; + } + else + { + $width = 400; + } + + $after_replace = ''; + $after_replace .= "\n".'

Scribd

'."\n"; + $after_replace .= ''."\n"; + + $str_to_match = "[ipaper:1:$uid]" . $before_replace . "[/ipaper:1:$uid]"; + + $replacement = $ipaper_start_html . $after_replace . $ipaper_end_html; + + $text = str_replace($str_to_match, $replacement, $text); + + } + + // Now, do all the non-first-level matches. These are simple. + $text = str_replace("[ipaper:$uid]", $ipaper_start_html, $text); + $text = str_replace("[/ipaper:$uid]", $ipaper_end_html, $text); + + return $text; + + } //bbencode_ipaper_pass_render() + + + function ipaper_head() + { + // ------------------------------------------------------------------------- + // Extend page with additional header or footer data + // Examples: + // $mx_page->add_css_file(); // Include style dependent *.css file, eg module_path/template_path/template/theme.css + // $mx_page->add_js_file( 'includes/js.js' ); // Relative to module_root + // $mx_page->add_header_text( 'header text' ); + // $mx_page->add_footer_text( 'includes/test.txt', true ); // Relative to module_root + // Note: Included text from file (last example), will evaluate $theme and $mx_block->info variables. + // ------------------------------------------------------------------------- + + global $document_id, $access_key, $height, $width; + global $mx_page; + + $addional_header_text = $header_text = ""; + + $header_text .= ''."\n"; + $header_text .= ''; + + $addional_header_text .= "\n"."\n".$header_text; + + + if (is_object($mx_page)) + { + $mx_page->add_header_text($addional_header_text); + } + } + + + /** + * Rewritten by Nathan Codding - Feb 6, 2001. + * - Goes through the given string, and replaces xxxx://yyyy with an HTML tag linking + * to that URL + * - Goes through the given string, and replaces www.xxxx.yyyy[zzzz] with an HTML tag linking + * to http://www.xxxx.yyyy[/zzzz] + * - Goes through the given string, and replaces xxxx@yyyy with an HTML mailto: tag linking + * to that email address + * - Only matches these 2 patterns either after a space, or at the beginning of a line + * + * Notes: the email one might get annoying - it's easy to make it more restrictive, though.. maybe + * have it require something like xxxx@yyyy.zzzz or such. We'll see. + * We can add here more phpBB3 stuff in time - Ory + */ + function make_clickable($text) + { + $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text); + + // pad it with a space so we can match things at the start of the 1st line. + $ret = ' ' . $text; + + // matches an "xxxx://yyyy" URL at the start of a line, or after a space. + // xxxx can only be alpha characters. + // yyyy is anything up to the first space, newline, comma, double quote or < + $ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1\\2", $ret); + + // matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing + // Must contain at least 2 dots. xxxx contains either alphanum, or "-" + // zzzz is optional.. will contain everything up to the first space, newline, + // comma, double quote or <. + $ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1\\2", $ret); + + // matches an email@domain type address at the start of a line, or after a space. + // Note: Only the followed chars are valid; alphanums, "-", "_" and or ".". + $ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1\\2@\\3", $ret); + + // Remove our padding.. + $ret = substr($ret, 1); + + return($ret); + } + + /** + * Nathan Codding - Feb 6, 2001 + * Reverses the effects of make_clickable(), for use in editpost. + * - Does not distinguish between "www.xxxx.yyyy" and "http://aaaa.bbbb" type URLs. + * + */ + function undo_make_clickable($text) + { + $text = preg_replace("#.*?#i", "\\1", $text); + $text = preg_replace("#.*?#i", "\\1", $text); + + return $text; + + } + + // + // MXP Wrapper + // + + /** + * bbcode to html. + * + * Convert the bbcode to html + * + * @param string $bbtext + * @param string $bbcode_uid + * @param boolean $smilies_on + * @return string + */ + function decode($mytext, $bbcode_uid, $smilies_on = true, $bbcode_bitfield = false) + { + global $mx_root_path, $phpbb_root_path, $phpEx, $mx_page; + + if (!$mytext) + { + return ''; + } + + $mytext = mx_censor_text($mytext); + + //Do some checks + $phpbb3_text = $bbcode_bitfield ? true : false; + $bbcode_bitfield = ($bbcode_bitfield && (strlen($bbcode_bitfield) < 2)) ? false : $bbcode_bitfield; + + if (!empty($bbcode_uid)) + { + $mytext = $this->bbencode_second_pass($mytext, $bbcode_uid, $bbcode_bitfield); + } + + $mytext = str_replace(array("\n", "\r"), array('
', "\n"), $mytext); + $mytext = $this->bbcode_nl2br($mytext); + + //$mytext = smiley_text($mytext, !($flags & OPTION_FLAG_SMILIES)); + if ($smilies_on && $phpbb3_text) + { + $mytext = $this->smilies3_pass($mytext); + } + else if ($smilies_on) + { + $mytext = $this->smilies_pass($mytext); + } + + //$mytext = str_replace("\n", "\n
\n", $mytext); + + if ($mytext != '') + { + $mytext = $this->make_clickable($mytext); + } + + return $mytext; + } + + /** + * Smilies pass. + * + * compatible with phpBB3 blocks + * + * @param string $message + * @return string + * + */ + function smilies3_pass($message) + { + static $orig, $repl; + global $board_config, $mx_root_path, $phpbb_root_path, $phpEx; + + if (!isset($orig)) + { + global $db; + $orig = $repl = array(); + + $sql = 'SELECT * FROM ' . SMILIES_TABLE; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain smilies data", "", __LINE__, __FILE__, $sql); + } + + while ($row = $db->sql_fetchrow($result)) + { + if (empty($row['code'])) + { + continue; + } + + // (assertion) + $match[] = '(?<=^|[\n .])' . preg_quote($row['code'], '#') . '(?![^<>]*>)'; + $replace[] = '' . $row['code'] . ''; + } + + $db->sql_freeresult($result); + + if (sizeof($match)) + { + if ($max_smilies) + { + $num_matches = preg_match_all('#' . implode('|', $match) . '#', $message, $matches); + unset($matches); + + if ($num_matches !== false && $num_matches > $max_smilies) + { + $this->warn_msg[] = sprintf($mx_user->lang['TOO_MANY_SMILIES'], $max_smilies); + return; + } + } + + // Make sure the delimiter # is added in front and at the end of every element within $match + $message = trim(preg_replace(explode(chr(0), '#' . implode('#' . chr(0) . '#', $match) . '#'), $replace, $message)); + } + } + + $message = str_replace("{SMILIES_PATH}", $this->smiley_path_url . $this->smilies_path . $smilies[$i][$this->smiley_url], ' ' . $message . ' '); + + return $message; + } + + /** + * Smilies pass. + * + * compatible with phpBB2 blocks + * + * @param string $message + * @return string + * + */ + function smilies_pass($message) + { + static $orig, $repl; + global $board_config, $mx_root_path, $phpbb_root_path, $phpEx; + + if (!isset($orig)) + { + global $db; + $orig = $repl = array(); + + $sql = 'SELECT * FROM ' . SMILIES_TABLE; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain smilies data", "", __LINE__, __FILE__, $sql); + } + + $smilies = $db->sql_fetchrowset($result); + + if (count($smilies)) + { + @usort($smilies, 'smiley_sort'); + } + + for ($i = 0; $i < count($smilies); $i++) + { + $orig[] = "/(?<=.\W|\W.|^\W)" . preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/"; + $repl[] = '' . $smilies[$i][$this->emotion] . ''; + } + } + + if (count($orig)) + { + $message = preg_replace($orig, $repl, ' ' . $message . ' '); + $message = substr($message, 1, -1); + } + + return $message; + } + + /** + * phpBB Smilies pass. + * + * Hacking smilies_pass from phpbb/includes/bbcode.php + * + * NOTE: This is only kept for reference - not used. + * + * @param string $message + * @return string + */ + function mx_smilies_pass_old($message) + { + global $mx_page, $board_config, $phpbb_root_path, $phpEx; + + $smilies_path = $board_config['smilies_path']; + $board_config['smilies_path'] = PHPBB_URL . $board_config['smilies_path']; + $message = smilies_pass($message); + $board_config['smilies_path'] = $smilies_path; + return $message; + } + + // + // This function will prepare a posted message for + // entry into the database. + // + function prepare_message($message, $html_on, $bbcode_on, $smile_on, $bbcode_uid = 0) + { + global $board_config, $html_entities_match, $html_entities_replace; + + // + // Clean up the message + // + $message = trim($message); + + if ($html_on) + { + // If HTML is on, we try to make it safe + // This approach is quite agressive and anything that does not look like a valid tag + // is going to get converted to HTML entities + $message = stripslashes($message); + $html_match = '#<[^\w<]*(\w+)((?:"[^"]*"|\'[^\']*\'|[^<>\'"])+)?>#'; + $matches = array(); + + $message_split = preg_split($html_match, $message); + preg_match_all($html_match, $message, $matches); + + $message = ''; + + foreach ($message_split as $part) + { + $tag = array(array_shift($matches[0]), array_shift($matches[1]), array_shift($matches[2])); + $message .= preg_replace($html_entities_match, $html_entities_replace, $part) . clean_html($tag); + } + + $message = addslashes($message); + $message = str_replace('"', '\"', $message); + } + else + { + $message = preg_replace($html_entities_match, $html_entities_replace, $message); + } + + if($bbcode_on && $bbcode_uid != '') + { + $message = $this->bbencode_first_pass($message, $bbcode_uid); + } + + return $message; + } + + //Core BBCode Starts + + /** + * Generate smilies. + * + * Hacking generate_smilies from phpbb/includes/functions_post(ing).php + * + * @param string $mode + * @param integer $page_id + * + * Fill smiley templates (or just the variables) with smilies, either in a window or inline + */ + function generate_smilies($mode, $forum_id) + { + global $mx_page, $board_config, $template, $mx_root_path, $phpbb_root_path, $phpEx; + global $db, $lang, $images, $theme; + global $user_ip, $session_length, $starttime; + global $userdata, $phpbb_auth, $mx_user; + + $inline_columns = 4; + $inline_rows = 5; + $window_columns = 8; + + $start = phpBB3::request_var('start', 0); + + if ($mode == 'window') + { + if ($forum_id) + { + $sql = 'SELECT forum_style + FROM ' . FORUMS_TABLE . " + WHERE forum_id = $forum_id"; + $result = $db->sql_query_limit($sql, 1); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + $mx_user->setup('posting', (int) $row['forum_style']); + } + else + { + $mx_user->setup('posting'); + } + + //page_header($mx_user->lang['SMILIES']); + + $sql = 'SELECT COUNT(smiley_id) AS item_count + FROM ' . SMILIES_TABLE . ' + GROUP BY smiley_url'; + $result = $db->sql_query($sql, 3600); + + $smiley_count = 0; + while ($row = $db->sql_fetchrow($result)) + { + ++$smiley_count; + } + $db->sql_freeresult($result); + /* + $template->set_filenames(array( + 'body' => 'posting_smilies.html') + ); + generate_pagination(mx3_append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id), $smiley_count, $config['smilies_per_page'], $start); + */ + } + + $display_link = false; + if ($mode == 'inline') + { + $sql = 'SELECT smiley_id + FROM ' . SMILIES_TABLE . ' + WHERE display_on_posting = 0'; + $result = $db->sql_query_limit($sql, 1, 0, 3600); + + if ($row = $db->sql_fetchrow($result)) + { + $display_link = true; + } + $db->sql_freeresult($result); + } + + if ($mode == 'window') + { + $sql = 'SELECT smiley_url, MIN(emotion) as emotion, MIN(code) AS code, smiley_width, smiley_height, MIN(smiley_order) AS min_smiley_order + FROM ' . SMILIES_TABLE . ' + GROUP BY smiley_url, smiley_width, smiley_height + ORDER BY min_smiley_order'; + $result = $db->sql_query_limit($sql, $config['smilies_per_page'], $start, 3600); + } + else + { + $sql = 'SELECT * + FROM ' . SMILIES_TABLE . ' + WHERE display_on_posting = 1 + ORDER BY smiley_order'; + $result = $db->sql_query($sql, 3600); + } + + $smilies = array(); + + //phpBB2 code start + if ($result) + { + $num_smilies = 0; + $rowset = array(); + while ($row = $db->sql_fetchrow($result)) + { + if (empty($smilies[$row['smiley_url']])) + { + $smilies[$row['smiley_url']] = $row; + $rowset[$row['smiley_url']]['code'] = str_replace("'", "\\'", str_replace('\\', '\\\\', $row['code'])); + $rowset[$row['smiley_url']]['emotion'] = $row['emotion']; + $num_smilies++; + } + } + $db->sql_freeresult($result); + + if ($num_smilies) + { + $smilies_count = ($mode == 'inline') ? min(19, $num_smilies) : $num_smilies; + $smilies_split_row = ($mode == 'inline') ? $inline_columns - 1 : $window_columns - 1; + + $s_colspan = 0; + $row = 0; + $col = 0; + + while (list($smile_url, $data) = @each($rowset)) + { + if (!$col) + { + $template->assign_block_vars('smilies_row', array()); + } + + $template->assign_block_vars('smilies_row.smilies_col', array( + 'SMILEY_CODE' => $data['code'], + 'SMILEY_IMG' => $this->smiley_path_url . $board_config['smilies_path'] . '/' . $smile_url, + 'SMILEY_DESC' => isset($data['emotion']) ? $data['emotion'] : $row['emotion']) + ); + + $s_colspan = max($s_colspan, $col + 1); + + if ($col == $smilies_split_row) + { + if ($mode == 'inline' && $row == $inline_rows - 1) + { + break; + } + $col = 0; + $row++; + } + else + { + $col++; + } + } + + if ($mode == 'inline' && $num_smilies > $inline_rows * $inline_columns) + { + $template->assign_block_vars('switch_smilies_extra', array()); + + $template->assign_vars(array( + 'L_MORE_SMILIES' => $lang['More_emoticons'], + 'U_MORE_SMILIES' => mx3_append_sid(PHPBB_URL . "posting.$phpEx", "mode=smilies")) + ); + } + + $template->assign_vars(array( + 'L_EMOTICONS' => $lang['Emoticons'], + 'L_CLOSE_WINDOW' => $lang['Close_window'], + 'S_SMILIES_COLSPAN' => $s_colspan) + ); + } + } + + if ($mode == 'window') + { + $template->pparse('smiliesbody'); + include($mx_root_path . 'includes/page_tail.'.$phpEx); + } + } +} +?> \ No newline at end of file diff --git a/includes/sessions/rhea/constants.php b/includes/sessions/rhea/constants.php new file mode 100644 index 00000000..66c971a2 --- /dev/null +++ b/includes/sessions/rhea/constants.php @@ -0,0 +1,263 @@ + @define +* to supress any notices since in mx_constants.php some are allready @@defined +*/ + +// User related +@define('ANONYMOUS', 1); + +@define('USER_ACTIVATION_NONE', 0); +@define('USER_ACTIVATION_SELF', 1); +@define('USER_ACTIVATION_ADMIN', 2); +@define('USER_ACTIVATION_DISABLE', 3); + +@define('AVATAR_UPLOAD', 1); +@define('AVATAR_REMOTE', 2); +@define('AVATAR_GALLERY', 3); + +@define('USER_NORMAL', 0); +@define('USER_INACTIVE', 1); +@define('USER_IGNORE', 2); +@define('USER_FOUNDER', 3); + +@define('INACTIVE_REGISTER', 1); +@define('INACTIVE_PROFILE', 2); +@define('INACTIVE_MANUAL', 3); +@define('INACTIVE_REMIND', 4); + +// ACL +@define('ACL_NEVER', 0); +@define('ACL_YES', 1); +@define('ACL_NO', -1); + +// Login error codes +@define('LOGIN_CONTINUE', 1); +@define('LOGIN_BREAK', 2); +@define('LOGIN_SUCCESS', 3); +@define('LOGIN_SUCCESS_CREATE_PROFILE', 20); +@define('LOGIN_ERROR_USERNAME', 10); +@define('LOGIN_ERROR_PASSWORD', 11); +@define('LOGIN_ERROR_ACTIVE', 12); +@define('LOGIN_ERROR_ATTEMPTS', 13); +@define('LOGIN_ERROR_EXTERNAL_AUTH', 14); +@define('LOGIN_ERROR_PASSWORD_CONVERT', 15); + +// SQL codes phpBB2 +@define('BEGIN_TRANSACTION', 1); +@define('END_TRANSACTION', 2); + +// Error codes (from phpbb2) +@define('GENERAL_MESSAGE', 200); +@define('GENERAL_ERROR', 202); +@define('CRITICAL_MESSAGE', 203); +@define('CRITICAL_ERROR', 204); + +// Group settings +@define('GROUP_OPEN', 0); +@define('GROUP_CLOSED', 1); +@define('GROUP_HIDDEN', 2); +@define('GROUP_SPECIAL', 3); +@define('GROUP_FREE', 4); + +// Forum/Topic states +@define('FORUM_CAT', 0); +@define('FORUM_POST', 1); +@define('FORUM_LINK', 2); +@define('ITEM_UNLOCKED', 0); +@define('ITEM_LOCKED', 1); +@define('ITEM_MOVED', 2); + +// Forum Flags +@define('FORUM_FLAG_LINK_TRACK', 1); +@define('FORUM_FLAG_PRUNE_POLL', 2); +@define('FORUM_FLAG_PRUNE_ANNOUNCE', 4); +@define('FORUM_FLAG_PRUNE_STICKY', 8); +@define('FORUM_FLAG_ACTIVE_TOPICS', 16); +@define('FORUM_FLAG_POST_REVIEW', 32); + +// Optional text flags +@define('OPTION_FLAG_BBCODE', 1); +@define('OPTION_FLAG_SMILIES', 2); +@define('OPTION_FLAG_LINKS', 4); + +// Topic types +@define('POST_NORMAL', 0); +@define('POST_STICKY', 1); +@define('POST_ANNOUNCE', 2); +@define('POST_GLOBAL', 3); + +// Lastread types +@define('TRACK_NORMAL', 0); +@define('TRACK_POSTED', 1); + +// Notify methods +@define('NOTIFY_EMAIL', 0); +@define('NOTIFY_IM', 1); +@define('NOTIFY_BOTH', 2); + +// Email Priority Settings +@define('MAIL_LOW_PRIORITY', 4); +@define('MAIL_NORMAL_PRIORITY', 3); +@define('MAIL_HIGH_PRIORITY', 2); + +// Log types +@define('LOG_ADMIN', 0); +@define('LOG_MOD', 1); +@define('LOG_CRITICAL', 2); +@define('LOG_USERS', 3); + +// Private messaging - Do NOT change these values +@define('PRIVMSGS_HOLD_BOX', -4); +@define('PRIVMSGS_NO_BOX', -3); +@define('PRIVMSGS_OUTBOX', -2); +@define('PRIVMSGS_SENTBOX', -1); +@define('PRIVMSGS_INBOX', 0); + +// Full Folder Actions +@define('FULL_FOLDER_NONE', -3); +@define('FULL_FOLDER_DELETE', -2); +@define('FULL_FOLDER_HOLD', -1); + +// Download Modes - Attachments +@define('INLINE_LINK', 1); +// This mode is only used internally to allow modders extending the attachment functionality +@define('PHYSICAL_LINK', 2); + +// Confirm types +@define('CONFIRM_REG', 1); +@define('CONFIRM_LOGIN', 2); +@define('CONFIRM_POST', 3); + +// Categories - Attachments +@define('ATTACHMENT_CATEGORY_NONE', 0); +@define('ATTACHMENT_CATEGORY_IMAGE', 1); // Inline Images +@define('ATTACHMENT_CATEGORY_WM', 2); // Windows Media Files - Streaming +@define('ATTACHMENT_CATEGORY_RM', 3); // Real Media Files - Streaming +@define('ATTACHMENT_CATEGORY_THUMB', 4); // Not used within the database, only while displaying posts +@define('ATTACHMENT_CATEGORY_FLASH', 5); // Flash/SWF files +@define('ATTACHMENT_CATEGORY_QUICKTIME', 6); // Quicktime/Mov files + +// BBCode UID length +@define('BBCODE_UID_LEN', 5); + +// Number of core BBCodes +@define('NUM_CORE_BBCODES', 12); + +// Magic url types +@define('MAGIC_URL_EMAIL', 1); +@define('MAGIC_URL_FULL', 2); +@define('MAGIC_URL_LOCAL', 3); +@define('MAGIC_URL_WWW', 4); + +// Profile Field Types +@define('FIELD_INT', 1); +@define('FIELD_STRING', 2); +@define('FIELD_TEXT', 3); +@define('FIELD_BOOL', 4); +@define('FIELD_DROPDOWN', 5); +@define('FIELD_DATE', 6); + +// referer validation +define('REFERER_VALIDATE_NONE', 0); +define('REFERER_VALIDATE_HOST', 1); +define('REFERER_VALIDATE_PATH', 2); + +// phpbb_chmod() permissions +@define('CHMOD_ALL', 7); +@define('CHMOD_READ', 4); +@define('CHMOD_WRITE', 2); +@define('CHMOD_EXECUTE', 1); + +// Captcha code length +define('CAPTCHA_MIN_CHARS', 4); +define('CAPTCHA_MAX_CHARS', 7); + +// Additional constants +define('VOTE_CONVERTED', 127); + +// Additional constants +@define('RANKS_PATH', 'images/ranks/'); + +// Table names +@define('ACL_GROUPS_TABLE', $table_prefix . 'acl_groups'); +@define('ACL_OPTIONS_TABLE', $table_prefix . 'acl_options'); +@define('ACL_ROLES_DATA_TABLE', $table_prefix . 'acl_roles_data'); +@define('ACL_ROLES_TABLE', $table_prefix . 'acl_roles'); +@define('ACL_USERS_TABLE', $table_prefix . 'acl_users'); +@define('ATTACHMENTS_TABLE', $table_prefix . 'attachments'); +@define('BANLIST_TABLE', $table_prefix . 'banlist'); +@define('BBCODES_TABLE', $table_prefix . 'bbcodes'); +@define('BOOKMARKS_TABLE', $table_prefix . 'bookmarks'); +@define('BOTS_TABLE', $table_prefix . 'bots'); +@define('CONFIG_TABLE', $table_prefix . 'config'); +@define('CONFIRM_TABLE', $table_prefix . 'confirm'); +@define('DISALLOW_TABLE', $table_prefix . 'disallow'); +@define('DRAFTS_TABLE', $table_prefix . 'drafts'); +@define('EXTENSIONS_TABLE', $table_prefix . 'extensions'); +@define('EXTENSION_GROUPS_TABLE', $table_prefix . 'extension_groups'); +@define('FORUMS_TABLE', $table_prefix . 'forums'); +@define('FORUMS_ACCESS_TABLE', $table_prefix . 'forums_access'); +@define('FORUMS_TRACK_TABLE', $table_prefix . 'forums_track'); +@define('FORUMS_WATCH_TABLE', $table_prefix . 'forums_watch'); +@define('GROUPS_TABLE', $table_prefix . 'groups'); +@define('ICONS_TABLE', $table_prefix . 'icons'); +@define('LANG_TABLE', $table_prefix . 'lang'); +@define('LOG_TABLE', $table_prefix . 'log'); +@define('MODERATOR_CACHE_TABLE', $table_prefix . 'moderator_cache'); +@define('MODULES_TABLE', $table_prefix . 'modules'); +@define('POLL_OPTIONS_TABLE', $table_prefix . 'poll_options'); +@define('POLL_VOTES_TABLE', $table_prefix . 'poll_votes'); +@define('POSTS_TABLE', $table_prefix . 'posts'); +@define('PRIVMSGS_TABLE', $table_prefix . 'privmsgs'); +@define('PRIVMSGS_FOLDER_TABLE', $table_prefix . 'privmsgs_folder'); +@define('PRIVMSGS_RULES_TABLE', $table_prefix . 'privmsgs_rules'); +@define('PRIVMSGS_TO_TABLE', $table_prefix . 'privmsgs_to'); +@define('PROFILE_FIELDS_TABLE', $table_prefix . 'profile_fields'); +@define('PROFILE_FIELDS_DATA_TABLE', $table_prefix . 'profile_fields_data'); +@define('PROFILE_FIELDS_LANG_TABLE', $table_prefix . 'profile_fields_lang'); +@define('PROFILE_LANG_TABLE', $table_prefix . 'profile_lang'); +@define('RANKS_TABLE', $table_prefix . 'ranks'); +@define('REPORTS_TABLE', $table_prefix . 'reports'); +@define('REPORTS_REASONS_TABLE', $table_prefix . 'reports_reasons'); +@define('SEARCH_RESULTS_TABLE', $table_prefix . 'search_results'); +@define('SEARCH_WORDLIST_TABLE', $table_prefix . 'search_wordlist'); +@define('SEARCH_WORDMATCH_TABLE', $table_prefix . 'search_wordmatch'); +@define('SESSIONS_TABLE', $table_prefix . 'sessions'); +@define('SESSIONS_KEYS_TABLE', $table_prefix . 'sessions_keys'); +@define('SITELIST_TABLE', $table_prefix . 'sitelist'); +@define('SMILIES_TABLE', $table_prefix . 'smilies'); +@define('STYLES_TABLE', $table_prefix . 'styles'); +@define('STYLES_TEMPLATE_TABLE', $table_prefix . 'styles_template'); +@define('STYLES_TEMPLATE_DATA_TABLE',$table_prefix . 'styles_template_data'); +@define('STYLES_THEME_TABLE', $table_prefix . 'styles_theme'); +@define('STYLES_IMAGESET_TABLE', $table_prefix . 'styles_imageset'); +@define('STYLES_IMAGESET_DATA_TABLE',$table_prefix . 'styles_imageset_data'); +@define('TOPICS_TABLE', $table_prefix . 'topics'); +@define('TOPICS_POSTED_TABLE', $table_prefix . 'topics_posted'); +@define('TOPICS_TRACK_TABLE', $table_prefix . 'topics_track'); +@define('TOPICS_WATCH_TABLE', $table_prefix . 'topics_watch'); +@define('USER_GROUP_TABLE', $table_prefix . 'user_group'); +@define('USERS_TABLE', $table_prefix . 'users'); +@define('WARNINGS_TABLE', $table_prefix . 'warnings'); +@define('WORDS_TABLE', $table_prefix . 'words'); +@define('ZEBRA_TABLE', $table_prefix . 'zebra'); + +// Additional tables + +// Additional constants +@define('INHERIT_LANG_NONE', 0); +@define('INHERIT_LANG_EN', 1); +@define('INHERIT_LANG_DEFAULT', 2); +?> \ No newline at end of file diff --git a/includes/sessions/rhea/core.php b/includes/sessions/rhea/core.php new file mode 100644 index 00000000..a4053c00 --- /dev/null +++ b/includes/sessions/rhea/core.php @@ -0,0 +1,1780 @@ +acl_getf('f_read', false)) + { + if ($user->data['user_id'] != ANONYMOUS) + { + //trigger_error('SORRY_AUTH_READ'); + $auth_data_sql = false; + } + //login_box('', $user->lang['LOGIN_VIEWFORUM']); + $auth_data_sql = $this->acl_getf_global('m_'); + } + // + // Loop through the list of forums to retrieve the ids for + // those with AUTH_VIEW allowed. + // + foreach( $is_auth_ary as $fid => $is_auth_row ) + { + if( ($is_auth_row['f_read']) ) + { + $auth_data_sql .= ( $auth_data_sql != '' ) ? ', ' . $fid : $fid; + } + } + if( empty($auth_data_sql) ) + { + $auth_data_sql = 0; + } + $userdata[$userdata_key] = $auth_data_sql; + return $auth_data_sql; + } + + /** + * function acl_getfignore() + * $auth_level_read can be a value or array; + * $ignore_forum_ids can have this sintax: forum_id(1), forum_id(2), ..., forum_is(n); + * 1st test 25.06.2008 by FlorinCB + */ + function acl_getfignore($auth_level_read, $ignore_forum_ids) + { + global $phpbb_root_path, $mx_user; + + $ignore_forum_ids = ($ignore_forum_ids) ? $ignore_forum_ids : ''; + + $auth_user = array(); + + if (is_array($auth_level_read)) + { + foreach ($auth_level_read as $auth_level) + { + $auth_user = $this->acl_getf('!' . $auth_level, true); + + if ($num_forums = count($auth_user)) + { + while ( list($forum_id, $auth_mod) = each($auth_user) ) + { + $unauthed = false; + + if (!$auth_mod[$auth_level] && ( strstr($ignore_forum_ids,$auth_mod['forum_id']) === FALSE)) + { + $unauthed = true; + } + + if ($unauthed) + { + $ignore_forum_ids .= ($ignore_forum_ids) ? ',' . $forum_id : $forum_id; + } + } + } + unset($auth_level_read); + } + } + elseif ($auth_level_read) + { + $auth_user = $this->acl_getf('!' . $auth_level_read, true); + + if ($num_forums = count($auth_user)) + { + while ( list($forum_id, $auth_mod) = each($auth_user) ) + { + $unauthed = false; + + if (!$auth_mod[$auth_level] && ( strstr($ignore_forum_ids,$auth_mod['forum_id']) === FALSE)) + { + $unauthed = true; + } + + if ($unauthed) + { + $ignore_forum_ids .= ($ignore_forum_ids) ? ',' . $forum_id : $forum_id; + } + } + } + + } + $ignore_forum_ids = ($ignore_forum_ids) ? $ignore_forum_ids : 0; + return $ignore_forum_ids; + } +} + +// +// Init the phpbb_auth class +// +$phpbb_auth = new phpbb_auth(); + +/** +* Backend specific tasks +* @package MX-Publisher +*/ +class mx_backend +{ + // + // XS Template - use backend db settings + // + var $edit_db = true; + + /** + * Validate backend + * + * Define Users/Group/Sessions backend, and validate + * Set $phpbb_root_path, $tplEx, $table_prefix + * + */ + function validate_backend() + { + global $db, $portal_config, $phpbb_root_path, $mx_root_path; + global $table_prefix, $phpEx, $tplEx; + + $table_prefix = false; + $tplEx = 'html'; + // Define relative path to phpBB, and validate + $phpbb_root_path = $mx_root_path . $portal_config['portal_backend_path']; + str_replace("//", "/", $phpbb_root_path); + $portal_backend_valid_file = @file_exists($phpbb_root_path . "mcp.$phpEx"); + + // Load phpbb config.php (to get table prefix) + if ((include $phpbb_root_path . "config.$phpEx") === false) + { + die('Configuration file (config) ' . $phpbb_root_path . "config.$phpEx" . ' couldn\'t be opened.'); + } + + // Validate db connection for backend + $_result = $db->sql_query("SELECT config_value from " . $table_prefix . "config WHERE config_name = 'cookie_domain'"); + $portal_backend_valid_db = $db->sql_numrows($_result) != 0; + + return $portal_backend_valid_file && !empty($table_prefix) && $portal_backend_valid_db; + } + + /** + * setup_backend + * + * Define some general backend definitions + * PORTAL_URL, PHPBB_URL, PORTAL_VERSION & $board_config + * + */ + function setup_backend() + { + global $portal_config, $board_config, $phpbb_root_path, $phpEx; + + $script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($portal_config['script_path'])); + $server_name = trim($portal_config['server_name']); + $server_protocol = ( $portal_config['cookie_secure'] ) ? 'https://' : 'http://'; + $server_port = (($portal_config['server_port']) && ($portal_config['server_port'] <> 80)) ? ':' . trim($portal_config['server_port']) . '/' : '/'; + + $server_url = $server_protocol . str_replace("//", "/", $server_name . $server_port . $script_name . '/'); //On some server the slash is not added and this trick will fix it + + define('PORTAL_URL', $server_url); + define('PORTAL_VERSION', $portal_config['portal_version']); + + // + // Grab phpBB global variables, re-cache if necessary + // - optional parameter to enable/disable cache for config data. If enabled, remember to refresh the MX-Publisher cache whenever updating phpBB config settings + // - true: enable cache, false: disable cache + $board_config = $this->obtain_phpbb_config(false); + $script_name_phpbb = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path'])) . '/'; + + $server_url_phpbb = $server_protocol . $server_name . $server_port . $script_name_phpbb; + define('PHPBB_URL', $server_url_phpbb); + + // Define backend template extension + $tplEx = 'html'; + if (!defined('TPL_EXT')) define('TPL_EXT', $tplEx); + // + // Now sync Configs + // In phpBB mode, we rely on native phpBB configs, thus we need to sync mxp and phpbb settings + // + $this->sync_configs(); + } + + /** + * Sync Configs + * @access private + */ + function sync_configs() + { + global $portal_config, $board_config; + + foreach ($portal_config as $key => $value) + { + $do = true; + switch ($key) + { + // + // Keep phpBB cookies/sessions + // + case 'cookie_domain': + case 'cookie_name': + case 'cookie_path': + case 'cookie_secure': + case 'session_length': + case 'allow_autologin': + case 'max_autologin_time': + case 'max_login_attempts': + case 'login_reset_time': + + $do = false; + break; + + // + // Keep phpBB stats + // + case 'record_online_users': + case 'record_online_date': + + $do = false; + break; + + // + // Keep portal settings + // + case 'default_style': + case 'override_user_style': + case 'default_lang': + + // + // Keep portal settings + // + case 'allow_html': + case 'allow_html_tags': + case 'allow_bbcode': + case 'allow_smilies': + case 'smilies_path': + + // + // Keep portal settings + // + case 'board_email': + case 'board_email_sig': + case 'smtp_delivery': + case 'smtp_host': + case 'smtp_username': + case 'smtp_password': + case 'smtp_auth_method': + + // + // Keep portal settings + // + case 'default_dateformat': + case 'board_timezone': + case 'gzip_compress': + + // + // Keep portal settings + // + case 'portal_id': + case 'portal_status': + case 'disabled_message': + case 'script_path': + case 'mx_use_cache': + case 'mod_rewrite': + case 'default_admin_style': + case 'overall_header': + case 'overall_footer': + case 'main_layout': + case 'navigation_block': + case 'top_phpbb_links': + case 'portal_version': + case 'portal_recached': + case 'portal_backend': + case 'portal_startdate': + case 'rand_seed': + + break; + + // Rename config keys and get internal sitename/sitedesc + case 'portal_name': + + $key = 'sitename'; + break; + + case 'portal_desc': + + $key = 'site_desc'; + break; + } + + if ($do) + { + $board_config[$key] = $value; + } + } + } + + /** + * load_file + * + * @param unknown_type $force_shared + * @access private + */ + function load_file($force_shared) + { + global $mx_root_path, $phpbb_root_path, $phpEx; + + if ($force_shared) + { + $backend = in_array($force_shared, array('internal', 'phpbb2', 'phpbb3')) ? $force_shared : PORTAL_BACKEND; + switch ($backend) + { + case 'internal': + case 'phpbb2': + case 'smf2': + case 'mybb': + $path = $mx_root_path . 'includes/shared/phpbb2/includes/'; + break; + + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + $path = $mx_root_path . 'includes/shared/phpbb3/includes/'; + break; + } + } + else + { + $path = $phpbb_root_path . 'includes/'; + } + return $path; + } + + /** + * dss_rand + * + * @param unknown_type $force_shared + * @access private + */ + function dss_rand() + { + global $db, $portal_config, $board_config, $dss_seeded; + + $val = $board_config['rand_seed'] . microtime(); + $val = md5($val); + $board_config['rand_seed'] = md5($board_config['rand_seed'] . $val . 'a'); + + if($dss_seeded !== true) + { + $sql = "UPDATE " . CONFIG_TABLE . " SET + config_value = '" . $board_config['rand_seed'] . "' + WHERE config_name = 'rand_seed'"; + //display an error debuging message only if the portal is installed/upgraded + if(!@$db->sql_query($sql) && @!file_exists('install')) + { + mx_message_die(GENERAL_ERROR, "Unable to reseed PRNG", "", __LINE__, __FILE__, $sql); + } + elseif(!@$db->sql_query($sql) && @file_exists('install')) + { + mx_message_die(GENERAL_ERROR, "Unable to reseed PRNG"."
Please finish upgrading and
". t(isset($lang['Please_remove_install_contrib'])), "", __LINE__, __FILE__, $sql); + } + $dss_seeded = true; + } + return substr($val, 4, 16); + } + + function make_jumpbox($action, $match_forum_id = 0) + { + global $template, $userdata, $lang, $db, $nav_links, $phpEx, $SID; + + $sql = 'SELECT forum_id, forum_name, parent_id, forum_type, left_id, right_id + FROM ' . FORUMS_TABLE . ' + ORDER BY left_id ASC'; + $result = $db->sql_query($sql, 600); + + $right = $padding = 0; + $padding_store = array('0' => 0); + $display_jumpbox = false; + $iteration = 0; + + // Sometimes it could happen that forums will be displayed here not be displayed within the index page + // This is the result of forums not displayed at index, having list permissions and a parent of a forum with no permissions. + // If this happens, the padding could be "broken" + + $forum_rows = array(); + while ($row = $db->sql_fetchrow($result)) + { + $forum_rows[] = $row; + + if ($forum_rows['left_id'] < $right) + { + $padding++; + $padding_store[$row['parent_id']] = $padding; + } + else if ($row['left_id'] > $right + 1) + { + // Ok, if the $padding_store for this parent is empty there is something wrong. For now we will skip over it. + // @todo digging deep to find out "how" this can happen. + $padding = (isset($padding_store[$row['parent_id']])) ? $padding_store[$row['parent_id']] : $padding; + } + + $right = $forum_rows['right_id']; + + if ($forum_rows['forum_type'] == FORUM_CAT && ($forum_rows['left_id'] + 1 == $forum_rows['right_id'])) + { + // Non-postable forum with no subforums, don't display + continue; + } + + if ( $total_forums = count($forum_rows) ) + { + for($i = 0; $i < $total_categories; $i++) + { + $boxstring_forums = ''; + for($j = 0; $j < $total_forums; $j++) + { + $selected = ( $forum_rows[$j]['forum_id'] == $match_forum_id ) ? 'selected="selected"' : ''; + $boxstring_forums .= ''; + + // + // Add an array to $nav_links for the Mozilla navigation bar. + // 'chapter' and 'forum' can create multiple items, therefore we are using a nested array. + // + $nav_links['chapter forum'][$forum_rows[$j]['forum_id']] = array ( + 'url' => mx_append_sid(PHPBB_URL . "viewforum.$phpEx?" . POST_FORUM_URL . "=" . $forum_rows[$j]['forum_id']), + 'title' => $forum_rows[$j]['forum_name'] + ); + + } + + if ( $boxstring_forums != '' ) + { + $boxstring .= ''; + $boxstring .= ''; + $boxstring .= ''; + $boxstring .= $boxstring_forums; + } + } + } + + $boxstring .= ''; + } + + // Let the jumpbox work again in sites having additional session id checks. + // if ( !empty($SID) ) + // { + $boxstring .= ''; + // } + + $template->set_filenames(array( + 'jumpbox' => 'jumpbox.tpl') + ); + + $template->assign_vars(array( + 'L_GO' => $lang['Go'], + 'L_JUMP_TO' => $lang['Jump_to'], + 'L_SELECT_FORUM' => $lang['Select_forum'], + + 'S_JUMPBOX_SELECT' => $boxstring, + 'S_JUMPBOX_ACTION' => mx_append_sid($action), + 'S_FORUM_COUNT' => $j) + ); + + $template->assign_var_from_handle('JUMPBOX', 'jumpbox'); + + return; + } + + /** + * Backend specific Page Header data + * + * @param unknown_type $mode + */ + function page_header($mode = false) + { + global $db, $mx_root_path, $phpbb_root_path, $userdata, $mx_user, $lang, $images, $phpEx, $board_config, $gen_simple_header, $layouttemplate, $mx_page; + + switch ($mode) + { + case 'generate_login_logout_stats': + + if ( $mx_user->data['user_id'] != 1 ) + { + $is_logged = true; + $u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $mx_user->data['session_id']; + $l_login_logout = $lang['Logout'] . ' [ ' . $mx_user->data['username'] . ' ]'; + } + else + { + $is_logged = false; + $u_login_logout = 'login.'.$phpEx; + $l_login_logout = $lang['Login']; + } + $s_last_visit = ( $mx_user->data['session_logged_in'] ) ? phpBB2::create_date($board_config['default_dateformat'], $mx_user->data['user_lastvisit'], $board_config['board_timezone']) : ''; + + // + // Obtain number of new private messages + // if user is logged in + // + if ( ($mx_user->data['session_logged_in']) && (empty($gen_simple_header)) ) + { + if ( $mx_user->data['user_new_privmsg'] ) + { + $l_message_new = ( $mx_user->data['user_new_privmsg'] == 1 ) ? $lang['New_pm'] : $lang['New_pms']; + $l_privmsgs_text = sprintf($l_message_new, $mx_user->data['user_new_privmsg']); + + if ( $mx_user->data['user_last_privmsg'] > $mx_user->data['user_lastvisit'] ) + { + $sql = "UPDATE " . USERS_TABLE . " + SET user_last_privmsg = " . $mx_user->data['user_lastvisit'] . " + WHERE user_id = " . $mx_user->data['user_id']; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not update private message new/read time for user', '', __LINE__, __FILE__, $sql); + } + + $s_privmsg_new = 1; + $icon_pm = $images['pm_new_msg']; + } + else + { + $s_privmsg_new = 0; + $icon_pm = $images['pm_no_new_msg']; + } + $mx_priv_msg = $lang['Private_Messages'] . ' (' . $mx_user->data['user_new_privmsg'] . ')'; + } + else + { + $l_privmsgs_text = $lang['No_new_pm']; + + $s_privmsg_new = 0; + $icon_pm = $images['pm_no_new_msg']; + $mx_priv_msg = $lang['Private_Messages']; + } + + if ( $mx_user->data['user_unread_privmsg'] ) + { + $l_message_unread = ( $mx_user->data['user_unread_privmsg'] == 1 ) ? $lang['Unread_pm'] : $lang['Unread_pms']; + $l_privmsgs_text_unread = sprintf($l_message_unread, $mx_user->data['user_unread_privmsg']); + } + else + { + $l_privmsgs_text_unread = $lang['No_unread_pm']; + } + } + else + { + $icon_pm = $images['pm_no_new_msg']; + $l_privmsgs_text = $lang['Login_check_pm']; + $l_privmsgs_text_unread = ''; + $s_privmsg_new = 0; + $mx_priv_msg = $lang['Private_Messages']; + } + + $layouttemplate->assign_vars(array( + 'U_LOGIN_LOGOUT' => mx_append_sid(PORTAL_URL . $u_login_logout), + 'L_LOGIN_LOGOUT' => $l_login_logout, + 'LAST_VISIT_DATE' => sprintf($lang['You_last_visit'], $s_last_visit), + 'PRIVATE_MESSAGE_INFO' => $l_privmsgs_text, + 'PRIVATE_MESSAGE_INFO_UNREAD' => $l_privmsgs_text_unread, + 'PRIVATE_MESSAGE_NEW_FLAG' => $s_privmsg_new, + 'PRIVMSG_IMG' => $icon_pm, + 'L_PRIVATEMSGS' => $mx_priv_msg, + + // Backend + 'PHPBB' => true, + + // Show phpbb stats? + 'PHPBB_STATS' => $mx_page->phpbb_stats, + + // Allow autologin? + 'ALLOW_AUTOLOGIN' => !$userdata['session_logged_in'] && (!isset($board_config['allow_autologin']) || $board_config['allow_autologin']), + + // phpBB PM + 'ENABLE_PM_POPUP' => $userdata['session_logged_in'] && !empty($userdata['user_popup_pm']), + )); + + break; + + case 'generate_nav_links': + + $u_register = 'ucp.'.$phpEx.'?mode=register'; + $u_profile = 'ucp.'.$phpEx; + $u_privatemsgs = 'ucp.'.$phpEx.'?i=pm&folder=inbox'; + $u_privatemsgs_popup ='ucp.'.$phpEx.'?i=pm&mode=popup'; + $u_search = 'search.'.$phpEx; + $u_memberlist = 'memberlist.'.$phpEx; + $u_modcp = 'mcp.'.$phpEx; + $u_faq = 'faq.'.$phpEx; + $u_viewonline = 'viewonline.'.$phpEx; + $u_group_cp = 'ucp.'.$phpEx.'?i=167'; + $u_sendpassword = ($board_config['email_enable']) ? mx3_append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=sendpassword') : ''; + + $layouttemplate->assign_vars(array( + 'U_REGISTER' => mx_append_sid(PHPBB_URL . $u_register), + 'U_PROFILE' => mx_append_sid(PHPBB_URL . $u_profile), + 'U_PRIVATEMSGS' => mx_append_sid(PHPBB_URL . $u_privatemsgs), + 'U_PRIVATEMSGS_POPUP' => mx_append_sid(PHPBB_URL . $u_privatemsgs_popup), + 'U_SEARCH' => mx_append_sid(PHPBB_URL . $u_search), + 'U_MEMBERLIST' =>mx_append_sid(PHPBB_URL . $u_memberlist), + 'U_MODCP' => mx_append_sid(PHPBB_URL . $u_modcp), + 'U_FAQ' => mx_append_sid(PHPBB_URL . $u_faq), + 'U_VIEWONLINE' => mx_append_sid(PHPBB_URL . $u_viewonline), + 'U_GROUP_CP' => mx_append_sid(PHPBB_URL . $u_group_cp), + 'U_SEND_PASSWORD' => $u_sendpassword, + )); + + break; + } + } + + /** + * Backend specific Page Tail data + * + * @param unknown_type $mode + */ + function page_tail($mode = false) + { + global $board_config, $userdata, $template; + + switch ($mode) + { + case 'generate_backend_version': + $current_phpbb_version = $board_config['version']; + + $template->assign_vars(array( + 'PHPBB_BACKEND' => true, + 'PHPBB_VERSION' => ($userdata['user_level'] == ADMIN && $userdata['user_id'] != ANONYMOUS) ? $current_phpbb_version : '', + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + )); + + break; + } + } + + + /** + * obtain_phpbb_config + * + * @access public + * @param boolean $use_cache + * @return unknown + */ + public function obtain_forum_config() + { + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) + { + global $table_prefix, $mx_root_path; + + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + if (($mx_cache->get('phpbb_config')) === false) + { + $config = $cached_config = array(); + + $sql = 'SELECT config_name, config_value, is_dynamic + FROM ' . CONFIG_TABLE; + if (!($result = $db->sql_query($sql))) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query config information, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); + } + } + + while ($row = $db->sql_fetchrow($result)) + { + if (!$row['is_dynamic']) + { + $cached_config[$row['config_name']] = $row['config_value']; + } + + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + $mx_cache->put('phpbb_config', $cached_config); + } + else + { + $sql = 'SELECT config_name, config_value + FROM ' . CONFIG_TABLE . ' + WHERE is_dynamic = 1'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + } + + return $config; + } + + /** + * Set phpbb config values + * + * @param unknown_type $config_name + * @param unknown_type $config_value + */ + public function set_forum_config($key, $new_value, $use_cache = false) + { + global $db, $mx_cache, $phpEx; + + if (!defined('CONFIG_TABLE')) + { + global $table_prefix, $mx_root_path; + + require $mx_root_path. "includes/sessions/phpbb2/constants.$phpEx"; + } + + // Read out config values + $config = $this->obtain_phpbb_config(); + $old_value = !isset($config[$key]) ? $config[$key] : false; + $use_cache = (($key == 'comments_pagination') || ($key == 'pagination')) ? true : false; + + $sql = 'UPDATE ' . CONFIG_TABLE . " + SET config_value = '" . $db->sql_escape($new_value) . "' + WHERE config_name = '" . $db->sql_escape($key) . "'"; + + if ($old_value !== false) + { + $sql .= " AND config_value = '" . $db->sql_escape($old_value) . "'"; + } + + $db->sql_query($sql); + + if (!$db->sql_affectedrows() && isset($config[$key])) + { + return false; + } + + if (!isset($config[$key])) + { + $sql = 'INSERT INTO ' . CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'config_name' => $key, + 'config_value' => $new_value)), + 'is_dynamic' => ($use_cache) ? 0 : 1)); + $db->sql_query($sql); + } + + $config[$key] = $new_value; + + + if ($use_cache) + { + $mx_cache->destroy('config'); + $mx_cache->put('config', $config); + } + + return true; + } + + /** + * Get MX-Publisher config data + * + * @access public + * @return unknown + */ + public function obtain_portal_config($use_cache = true) + { + global $db, $mx_cache; + + if ( ($portal_config = $mx_cache->get('mx_config')) && ($use_cache) ) + { + return $portal_config; + } + else + { + $sql = "SELECT * + FROM " . PORTAL_TABLE . " + WHERE portal_id = '1'"; + + if ( !($result = $db->sql_query($sql)) ) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query portal configuration, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query portal configuration', '', __LINE__, __FILE__, $sql ); + } + } + $row = $db->sql_fetchrow($result); + foreach ($row as $config_name => $config_value) + { + $portal_config[$config_name] = trim($config_value); + } + $db->sql_freeresult($result); + $mx_cache->put('mx_config', $portal_config); + + return ($portal_config); + } + } + + /** + * Set config value. Creates missing config entry. + * + */ + function set_portal_config($key, $new_value) + { + global $db, $mx_cache, $portal_config; + + // Read out config values + $portal_config = $this->obtain_portal_config(); + + $new[$key] = $new_value; + + $sql = "UPDATE " . PORTAL_TABLE . " SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)); + + if( !($db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($portal_config[$key])) + { + $sql = 'INSERT INTO ' . PORTAL_TABLE . ' ' . $db->sql_build_array('INSERT', array( + $db->sql_escape($key) => $db->sql_escape($new_value))); + $db->sql_query($sql); + } + + $portal_config[$key] = $new_value; + + $mx_cache->destroy('mx_config'); + } + + /** + * Get userdata + * + * Get Userdata, $mx_user can be username or user_id. If force_str is true, the username will be forced. + * Cached sql, since this function is used for every block. + * + * @param unknown_type $mx_user id or name + * @param boolean $force_str force clean_username + * @return array + */ + function get_userdata($mxuser, $force_str = false) + { + global $db, $phpBB2; + + if (!is_numeric($mxuser) || $force_str) + { + $mx_user = $phpBB2->phpbb_clean_username($mxuser); + } + else + { + $mx_user = intval($mxuser); + } + + $sql = "SELECT * + FROM " . USERS_TABLE . " + WHERE "; + $sql .= ((is_integer($mxuser)) ? "user_id = $mxuser" : "username = '" . str_replace("\'", "''", $mxuser) . "'" ) . " AND user_id <> " . ANONYMOUS; + if (!($result = $db->sql_query($sql, 120))) + { + if (!function_exists('mx_message_die')) + { + die("Tried obtaining data for a non-existent user. Function mx_backend->get_userdata()"); + } + else + { + mx_message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql); + } + } + $return = ($row = $db->sql_fetchrow($result)) ? $row : false; + /* + foreach ($row as $user_key => $user_value) + { + $userdata[$user_key] = trim($user_value); + } + */ + $db->sql_freeresult($result); + //return ($userdata); + return $return; + } + + /** + * Set user data value. + * + */ + function set_userdata($key, $new_value) + { + global $db, $mx_user; + + $new[$key] = $new_value; + + $sql = "UPDATE " . USERS_TABLE . " + SET " . $db->sql_build_array('UPDATE', utf8_normalize_nfc($new)) . " + WHERE user_id = '" . $mx_user->data['user_id'] . "'"; + if (!($db->sql_query($sql))) + { + mx_message_die(GENERAL_ERROR, "Failed to update portal configuration ", "", __LINE__, __FILE__, $sql); + } + + if (!$db->sql_affectedrows() && !isset($mx_user->data[$key])) + { + mx_message_die(GENERAL_ERROR, "Wrong Backend? Adding missing entry key to update MXP configuration is not supported ATM.", "", __LINE__, __FILE__, $sql); + } + $mx_user->data[$key] = $new_value; + } + + /** + * Obtain ranks + */ + function obtain_ranks() + { + global $mx_cache; + + if (($ranks = $mx_cache->get('_ranks')) === false) + { + global $db; + + $sql = 'SELECT * + FROM ' . RANKS_TABLE . ' + ORDER BY rank_min DESC'; + $result = $db->sql_query($sql); + + $ranks = array(); + while ($row = $db->sql_fetchrow($result)) + { + if ($row['rank_special']) + { + $ranks['special'][$row['rank_id']] = array( + 'rank_title' => $row['rank_title'], + 'rank_image' => $row['rank_image'] + ); + } + else + { + $ranks['normal'][] = array( + 'rank_title' => $row['rank_title'], + 'rank_min' => $row['rank_min'], + 'rank_image' => $row['rank_image'] + ); + } + } + $db->sql_freeresult($result); + + $mx_cache->put('_ranks', $ranks); + } + + return $ranks; + } + + /** + * Obtain allowed extensions + * + * @param mixed $forum_id If false then check for private messaging, if int then check for forum id. If true, then only return extension informations. + * + * @return array allowed extensions array. + */ + function obtain_attach_extensions($forum_id) + { + global $mx_cache; + + if (($extensions = $mx_cache->get('_extensions')) === false) + { + global $db; + + $extensions = array( + '_allowed_post' => array(), + '_allowed_pm' => array(), + ); + + // The rule is to only allow those extensions defined. ;) + $sql = 'SELECT e.extension, g.* + FROM ' . EXTENSIONS_TABLE . ' e, ' . EXTENSION_GROUPS_TABLE . ' g + WHERE e.group_id = g.group_id + AND (g.allow_group = 1 OR g.allow_in_pm = 1)'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $extension = strtolower(trim($row['extension'])); + + $extensions[$extension] = array( + 'display_cat' => (int) $row['cat_id'], + 'download_mode' => (int) $row['download_mode'], + 'upload_icon' => trim($row['upload_icon']), + 'max_filesize' => (int) $row['max_filesize'], + 'allow_group' => $row['allow_group'], + 'allow_in_pm' => $row['allow_in_pm'], + ); + + $allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array(); + + // Store allowed extensions forum wise + if ($row['allow_group']) + { + $extensions['_allowed_post'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums; + } + + if ($row['allow_in_pm']) + { + $extensions['_allowed_pm'][$extension] = 0; + } + } + $db->sql_freeresult($result); + + $mx_cache->put('_extensions', $extensions); + } + + // Forum post + if ($forum_id === false) + { + // We are checking for private messages, therefore we only need to get the pm extensions... + $return = array('_allowed_' => array()); + + foreach ($extensions['_allowed_pm'] as $extension => $check) + { + $return['_allowed_'][$extension] = 0; + $return[$extension] = $extensions[$extension]; + } + + $extensions = $return; + } + else if ($forum_id === true) + { + return $extensions; + } + else + { + $forum_id = (int) $forum_id; + $return = array('_allowed_' => array()); + + foreach ($extensions['_allowed_post'] as $extension => $check) + { + // Check for allowed forums + if (is_array($check)) + { + $allowed = (!in_array($forum_id, $check)) ? false : true; + } + else + { + $allowed = true; + } + + if ($allowed) + { + $return['_allowed_'][$extension] = 0; + $return[$extension] = $extensions[$extension]; + } + } + + $extensions = $return; + } + + if (!isset($extensions['_allowed_'])) + { + $extensions['_allowed_'] = array(); + } + + return $extensions; + } + + /** + * Obtain active bots + */ + function obtain_bots() + { + global $mx_cache; + + if (($bots = $mx_cache->get('_bots')) === false) + { + global $db; + + switch ($db->sql_layer) + { + case 'mssql': + case 'mssql_odbc': + $sql = 'SELECT user_id, bot_agent, bot_ip + FROM ' . BOTS_TABLE . ' + WHERE bot_active = 1 + ORDER BY LEN(bot_agent) DESC'; + break; + + case 'firebird': + $sql = 'SELECT user_id, bot_agent, bot_ip + FROM ' . BOTS_TABLE . ' + WHERE bot_active = 1 + ORDER BY CHAR_LENGTH(bot_agent) DESC'; + break; + + // LENGTH supported by MySQL, IBM DB2 and Oracle for sure... + default: + $sql = 'SELECT user_id, bot_agent, bot_ip + FROM ' . BOTS_TABLE . ' + WHERE bot_active = 1 + ORDER BY LENGTH(bot_agent) DESC'; + break; + } + $result = $db->sql_query($sql); + + $bots = array(); + while ($row = $db->sql_fetchrow($result)) + { + $bots[] = $row; + } + $db->sql_freeresult($result); + + $mx_cache->put('_bots', $bots); + } + + return $bots; + } + + /** + * Obtain cfg file data + * + * @param unknown_type $theme + * @return unknown + */ + function obtain_cfg_items($theme) + { + global $board_config, $phpbb_root_path, $mx_cache; + + $parsed_items = array( + 'theme' => array(), + 'template' => array(), + 'imageset' => array() + ); + + foreach ($parsed_items as $key => $parsed_array) + { + $parsed_array = $mx_cache->get('_cfg_' . $key . '_' . $theme[$key . '_path']); + + if ($parsed_array === false) + { + $parsed_array = array(); + } + + $reparse = false; + $filename = $phpbb_root_path . 'styles/' . $theme[$key . '_path'] . '/' . $key . '/' . $key . '.cfg'; + + if (!file_exists($filename)) + { + continue; + } + + if (!isset($parsed_array['filetime']) || (($board_config['load_tplcompile'] && @filemtime($filename) > $parsed_array['filetime']))) + { + $reparse = true; + } + + // Re-parse cfg file + if ($reparse) + { + $parsed_array = mx_parse_cfg_file($filename); + $parsed_array['filetime'] = @filemtime($filename); + + $mx_cache->put('_cfg_' . $key . '_' . $theme[$key . '_path'], $parsed_array); + } + $parsed_items[$key] = $parsed_array; + } + + return $parsed_items; + } + + /** + * Obtain disallowed usernames + */ + function obtain_disallowed_usernames() + { + global $mx_cache; + + if (($usernames = $mx_cache->get('_disallowed_usernames')) === false) + { + global $db; + + $sql = 'SELECT disallow_username + FROM ' . DISALLOW_TABLE; + $result = $db->sql_query($sql); + + $usernames = array(); + while ($row = $db->sql_fetchrow($result)) + { + $usernames[] = str_replace('%', '.*?', preg_quote(utf8_clean_string($row['disallow_username']), '#')); + } + $db->sql_freeresult($result); + + $mx_cache->put('_disallowed_usernames', $usernames); + } + + return $usernames; + } + + /** + * Obtain hooks... + */ + function obtain_hooks() + { + global $phpbb_root_path, $phpEx, $mx_cache; + + if (($hook_files = $mx_cache->get('_hooks')) === false) + { + $hook_files = array(); + + // Now search for hooks... + $dh = @opendir($phpbb_root_path . 'includes/hooks/'); + + if ($dh) + { + while (($file = readdir($dh)) !== false) + { + if (strpos($file, 'hook_') === 0 && substr($file, -(strlen($phpEx) + 1)) === '.' . $phpEx) + { + $hook_files[] = substr($file, 0, -(strlen($phpEx) + 1)); + } + } + closedir($dh); + } + + $mx_cache->put('_hooks', $hook_files); + } + + return $hook_files; + } + + /** + * Enter description here... + * + * @return unknown + */ + function generate_group_select_sql() + { + // Get us all the groups exept bots and guests + $sql = "SELECT g.group_id, g.group_name, g.group_type + FROM " . GROUPS_TABLE . " g + WHERE g.group_name NOT IN ('BOTS', 'GUESTS') + ORDER BY g.group_type ASC, g.group_name"; + return $sql; + } + + /** + * Enter description here... + * + * @return unknown + */ + function generate_session_online_sql($guest = false) + { + if ($guest) + { + $sql = "SELECT u.*, s.*, s.session_page AS user_session_page + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE u.user_id = " . ANONYMOUS . " + AND u.user_id = s.session_user_id + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY s.session_time DESC"; + } + else + { + $sql = "SELECT u.*, s.*, s.session_time AS user_session_time, s.session_page AS user_session_page + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE u.user_id <> " . ANONYMOUS . " + AND u.user_id = s.session_user_id + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY s.session_time DESC"; + } + return $sql; + } + + /** + * Enter description here... + * + * @param unknown_type $str_ip + * @return unknown + */ + function decode_ip($str_ip) + { + return $str_ip; + } + + /** + * Enter description here... + * + * @return unknown + */ + function get_phpbb_version() + { + global $board_config; + + return $board_config['version']; + } + + /** + * Enter description here... + * + * @return unknown + */ + function confirm_backend() + { + global $portal_config; + + return PORTAL_BACKEND == $portal_config['portal_backend']; + } + + /** + * Get username details for placing into templates. + * + * @param string $mode Can be profile (for getting an url to the profile), username (for obtaining the username), colour (for obtaining the user colour) or full (for obtaining a html string representing a coloured link to the users profile). + * @param int $user_id The users id + * @param string $username The users name + * @param string $username_colour The users colour + * @param string $guest_username optional parameter to specify the guest username. It will be used in favor of the GUEST language variable then. + * @param string $custom_profile_url optional parameter to specify a profile url. The user id get appended to this url as &u={user_id} + * + * @return string A string consisting of what is wanted based on $mode. + */ + function get_username_string($mode, $user_id, $username = false, $username_colour = '', $guest_username = false, $custom_profile_url = false) + { + global $phpbb_root_path, $mx_root_path, $phpEx, $mx_user, $phpbb_auth; + + $profile_url = ''; + + //Added by OryNider + if (($username == false) || ($username_colour == false)) + { + $this_userdata = mx_get_userdata($user_id, false); + $user_id = $this_userdata['user_id']; + $username = $this_userdata['username']; + $username_colour = $this_userdata['user_colour']; + } + //Added Ends + + $username_colour = ($username_colour) ? '#' . $username_colour : ''; + + if ($guest_username === false) + { + $username = ($username) ? $username : $mx_user->lang['GUEST']; + } + else + { + $username = ($user_id && $user_id != ANONYMOUS) ? $username : ((!empty($guest_username)) ? $guest_username : $mx_user->lang['GUEST']); + } + + // Only show the link if not anonymous + if ($user_id && $user_id != ANONYMOUS) + { + // Do not show the link if the user is already logged in but do not have u_viewprofile permissions (relevant for bots mostly). + // For all others the link leads to a login page or the profile. + if ($mx_user->data['user_id'] != ANONYMOUS && !$phpbb_auth->acl_get('u_viewprofile')) + { + $profile_url = ''; + } + else + { + $profile_url = ($custom_profile_url !== false) ? $custom_profile_url : mx3_append_sid(PHPBB_URL . "memberlist.$phpEx", 'mode=viewprofile'); + $profile_url .= '&u=' . (int) $user_id; + } + } + else + { + $profile_url = ''; + } + + switch ($mode) + { + case 'profile': + return $profile_url; + break; + + case 'username': + return $username; + break; + + case 'colour': + return $username_colour; + break; + + case 'full': + default: + + $tpl = ''; + if (!$profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if (!$profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + + return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), $tpl); + break; + } + } + + // + // ACP + // + /** + * Enter description here... + * + */ + function load_phpbb_acp_menu() + { + global $phpbb_root_path, $template, $lang, $phpEx, $userdata, $mx_user; + + $template->assign_block_vars('module_phpbb', array( + 'L_PHPBB' => $lang['Phpbb'], + "L_FORUM_INDEX" => $lang['Main_index'], + "L_PREVIEW_FORUM" => $lang['Preview_forum'], + "U_FORUM_INDEX" => mx_append_sid(PHPBB_URL . "index.$phpEx"), + )); + + $menu_cat_id = 0; + + $template->assign_block_vars('module_phpbb.catrow', array( + //+MOD: DHTML Menu for ACP + 'MENU_CAT_ID' => $menu_cat_id, + 'MENU_CAT_ROWS' => 1, + //-MOD: DHTML Menu for ACP + 'ADMIN_CATEGORY' => 'Olympus adminCP') + ); + + $template->assign_block_vars('module_phpbb.catrow.modulerow', array( + "ROW_COLOR" => "#" . $mx_user->theme['td_color1'], + "ROW_CLASS" => $mx_user->theme['td_class1'], + //+MOD: DHTML Menu for ACP + 'ROW_COUNT' => 0, + //-MOD: DHTML Menu for ACP + "ADMIN_MODULE" => 'Go!', + "U_ADMIN_MODULE" => mx_append_sid($phpbb_root_path . 'adm/index.php?sid='.$mx_user->session_id)) + ); + } + + /** + * Enter description here... + * + */ + function load_forum_stats() + { + global $db, $template, $board_config, $portal_config, $phpbb_root_path, $mx_root_path, $lang, $theme, $mx_user, $userdata; + + $template->assign_block_vars("forum_stats", array()); + // + // Get forum statistics + // + $total_posts = phpBB2::get_db_stat('postcount'); + $total_users = phpBB2::get_db_stat('usercount'); + $total_topics = phpBB2::get_db_stat('topiccount'); + + $start_date = phpBB2::create_date($board_config['default_dateformat'], $board_config['board_startdate'], $board_config['board_timezone']); + + $boarddays = ( time() - $board_config['board_startdate'] ) / 86400; + + $posts_per_day = sprintf("%.2f", $total_posts / $boarddays); + $topics_per_day = sprintf("%.2f", $total_topics / $boarddays); + $users_per_day = sprintf("%.2f", $total_users / $boarddays); + + $avatar_dir_size = 0; + + if ($avatar_dir = @opendir($phpbb_root_path . $board_config['avatar_path']) ) + { + while( $file = @readdir($avatar_dir) ) + { + if( $file != "." && $file != ".." ) + { + $avatar_dir_size += @filesize($phpbb_root_path . $board_config['avatar_path'] . "/" . $file); + } + } + @closedir($avatar_dir); + + // + // This bit of code translates the avatar directory size into human readable format + // Borrowed the code from the PHP.net annoted manual, origanally written by: + // Jesse (jesse@jess.on.ca) + // + if($avatar_dir_size >= 1048576) + { + $avatar_dir_size = round($avatar_dir_size / 1048576 * 100) / 100 . " MB"; + } + else if($avatar_dir_size >= 1024) + { + $avatar_dir_size = round($avatar_dir_size / 1024 * 100) / 100 . " KB"; + } + else + { + $avatar_dir_size = $avatar_dir_size . " Bytes"; + } + } + else + { + // Couldn't open Avatar dir. + $avatar_dir_size = $lang['Not_available']; + } + + if($posts_per_day > $total_posts) + { + $posts_per_day = $total_posts; + } + + if($topics_per_day > $total_topics) + { + $topics_per_day = $total_topics; + } + + if($users_per_day > $total_users) + { + $users_per_day = $total_users; + } + + // + // DB size ... MySQL only + // + // This code is heavily influenced by a similar routine + // in phpMyAdmin 2.2.0 + // + if( preg_match("/^mysql/", SQL_LAYER) ) + { + $sql = "SELECT VERSION() AS mysql_version"; + if($result = $db->sql_query($sql)) + { + $row = $db->sql_fetchrow($result); + $version = $row['mysql_version']; + + if( preg_match("/^(3\.23|4\.|5\.)/", $version) ) + { + static $dbname, $dbsize; + $db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)|(5\.)/", $version) ) ? "`$dbname`" : $dbname; + + $sql = "SHOW TABLE STATUS + FROM " . $db_name; + if($result = $db->sql_query($sql)) + { + $tabledata_ary = $db->sql_fetchrowset($result); + + $dbsize = 0; + for($i = 0; $i < count($tabledata_ary); $i++) + { + if( $tabledata_ary[$i]['Type'] != "MRG_MyISAM" ) + { + if( $table_prefix != "" ) + { + if( strstr($tabledata_ary[$i]['Name'], $table_prefix) ) + { + $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; + } + } + else + { + $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; + } + } + } + } // Else we couldn't get the table status. + } + else + { + $dbsize = $lang['Not_available']; + } + } + else + { + $dbsize = $lang['Not_available']; + } + $db->sql_freeresult($result); + } + else if( preg_match("/^mssql/", SQL_LAYER) ) + { + $sql = "SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize + FROM sysfiles"; + if( $result = $db->sql_query($sql) ) + { + $dbsize = ( $row = $db->sql_fetchrow($result) ) ? intval($row['dbsize']) : $lang['Not_available']; + } + else + { + $dbsize = $lang['Not_available']; + } + $db->sql_freeresult($result); + } + else + { + $dbsize = $lang['Not_available']; + } + + if ( is_integer($dbsize) ) + { + if( $dbsize >= 1048576 ) + { + $dbsize = sprintf("%.2f MB", ( $dbsize / 1048576 )); + } + else if( $dbsize >= 1024 ) + { + $dbsize = sprintf("%.2f KB", ( $dbsize / 1024 )); + } + else + { + $dbsize = sprintf("%.2f Bytes", $dbsize); + } + } + + $template->assign_vars(array( + "NUMBER_OF_POSTS" => $total_posts, + "NUMBER_OF_TOPICS" => $total_topics, + "NUMBER_OF_USERS" => $total_users, + "START_DATE" => $start_date, + "POSTS_PER_DAY" => $posts_per_day, + "TOPICS_PER_DAY" => $topics_per_day, + "USERS_PER_DAY" => $users_per_day, + "AVATAR_DIR_SIZE" => $avatar_dir_size, + "DB_SIZE" => $dbsize, + "GZIP_COMPRESSION" => ( $board_config['gzip_compress'] ) ? $lang['ON'] : $lang['OFF']) + ); + } + + /** + * Enter description here... + * + * @return unknown + */ + function phpbb_version_check($force_update = false, $warn_fail = false, $ttl = 86400) + { + global $mx_cache, $board_config, $lang, $phpbb_version_info; + + $errno = 0; + $errstr = $phpbb_version_info = ''; + $phpbb_version_info = $mx_cache->get('versioncheck'); + + if ($fsock = @fsockopen('www.phpbb.com', 80, $errno, $errstr, 10)) + { + //$phpbb_version_info = mx_get_remote_file('www.phpbb.com', '/updatecheck', ((defined('PHPBB_QA')) ? '30x_qa.txt' : '30x.txt'), $errstr, $errno); + if ($phpbb_version_info === false || $force_update) + { + $errstr = ''; + $errno = 0; + + $phpbb_version_info = mx_get_remote_file('version.phpbb.com', '/phpbb', + ((defined('PHPBB_QA')) ? '30x_qa.txt' : '30x.txt'), $errstr, $errno); + } + + if (empty($phpbb_version_info)) + { + $mx_cache->destroy('versioncheck'); + if ($warn_fail) + { + trigger_error($errstr, E_USER_WARNING); + } + return false; + } + + $mx_cache->put('versioncheck', $phpbb_version_info, $ttl); + + $phpbb_version_info = explode("\n", $phpbb_version_info); + //$latest_version = trim($phpbb_version_info[0]); + //$update_link = append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=update'); + $latest_phpbb_head_revision = $version1 = strtolower(trim($phpbb_version_info[0])); + $latest_phpbb_minor_revision = trim($phpbb_version_info[2]); + $latest_phpbb_version = trim($phpbb_version_info[0]) . '.' . trim($phpbb_version_info[1]) . '.' . trim($phpbb_version_info[2]); + $version2 = strtolower($board_config['version']); + $current_phpbb_version = explode(".", $board_config['version']); + $minor_phpbb_revision = $current_phpbb_version[2]; + $operator = '<='; + if (version_compare($version1, $version2, $operator)) + { + $phpbb_version_info = '

' . $lang['Version_up_to_date'] . '

'; + } + else + { + $phpbb_version_info = '

' . $lang['Version_not_up_to_date']; + $phpbb_version_info .= '
' . sprintf($lang['Latest_version_info'], $latest_phpbb_version) . sprintf($lang['Current_version_info'], $board_config['version']) . '

'; + } + } + else + { + if ($errstr) + { + $phpbb_version_info = '

' . sprintf($lang['Connect_socket_error'], $errstr) . '

'; + } + else + { + $phpbb_version_info = '

' . $lang['Socket_functions_disabled'] . '

'; + } + } + + $phpbb_version_info .= '

' . $lang['Mailing_list_subscribe_reminder'] . '

'; + + return $phpbb_version_info; + } +} + +// +// Now load some bbcodes, to be extended for this backend (see below) +// +include_once($mx_root_path . 'includes/sessions/ascraeus/bbcode.' . $phpEx); // BBCode associated functions + +?> \ No newline at end of file diff --git a/includes/sessions/rhea/functions.php b/includes/sessions/rhea/functions.php new file mode 100644 index 00000000..ef8c96cb --- /dev/null +++ b/includes/sessions/rhea/functions.php @@ -0,0 +1,278 @@ + (empty($mx_user->data)) ? ANONYMOUS : $mx_user->data['user_id'], + 'log_ip' => $mx_user->ip, + 'log_time' => time(), + 'log_operation' => $action, + 'log_data' => $data, + ); + + switch ($mode) + { + case 'admin': + $sql_ary['log_type'] = LOG_ADMIN; + break; + + case 'mod': + $sql_ary += array( + 'log_type' => LOG_MOD, + 'forum_id' => $forum_id, + 'topic_id' => $topic_id + ); + break; + + case 'user': + $sql_ary += array( + 'log_type' => LOG_USERS, + 'reportee_id' => $reportee_id + ); + break; + + case 'critical': + $sql_ary['log_type'] = LOG_CRITICAL; + break; + + default: + return false; + } + + $db->sql_query('INSERT INTO ' . LOG_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); + + return $db->sql_nextid(); +} + +/** +* Generate sort selection fields +*/ +function mx_gen_sort_selects(&$limit_days, &$sort_by_text, &$sort_days, &$sort_key, &$sort_dir, &$s_limit_days, &$s_sort_key, &$s_sort_dir, &$u_sort_param) +{ + global $mx_user; + + $sort_dir_text = array('a' => $mx_user->lang['ASCENDING'], 'd' => $mx_user->lang['DESCENDING']); + + // Check if the key is selectable. If not, we reset to the first key found. + // This ensures the values are always valid. + if (!isset($limit_days[$sort_days])) + { + @reset($limit_days); + $sort_days = key($limit_days); + } + + if (!isset($sort_by_text[$sort_key])) + { + @reset($sort_by_text); + $sort_key = key($sort_by_text); + } + + if (!isset($sort_dir_text[$sort_dir])) + { + @reset($sort_dir_text); + $sort_dir = key($sort_dir_text); + } + + $s_limit_days = ''; + + $s_sort_key = ''; + + $s_sort_dir = ''; + + $u_sort_param = "st=$sort_days&sk=$sort_key&sd=$sort_dir"; + + return; +} + +/** +* Get username details for placing into templates. +* +* @param string $mode Can be profile (for getting an url to the profile), username (for obtaining the username), colour (for obtaining the user colour) or full (for obtaining a html string representing a coloured link to the users profile). +* @param int $user_id The users id +* @param string $username The users name +* @param string $username_colour The users colour +* @param string $guest_username optional parameter to specify the guest username. It will be used in favor of the GUEST language variable then. +* @param string $custom_profile_url optional parameter to specify a profile url. The user id get appended to this url as &u={user_id} +* +* @return string A string consisting of what is wanted based on $mode. +*/ +function mx_get_username_string($mode, $user_id, $username, $username_colour = '', $guest_username = false, $custom_profile_url = false) +{ + global $phpbb_root_path, $phpEx, $mx_user, $phpbb_auth; + + $profile_url = ''; + $username_colour = ($username_colour) ? '#' . $username_colour : ''; + + if ($guest_username === false) + { + $username = ($username) ? $username : $mx_user->lang['GUEST']; + } + else + { + $username = ($user_id && $user_id != ANONYMOUS) ? $username : ((!empty($guest_username)) ? $guest_username : $mx_user->lang['GUEST']); + } + + // Only show the link if not anonymous + if ($user_id && $user_id != ANONYMOUS) + { + // Do not show the link if the user is already logged in but do not have u_viewprofile permissions (relevant for bots mostly). + // For all others the link leads to a login page or the profile. + if ($mx_user->data['user_id'] != ANONYMOUS && !$phpbb_auth->acl_get('u_viewprofile')) + { + $profile_url = ''; + } + else + { + $profile_url = ($custom_profile_url !== false) ? $custom_profile_url : mx3_append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile'); + $profile_url .= '&u=' . (int) $user_id; + } + } + else + { + $profile_url = ''; + } + + switch ($mode) + { + case 'profile_url': + case 'profile': + return $profile_url; + break; + + case 'username': + return $username; + break; + + case 'colour': + return $username_colour; + break; + + case 'full': + default: + + $tpl = ''; + if (!$profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if (!$profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && !$username_colour) + { + $tpl = '{USERNAME}'; + } + else if ($profile_url && $username_colour) + { + $tpl = '{USERNAME}'; + } + + return str_replace(array('{PROFILE_URL}', '{USERNAME_COLOUR}', '{USERNAME}'), array($profile_url, $username_colour, $username), $tpl); + break; + } +} +?> \ No newline at end of file diff --git a/includes/sessions/rhea/index.htm b/includes/sessions/rhea/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/sessions/rhea/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/sessions/rhea/login.php b/includes/sessions/rhea/login.php new file mode 100644 index 00000000..3433bf07 --- /dev/null +++ b/includes/sessions/rhea/login.php @@ -0,0 +1,256 @@ +is_request('login') && ($userdata['user_id'] == ANONYMOUS || $mx_request_vars->is_post('admin')) ) +{ + $username = utf8_clean_string($mx_request_vars->post('username', MX_TYPE_NO_TAGS, '')); + $password = $mx_request_vars->post('password', MX_TYPE_NO_TAGS); + $viewonline = $mx_request_vars->post('viewonline', MX_TYPE_INT, 0); + + $sql = "SELECT * + FROM " . USERS_TABLE . " + WHERE username = '" . str_replace("\\'", "''", $username) . "' + OR username_clean = '" . str_replace("\\'", "''", $username) . "'"; + + if ( !($result = $db->sql_query($sql) ) ) + { + mx_message_die(GENERAL_ERROR, 'Error in obtaining userdata', '', __LINE__, __FILE__, $sql); + } + + if( $row = $db->sql_fetchrow($result) ) + { + //$user_type = $row['user_level']; // phpBB2 + $user_type = $row['user_type']; // phpBB3 + + if( $user_type != ADMIN && $board_config['board_disable'] ) + { + mx_redirect(mx3_append_sid("index.$phpEx", false)); + } + else + { + $user_login_attempts = $row['user_login_attempts']; + + if ( $user_login_attempts && $board_config['login_reset_time'] ) + { + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_attempts = 0 WHERE user_id = ' . $row['user_id']); + $row['user_last_login_try'] = $row['user_login_tries'] = 0; + } + + // Check to see if user is allowed to login again... if his tries are exceeded + if ($user_login_attempt && $board_config['login_reset_time'] && $board_config['max_login_attempts'] && $user_login_attempts >= $board_config['max_login_attempts'] && $userdata['user_level'] != ADMIN) + { + mx_message_die(GENERAL_MESSAGE, sprintf($lang['Login_attempts_exceeded'], $board_config['max_login_attempts'], $board_config['login_reset_time'])); + } + + // If the password convert flag is set we need to convert it + if ($row['user_pass_convert']) + { + // in phpBB2 passwords were used exactly as they were sent, with addslashes applied + $password_old_format = isset($_REQUEST['password']) ? $_REQUEST['password'] : $password; + $password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format; + $password_new_format = ''; + + phpBB3::set_var($password_new_format, stripslashes($password_old_format), 'string'); + + //mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", $password_new_format, ''); + + if ($password == $password_new_format) + { + if (!function_exists('utf8_to_cp1252')) + { + global $mx_root_path, $phpEx; + include_once($mx_root_path . 'includes/utf/data/recode_basic.' . $phpEx); + } + + // cp1252 is phpBB2's default encoding, characters outside ASCII range might work when converted into that encoding + if (md5($password_old_format) == $row['user_password'] || md5(utf8_to_cp1252($password_old_format)) == $row['user_password']) + { + $hash = phpBB3::phpbb_hash($password_new_format); + + // Update the password in the users table to the new format and remove user_pass_convert flag + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_password = \'' . $db->sql_escape($hash) . '\', + user_pass_convert = 0 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + + $row['user_pass_convert'] = 0; + $row['user_password'] = $hash; + } + else + { + // Although we weren't able to convert this password we have to + // increase login attempt count to make sure this cannot be exploited + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_login_attempts = user_login_attempts + 1 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + mx_message_die(GENERAL_MESSAGE, 'We are sorry but password convertion failed, please login direct in forums or rewuest a new activation link.'); + return array( + 'status' => LOGIN_ERROR_PASSWORD_CONVERT, + 'error_msg' => 'LOGIN_ERROR_PASSWORD_CONVERT', + 'user_row' => $row, + ); + } + } + } + else + { + // in phpBB2 passwords were used exactly as they were sent, with addslashes applied + $password_old_format = isset($_REQUEST['password']) ? $_REQUEST['password'] : $password; + $password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format; + $password_new_format = ''; + phpBB3::set_var($password_new_format, stripslashes($password_old_format), 'string'); + //mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", $password_new_format, ''); + + if ($password_new_format == $password_old_format) + { + if (!function_exists('utf8_to_cp1252')) + { + global $mx_root_path, $phpEx; + include_once($mx_root_path . 'includes/utf/data/recode_basic.' . $phpEx); + } + + // cp1252 is phpBB2's default encoding, characters outside ASCII range might work when converted into that encoding + if (md5($password_old_format) == $row['user_password'] || md5($password) == $row['user_password'] || phpBB3::phpbb_check_hash($password, $row['user_password'])) + { + $autologin = $mx_request_vars->is_post('autologin'); + $admin = $mx_request_vars->is_post('admin'); + $mx_user->session_create($row['user_id'], $admin, $autologin, $viewonline = true); + $session_id = $mx_user->session_id; + + + // Reset login tries + //$db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0, user_last_login_try = 0 WHERE user_id = ' . $row['user_id']); // phpBB2 + $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_attempts = 0 WHERE user_id = ' . $row['user_id']); // phpBB3 + + if( $session_id ) + { + $fromurl = ( !empty($HTTP_REFERER) ) ? str_replace('&', '&', htmlspecialchars($HTTP_REFERER)) : "index.$phpEx"; + $url = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : $fromurl; + mx_redirect(mx3_append_sid($url, false, false, $session_id)); + } + else + { + mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__); + } + } + else + { + // Although we weren't able to convert this password we have to + // increase login attempt count to make sure this cannot be exploited + $sql = ' UPDATE ' . USERS_TABLE . ' + SET user_login_attempts = user_login_attempts + 1 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + + $redirect = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : ''; + $redirect = str_replace('?', '&', $redirect); + + if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r")) + { + mx_message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.'); + } + + $template->assign_vars(array( + 'META' => "") + ); + + $message = $lang['Error_login'] . '

' . sprintf($lang['Click_return_login'], "", '') . '

' . sprintf($lang['Click_return_index'], '', ''); + + mx_message_die(GENERAL_MESSAGE, $message); + } + } + // Check password ... + if (!$row['user_pass_convert'] && phpBB3::phpbb_check_hash($password, $row['user_password'])) + { + if ($row['user_login_attempts'] != 0) + { + // Successful, reset login attempts (the user passed all stages) + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_login_attempts = 0 + WHERE user_id = ' . $row['user_id']; + $db->sql_query($sql); + } + + // User inactive... + if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) + { + mx_message_die(GENERAL_MESSAGE, 'Inactive User'); + } + + // Successful login... set user_login_attempts to zero... + if( $session_id ) + { + $url = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : "index.$phpEx"; + mx_redirect(mx3_append_sid($url, false)); + } + else + { + mx_message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__); + } + } + } + } + } + else + { + $redirect = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : ''; + $redirect = str_replace("?", "&", $redirect); + + if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r")) + { + mx_message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.'); + } + + $template->assign_vars(array( + 'META' => "") + ); + + $message = $lang['Error_login'] . '

' . sprintf($lang['Click_return_login'], "", '') . '

' . sprintf($lang['Click_return_index'], '', ''); + mx_message_die(GENERAL_MESSAGE, $message); + } +} +else if ($mx_request_vars->is_request('logout') && $userdata['session_logged_in'] ) +{ + // session id check + if ($sid == '' || $sid != $userdata['session_id']) + { + mx_message_die(GENERAL_ERROR, 'Invalid_session' . $userdata['session_id']); + } + + if( $userdata['session_logged_in'] ) + { + $mx_user->session_kill(); + } + + if (!$mx_request_vars->is_empty_request('redirect')) + { + $url = $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS); + $url = str_replace('&', '&', $url); + mx_redirect(mx3_append_sid($url, false)); + } + else + { + mx_redirect(mx3_append_sid("index.$phpEx", false)); + } +} +else +{ + $url = !$mx_request_vars->is_empty_post('redirect') ? str_replace('&', '&', $mx_request_vars->post('redirect', MX_TYPE_NO_TAGS)) : "index.$phpEx"; + mx_redirect(mx3_append_sid($url, false)); +} +?> \ No newline at end of file diff --git a/includes/sessions/rhea/session.php b/includes/sessions/rhea/session.php new file mode 100644 index 00000000..f9a8c654 --- /dev/null +++ b/includes/sessions/rhea/session.php @@ -0,0 +1,3800 @@ + $board_config - by Jon + * - replaced $cache = new mx_nothing(); to disable bots() - by Jon + * - removed '?' in the returned $SID string - by Jon + * - in function setup() + * $auth -> $phpbb_auth - by OryNider + * -new globals: $mx_root_path, $mx_cache - by OryNider + * $this->lang_name was redefined to use in + * worst case the new $board_config['phpbb_lang'] + * wich was defined in mx_functions_style.php + * before lang name is expanded - by OryNider + * $template = new mx_Template(); - by OryNider + * - before $this->add_lang($lang_set); the phpBB common language is included + * if fails with $phpbb_root_path added + * - in function set_lang() + * - if empty $this->lang_path will be redefined + * from $phpbb_root_path and new $board_config['phpbb_lang'] + * wich in this case are set as globals - by OryNider + * (similar check has been added in the phpBB3 version too) + * - added function images() to help redefining $images var + * and indexes were is needed - by OryNider + */ + +/** + * Disable bots + * + */ +class mx_nothing +{ + function obtain_bots() + { + return array(); + } +} + +/** +* Session class +* @package MX-Publisher +*/ +class session +{ + var $cookie_data = array(); + var $page = array(); + var $data = array(); + var $browser = ''; + var $forwarded_for = ''; + var $host = ''; + var $session_id = ''; + var $ip = ''; + var $load = 0; + var $time_now = 0; + var $update_session_page = true; + + var $lang = array(); + var $help = array(); + var $theme = array(); + var $date_format; + var $timezone; + var $dst; + + var $lang_name; + var $lang_id = false; + var $lang_path; + var $img_lang; + var $img_array = array(); + + /** + * Load sessions + * @access public + * + */ + function load() + { + global $board_config, $cache; + + $board_config['auth_method'] = 'db'; + $cache = new mx_nothing(); + //define('NEED_SID', 1); + $this->session_begin(); + + // Redefine some MXP stylish userdata + $session_logged_in = $this->data['session_logged_in'] = $this->data['user_id'] != ANONYMOUS ? 1 : 0; + + //print_r($session_logged_in); + if ( $this->data['user_id'] == ANONYMOUS ) + { + $this->data['user_type'] = -1; + } + + switch ($this->data['user_type']) + { + case 3: + $this->data['user_level'] = 1; + break; + case 0: + $this->data['user_level'] = 2; + break; + default: + $this->data['user_level'] = 0; + break; + } + $this->data['session_id'] = $this->session_id; + $this->data['user_session_page'] = $this->data['session_page']; + } + + /** + * Extract current session page + * + * @param string $root_path current root path (phpbb_root_path) + */ + function extract_current_page($root_path) + { + $page_array = array(); + + // First of all, get the request uri... + $script_name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF'); + $args = (!empty($_SERVER['QUERY_STRING'])) ? explode('&', $_SERVER['QUERY_STRING']) : explode('&', getenv('QUERY_STRING')); + + // If we are unable to get the script name we use REQUEST_URI as a failover and note it within the page array for easier support... + if (!$script_name) + { + $script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI'); + $script_name = (($pos = strpos($script_name, '?')) !== false) ? substr($script_name, 0, $pos) : $script_name; + $page_array['failover'] = 1; + } + + // Replace backslashes and doubled slashes (could happen on some proxy setups) + $script_name = str_replace(array('\\', '//'), '/', $script_name); + + // Now, remove the sid and let us get a clean query string... + foreach ($args as $key => $argument) + { + if (strpos($argument, 'sid=') === 0 || strpos($argument, '_f_=') === 0) + { + unset($args[$key]); + } + } + + // The following examples given are for an request uri of {path to the phpbb directory}/adm/index.php?i=10&b=2 + + // The current query string + $query_string = trim(implode('&', $args)); + + // basenamed page name (for example: index.php) + $page_name = basename($script_name); + $page_name = urlencode(htmlspecialchars($page_name)); + + // current directory within the phpBB root (for example: adm) + $root_dirs = explode('/', str_replace('\\', '/', phpBB2::phpbb_realpath($root_path))); + $page_dirs = explode('/', str_replace('\\', '/', phpBB2::phpbb_realpath('./'))); + $intersection = array_intersect_assoc($root_dirs, $page_dirs); + + $root_dirs = array_diff_assoc($root_dirs, $intersection); + $page_dirs = array_diff_assoc($page_dirs, $intersection); + + $page_dir = str_repeat('../', sizeof($root_dirs)) . implode('/', $page_dirs); + + if ($page_dir && substr($page_dir, -1, 1) == '/') + { + $page_dir = substr($page_dir, 0, -1); + } + + // Current page from phpBB root (for example: adm/index.php?i=10&b=2) + $page = (($page_dir) ? $page_dir . '/' : '') . $page_name . (($query_string) ? "?$query_string" : ''); + + // The script path from the webroot to the current directory (for example: /phpBB3/adm/) : always prefixed with / and ends in / + $script_path = trim(str_replace('\\', '/', dirname($script_name))); + + // The script path from the webroot to the phpBB root (for example: /phpBB3/) + $script_dirs = explode('/', $script_path); + array_splice($script_dirs, -sizeof($page_dirs)); + $root_script_path = implode('/', $script_dirs) . (sizeof($root_dirs) ? '/' . implode('/', $root_dirs) : ''); + + // We are on the base level (phpBB root == webroot), lets adjust the variables a bit... + if (!$root_script_path) + { + $root_script_path = ($page_dir) ? str_replace($page_dir, '', $script_path) : $script_path; + } + + $script_path .= (substr($script_path, -1, 1) == '/') ? '' : '/'; + $root_script_path .= (substr($root_script_path, -1, 1) == '/') ? '' : '/'; + + $page_array += array( + 'page_name' => $page_name, + 'page_dir' => $page_dir, + + 'query_string' => $query_string, + 'script_path' => str_replace(' ', '%20', htmlspecialchars($script_path)), + 'root_script_path' => str_replace(' ', '%20', htmlspecialchars($root_script_path)), + + 'page' => $page + ); + + return $page_array; + } + + /** + * Start session management + * + * This is where all session activity begins. We gather various pieces of + * information from the client and server. We test to see if a session already + * exists. If it does, fine and dandy. If it doesn't we'll go on to create a + * new one ... pretty logical heh? We also examine the system load (if we're + * running on a system which makes such information readily available) and + * halt if it's above an admin definable limit. + * + * @param bool $update_session_page if true the session page gets updated. + * This can be set to circumvent certain scripts to update the users last visited page. + */ + function session_begin($update_session_page = true) + { + global $phpEx, $SID, $_SID, $_EXTRA_URL, $db, $board_config, $mx_root_path, $phpbb_root_path, $page_id; + + // Give us some basic information + $this->time_now = time(); + $this->cookie_data = array('u' => 0, 'k' => ''); + $this->update_session_page = $update_session_page; + $this->browser = (!empty($_SERVER['HTTP_USER_AGENT'])) ? htmlspecialchars((string) $_SERVER['HTTP_USER_AGENT']) : ''; + $this->referer = (!empty($_SERVER['HTTP_REFERER'])) ? htmlspecialchars((string) $_SERVER['HTTP_REFERER']) : ''; + $this->forwarded_for = (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) ? (string) $_SERVER['HTTP_X_FORWARDED_FOR'] : ''; + $this->host = (!empty($_SERVER['HTTP_HOST'])) ? (string) $_SERVER['HTTP_HOST'] : 'localhost'; + $this->page = $this->extract_current_page($phpbb_root_path); + + // if the forwarded for header shall be checked we have to validate its contents + if ($board_config['forwarded_for_check']) + { + $this->forwarded_for = preg_replace('#, +#', ', ', $this->forwarded_for); + + // Whoa these look impressive! + // The code to generate the following two regular expressions which match valid IPv4/IPv6 addresses + // can be found in the develop directory + $ipv4 = phpBB3::get_preg_expression('ipv4'); //'#^(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$#'; + $ipv6 = phpBB3::get_preg_expression('ipv6'); //'#^(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){5}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:))$#i'; + + // split the list of IPs + $ips = explode(', ', $this->forwarded_for); + foreach ($ips as $ip) + { + // check IPv4 first, the IPv6 is hopefully only going to be used very seldomly + if (!empty($ip) && !preg_match($ipv4, $ip) && !preg_match($ipv6, $ip)) + { + // contains invalid data, don't use the forwarded for header + $this->forwarded_for = ''; + break; + } + } + } + else + { + $this->forwarded_for = ''; + } + + // Add forum to the page for tracking online users - also adding a "x" to the end to properly identify the number + $this->page['page'] .= (isset($_REQUEST['f'])) ? ((strpos($this->page['page'], '?') !== false) ? '&' : '?') . '_f_=' . (int) $_REQUEST['f'] . 'x' : ''; + + if (isset($_COOKIE[$board_config['cookie_name'] . '_sid']) || isset($_COOKIE[$board_config['cookie_name'] . '_u'])) + { + $this->cookie_data['u'] = phpBB3::request_var($board_config['cookie_name'] . '_u', 0, false, true); + $this->cookie_data['k'] = phpBB3::request_var($board_config['cookie_name'] . '_k', '', false, true); + $this->session_id = phpBB3::request_var($board_config['cookie_name'] . '_sid', '', false, true); + + // original code: $SID = (defined('NEED_SID')) ? 'sid=' . $this->session_id : 'sid='; + $SID = (defined('NEED_SID')) ? 'sid=' . $this->session_id : ''; + $_SID = (defined('NEED_SID')) ? $this->session_id : ''; + + if (empty($this->session_id)) + { + $this->session_id = $_SID = phpBB3::request_var('sid', ''); + $SID = 'sid=' . $this->session_id; + $this->cookie_data = array('u' => 0, 'k' => ''); + } + } + else + { + $this->session_id = $_SID = phpBB3::request_var('sid', ''); + $SID = 'sid=' . $this->session_id; + } + + $_EXTRA_URL = array(); + + // Why no forwarded_for et al? Well, too easily spoofed. With the results of my recent requests + // it's pretty clear that in the majority of cases you'll at least be left with a proxy/cache ip. + $this->ip = (!empty($_SERVER['REMOTE_ADDR'])) ? htmlspecialchars($_SERVER['REMOTE_ADDR']) : ''; + $this->ip = preg_replace('#[ ]{2,}#', ' ', str_replace(array(',', ' '), ' ', $this->ip)); + + // split the list of IPs + $ips = explode(' ', $this->ip); + + // Default IP if REMOTE_ADDR is invalid + $this->ip = '127.0.0.1'; + + foreach ($ips as $ip) + { + // check IPv4 first, the IPv6 is hopefully only going to be used very seldomly + if (!empty($ip) && !preg_match(phpBB3::get_preg_expression('ipv4'), $ip) && !preg_match(phpBB3::get_preg_expression('ipv6'), $ip)) + { + // Just break + break; + } + + // Quick check for IPv4-mapped address in IPv6 + if (stripos($ip, '::ffff:') === 0) + { + $ipv4 = substr($ip, 7); + + if (preg_match(phpBB3::get_preg_expression('ipv4'), $ipv4)) + { + $ip = $ipv4; + } + } + + // Use the last in chain + $this->ip = $ip; + } + + $this->load = false; + + // Load limit check (if applicable) + if ($board_config['limit_load'] || $board_config['limit_search_load']) + { + if ($load = @file_get_contents('/proc/loadavg')) + { + $this->load = array_slice(explode(' ', $load), 0, 1); + $this->load = floatval($this->load[0]); + } + else + { + set_config('limit_load', '0'); + set_config('limit_search_load', '0'); + } + } + + // Is session_id is set or session_id is set and matches the url param if required + if (!empty($this->session_id) && (!defined('NEED_SID') || (isset($_GET['sid']) && $this->session_id === $_GET['sid'])) ) + { + $sql = 'SELECT u.*, s.* + FROM ' . SESSIONS_TABLE . ' s, ' . USERS_TABLE . " u + WHERE s.session_id = '" . $db->sql_escape($this->session_id) . "' + AND u.user_id = s.session_user_id"; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + // Did the session exist in the DB? + if (isset($this->data['user_id'])) + { + // Validate IP length according to admin ... enforces an IP + // check on bots if admin requires this + //$quadcheck = ($board_config['ip_check_bot'] && $this->data['user_type'] & USER_BOT) ? 4 : $board_config['ip_check']; + + if (strpos($this->ip, ':') !== false && strpos($this->data['session_ip'], ':') !== false) + { + $s_ip = short_ipv6($this->data['session_ip'], $board_config['ip_check']); + $u_ip = short_ipv6($this->ip, $board_config['ip_check']); + } + else + { + $s_ip = implode('.', array_slice(explode('.', $this->data['session_ip']), 0, $board_config['ip_check'])); + $u_ip = implode('.', array_slice(explode('.', $this->ip), 0, $board_config['ip_check'])); + } + + $s_browser = ($board_config['browser_check']) ? strtolower(substr($this->data['session_browser'], 0, 149)) : ''; + $u_browser = ($board_config['browser_check']) ? strtolower(substr($this->browser, 0, 149)) : ''; + + $s_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->data['session_forwarded_for'], 0, 254) : ''; + $u_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->forwarded_for, 0, 254) : ''; + + // referer checks + // The @ before $config['referer_validation'] suppresses notices present while running the updater + $check_referer_path = (@$board_config['referer_validation'] == REFERER_VALIDATE_PATH); + $referer_valid = true; + + // we assume HEAD and TRACE to be foul play and thus only whitelist GET + if (@$board_config['referer_validation'] && isset($_SERVER['REQUEST_METHOD']) && strtolower($_SERVER['REQUEST_METHOD']) !== 'get') + { + $referer_valid = $this->validate_referer($check_referer_path); + } + + if ($u_ip === $s_ip && $s_browser === $u_browser && $s_forwarded_for === $u_forwarded_for) + { + $session_expired = false; + + // Check whether the session is still valid if we have one + $method = basename(trim($board_config['auth_method'])); + + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'File(s1) ' . $mx_root_path . "includes/shared/phpbb3/includes/auth/auth/auth_" . $method . ".$phpEx" . ' couldn\'t be opened.'); + } + } + + $method = 'validate_session_' . $method; + if (function_exists($method)) + { + if (!$method($this->data)) + { + $session_expired = true; + } + } + + if (!$session_expired) + { + // Check the session length timeframe if autologin is not enabled. + // Else check the autologin length... and also removing those having autologin enabled but no longer allowed board-wide. + if (!$this->data['session_autologin']) + { + if ($this->data['session_time'] < $this->time_now - ($board_config['session_length'] + 60)) + { + $session_expired = true; + } + } + else if (!$board_config['allow_autologin'] || ($board_config['max_autologin_time'] && $this->data['session_time'] < $this->time_now - (86400 * (int) $board_config['max_autologin_time']) + 60)) + { + $session_expired = true; + } + } + + if (!$session_expired) + { + // Only update session DB a minute or so after last update or if page changes + if ($this->time_now - $this->data['session_time'] > 60 || ($this->update_session_page && $this->data['session_page'] != $this->page['page'])) + { + $sql_ary = array('session_time' => $this->time_now); + + if ($this->update_session_page) + { + $sql_ary['session_page'] = substr($this->page['page'], 0, 199); + $sql_ary['session_forum_id'] = !empty($this->page['forum']) ? $this->page['forum'] : $page_id; //Added for phpBB 3.0.2 by Ory + } + + $db->sql_return_on_error(true); + + $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "'"; + $result = $db->sql_query($sql); + + $db->sql_return_on_error(false); + + // If the database is not yet updated, there will be an error due to the session_forum_id + // @todo REMOVE for 3.0.2 + if ($result === false) + { + unset($sql_ary['session_forum_id']); + + $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "'"; + $db->sql_query($sql); + } + + if ($this->data['user_id'] != ANONYMOUS && !empty($board_config['new_member_post_limit']) && $this->data['user_new'] && $board_config['new_member_post_limit'] <= $this->data['user_posts']) + { + $this->leave_newly_registered(); + } + } + + $this->data['is_registered'] = ($this->data['user_id'] != ANONYMOUS && ($this->data['user_type'] == USER_NORMAL || $this->data['user_type'] == USER_FOUNDER)) ? true : false; + $this->data['is_bot'] = (!$this->data['is_registered'] && $this->data['user_id'] != ANONYMOUS) ? true : false; + $this->data['user_lang'] = basename($this->data['user_lang']); + + return true; + } + } + else + { + // Added logging temporarly to help debug bugs... + if (defined('DEBUG_EXTRA') && $this->data['user_id'] != ANONYMOUS) + { + if ($referer_valid) + { + mx_add_log('critical', 'LOG_IP_BROWSER_FORWARDED_CHECK', $u_ip, $s_ip, $u_browser, $s_browser, htmlspecialchars($u_forwarded_for), htmlspecialchars($s_forwarded_for)); + } + else + { + mx_add_log('critical', 'LOG_REFERER_INVALID', $this->referer); + } + } + } + } + } + // If we reach here then no (valid) session exists. So we'll create a new one + return $this->session_create(); + } + + /** + * Create a new session + * + * If upon trying to start a session we discover there is nothing existing we + * jump here. Additionally this method is called directly during login to regenerate + * the session for the specific user. In this method we carry out a number of tasks; + * garbage collection, (search)bot checking, banned user comparison. Basically + * though this method will result in a new session for a specific user. + */ + function session_create($user_id = false, $set_admin = false, $persist_login = false, $viewonline = true) + { + global $SID, $_SID, $db, $board_config, $cache, $mx_root_path, $phpbb_root_path, $phpEx, $mx_backend; + + $this->data = array(); + + /* Garbage collection ... remove old sessions updating user information + // if necessary. It means (potentially) 11 queries but only infrequently + if ($this->time_now > $board_config['session_last_gc'] + $board_config['session_gc']) + { + $this->session_gc(); + }*/ + + // Do we allow autologin on this board? No? Then override anything + // that may be requested here + if (!$board_config['allow_autologin']) + { + $this->cookie_data['k'] = $persist_login = false; + } + + /** + * Here we do a bot check, oh er saucy! No, not that kind of bot + * check. We loop through the list of bots defined by the admin and + * see if we have any useragent and/or IP matches. If we do, this is a + * bot, act accordingly + */ + $bot = false; + $active_bots = $mx_backend->obtain_bots(); + + foreach ($active_bots as $row) + { + if ($row['bot_agent'] && preg_match('#' . str_replace('\*', '.*?', preg_quote($row['bot_agent'], '#')) . '#i', $this->browser)) + { + $bot = $row['user_id']; + } + + // If ip is supplied, we will make sure the ip is matching too... + if ($row['bot_ip'] && ($bot || !$row['bot_agent'])) + { + // Set bot to false, then we only have to set it to true if it is matching + $bot = false; + + foreach (explode(',', $row['bot_ip']) as $bot_ip) + { + $bot_ip = trim($bot_ip); + + if (!$bot_ip) + { + continue; + } + if (strpos($this->ip, $bot_ip) === 0) + { + $bot = (int) $row['user_id']; + break; + } + } + } + if ($bot) + { + break; + } + } + $method = basename(trim($board_config['auth_method'])); + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'File(s2) ' . $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx" . ' couldn\'t be opened.'); + } + } + //$provider = $phpbb_container->get('auth.provider.' . $method); + $method = 'autologin_' . $method; + if (function_exists($method)) + { + $this->data = $method(); + + if (sizeof($this->data)) + { + $this->cookie_data['k'] = ''; + $this->cookie_data['u'] = $this->data['user_id']; + } + } + + // If we're presented with an autologin key we'll join against it. + // Else if we've been passed a user_id we'll grab data based on that + if (isset($this->cookie_data['k']) && $this->cookie_data['k'] && $this->cookie_data['u'] && !sizeof($this->data)) + { + $sql = 'SELECT u.* + FROM ' . USERS_TABLE . ' u, ' . SESSIONS_KEYS_TABLE . ' k + WHERE u.user_id = ' . (int) $this->cookie_data['u'] . ' + AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ") + AND k.user_id = u.user_id + AND k.key_id = '" . $db->sql_escape(md5($this->cookie_data['k'])) . "'"; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $bot = false; + } + else if ($user_id !== false && !sizeof($this->data)) + { + $this->cookie_data['k'] = ''; + $this->cookie_data['u'] = $user_id; + + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . (int) $this->cookie_data['u'] . ' + AND user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')'; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $bot = false; + } + + // If no data was returned one or more of the following occurred: + // Key didn't match one in the DB + // User does not exist + // User is inactive + // User is bot + if (!sizeof($this->data) || !is_array($this->data)) + { + $this->cookie_data['k'] = ''; + $this->cookie_data['u'] = ($bot) ? $bot : ANONYMOUS; + + if (!$bot) + { + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . (int) $this->cookie_data['u']; + } + else + { + // We give bots always the same session if it is not yet expired. + $sql = 'SELECT u.*, s.* + FROM ' . USERS_TABLE . ' u + LEFT JOIN ' . SESSIONS_TABLE . ' s ON (s.session_user_id = u.user_id) + WHERE u.user_id = ' . (int) $bot; + } + + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + } + + if ($this->data['user_id'] != ANONYMOUS && !$bot) + { + $this->data['session_last_visit'] = (isset($this->data['session_time']) && $this->data['session_time']) ? $this->data['session_time'] : (($this->data['user_lastvisit']) ? $this->data['user_lastvisit'] : time()); + } + else + { + $this->data['session_last_visit'] = $this->time_now; + } + + // Force user id to be integer... + $this->data['user_id'] = (int) $this->data['user_id']; + + // At this stage we should have a filled data array, defined cookie u and k data. + // data array should contain recent session info if we're a real user and a recent + // session exists in which case session_id will also be set + + // Is user banned? Are they excluded? Won't return on ban, exists within method + if ($this->data['user_type'] != USER_FOUNDER) + { + if (!$board_config['forwarded_for_check']) + { + $this->check_ban($this->data['user_id'], $this->ip); + } + else + { + $ips = explode(', ', $this->forwarded_for); + $ips[] = $this->ip; + $this->check_ban($this->data['user_id'], $ips); + } + } + $this->data['is_registered'] = (!$bot && $this->data['user_id'] != ANONYMOUS && ($this->data['user_type'] == USER_NORMAL || $this->data['user_type'] == USER_FOUNDER)) ? true : false; + $this->data['is_bot'] = ($bot) ? true : false; + + // If our friend is a bot, we re-assign a previously assigned session + if ($this->data['is_bot'] && $bot == $this->data['user_id'] && $this->data['session_id']) + { + // Only assign the current session if the ip, browser and forwarded_for match... + if (strpos($this->ip, ':') !== false && strpos($this->data['session_ip'], ':') !== false) + { + $s_ip = short_ipv6($this->data['session_ip'], $board_config['ip_check']); + $u_ip = short_ipv6($this->ip, $board_config['ip_check']); + } + else + { + $s_ip = implode('.', array_slice(explode('.', $this->data['session_ip']), 0, $board_config['ip_check'])); + $u_ip = implode('.', array_slice(explode('.', $this->ip), 0, $board_config['ip_check'])); + } + + $s_browser = ($board_config['browser_check']) ? strtolower(substr($this->data['session_browser'], 0, 149)) : ''; + $u_browser = ($board_config['browser_check']) ? strtolower(substr($this->browser, 0, 149)) : ''; + + $s_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->data['session_forwarded_for'], 0, 254) : ''; + $u_forwarded_for = ($board_config['forwarded_for_check']) ? substr($this->forwarded_for, 0, 254) : ''; + + if ($u_ip === $s_ip && $s_browser === $u_browser && $s_forwarded_for === $u_forwarded_for) + { + $this->session_id = $this->data['session_id']; + + // Only update session DB a minute or so after last update or if page changes + if ($this->time_now - $this->data['session_time'] > 60 || ($this->update_session_page && $this->data['session_page'] != $this->page['page'])) + { + $this->data['session_time'] = $this->data['session_last_visit'] = $this->time_now; + + $sql_ary = array('session_time' => $this->time_now, 'session_last_visit' => $this->time_now, 'session_admin' => 0); + + if ($this->update_session_page) + { + $sql_ary['session_page'] = substr($this->page['page'], 0, 199); + } + + $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "'"; + $db->sql_query($sql); + + // Update the last visit time + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $this->data['session_time'] . ' + WHERE user_id = ' . (int) $this->data['user_id']; + $db->sql_query($sql); + } + + $SID = '?sid='; + $_SID = ''; + return true; + } + else + { + // If the ip and browser does not match make sure we only have one bot assigned to one session + $db->sql_query('DELETE FROM ' . SESSIONS_TABLE . ' WHERE session_user_id = ' . $this->data['user_id']); + } + } + + $session_autologin = (($this->cookie_data['k'] || $persist_login) && $this->data['is_registered']) ? true : false; + $set_admin = ($set_admin && $this->data['is_registered']) ? true : false; + + // Create or update the session + $sql_ary = array( + 'session_user_id' => (int) $this->data['user_id'], + 'session_start' => (int) $this->time_now, + 'session_last_visit' => (int) $this->data['session_last_visit'], + 'session_time' => (int) $this->time_now, + 'session_browser' => (string) substr($this->browser, 0, 149), + 'session_forwarded_for' => (string) $this->forwarded_for, + 'session_ip' => (string) $this->ip, + 'session_autologin' => ($session_autologin) ? 1 : 0, + 'session_admin' => ($set_admin) ? 1 : 0, + 'session_viewonline' => ($viewonline) ? 1 : 0, + ); + + if ($this->update_session_page) + { + $sql_ary['session_page'] = (string) substr($this->page['page'], 0, 199); + } + + $db->sql_return_on_error(true); + + $sql = 'DELETE + FROM ' . SESSIONS_TABLE . ' + WHERE session_id = \'' . $db->sql_escape($this->session_id) . '\' + AND session_user_id = ' . ANONYMOUS; + + if (!defined('IN_ERROR_HANDLER') && (!$this->session_id || !$db->sql_query($sql) || !$db->sql_affectedrows())) + { + // Limit new sessions in 1 minute period (if required) + if (empty($this->data['session_time']) && $board_config['active_sessions']) + { + $sql = 'SELECT COUNT(session_id) AS sessions + FROM ' . SESSIONS_TABLE . ' + WHERE session_time >= ' . ($this->time_now - 60); + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if ((int) $row['sessions'] > (int) $board_config['active_sessions']) + { + header('HTTP/1.1 503 Service Unavailable'); + trigger_error('BOARD_UNAVAILABLE'); + } + } + } + + $this->session_id = $this->data['session_id'] = md5(phpBB3::unique_id()); + + $sql_ary['session_id'] = (string) $this->session_id; + $sql_ary['session_page'] = (string) substr($this->page['page'], 0, 199); + + $sql = 'INSERT INTO ' . SESSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $db->sql_query($sql); + + $db->sql_return_on_error(false); + + // Regenerate autologin/persistent login key + if ($session_autologin) + { + $this->set_login_key(); + } + + // refresh data + $SID = '?sid=' . $this->session_id; + $_SID = $this->session_id; + $this->data = array_merge($this->data, $sql_ary); + + if (!$bot) + { + $cookie_expire = $this->time_now + (($board_config['max_autologin_time']) ? 86400 * (int) $board_config['max_autologin_time'] : 31536000); + + $this->set_cookie('u', $this->cookie_data['u'], $cookie_expire); + $this->set_cookie('k', $this->cookie_data['k'], $cookie_expire); + $this->set_cookie('sid', $this->session_id, $cookie_expire); + + unset($cookie_expire); + } + else + { + $this->data['session_time'] = $this->data['session_last_visit'] = $this->time_now; + + // Update the last visit time + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $this->data['session_time'] . ' + WHERE user_id = ' . (int) $this->data['user_id']; + $db->sql_query($sql); + + $SID = '?sid='; + $_SID = ''; + } + + return true; + } + + /** + * Kills a session + * + * This method does what it says on the tin. It will delete a pre-existing session. + * It resets cookie information (destroying any autologin key within that cookie data) + * and update the users information from the relevant session data. It will then + * grab guest user information. + */ + function session_kill($new_session = true) + { + global $SID, $_SID, $db, $board_config, $mx_root_path, $php_root_path, $phpEx; + + $sql = 'DELETE FROM ' . SESSIONS_TABLE . " + WHERE session_id = '" . $db->sql_escape($this->session_id) . "' + AND session_user_id = " . (int) $this->data['user_id']; + $db->sql_query($sql); + + // Allow connecting logout with external auth method logout + $method = basename(trim($board_config['auth_method'])); + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + if ((@include_once $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'File(s3) ' . $mx_root_path . "includes/shared/phpbb3/includes/auth/auth_" . $method . ".$phpEx" . ' couldn\'t be opened.'); + } + } + //$provider = $phpbb_container->get('auth.provider.' . $method); + $method = 'logout_' . $method; + if (function_exists($method)) + { + $method($this->data, $new_session); + } + //$provider->logout($this->data, $new_session); + if ($this->data['user_id'] != ANONYMOUS) + { + // Delete existing session, update last visit info first! + if (!isset($this->data['session_time'])) + { + $this->data['session_time'] = time(); + } + + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $this->data['session_time'] . ' + WHERE user_id = ' . (int) $this->data['user_id']; + $db->sql_query($sql); + + if ($this->cookie_data['k']) + { + $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' + WHERE user_id = ' . (int) $this->data['user_id'] . " + AND key_id = '" . $db->sql_escape(md5($this->cookie_data['k'])) . "'"; + $db->sql_query($sql); + } + + // Reset the data array + $this->data = array(); + + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_id = ' . ANONYMOUS; + $result = $db->sql_query($sql); + $this->data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + } + + $cookie_expire = $this->time_now - 31536000; + $this->set_cookie('u', '', $cookie_expire); + $this->set_cookie('k', '', $cookie_expire); + $this->set_cookie('sid', '', $cookie_expire); + unset($cookie_expire); + + $SID = '?sid='; + $this->session_id = $_SID = ''; + + // To make sure a valid session is created we create one for the anonymous user + if ($new_session) + { + $this->session_create(ANONYMOUS); + } + + return true; + } + + /** + * Session garbage collection + * + * This looks a lot more complex than it really is. Effectively we are + * deleting any sessions older than an admin definable limit. Due to the + * way in which we maintain session data we have to ensure we update user + * data before those sessions are destroyed. In addition this method + * removes autologin key information that is older than an admin defined + * limit. + */ + function session_gc() + { + global $db, $board_config; + + if (!$this->time_now) + { + $this->time_now = time(); + } + + // Firstly, delete guest sessions + $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' + WHERE session_user_id = ' . ANONYMOUS . ' + AND session_time < ' . (int) ($this->time_now - $board_config['session_length']); + $db->sql_query($sql); + + // Get expired sessions, only most recent for each user + $sql = 'SELECT session_user_id, session_page, MAX(session_time) AS recent_time + FROM ' . SESSIONS_TABLE . ' + WHERE session_time < ' . ($this->time_now - $board_config['session_length']) . ' + GROUP BY session_user_id, session_page'; + $result = $db->sql_query_limit($sql, 10); + + $del_user_id = array(); + $del_sessions = 0; + + while ($row = $db->sql_fetchrow($result)) + { + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_lastvisit = ' . (int) $row['recent_time'] . ", user_lastpage = '" . $db->sql_escape($row['session_page']) . "' + WHERE user_id = " . (int) $row['session_user_id']; + $db->sql_query($sql); + + $del_user_id[] = (int) $row['session_user_id']; + $del_sessions++; + } + $db->sql_freeresult($result); + + if (sizeof($del_user_id)) + { + // Delete expired sessions + $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' + WHERE ' . $db->sql_in_set('session_user_id', $del_user_id) . ' + AND session_time < ' . ($this->time_now - $board_config['session_length']); + $db->sql_query($sql); + } + + if ($del_sessions < 10) + { + // Less than 10 sessions, update gc timer ... else we want gc + // called again to delete other sessions + set_config('session_last_gc', $this->time_now, true); + } + + if ($board_config['max_autologin_time']) + { + $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' + WHERE last_login < ' . (time() - (86400 * (int) $board_config['max_autologin_time'])); + $db->sql_query($sql); + } + + return; + } + + /** + * Sets a cookie + * + * Sets a cookie of the given name with the specified data for the given length of time. + */ + function set_cookie($name, $cookiedata, $cookietime) + { + global $board_config; + + $name_data = rawurlencode($board_config['cookie_name'] . '_' . $name) . '=' . rawurlencode($cookiedata); + $expire = gmdate('D, d-M-Y H:i:s \\G\\M\\T', $cookietime); + $domain = (!$board_config['cookie_domain'] || $board_config['cookie_domain'] == 'localhost' || $board_config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $board_config['cookie_domain']; + + header('Set-Cookie: ' . $name_data . '; expires=' . $expire . '; path=' . $board_config['cookie_path'] . $domain . ((!$board_config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false); + } + + /** + * Check for banned user + * + * Checks whether the supplied user is banned by id, ip or email. If no parameters + * are passed to the method pre-existing session data is used. If $return is false + * this routine does not return on finding a banned user, it outputs a relevant + * message and stops execution. + * + * @param string|array $user_ips Can contain a string with one IP or an array of multiple IPs + */ + function check_ban($user_id = false, $user_ips = false, $user_email = false, $return = false) + { + global $board_config, $db; + + if (defined('IN_CHECK_BAN')) + { + return; + } + + $banned = false; + + $sql = 'SELECT ban_ip, ban_userid, ban_email, ban_exclude, ban_give_reason, ban_end + FROM ' . BANLIST_TABLE . ' + WHERE (ban_end >= ' . time() . ' OR ban_end = 0)'; + + // Determine which entries to check, only return those + if ($user_email === false) + { + $sql .= " AND ban_email = ''"; + } + + if ($user_ips === false) + { + $sql .= " AND (ban_ip = '' OR ban_exclude = 1)"; + } + + if ($user_id === false) + { + $sql .= ' AND (ban_userid = 0 OR ban_exclude = 1)'; + } + else + { + $sql .= ' AND (ban_userid = ' . $user_id; + + if ($user_email !== false) + { + $sql .= " OR ban_email <> ''"; + } + + if ($user_ips !== false) + { + $sql .= " OR ban_ip <> ''"; + } + + $sql .= ')'; + } + + $result = $db->sql_query($sql); + + $ban_triggered_by = 'user'; + while ($row = $db->sql_fetchrow($result)) + { + $ip_banned = false; + if (!empty($row['ban_ip'])) + { + if (!is_array($user_ips)) + { + $ip_banned = preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_ip'], '#')) . '$#i', $user_ips); + } + else + { + foreach ($user_ips as $user_ip) + { + if (preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_ip'], '#')) . '$#i', $user_ip)) + { + $ip_banned = true; + break; + } + } + } + } + + if ((!empty($row['ban_userid']) && intval($row['ban_userid']) == $user_id) || + $ip_banned || + (!empty($row['ban_email']) && preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_email'], '#')) . '$#i', $user_email))) + { + if (!empty($row['ban_exclude'])) + { + $banned = false; + break; + } + else + { + $banned = true; + $ban_row = $row; + + if (!empty($row['ban_userid']) && intval($row['ban_userid']) == $user_id) + { + $ban_triggered_by = 'user'; + } + else if (!empty($row['ban_ip']) && preg_match('#^' . str_replace('\*', '.*?', preg_quote($row['ban_ip'], '#')) . '$#i', $user_ips)) + { + $ban_triggered_by = 'ip'; + } + else + { + $ban_triggered_by = 'email'; + } + + // Don't break. Check if there is an exclude rule for this user + } + } + } + $db->sql_freeresult($result); + + if ($banned && !$return) + { + global $template; + + // If the session is empty we need to create a valid one... + if (empty($this->session_id)) + { + $this->session_create(ANONYMOUS); + } + + // Initiate environment ... since it won't be set at this stage + $this->setup(); + + // Logout the user, banned users are unable to use the normal 'logout' link + if ($this->data['user_id'] != ANONYMOUS) + { + $this->session_kill(); + } + + // We show a login box here to allow founders accessing the board if banned by IP + if (defined('IN_LOGIN') && $this->data['user_id'] == ANONYMOUS) + { + global $phpEx; + + $this->setup('ucp'); + $this->data['is_registered'] = $this->data['is_bot'] = false; + + // Set as a precaution to allow login_box() handling this case correctly as well as this function not being executed again. + define('IN_CHECK_BAN', 1); + + login_box("index.$phpEx"); + + // The false here is needed, else the user is able to circumvent the ban. + $this->session_kill(false); + } + + // Ok, we catch the case of an empty session id for the anonymous user... + // This can happen if the user is logging in, banned by username and the login_box() being called "again". + if (empty($this->session_id) && defined('IN_CHECK_BAN')) + { + $this->session_create(ANONYMOUS); + } + + + // Determine which message to output + $till_date = ($ban_row['ban_end']) ? $this->format_date($ban_row['ban_end']) : ''; + $message = ($ban_row['ban_end']) ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM'; + + $message = sprintf($this->lang[$message], $till_date, '', ''); + $message .= ($ban_row['ban_give_reason']) ? '

' . sprintf($this->lang['BOARD_BAN_REASON'], $ban_row['ban_give_reason']) : ''; + $message .= '

' . $this->lang['BAN_TRIGGERED_BY_' . strtoupper($ban_triggered_by)] . ''; + + trigger_error($message); + } + + return ($banned) ? true : false; + } + + /** + * Check if ip is blacklisted + * This should be called only where absolutly necessary + * + * Only IPv4 (rbldns does not support AAAA records/IPv6 lookups) + * + * @author satmd (from the php manual) + * @param string $mode register/post - spamcop for example is ommitted for posting + * @return false if ip is not blacklisted, else an array([checked server], [lookup]) + */ + function check_dnsbl($mode, $ip = false) + { + if ($ip === false) + { + $ip = $this->ip; + } + + $dnsbl_check = array( + 'list.dsbl.org' => 'http://dsbl.org/listing?', + 'sbl-xbl.spamhaus.org' => 'http://www.spamhaus.org/query/bl?ip=', + ); + + if ($mode == 'register') + { + $dnsbl_check['bl.spamcop.net'] = 'http://spamcop.net/bl.shtml?'; + } + + if ($ip) + { + $quads = explode('.', $ip); + $reverse_ip = $quads[3] . '.' . $quads[2] . '.' . $quads[1] . '.' . $quads[0]; + + // Need to be listed on all servers... + $listed = true; + $info = array(); + + foreach ($dnsbl_check as $dnsbl => $lookup) + { + if (phpbb_checkdnsrr($reverse_ip . '.' . $dnsbl . '.', 'A') === true) + { + $info = array($dnsbl, $lookup . $ip); + } + else + { + $listed = false; + } + } + + if ($listed) + { + return $info; + } + } + + return false; + } + + /** + * Check if URI is blacklisted + * This should be called only where absolutly necessary, for example on the submitted website field + * This function is not in use at the moment and is only included for testing purposes, it may not work at all! + * This means it is untested at the moment and therefore commented out + * + * @param string $uri URI to check + * @return true if uri is on blacklist, else false. Only blacklist is checked (~zero FP), no grey lists + function check_uribl($uri) + { + // Normally parse_url() is not intended to parse uris + // We need to get the top-level domain name anyway... change. + $uri = parse_url($uri); + + if ($uri === false || empty($uri['host'])) + { + return false; + } + + $uri = trim($uri['host']); + + if ($uri) + { + // One problem here... the return parameter for the "windows" method is different from what + // we expect... this may render this check useless... + if (phpbb_checkdnsrr($uri . '.multi.uribl.com.', 'A') === true) + { + return true; + } + } + + return false; + } + */ + + /** + * Set/Update a persistent login key + * + * This method creates or updates a persistent session key. When a user makes + * use of persistent (formerly auto-) logins a key is generated and stored in the + * DB. When they revisit with the same key it's automatically updated in both the + * DB and cookie. Multiple keys may exist for each user representing different + * browsers or locations. As with _any_ non-secure-socket no passphrase login this + * remains vulnerable to exploit. + */ + function set_login_key($user_id = false, $key = false, $user_ip = false) + { + global $board_config, $db; + + $user_id = ($user_id === false) ? $this->data['user_id'] : $user_id; + $user_ip = ($user_ip === false) ? $this->ip : $user_ip; + $key = ($key === false) ? (($this->cookie_data['k']) ? $this->cookie_data['k'] : false) : $key; + + $key_id = phpBB3::unique_id(hexdec(substr($this->session_id, 0, 8))); + + $sql_ary = array( + 'key_id' => (string) md5($key_id), + 'last_ip' => (string) $this->ip, + 'last_login' => (int) time() + ); + + if (!$key) + { + $sql_ary += array( + 'user_id' => (int) $user_id + ); + } + + if ($key) + { + $sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' + WHERE user_id = ' . (int) $user_id . " + AND key_id = '" . $db->sql_escape(md5($key)) . "'"; + } + else + { + $sql = 'INSERT INTO ' . SESSIONS_KEYS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + } + $db->sql_query($sql); + + $this->cookie_data['k'] = $key_id; + + return false; + } + + /** + * Reset all login keys for the specified user + * + * This method removes all current login keys for a specified (or the current) + * user. It will be called on password change to render old keys unusable + */ + function reset_login_keys($user_id = false) + { + global $board_config, $db; + + $user_id = ($user_id === false) ? $this->data['user_id'] : $user_id; + + $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' + WHERE user_id = ' . (int) $user_id; + $db->sql_query($sql); + + // Let's also clear any current sessions for the specified user_id + // If it's the current user then we'll leave this session intact + $sql_where = 'session_user_id = ' . (int) $user_id; + $sql_where .= ($user_id === $this->data['user_id']) ? " AND session_id <> '" . $db->sql_escape($this->session_id) . "'" : ''; + + $sql = 'DELETE FROM ' . SESSIONS_TABLE . " + WHERE $sql_where"; + $db->sql_query($sql); + + // We're changing the password of the current user and they have a key + // Lets regenerate it to be safe + if ($user_id === $this->data['user_id'] && $this->cookie_data['k']) + { + $this->set_login_key($user_id); + } + } + + /** + * Check if the request originated from the same page. + * @param bool $check_script_path If true, the path will be checked as well + */ + function validate_referer($check_script_path = false) + { + global $board_config; + + // no referer - nothing to validate, user's fault for turning it off (we only check on POST; so meta can't be the reason) + if (empty($this->referer) || empty($this->host)) + { + return true; + } + + $host = htmlspecialchars($this->host); + $ref = substr($this->referer, strpos($this->referer, '://') + 3); + + if (!(stripos($ref, $host) === 0) && (!$board_config['force_server_vars'] || !(stripos($ref, $board_config['server_name']) === 0))) + { + return false; + } + else if ($check_script_path && rtrim($this->page['root_script_path'], '/') !== '') + { + $ref = substr($ref, strlen($host)); + $server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT'); + + if ($server_port !== 80 && $server_port !== 443 && stripos($ref, ":$server_port") === 0) + { + $ref = substr($ref, strlen(":$server_port")); + } + + if (!(stripos(rtrim($ref, '/'), rtrim($this->page['root_script_path'], '/')) === 0)) + { + return false; + } + } + + return true; + } + + function unset_admin() + { + global $db; + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_admin = 0 + WHERE session_id = \'' . $db->sql_escape($this->session_id) . '\''; + $db->sql_query($sql); + } + + /** ******************************************************************************************************* + * Include the User class + ******************************************************************************************************* */ + + /** + * Setup basic user-specific items (style, language, ...) + * Note: We've split original phpbb3 setup() method into setup() and setup_style() + */ + function setup($lang_set = false, $style = false) + { + global $db, $template, $board_config, $userdata, $phpbb_auth, $phpEx, $phpbb_root_path, $mx_root_path, $mx_cache; + global $mx_request_vars, $portal_config; //added for mxp + global $lang; //added for mxp + + $session_lang = ''; + /* + * Added here for reference and future implementation of a lang block in mx_coreblocks were board_config can be taken from portal_config + * + if ($board_config['lang_select_enable'] || $board_config['lang_click_enable']) + { + $session_lang_save = phpBB3::request_var('session_lang_save', false); + if (isset($session_lang_save) && $session_lang_save && $this->data['session_lang']) + { + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_lang = '" . $this->data['session_lang'] . "' + WHERE user_id = " . $this->data['user_id']; + $db->sql_query($sql); + } + + $session_lang_reset = phpBB3::request_var('session_lang_reset', false); + if (isset($session_lang_reset) && $session_lang_reset) + { + $session_lang = ''; + } + else + { + $session_lang = phpBB3::request_var('session_lang', ''); + } + + if ((isset($session_lang) && $session_lang) || $session_lang_reset) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . " + SET session_lang = '" . $session_lang . "' + WHERE session_id = '" . $this->session_id . "'"; + $db->sql_query($sql); + } + elseif (isset($this->data['session_lang']) && $this->data['session_lang']) + { + $session_lang = $this->data['session_lang']; + } + } + + if (($board_config['lang_select_enable'] || $board_config['lang_click_enable']) && isset($session_lang) && $session_lang) + { + $this->data['user_lang'] = $session_lang; + $this->lang_name = (file_exists($this->lang_path . $this->data['user_lang'] . "/common.$phpEx")) ? $this->data['user_lang'] : basename($this->encode_lang($this->lang['default_lang'])); + + if ($this->data['user_id'] != ANONYMOUS) + { + $this->date_format = $this->data['user_dateformat']; + $this->timezone = $this->data['user_timezone'] * 3600; + $this->dst = $this->data['user_dst'] * 3600; + } + else + { + $this->date_format = $board_config['default_dateformat']; + $this->timezone = $board_config['board_timezone'] * 3600; + $this->dst = $board_config['board_dst'] * 3600; + } + } + */ + $lang_set = !$lang_set ? (defined('IN_ADMIN') ? 'acp/common' : 'common') : $lang_set; + + if ($this->data['session_logged_in']) + { + $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->data['user_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->data['user_lang']) : ((file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'); + $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; + + $this->date_format = $this->data['user_dateformat']; + $this->timezone = $this->data['user_timezone'] * 3600; + $this->dst = $this->data['user_dst'] * 3600; + } + else + { + $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'; + $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; + $this->date_format = $board_config['default_dateformat']; + $this->timezone = $board_config['board_timezone'] * 3600; + $this->dst = $board_config['board_dst'] * 3600; + + /** + * If a guest user is surfing, we try to guess his/her language first by obtaining the browser language + * If re-enabled we need to make sure only those languages installed are checked + * Commented out so we do not loose the code. + * language checking added 2008-08-15 by Martin Truckenbrodt + **/ + if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) + { + $lang_iso_xx_yy = array(); + $lang_iso_xx = array(); + $accept_lang_xx_yy = array(); + $accept_lang_xx = array(); + + $sql = 'SELECT lang_iso FROM ' . LANG_TABLE; + $result = $db->sql_query($sql, 3600); + + while ($row = $db->sql_fetchrow($result)) + { + if (file_exists($phpbb_root_path . 'language/' . $row['lang_iso'] . "/common.$phpEx")) + { + $lang_iso_xx_yy[] = $row['lang_iso']; + if (strlen($row['lang_iso']) > 4) + { + $lang_iso_xx[$row['lang_iso']] = substr($row['lang_iso'], 0, 2); + } + } + } + $accept_lang_ary = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); + + foreach ($accept_lang_ary as $accept_lang) + { + // Set correct format ... guess full xx_yy form + $accept_lang_xx_yy = basename(substr($accept_lang, 0, 2) . '_' . strtolower(substr($accept_lang, 3, 2))); + // Set correct format ... guess only xx form + $accept_lang_xx = basename(substr($accept_lang, 0, 2)); + + // browser xx-YY == board xx_yy and + // browser xx == board xx + if (in_array($accept_lang_xx_yy, $lang_iso_xx_yy)) + { + $this->lang_name = $board_config['default_lang'] = $accept_lang_xx_yy; + break; + } + // browser xx-YY => xx == board xx + else if (in_array($accept_lang_xx, $lang_iso_xx_yy)) + { + $this->lang_name = $board_config['default_lang'] = $accept_lang_xx; + break; + } + // browser xx == board xx_yy => xx + else if (in_array($accept_lang_xx, $lang_iso_xx) && $lang_iso_xx != '') + { + $this->lang_name = $board_config['default_lang'] = array_search($accept_lang_xx, $lang_iso_xx); + break; + } + // board default language + else + { + $this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->encode_lang($this->lang['default_lang']) . "/common.$phpEx")) ? $this->encode_lang($this->lang['default_lang']) : 'en'; + } + } + $this->data['user_lang'] = $this->lang_name; + } + /* + */ + } + + /* We include common language file here to not load it every time a custom language file is included + $lang = &$this->lang; + */ + $include_result = (defined('DEBUG_EXTRA')) ? "" : "@"; // Do not suppress error if in DEBUG_EXTRA mode + if (("$include_result".include $this->lang_path . "common.$phpEx") === false) + { + //this will fix the path for anonymouse users + if ((@include $phpbb_root_path . $this->lang_path . "common.$phpEx") === false) + { + die('Language file ' . $this->lang_path . "common.$phpEx" . ' couldn\'t be opened.'); + } + } + + // + // We include common language file here to not load it every time a custom language file is included + // + $this->add_lang($lang_set); + + unset($lang_set); + } + + /** + * Enter description here... + * Note: We've split original phpbb3 setup() method into setup() and setup_style() + */ + function setup_style() + { + global $db, $template, $board_config, $userdata, $phpbb_auth, $phpEx, $phpbb_root_path, $mx_root_path, $mx_cache; + global $mx_request_vars, $portal_config, $board_config, $mx_backend; //added for mxp + + if (!empty($_GET['style']) && $phpbb_auth->acl_get('a_styles')) + { + global $SID, $_EXTRA_URL; + $style = phpBB3::request_var('style', 0); + // BEGIN Styles_Demo MOD for phpBB Block + $style_value = ''; + $SID .= '&style=' . $style; + $_EXTRA_URL = array('style=' . $style); + } + else + { + $style = $this->style; // From main style init. Should be correct and valid. + $style_value = $this->style_name; + // BEGIN Styles_Demo MOD for phpBB Block + /* */ + if(!$board_config['override_user_style'] && ($this->data['user_id'] != ANONYMOUS)) + { + // Set up style + $user_style = $this->data['user_style'] ? $this->data['user_style'] : $this->phpbb_style['style_id']; + //If user have other style in mxp then the one from phpBB not to have forum page and modules graphics will be messaed up + //Anonymouse users should see all block graphic corect + //Query phpBB style_id corepondent to mxp themes_id + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE m.themes_id = " . (int) $user_style . " + AND t.template_path = m.template_name + AND t.template_id = s.template_id"; + if ($row = $db->sql_fetchrow($db->sql_query($sql))) + { + $style = $row['style_id']; //User style + $style_value = $row['style_name']; //User style name + } + else + { + $style = $this->data['user_style'] ? $this->data['user_style'] : $board_config['default_style']; + } + } + else + { + $default_style = $portal_config['default_style']; + //If user have other style in mxp then the one from phpBB not to have forum page and modules graphics will be messaed up + //Anonymouse users should see all block graphic corect + //Query phpBB style_id corepondent to mxp themes_id + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE m.themes_id = " . (int) $default_style . " + AND t.template_path = m.template_name + AND t.template_id = s.template_id"; + if ($row = $db->sql_fetchrow($db->sql_query($sql))) + { + $style = $row['style_id']; //User style + $style_value = $row['style_name']; //User style name + } + else + { + $style = $this->data['user_style'] ? $this->data['user_style'] : $board_config['default_style']; + } + } + /* */ + // Set up style Temp code should be removed after bugtraking + //$style = ($style) ? $style : ((!$board_config['override_user_style'] && $this->data['user_id'] != ANONYMOUS) ? $this->data['user_style'] : $this->phpbb_style['style_id']); + } + + if (isset($_GET['demostyle'])) + { + $style_value = phpBB3::request_var('demostyle', ''); + if (intval($style_value) == 0) + { + //Query phpBB style_id corepondent to mxp style_name + //Any Demo Style here should work also for portal and forums + //Any Demo Style Name should be supported using same guild lines for portal as for forums for e.g. with spaces etc. + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE s.style_active = 1 AND s.style_name = '$style_value' + AND s.style_name = m.style_name + AND t.template_id = s.template_id"; + if(!$row = @$db->sql_fetchrow(@$db->sql_query($sql))) + { + die('Could not find style name '. $style_value . '!'); + } + else + { + $style_value = $row['style_id']; + } + } + else + { + //Query phpBB style_id corepondent to mxp themes_id + //Any Demo Style here should work also for portal and forums + //Any Demo Style Name should be supported using same guild lines for portal as for forums for e.g. with spaces etc. + $sql = "SELECT s.style_id, s.style_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t + WHERE m.themes_id = " . (int) $style_value . " + AND s.style_name = m.style_name + AND t.template_id = s.template_id"; + if(!$row = $db->sql_fetchrow($db->sql_query($sql))) + { + die('style_id ' . $style_value . ' not found'); + } + } + $this->set_cookie('change_style', $style_value, time() + 31536000); + } + elseif (isset($_COOKIE[$board_config['cookie_name'] . '_change_style'])) + { + $style_value = $_COOKIE[$board_config['cookie_name'] . '_change_style']; + } + + //Change the value before query + if (!empty($style_value)) + { + $style = $style_value; + } + + //We should never get this, temp fix for GoogleBot-2.1 crawler + //Remove this Deguging Code after solved + if ((intval($style) == 0) && empty($style_value)) + { + $style_value = 'prosilver'; + } + $phpbb_style = $style; + $phpbb_style_value = $style_value; + + // END Styles_Demo MOD + if (isset($style_value)) + { + //Query phpBB style_name + $sql = "SELECT s.style_id, s.style_name, t.template_storedb, t.template_path, t.template_id, t.bbcode_bitfield, c.theme_path, c.theme_name, c.theme_storedb, c.theme_id, i.imageset_path, i.imageset_id, i.imageset_name + FROM " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t, " . STYLES_THEME_TABLE . " AS c, " . STYLES_IMAGESET_TABLE . " i + WHERE s.style_active = 1 AND s.style_name = '$style_value' + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id"; + if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) + { + $style = $row['style_id']; + $style_value = $row['style_name']; + } + else + { + mx_message_die(CRITICAL_ERROR, "Could not query database for phpbb_styles info style_name [$style]", "", __LINE__, __FILE__, $sql); + } + } + elseif (intval($style) !== 0) + { + //Query phpBB style_id get from main style init. Should be correct and valid. + $sql = "SELECT s.style_id, s.style_name, t.template_storedb, t.template_path, t.template_id, t.bbcode_bitfield, c.theme_path, c.theme_name, c.theme_storedb, c.theme_id, i.imageset_path, i.imageset_id, i.imageset_name + FROM " . MX_THEMES_TABLE . " AS m, " . STYLES_TABLE . " AS s, " . STYLES_TEMPLATE_TABLE . " AS t, " . STYLES_THEME_TABLE . " AS c, " . STYLES_IMAGESET_TABLE . " i + WHERE s.style_id = " . (int) $style . " + AND s.style_name = m.style_name + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id"; + if(($result = $db->sql_query($sql)) && ($row = $db->sql_fetchrow($result))) + { + $style = $row['style_id']; + $style_value = $row['style_name']; + // MXP themes_id = $row['themes_id'] + } + else + { + mx_message_die(CRITICAL_ERROR, "Could not query database for phpbb_styles info style_id [$style]", "", __LINE__, __FILE__, $sql); + } + } + + $this->theme = is_array($this->theme) ? array_merge($this->theme, $row) : $row; + $db->sql_freeresult($result); + + // User has wrong style + if (!$this->theme && $style == $this->data['user_style']) + { + $style = $this->data['user_style'] = $board_config['default_style']; + + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_style = $style + WHERE user_id = {$this->data['user_id']}"; + $db->sql_query($sql); + + $sql = 'SELECT s.style_id, s.style_name, t.template_storedb, t.template_path, t.template_id, t.bbcode_bitfield, c.theme_path, c.theme_name, c.theme_storedb, c.theme_id, i.imageset_path, i.imageset_id, i.imageset_name + FROM ' . STYLES_TABLE . ' s, ' . STYLES_TEMPLATE_TABLE . ' t, ' . STYLES_THEME_TABLE . ' c, ' . STYLES_IMAGESET_TABLE . " i + WHERE s.style_id = $style + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id"; + $result = $db->sql_query($sql, 3600); + $this->theme = is_array($this->theme) ? array_merge($this->theme, $db->sql_fetchrow($result)) : $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $style = $this->theme['style_id']; + $style_value = $this->theme['style_name']; + } + + if (!$this->theme) + { + trigger_error('Could not get style data', E_USER_ERROR); + } + + // Now parse the cfg file and cache it + $parsed_items = $mx_backend->obtain_cfg_items($this->theme); + + // We are only interested in the theme configuration for now + $parsed_items = $parsed_items['theme']; + + $check_for = array( + 'parse_css_file' => (int) 0, + 'pagination_sep' => (string) ', ' + ); + + foreach ($check_for as $key => $default_value) + { + $this->theme[$key] = (isset($parsed_items[$key])) ? $parsed_items[$key] : $default_value; + settype($this->theme[$key], gettype($default_value)); + + if (is_string($default_value)) + { + $this->theme[$key] = htmlspecialchars($this->theme[$key]); + } + } + + // If the style author specified the theme needs to be cached + // (because of the used paths and variables) than make sure it is the case. + // For example, if the theme uses language-specific images it needs to be stored in db. + if (!$this->theme['theme_storedb'] && $this->theme['parse_css_file']) + { + $this->theme['theme_storedb'] = 1; + + $stylesheet = file_get_contents("{$phpbb_root_path}styles/{$this->theme['theme_path']}/theme/stylesheet.css"); + // Match CSS imports + $matches = array(); + preg_match_all('/@import url\(["\'](.*)["\']\);/i', $stylesheet, $matches); + if (sizeof($matches)) + { + $content = ''; + foreach ($matches[0] as $idx => $match) + { + if ($content = @file_get_contents("{$phpbb_root_path}styles/{$this->theme['theme_path']}/theme/" . $matches[1][$idx])) + { + $content = trim($content); + } + else + { + $content = ''; + } + $stylesheet = str_replace($match, $content, $stylesheet); + } + unset($content); + } + + $stylesheet = str_replace('./', 'styles/' . $this->theme['theme_path'] . '/theme/', $stylesheet); + + $sql_ary = array( + 'theme_data' => $stylesheet, + 'theme_mtime' => time(), + 'theme_storedb' => 1 + ); + + $sql = 'UPDATE ' . STYLES_THEME_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' + WHERE theme_id = ' . $this->theme['theme_id']; + $db->sql_query($sql); + + unset($sql_ary); + } + + $template->set_template(); + + $this->img_lang = (file_exists($phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . $this->lang_name)) ? $this->lang_name : $this->encode_lang($board_config['default_lang']); + + $sql = 'SELECT image_name, image_filename, image_lang, image_height, image_width + FROM ' . STYLES_IMAGESET_DATA_TABLE . ' + WHERE imageset_id = ' . $this->theme['imageset_id'] . " + AND image_filename <> '' + AND image_lang IN ('" . $db->sql_escape($this->img_lang) . "', '')"; + $result = $db->sql_query($sql, 3600); + + $localised_images = false; + while ($row = $db->sql_fetchrow($result)) + { + if ($row['image_lang']) + { + $localised_images = true; + } + + $this->img_array[$row['image_name']] = $row; + } + $db->sql_freeresult($result); + // there were no localised images, try to refresh the localised imageset for the user's language + if (!$localised_images) + { + // Attention: this code ignores the image definition list from acp_styles and just takes everything + // that the config file contains + $sql_ary = array(); + + $db->sql_transaction('begin'); + + $sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . ' + WHERE imageset_id = ' . $this->theme['imageset_id'] . ' + AND image_lang = \'' . $db->sql_escape($this->img_lang) . '\''; + $result = $db->sql_query($sql); + + if (@file_exists("{$phpbb_root_path}styles/{$this->theme['imageset_path']}/imageset/{$this->img_lang}/imageset.cfg")) + { + $cfg_data_imageset_data = phpBB3::parse_cfg_file("{$phpbb_root_path}styles/{$this->theme['imageset_path']}/imageset/{$this->img_lang}/imageset.cfg"); + foreach ($cfg_data_imageset_data as $image_name => $value) + { + if (strpos($value, '*') !== false) + { + if (substr($value, -1, 1) === '*') + { + list($image_filename, $image_height) = explode('*', $value); + $image_width = 0; + } + else + { + list($image_filename, $image_height, $image_width) = explode('*', $value); + } + } + else + { + $image_filename = $value; + $image_height = $image_width = 0; + } + + if (strpos($image_name, 'img_') === 0 && $image_filename) + { + $image_name = substr($image_name, 4); + $sql_ary[] = array( + 'image_name' => (string) $image_name, + 'image_filename' => (string) $image_filename, + 'image_height' => (int) $image_height, + 'image_width' => (int) $image_width, + 'imageset_id' => (int) $this->theme['imageset_id'], + 'image_lang' => (string) $this->img_lang, + ); + } + } + } + + if (sizeof($sql_ary)) + { + $db->sql_multi_insert(STYLES_IMAGESET_DATA_TABLE, $sql_ary); + $db->sql_transaction('commit'); + $mx_cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE); + + mx_add_log('admin', 'LOG_IMAGESET_LANG_REFRESHED', $this->theme['imageset_name'], $this->img_lang); + } + else + { + $db->sql_transaction('commit'); + mx_add_log('admin', 'LOG_IMAGESET_LANG_MISSING', $this->theme['imageset_name'], $this->img_lang); + } + } + // If this function got called from the error handler we are finished here. + if (defined('IN_ERROR_HANDLER')) + { + return; + } + // Disable board if the install/ directory is still present + // For the brave development army we do not care about this, else we need to comment out this everytime we develop locally + if (!defined('DEBUG_EXTRA') && !defined('ADMIN_START') && !defined('IN_INSTALL') && !defined('IN_LOGIN') && file_exists($phpbb_root_path . 'install')) + { + // Adjust the message slightly according to the permissions + if ($phpbb_auth->acl_gets('a_', 'm_') || $phpbb_auth->acl_getf_global('m_')) + { + $message = 'REMOVE_INSTALL'; + } + else + { + $message = (!empty($portal_config['disabled_message'])) ? $portal_config['disabled_message'] : 'BOARD_DISABLE'; + } + trigger_error($message); + } + // Is portal disabled and user not an admin or moderator? + if (($portal_config['portal_status'] == '0') && !defined('IN_LOGIN') && !$phpbb_auth->acl_gets('a_', 'm_') && !$phpbb_auth->acl_getf_global('m_')) + { + @header('HTTP/1.1 503 Service Unavailable'); + // Is board disabled and user not an admin or moderator? + if($board_config['board_disable_mess_st']) + { + $message_st = $board_config['board_disable_message']; + } + else + { + $message_st = (!empty($lang['Board_disabled'])) ? $lang['Board_disabled'] : 'BOARD_DISABLE'; + } + $message = (!empty($portal_config['disabled_message'])) ? $portal_config['disabled_message'] : $message_st; + trigger_error($message); + } + // Is load exceeded? + if ($board_config['limit_load'] && $this->load !== false) + { + if ($this->load > floatval($board_config['limit_load']) && !defined('IN_LOGIN')) + { + // Set board disabled to true to let the admins/mods get the proper notification + $board_config['board_disable'] = '1'; + $portal_config['portal_status'] = '0'; + if (!$phpbb_auth->acl_gets('a_', 'm_') && !$phpbb_auth->acl_getf_global('m_')) + { + @header('HTTP/1.1 503 Service Unavailable'); + trigger_error('BOARD_UNAVAILABLE'); + } + } + } + if (isset($this->data['session_viewonline'])) + { + // Make sure the user is able to hide his session + if (!$this->data['session_viewonline']) + { + // Reset online status if not allowed to hide the session... + if (!$phpbb_auth->acl_get('u_hideonline')) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_viewonline = 1 + WHERE session_user_id = ' . $this->data['user_id']; + $db->sql_query($sql); + $this->data['session_viewonline'] = 1; + } + } + else if (!$this->data['user_allow_viewonline']) + { + // the user wants to hide and is allowed to -> cloaking device on. + if ($phpbb_auth->acl_get('u_hideonline')) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_viewonline = 0 + WHERE session_user_id = ' . $this->data['user_id']; + $db->sql_query($sql); + $this->data['session_viewonline'] = 0; + } + } + } + // Does the user need to change their password? If so, redirect to the + // ucp profile reg_details page ... of course do not redirect if we're already in the ucp + if (!defined('IN_ADMIN') && !defined('ADMIN_START') && $board_config['chg_passforce'] && $this->data['is_registered'] && $phpbb_auth->acl_get('u_chgpasswd') && $this->data['user_passchg'] < time() - ($board_config['chg_passforce'] * 86400)) + { + if (strpos($this->page['query_string'], 'mode=reg_details') === false && $this->page['page_name'] != "ucp.$phpEx") + { + mx_redirect(mx_append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=profile&mode=reg_details')); + } + } + return; + } + + /** + * Add Language Items - use_db and use_help are assigned where needed (only use them to force inclusion) + * + * @param mixed $lang_set specifies the language entries to include + * @param bool $use_db internal variable for recursion, do not use + * @param bool $use_help internal variable for recursion, do not use + * + * Examples: + * + * $lang_set = array('posting', 'help' => 'faq'); + * $lang_set = array('posting', 'viewtopic', 'help' => array('bbcode', 'faq')) + * $lang_set = array(array('posting', 'viewtopic'), 'help' => array('bbcode', 'faq')) + * $lang_set = 'posting' + * $lang_set = array('help' => 'faq', 'db' => array('help:faq', 'posting')) + * + */ + function add_lang($lang_set, $use_db = false, $use_help = false) + { + global $phpEx; + + if (is_array($lang_set)) + { + foreach ($lang_set as $key => $lang_file) + { + // Please do not delete this line. + // We have to force the type here, else [array] language inclusion will not work + $key = (string) $key; + + if ($key == 'db') + { + $this->add_lang($lang_file, true, $use_help); + } + else if ($key == 'help') + { + $this->add_lang($lang_file, $use_db, true); + } + else if (!is_array($lang_file)) + { + $this->set_lang($this->lang, $this->help, $lang_file, $use_db, $use_help); + } + else + { + $this->add_lang($lang_file, $use_db, $use_help); + } + } + unset($lang_set); + } + elseif ($lang_set) + { + $this->set_lang($this->lang, $this->help, $lang_set, $use_db, $use_help); + } + } + + /** + * Set language entry (called by add_lang) + * @access private + */ + function set_lang(&$lang, &$help, $lang_file, $use_db = false, $use_help = false) + { + global $phpbb_root_path, $phpEx; + + // Make sure the language path is set (if the user setup did not happen it is not set) + if (!$this->lang_path) + { + global $board_config; + + $this->lang_path = $phpbb_root_path . 'language/' . basename($board_config['phpbb_lang']) . '/'; + } + + // $lang == $this->lang + // $help == $this->help + // - add appropriate variables here, name them as they are used within the language file... + if (!$use_db) + { + if ($use_help && strpos($lang_file, '/') !== false) + { + $language_filename = $this->lang_path . substr($lang_file, 0, stripos($lang_file, '/') + 1) . 'help_' . substr($lang_file, stripos($lang_file, '/') + 1) . '.' . $phpEx; + } + else + { + $language_filename = $this->lang_path . (($use_help) ? 'help_' : '') . $lang_file . '.' . $phpEx; + } + + //fix for mxp + if ((@include $language_filename) === false) + { + //this will fix the path for anonymouse users + if ((@include $phpbb_root_path . $language_filename) === false) + { + die('Language file ' . $language_filename . ' couldn\'t be opened.'); + } + } + } + else + { + // Get Database Language Strings + // Put them into $lang if nothing is prefixed, put them into $help if help: is prefixed + // For example: help:faq, posting + die("You should not use db with MX-Publisher!"); + } + + // We include common language file here to not load it every time a custom language file is included + $this->lang = &$lang; + } + + /** + * Format user date + * + * @param int $gmepoch unix timestamp + * @param string $format date format in date() notation. | used to indicate relative dates, for example |d m Y|, h:i is translated to Today, h:i. + * @param bool $forcedate force non-relative date format. + * + * @return mixed translated date + */ + function format_date($gmepoch, $format = false, $forcedate = false) + { + static $midnight; + static $date_cache; + + $format = (!$format) ? $this->date_format : $format; + $now = time(); + $delta = $now - $gmepoch; + + if (!isset($date_cache[$format])) + { + // Is the user requesting a friendly date format (i.e. 'Today 12:42')? + $date_cache[$format] = array( + 'is_short' => strpos($format, '|'), + 'format_short' => substr($format, 0, strpos($format, '|')) . '||' . substr(strrchr($format, '|'), 1), + 'format_long' => str_replace('|', '', $format), + // Filter out values that are not strings (e.g. arrays) for strtr(). + 'lang' => array_filter($this->lang['datetime'], 'is_string'), + ); + + // Short representation of month in format? Some languages use different terms for the long and short format of May + if ((strpos($format, '\M') === false && strpos($format, 'M') !== false) || (strpos($format, '\r') === false && strpos($format, 'r') !== false)) + { + $date_cache[$format]['lang']['May'] = $this->lang['datetime']['May_short']; + } + } + + // Zone offset + $zone_offset = $this->timezone + $this->dst; + + // Show date <= 1 hour ago as 'xx min ago' but not greater than 60 seconds in the future + // A small tolerence is given for times in the future but in the same minute are displayed as '< than a minute ago' + if ($delta <= 3600 && $delta > -60 && ($delta >= -5 || (($now / 60) % 60) == (($gmepoch / 60) % 60)) && $date_cache[$format]['is_short'] !== false && !$forcedate && isset($this->lang['datetime']['AGO'])) + { + return $this->lang(array('datetime', 'AGO'), max(0, (int) floor($delta / 60))); + } + + if (!$midnight) + { + list($d, $m, $y) = explode(' ', gmdate('j n Y', time() + $zone_offset)); + $midnight = gmmktime(0, 0, 0, $m, $d, $y) - $zone_offset; + } + + if ($date_cache[$format]['is_short'] !== false && !$forcedate && !($gmepoch < $midnight - 86400 || $gmepoch > $midnight + 172800)) + { + $day = false; + + if ($gmepoch > $midnight + 86400) + { + $day = 'TOMORROW'; + } + else if ($gmepoch > $midnight) + { + $day = 'TODAY'; + } + else if ($gmepoch > $midnight - 86400) + { + $day = 'YESTERDAY'; + } + + if ($day !== false) + { + return str_replace('||', $this->lang['datetime'][$day], strtr(@gmdate($date_cache[$format]['format_short'], $gmepoch + $zone_offset), $date_cache[$format]['lang'])); + } + } + + return strtr(@gmdate($date_cache[$format]['format_long'], $gmepoch + $zone_offset), $date_cache[$format]['lang']); + } + + /** + * Get language id currently used by the user + **/ + function get_iso_lang_id() + { + global $board_config, $db; + + if (!empty($this->lang_id)) + { + return $this->lang_id; + } + + if (!$this->lang_name) + { + $this->lang_name = $board_config['default_lang']; + } + + $sql = 'SELECT lang_id + FROM ' . LANG_TABLE . " + WHERE lang_iso = '" . $db->sql_escape($this->lang_name) . "'"; + $result = $db->sql_query($sql); + $this->lang_id = (int) $db->sql_fetchfield('lang_id'); + $db->sql_freeresult($result); + + return $this->lang_id; + } + + /** + * Get users profile fields + */ + function get_profile_fields($user_id) + { + global $db; + + if (isset($this->profile_fields)) + { + return; + } + + $sql = 'SELECT * + FROM ' . PROFILE_FIELDS_DATA_TABLE . " + WHERE user_id = $user_id"; + $result = $db->sql_query_limit($sql, 1); + $this->profile_fields = (!($row = $db->sql_fetchrow($result))) ? array() : $row; + $db->sql_freeresult($result); + } + + /** + * Gets the user's info + * + * Will take the users email, username or member id and return their data + * + * @param int || string $username the user's email address username or member id + * @return array $results containing the user info || bool false + * @since 0.1.2 + */ + function load_user($user, $force_str = false) + { + if (!is_numeric($user) || $force_str) + { + $user = phpBB2::phpbb_clean_username($user); + } + else + { + $user = intval($user); + } + + //$this->data = array(); + + // we'll try id || email, then username + if (is_numeric($user)) + { + // number is most likely a member id + $this->data = get_user_by_id($user); + } + else + { + // the email can't be purely numeric + $this->data = get_user_by_email($user); + } + + if (empty($this->data)) + { + $this->data = get_user_by_username($user); + } + /* + if (empty($this->data)) + { + return false; + } + else + { + return $this->data; + } + */ + } + + /** + * Load user helper + * + * @param array $user_ids + */ + function load_users(array $user_ids) + { + $user_ids[] = ANONYMOUS; + + // Make user_ids unique and convert to integer. + $user_ids = array_map('intval', array_unique($user_ids)); + + // Do not load users we already have in $this->users + $user_ids = array_diff($user_ids, array_keys($this->users)); + + if (sizeof($user_ids)) + { + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE ' . $db->sql_in_set('user_id', $user_ids); + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $this->users[$row['user_id']] = $row; + } + $db->sql_freeresult($result); + } + } + + /** + * Gets the user's info from their email address + * + * Will take the users email address and return an array containing all the + * user's information in the db. Will return false on failure + * + * @param string $email the user's email address + * @return array $results containing the user info || bool false + * @since 0.1.0 + */ + function get_user_by_email($email_address = '') + { + global $db; + if ('' == $email_address || !is_string($email_address) || 2 > count(explode('@', $email_address))) + { + return false; + } + $sql = $db->sql_build_query('SELECT', ' + SELECT * FROM ' . USERS_TABLE . ' + WHERE email_address = {string:email_address}', + array('email_address' => $email_address, )); + $result = $db->sql_query_limit($sql, 1); + $return = $db->sql_fetchrow($result); + if (!$return) + { + $db->sql_freeresult($result); + //trigger_error($mx_user->lang['NO_USER'] . adm_back_link($this->u_action), E_USER_WARNING); + } + if (empty($return)) + { + return false; + } + else + { + // return all the results. + return $return; + } + } + + /** + * Gets the user's info from their member id + * + * Will take the users member id and return an array containing all the + * user's information in the db. Will return false on failure + * + * @param int $id the user's member id + * @return array $results containing the user info || bool false + * @since 0.1.2 + */ + function get_user_by_id($user_id = '') + { + global $db; + if ('' == $user_id || !is_numeric($user_id)) + { + return false; + } + else + { + $id = intval($user_id); + if (0 == $user_id) + { + return false; + } + } + $sql = $db->sql_build_query('SELECT', ' + SELECT * FROM ' . USERS_TABLE . ' + WHERE user_id = {int:user_id}', + array('user_id' => $user_id, )); + $result = $db->sql_query_limit($sql, 1); + $return = $db->sql_fetchrow($result); + if (!$return) + { + $db->sql_freeresult($result); + //trigger_error($mx_user->lang['NO_USER'] . adm_back_link($this->u_action), E_USER_WARNING); + } + if (empty($return)) + { + return false; + } + else + { + // return all the results. + return $return; + } + } + + /** + * Gets the user's info from their member name (username) + * + * Will take the users member name and return an array containing all the + * user's information in the db. Will return false on failure + * + * @param string $username the user's member name + * @return array $results containing the user info || bool false + * @since 0.1.0 + */ + function get_user_by_name($user_name = '') + { + global $db; + if ('' == $user_name || !is_string($user_name)) + { + return false; + } + $sql = $db->sql_build_query('SELECT', ' + SELECT * FROM ' . USERS_TABLE . ' + WHERE user_name = {string:user_name}', + array('user_name' => $user_name, )); + $result = $db->sql_query_limit($sql, 1); + $return = $db->sql_fetchrow($result); + if (!$return) + { + $db->sql_freeresult($result); + //trigger_error($mx_user->lang['NO_USER'] . adm_back_link($this->u_action), E_USER_WARNING); + } + if (empty($return)) + { + return false; + } + else + { + // return all the results. + return $return; + } + } + + /** + * Specify/Get images + */ + function images($img, $alt = '', $width = false, $suffix = '', $type = 'src') + { + static $imgs; + global $phpbb_root_path, $mx_root_path; + $img_data = &$imgs[$img]; + + if (empty($img_data)) + { + if (!isset($this->img_array[$img])) + { + // Do not fill the image to let designers decide what to do if the image is empty + $img_data = ''; + return $img_data; + } + $img_data['image_lang'] = $this->img_array[$img]['image_lang']; + $img_data['src'] = (!empty($img_data['image_lang']) ? (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/' . $img_data['image_lang'] . '/' . $this->img_array[$img]['image_filename']) : (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/images/' . $this->img_array[$img]['image_filename'])); + $img_data['width'] = $this->img_array[$img]['image_width']; + $img_data['height'] = $this->img_array[$img]['image_height']; + } + + $alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt; + + switch ($type) + { + case 'full_tag': + $use_width = ($width === false) ? $img_data['width'] : $width; + + return '' . $alt . ''; + break; + + case 'width': + return ($width === false) ? $img_data['width'] : $width; + break; + + case 'height': + return $img_data['height']; + break; + + default: + return $img_data['src']; + break; + } + } + + /** + * Specify/Get image + */ + function img($img, $alt = '', $width = false, $suffix = '', $type = 'full_tag') + { + static $imgs; + global $phpbb_root_path, $mx_root_path; + + $img_data = &$imgs[$img]; + + if (empty($img_data)) + { + if (!isset($this->img_array[$img])) + { + // Do not fill the image to let designers decide what to do if the image is empty + $img_data = ''; + return $img_data; + } + $img_data['src'] = (!empty($this->img_array[$img]['image_lang']) ? (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/' . $this->img_array[$img]['image_lang'] . '/' . $this->img_array[$img]['image_filename']) : (PHPBB_URL . 'styles/' . $this->theme['imageset_path'] . '/theme/images/' . $this->img_array[$img]['image_filename'])); + $img_data['width'] = $this->img_array[$img]['image_width']; + $img_data['height'] = $this->img_array[$img]['image_height']; + } + + $alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt; + //die($img_data); + switch ($type) + { + case 'src': + return $img_data['src']; + break; + + case 'width': + return ($width === false) ? $img_data['width'] : $width; + break; + + case 'height': + return $img_data['height']; + break; + + default: + $use_width = ($width === false) ? $img_data['width'] : $width; + + return '' . $alt . ''; + break; + } + } + + /** + * Get option bit field from user options + */ + function optionget($key, $data = false) + { + if (!isset($this->keyvalues[$key])) + { + $var = ($data) ? $data : $this->data['user_options']; + $this->keyvalues[$key] = ($var & 1 << $this->keyoptions[$key]) ? true : false; + } + + return $this->keyvalues[$key]; + } + + /** + * Set option bit field for user options + */ + function optionset($key, $value, $data = false) + { + $var = ($data) ? $data : $this->data['user_options']; + + if ($value && !($var & 1 << $this->keyoptions[$key])) + { + $var += 1 << $this->keyoptions[$key]; + } + else if (!$value && ($var & 1 << $this->keyoptions[$key])) + { + $var -= 1 << $this->keyoptions[$key]; + } + else + { + return ($data) ? $var : false; + } + + if (!$data) + { + $this->data['user_options'] = $var; + return true; + } + else + { + return $var; + } + } + + /** + * encode_lang + * + * $default_lang = $mx_user->encode_lang($board_config['default_lang']); + * + * @param unknown_type $lang + * @return unknown + */ + function encode_lang($lang) + { + switch($lang) + { + case 'afar': + $lang_name = 'aa'; + break; + case 'abkhazian': + $lang_name = 'ab'; + break; + case 'avestan': + $lang_name = 'ae'; + break; + case 'afrikaans': + $lang_name = 'af'; + break; + case 'akan': + $lang_name = 'ak'; + break; + case 'amharic': + $lang_name = 'am'; + break; + case 'aragonese': + $lang_name = 'an'; + break; + case 'arabic': + $lang_name = 'ar'; + break; + case 'assamese': + $lang_name = 'as'; + break; + case 'avaric': + $lang_name = 'av'; + break; + case 'aymara': + $lang_name = 'ay'; + break; + case 'azerbaijani': + $lang_name = 'az'; + break; + case 'bashkir': + $lang_name = 'ba'; + break; + case 'belarusian': + $lang_name = 'be'; + break; + case 'bulgarian': + $lang_name = 'bg'; + break; + case 'bihari': + $lang_name = 'bh'; + break; + case 'bislama': + $lang_name = 'bi'; + break; + case 'bambara': + $lang_name = 'bm'; + break; + case 'bengali': + $lang_name = 'bn'; + break; + case 'tibetan': + $lang_name = 'bo'; + break; + case 'breton': + $lang_name = 'br'; + break; + case 'bosnian': + $lang_name = 'bs'; + break; + case 'catalan': + $lang_name = 'ca'; + break; + case 'chechen': + $lang_name = 'ce'; + break; + case 'chamorro': + $lang_name = 'ch'; + break; + case 'corsican': + $lang_name = 'co'; + break; + case 'cree': + $lang_name = 'cr'; + break; + case 'czech': + $lang_name = 'cs'; + break; + case 'slavonic': + $lang_name = 'cu'; + break; + case 'chuvash': + $lang_name = 'cv'; + break; + case 'welsh_cymraeg': + $lang_name = 'cy'; + break; + case 'danish': + $lang_name = 'da'; + break; + case 'german': + $lang_name = 'de'; + break; + case 'divehi': + $lang_name = 'dv'; + break; + case 'dzongkha': + $lang_name = 'dz'; + break; + case 'ewe': + $lang_name = 'ee'; + break; + case 'greek': + $lang_name = 'el'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'english': + $lang_name = 'en'; + break; + case 'english_us': + $lang_name = 'en_us'; + break; + case 'esperanto': + $lang_name = 'eo'; + break; + case 'spanish': + $lang_name = 'es'; + break; + case 'estonian': + $lang_name = 'et'; + break; + case 'basque': + $lang_name = 'eu'; + break; + case 'persian': + $lang_name = 'fa'; + break; + case 'fulah': + $lang_name = 'ff'; + break; + case 'finnish': + $lang_name = 'fi'; + break; + case 'fijian': + $lang_name = 'fj'; + break; + case 'faroese': + $lang_name = 'fo'; + break; + case 'french': + $lang_name = 'fr'; + break; + case 'frisian': + $lang_name = 'fy'; + break; + case 'irish': + $lang_name = 'ga'; + break; + case 'scottish': + $lang_name = 'gd'; + break; + case 'galician': + $lang_name = 'gl'; + break; + case 'guaraní': + $lang_name = 'gn'; + break; + case 'gujarati': + $lang_name = 'gu'; + break; + case 'manx': + $lang_name = 'gv'; + break; + case 'hausa': + $lang_name = 'ha'; + break; + case 'hebrew': + $lang_name = 'he'; + break; + case 'hindi': + $lang_name = 'hi'; + break; + case 'hiri_motu': + $lang_name = 'ho'; + break; + case 'croatian': + $lang_name = 'hr'; + break; + case 'haitian': + $lang_name = 'ht'; + break; + case 'hungarian': + $lang_name = 'hu'; + break; + case 'armenian': + $lang_name = 'hy'; + break; + case 'herero': + $lang_name = 'hz'; + break; + case 'interlingua': + $lang_name = 'ia'; + break; + case 'indonesian': + $lang_name = 'id'; + break; + case 'interlingue': + $lang_name = 'ie'; + break; + case 'igbo': + $lang_name = 'ig'; + break; + case 'sichuan_yi': + $lang_name = 'ii'; + break; + case 'inupiaq': + $lang_name = 'ik'; + break; + case 'ido': + $lang_name = 'io'; + break; + case 'icelandic': + $lang_name = 'is'; + break; + case 'italian': + $lang_name = 'it'; + break; + case 'inuktitut': + $lang_name = 'iu'; + break; + case 'japanese': + $lang_name = 'ja'; + break; + case 'javanese': + $lang_name = 'jv'; + break; + case 'georgian': + $lang_name = 'ka'; + break; + case 'kongo': + $lang_name = 'kg'; + break; + case 'kikuyu': + $lang_name = 'ki'; + break; + case 'kwanyama': + $lang_name = 'kj'; + break; + case 'kazakh': + $lang_name = 'kk'; + break; + case 'kalaallisut': + $lang_name = 'kl'; + break; + case 'khmer': + $lang_name = 'km'; + break; + case 'kannada': + $lang_name = 'kn'; + break; + case 'korean': + $lang_name = 'ko'; + break; + case 'kanuri': + $lang_name = 'kr'; + break; + case 'kashmiri': + $lang_name = 'ks'; + break; + case 'kurdish': + $lang_name = 'ku'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'cornish_kernewek': + $lang_name = 'kw'; + break; + case 'kirghiz': + $lang_name = 'ky'; + break; + case 'latin': + $lang_name = 'la'; + break; + case 'luxembourgish': + $lang_name = 'lb'; + break; + case 'ganda': + $lang_name = 'lg'; + break; + case 'limburgish': + $lang_name = 'li'; + break; + case 'lingala': + $lang_name = 'ln'; + break; + case 'lao': + $lang_name = 'lo'; + break; + case 'lithuanian': + $lang_name = 'lt'; + break; + case 'luba-katanga': + $lang_name = 'lu'; + break; + case 'latvian': + $lang_name = 'lv'; + break; + case 'malagasy': + $lang_name = 'mg'; + break; + case 'marshallese': + $lang_name = 'mh'; + break; + case 'maori': + $lang_name = 'mi'; + break; + case 'macedonian': + $lang_name = 'mk'; + break; + case 'malayalam': + $lang_name = 'ml'; + break; + case 'mongolian': + $lang_name = 'mn'; + break; + case 'moldavian': + $lang_name = 'mo'; + break; + case 'marathi': + $lang_name = 'mr'; + break; + case 'malay': + $lang_name = 'ms'; + break; + case 'maltese': + $lang_name = 'mt'; + break; + case 'burmese': + $lang_name = 'my'; + break; + case 'nauruan': + $lang_name = 'na'; + break; + case 'norwegian': + $lang_name = 'nb'; + break; + case 'ndebele': + $lang_name = 'nd'; + break; + case 'nepali': + $lang_name = 'ne'; + break; + case 'ndonga': + $lang_name = 'ng'; + break; + case 'dutch': + $lang_name = 'nl'; + break; + case 'norwegian_nynorsk': + $lang_name = 'nn'; + break; + case 'norwegian': + $lang_name = 'no'; + break; + case 'southern_ndebele': + $lang_name = 'nr'; + break; + case 'navajo': + $lang_name = 'nv'; + break; + case 'chichewa': + $lang_name = 'ny'; + break; + case 'occitan': + $lang_name = 'oc'; + break; + case 'ojibwa': + $lang_name = 'oj'; + break; + case 'oromo': + $lang_name = 'om'; + break; + case 'oriya': + $lang_name = 'or'; + break; + case 'ossetian': + $lang_name = 'os'; + break; + case 'panjabi': + $lang_name = 'pa'; + break; + case 'pali': + $lang_name = 'pi'; + break; + case 'polish': + $lang_name = 'pl'; + break; + case 'pashto': + $lang_name = 'ps'; + break; + case 'portuguese': + $lang_name = 'pt'; + break; + case 'portuguese_brasil': + $lang_name = 'pt_br'; + break; + case 'quechua': + $lang_name = 'qu'; + break; + case 'romansh': + $lang_name = 'rm'; + break; + case 'kirundi': + $lang_name = 'rn'; + break; + case 'romanian': + $lang_name = 'ro'; + break; + case 'russian': + $lang_name = 'ru'; + break; + case 'kinyarwanda': + $lang_name = 'rw'; + break; + case 'sanskrit': + $lang_name = 'sa'; + break; + case 'sardinian': + $lang_name = 'sc'; + break; + case 'sindhi': + $lang_name = 'sd'; + break; + case 'northern_sami': + $lang_name = 'se'; + break; + case 'sango': + $lang_name = 'sg'; + break; + case 'serbo-croatian': + $lang_name = 'sh'; + break; + case 'sinhala': + $lang_name = 'si'; + break; + case 'slovak': + $lang_name = 'sk'; + break; + case 'slovenian': + $lang_name = 'sl'; + break; + case 'samoan': + $lang_name = 'sm'; + break; + case 'shona': + $lang_name = 'sn'; + break; + case 'somali': + $lang_name = 'so'; + break; + case 'albanian': + $lang_name = 'sq'; + break; + case 'serbian': + $lang_name = 'sr'; + break; + case 'swati': + $lang_name = 'ss'; + break; + case 'sotho': + $lang_name = 'st'; + break; + case 'sundanese': + $lang_name = 'su'; + break; + case 'swedish': + $lang_name = 'sv'; + break; + case 'swahili': + $lang_name = 'sw'; + break; + case 'tamil': + $lang_name = 'ta'; + break; + case 'telugu': + $lang_name = 'te'; + break; + case 'tajik': + $lang_name = 'tg'; + break; + case 'thai': + $lang_name = 'th'; + break; + case 'tigrinya': + $lang_name = 'ti'; + break; + case 'turkmen': + $lang_name = 'tk'; + break; + case 'tagalog': + $lang_name = 'tl'; + break; + case 'tswana': + $lang_name = 'tn'; + break; + case 'tonga': + $lang_name = 'to'; + break; + case 'turkish': + $lang_name = 'tr'; + break; + case 'tsonga': + $lang_name = 'ts'; + break; + case 'tatar': + $lang_name = 'tt'; + break; + case 'twi': + $lang_name = 'tw'; + break; + case 'tahitian': + $lang_name = 'ty'; + break; + case 'uighur': + $lang_name = 'ug'; + break; + case 'ukrainian': + $lang_name = 'uk'; + break; + case 'urdu': + $lang_name = 'ur'; + break; + case 'uzbek': + $lang_name = 'uz'; + break; + case 'venda': + $lang_name = 've'; + break; + case 'vietnamese': + $lang_name = 'vi'; + break; + case 'volapuk': + $lang_name = 'vo'; + break; + case 'walloon': + $lang_name = 'wa'; + break; + case 'wolof': + $lang_name = 'wo'; + break; + case 'xhosa': + $lang_name = 'xh'; + break; + case 'yiddish': + $lang_name = 'yi'; + break; + case 'yoruba': + $lang_name = 'yo'; + break; + case 'zhuang': + $lang_name = 'za'; + break; + case 'chinese': + $lang_name = 'zh'; + break; + case 'chinese_simplified': + $lang_name = 'zh_cmn_hans'; + break; + case 'chinese_traditional': + $lang_name = 'zh_cmn_hant'; + break; + case 'zulu': + $lang_name = 'zu'; + break; + default: + $lang_name = $lang; + break; + } + return $lang_name; + } + + /** + * decode_lang + * + * $default_lang = $mx_user->decode_lang($board_config['default_lang']); + * + * @param unknown_type $lang + * @return unknown + */ + function decode_lang($lang) + { + switch($lang) + { + case 'aa': + $lang_name = 'afar'; + break; + case 'ab': + $lang_name = 'abkhazian'; + break; + case 'ae': + $lang_name = 'avestan'; + break; + case 'af': + $lang_name = 'afrikaans'; + break; + case 'ak': + $lang_name = 'akan'; + break; + case 'am': + $lang_name = 'amharic'; + break; + case 'an': + $lang_name = 'aragonese'; + break; + case 'ar': + $lang_name = 'arabic'; + break; + case 'as': + $lang_name = 'assamese'; + break; + case 'av': + $lang_name = 'avaric'; + break; + case 'ay': + $lang_name = 'aymara'; + break; + case 'az': + $lang_name = 'azerbaijani'; + break; + case 'ba': + $lang_name = 'bashkir'; + break; + case 'be': + $lang_name = 'belarusian'; + break; + case 'bg': + $lang_name = 'bulgarian'; + break; + case 'bh': + $lang_name = 'bihari'; + break; + case 'bi': + $lang_name = 'bislama'; + break; + case 'bm': + $lang_name = 'bambara'; + break; + case 'bn': + $lang_name = 'bengali'; + break; + case 'bo': + $lang_name = 'tibetan'; + break; + case 'br': + $lang_name = 'breton'; + break; + case 'bs': + $lang_name = 'bosnian'; + break; + case 'ca': + $lang_name = 'catalan'; + break; + case 'ce': + $lang_name = 'chechen'; + break; + case 'ch': + $lang_name = 'chamorro'; + break; + case 'co': + $lang_name = 'corsican'; + break; + case 'cr': + $lang_name = 'cree'; + break; + case 'cs': + $lang_name = 'czech'; + break; + case 'cu': + $lang_name = 'slavonic'; + break; + case 'cv': + $lang_name = 'chuvash'; + break; + case 'cy': + $lang_name = 'welsh_cymraeg'; + break; + case 'da': + $lang_name = 'danish'; + break; + case 'de': + $lang_name = 'german'; + break; + case 'dv': + $lang_name = 'divehi'; + break; + case 'dz': + $lang_name = 'dzongkha'; + break; + case 'ee': + $lang_name = 'ewe'; + break; + case 'el': + $lang_name = 'greek'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'en': + $lang_name = 'english'; + break; + case 'en_us': + $lang_name = 'english'; + break; + case 'eo': + $lang_name = 'esperanto'; + break; + case 'es': + $lang_name = 'spanish'; + break; + case 'et': + $lang_name = 'estonian'; + break; + case 'eu': + $lang_name = 'basque'; + break; + case 'fa': + $lang_name = 'persian'; + break; + case 'ff': + $lang_name = 'fulah'; + break; + case 'fi': + $lang_name = 'finnish'; + break; + case 'fj': + $lang_name = 'fijian'; + break; + case 'fo': + $lang_name = 'faroese'; + break; + case 'fr': + $lang_name = 'french'; + break; + case 'fy': + $lang_name = 'frisian'; + break; + case 'ga': + $lang_name = 'irish'; + break; + case 'gd': + $lang_name = 'scottish'; + break; + case 'gl': + $lang_name = 'galician'; + break; + case 'gn': + $lang_name = 'guaraní'; + break; + case 'gu': + $lang_name = 'gujarati'; + break; + case 'gv': + $lang_name = 'manx'; + break; + case 'ha': + $lang_name = 'hausa'; + break; + case 'he': + $lang_name = 'hebrew'; + break; + case 'hi': + $lang_name = 'hindi'; + break; + case 'ho': + $lang_name = 'hiri_motu'; + break; + case 'hr': + $lang_name = 'croatian'; + break; + case 'ht': + $lang_name = 'haitian'; + break; + case 'hu': + $lang_name = 'hungarian'; + break; + case 'hy': + $lang_name = 'armenian'; + break; + case 'hz': + $lang_name = 'herero'; + break; + case 'ia': + $lang_name = 'interlingua'; + break; + case 'id': + $lang_name = 'indonesian'; + break; + case 'ie': + $lang_name = 'interlingue'; + break; + case 'ig': + $lang_name = 'igbo'; + break; + case 'ii': + $lang_name = 'sichuan_yi'; + break; + case 'ik': + $lang_name = 'inupiaq'; + break; + case 'io': + $lang_name = 'ido'; + break; + case 'is': + $lang_name = 'icelandic'; + break; + case 'it': + $lang_name = 'italian'; + break; + case 'iu': + $lang_name = 'inuktitut'; + break; + case 'ja': + $lang_name = 'japanese'; + break; + case 'jv': + $lang_name = 'javanese'; + break; + case 'ka': + $lang_name = 'georgian'; + break; + case 'kg': + $lang_name = 'kongo'; + break; + case 'ki': + $lang_name = 'kikuyu'; + break; + case 'kj': + $lang_name = 'kwanyama'; + break; + case 'kk': + $lang_name = 'kazakh'; + break; + case 'kl': + $lang_name = 'kalaallisut'; + break; + case 'km': + $lang_name = 'khmer'; + break; + case 'kn': + $lang_name = 'kannada'; + break; + case 'ko': + $lang_name = 'korean'; + break; + case 'kr': + $lang_name = 'kanuri'; + break; + case 'ks': + $lang_name = 'kashmiri'; + break; + case 'ku': + $lang_name = 'kurdish'; + break; + case 'kv': + $lang_name = 'komi'; + break; + case 'kw': + $lang_name = 'cornish_kernewek'; + break; + case 'ky': + $lang_name = 'kirghiz'; + break; + case 'la': + $lang_name = 'latin'; + break; + case 'lb': + $lang_name = 'luxembourgish'; + break; + case 'lg': + $lang_name = 'ganda'; + break; + case 'li': + $lang_name = 'limburgish'; + break; + case 'ln': + $lang_name = 'lingala'; + break; + case 'lo': + $lang_name = 'lao'; + break; + case 'lt': + $lang_name = 'lithuanian'; + break; + case 'lu': + $lang_name = 'luba-katanga'; + break; + case 'lv': + $lang_name = 'latvian'; + break; + case 'mg': + $lang_name = 'malagasy'; + break; + case 'mh': + $lang_name = 'marshallese'; + break; + case 'mi': + $lang_name = 'maori'; + break; + case 'mk': + $lang_name = 'macedonian'; + break; + case 'ml': + $lang_name = 'malayalam'; + break; + case 'mn': + $lang_name = 'mongolian'; + break; + case 'mo': + $lang_name = 'moldavian'; + break; + case 'mr': + $lang_name = 'marathi'; + break; + case 'ms': + $lang_name = 'malay'; + break; + case 'mt': + $lang_name = 'maltese'; + break; + case 'my': + $lang_name = 'burmese'; + break; + case 'na': + $lang_name = 'nauruan'; + break; + case 'nb': + $lang_name = 'norwegian'; + break; + case 'nd': + $lang_name = 'ndebele'; + break; + case 'ne': + $lang_name = 'nepali'; + break; + case 'ng': + $lang_name = 'ndonga'; + break; + case 'nl': + $lang_name = 'dutch'; + break; + case 'nn': + $lang_name = 'norwegian_nynorsk'; + break; + case 'no': + $lang_name = 'norwegian'; + break; + case 'nr': + $lang_name = 'southern_ndebele'; + break; + case 'nv': + $lang_name = 'navajo'; + break; + case 'ny': + $lang_name = 'chichewa'; + break; + case 'oc': + $lang_name = 'occitan'; + break; + case 'oj': + $lang_name = 'ojibwa'; + break; + case 'om': + $lang_name = 'oromo'; + break; + case 'or': + $lang_name = 'oriya'; + break; + case 'os': + $lang_name = 'ossetian'; + break; + case 'pa': + $lang_name = 'panjabi'; + break; + case 'pi': + $lang_name = 'pali'; + break; + case 'pl': + $lang_name = 'polish'; + break; + case 'ps': + $lang_name = 'pashto'; + break; + case 'pt': + $lang_name = 'portuguese'; + break; + case 'pt_br': + $lang_name = 'portuguese_brasil'; + break; + case 'qu': + $lang_name = 'quechua'; + break; + case 'rm': + $lang_name = 'romansh'; + break; + case 'rn': + $lang_name = 'kirundi'; + break; + case 'ro': + $lang_name = 'romanian'; + break; + case 'ru': + $lang_name = 'russian'; + break; + case 'rw': + $lang_name = 'kinyarwanda'; + break; + case 'sa': + $lang_name = 'sanskrit'; + break; + case 'sc': + $lang_name = 'sardinian'; + break; + case 'sd': + $lang_name = 'sindhi'; + break; + case 'se': + $lang_name = 'northern_sami'; + break; + case 'sg': + $lang_name = 'sango'; + break; + case 'sh': + $lang_name = 'serbo-croatian'; + break; + case 'si': + $lang_name = 'sinhala'; + break; + case 'sk': + $lang_name = 'slovak'; + break; + case 'sl': + $lang_name = 'slovenian'; + break; + case 'sm': + $lang_name = 'samoan'; + break; + case 'sn': + $lang_name = 'shona'; + break; + case 'so': + $lang_name = 'somali'; + break; + case 'sq': + $lang_name = 'albanian'; + break; + case 'sr': + $lang_name = 'serbian'; + break; + case 'ss': + $lang_name = 'swati'; + break; + case 'st': + $lang_name = 'sotho'; + break; + case 'su': + $lang_name = 'sundanese'; + break; + case 'sv': + $lang_name = 'swedish'; + break; + case 'sw': + $lang_name = 'swahili'; + break; + case 'ta': + $lang_name = 'tamil'; + break; + case 'te': + $lang_name = 'telugu'; + break; + case 'tg': + $lang_name = 'tajik'; + break; + case 'th': + $lang_name = 'thai'; + break; + case 'ti': + $lang_name = 'tigrinya'; + break; + case 'tk': + $lang_name = 'turkmen'; + break; + case 'tl': + $lang_name = 'tagalog'; + break; + case 'tn': + $lang_name = 'tswana'; + break; + case 'to': + $lang_name = 'tonga'; + break; + case 'tr': + $lang_name = 'turkish'; + break; + case 'ts': + $lang_name = 'tsonga'; + break; + case 'tt': + $lang_name = 'tatar'; + break; + case 'tw': + $lang_name = 'twi'; + break; + case 'ty': + $lang_name = 'tahitian'; + break; + case 'ug': + $lang_name = 'uighur'; + break; + case 'uk': + $lang_name = 'ukrainian'; + break; + case 'ur': + $lang_name = 'urdu'; + break; + case 'uz': + $lang_name = 'uzbek'; + break; + case 've': + $lang_name = 'venda'; + break; + case 'vi': + $lang_name = 'vietnamese'; + break; + case 'vo': + $lang_name = 'volapuk'; + break; + case 'wa': + $lang_name = 'walloon'; + break; + case 'wo': + $lang_name = 'wolof'; + break; + case 'xh': + $lang_name = 'xhosa'; + break; + case 'yi': + $lang_name = 'yiddish'; + break; + case 'yo': + $lang_name = 'yoruba'; + break; + case 'za': + $lang_name = 'zhuang'; + break; + case 'zh': + $lang_name = 'chinese'; + break; + case 'zh_cmn_hans': + $lang_name = 'chinese_simplified'; + break; + case 'zh_cmn_hant': + $lang_name = 'chinese_traditional'; + break; + case 'zu': + $lang_name = 'zulu'; + break; + default: + $lang_name = $lang; + break; + } + return $lang_name; + } +} +?> \ No newline at end of file diff --git a/includes/sessions/smf2/CVS/Entries b/includes/sessions/smf2/CVS/Entries new file mode 100644 index 00000000..8aedbb5b --- /dev/null +++ b/includes/sessions/smf2/CVS/Entries @@ -0,0 +1,10 @@ +/auth.php/1.1/Sun May 18 06:26:59 2014// +/bbcode.php/1.1/Sun May 18 06:26:59 2014// +/constants.php/1.1/Sun May 18 06:26:59 2014// +/core.php/1.2/Mon Jul 7 20:36:53 2014// +/functions.php/1.1/Sun May 18 06:26:59 2014// +/index.htm/1.1/Fri May 16 18:06:26 2014// +/login.php/1.1/Sun May 18 06:26:59 2014// +/readme.html/1.1/Sun May 18 06:26:59 2014// +/session.php/1.1/Sun May 18 06:26:59 2014// +D diff --git a/includes/sessions/smf2/CVS/Entries.Extra b/includes/sessions/smf2/CVS/Entries.Extra new file mode 100644 index 00000000..b82b2f6f --- /dev/null +++ b/includes/sessions/smf2/CVS/Entries.Extra @@ -0,0 +1,9 @@ +/auth.php////*//// +/bbcode.php////*//// +/constants.php////*//// +/core.php////*//// +/functions.php////*//// +/index.htm////*//// +/login.php////*//// +/readme.html////*//// +/session.php////*//// diff --git a/includes/sessions/smf2/CVS/Entries.Extra.Old b/includes/sessions/smf2/CVS/Entries.Extra.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/smf2/CVS/Entries.Old b/includes/sessions/smf2/CVS/Entries.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/sessions/smf2/CVS/Repository b/includes/sessions/smf2/CVS/Repository new file mode 100644 index 00000000..3ed4d5e3 --- /dev/null +++ b/includes/sessions/smf2/CVS/Repository @@ -0,0 +1 @@ +core/includes/sessions/smf2 diff --git a/includes/sessions/smf2/CVS/Root b/includes/sessions/smf2/CVS/Root new file mode 100644 index 00000000..6ab1483d --- /dev/null +++ b/includes/sessions/smf2/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@mxbb.cvs.sourceforge.net:/cvsroot/mxbb diff --git a/includes/sessions/smf2/core.php b/includes/sessions/smf2/core.php index 412f01bd..1a2b3aa4 100644 --- a/includes/sessions/smf2/core.php +++ b/includes/sessions/smf2/core.php @@ -68,6 +68,9 @@ function validate_backend() str_replace("//", "/", $phpbb_root_path); str_replace("//", "/", $smf_root_path); + // Define backend template extension + //$tplEx = 'php'; + $tplEx = 'html'; // SMF Is Intalled $portal_backend_valid_file = @file_exists($smf_root_path . "Settings.$phpEx"); @@ -111,11 +114,7 @@ function validate_backend() 'character_set' => $db_character_set, ); - - // Define backend template extension - //$tplEx = 'php'; - $tplEx = 'html'; - + // Most database systems have not set UTF-8 as their default input charset. if (!empty($db_character_set)) { @@ -168,6 +167,11 @@ function setup_backend() define('PHPBB_URL', $server_url_phpbb); define('BOARD_URL', $server_url_smf); + // Define backend template extension + //$tplEx = 'php'; + $tplEx = 'html'; + if (!defined('TPL_EXT')) define('TPL_EXT', $tplEx); + // Now sync Configs - In SMF mode, we rely on native configs, thus we need to sync mxp and smf settings $this->sync_board_config_keys(); //$this->sync_userdata(); diff --git a/includes/shared/phpbb2/admin/index.htm b/includes/shared/phpbb2/admin/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb2/admin/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb2/admin/index.php b/includes/shared/phpbb2/admin/index.php new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb2/admin/index.php @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb2/includes/functions.php b/includes/shared/phpbb2/includes/functions.php index 730076b7..6aa64615 100644 --- a/includes/shared/phpbb2/includes/functions.php +++ b/includes/shared/phpbb2/includes/functions.php @@ -25,12 +25,397 @@ // Class phpBB2 - function container // class phpBB2 -{ - public static function get_db_stat($mode) +{ + protected $template; + protected $mx_user; + protected $db; + protected $mx_request_vars; + protected $mx_cache; + protected $board_config; + protected $php_ext; + protected $root_path; + protected $mx_root_path; + protected $module_root_path; + protected $phpbb_root_path; + + public function phpBB2() + { + global $template, $mx_user, $db, $mx_cache, $mx_request_vars, $board_config, $phpEx, $phpbb_root_path, $mx_root_path, $module_root_path; + + $this->template = $template; + $this->user = $mx_user; + $this->db = $db; + $this->request = $mx_request_vars; + $this->cache = $mx_cache; + $this->config = $board_config; + $this->php_ext = $phpEx; + $this->root_path = $mx_root_path; + $this->mx_root_path = $mx_root_path; + $this->module_root_path = $module_root_path; + $this->phpbb_root_path = $phpbb_root_path; + + if (!defined('PHPBB_USE_BOARD_URL_PATH')) + { + define('PHPBB_USE_BOARD_URL_PATH', true); + } + } + + /** + * set_var + * + * Set variable, used by {@link request_var the request_var function} + * + * @access private + */ + function set_var(&$result, $var, $type, $multibyte = false) + { + settype($var, $type); + $result = $var; + + if ($type == 'string') + { + $result = trim(htmlspecialchars(str_replace(array("\r\n", "\r", "\0"), array("\n", "\n", ''), $result), ENT_COMPAT, 'UTF-8')); + + if (!empty($result)) + { + // Make sure multibyte characters are wellformed + if ($multibyte) + { + if (!preg_match('/^./u', $result)) + { + $result = ''; + } + } + else + { + // no multibyte, allow only ASCII (0-127) + $result = preg_replace('/[\x80-\xFF]/', '?', $result); + } + } + + $result = (STRIP) ? stripslashes($result) : $result; + } + } + /** + * Function: _read() from class mx_request_vars + * autor John Olson + * Get the value of the specified request var (post or get) and force the result to be + * of specified type. It might also transform the result (stripslashes, htmlspecialchars) for security + * purposes. It all depends on the $type argument. + * If the specified request var does not exist, then the default ($dflt) value is returned. + * Note the $type argument behaves as a bit array where more than one option can be specified by OR'ing + * the passed argument. This is tipical practice in languages like C, but it can also be done with PHP. + * + * @access private + * @param unknown_type $var + * @param unknown_type $type + * @param unknown_type $dflt + * @return unknown + */ + function read_var($var, $dflt = '', $type = 0, $not_null = false) + { + if(($type & (64|128)) == 0) + { + $type |= (64|128); + } + + if(($type & 64) && isset($_POST[$var]) || ($type & 128) && isset($_GET[$var])) + { + $val = ( ($type & 64) && isset($_POST[$var]) ? $_REQUEST[$var] : $_GET[$var]); + if(!($type & 16)) + { + if(is_array($val)) + { + foreach($val as $k => $v) + { + $val[$k] = trim(stripslashes($v)); + } + } + else + { + $val = trim(stripslashes($val)); + } + } + } + else if(($type & 64) && isset($HTTP_POST_VARS[$var]) || ($type & 128) && isset($HTTP_GET_VARS[$var])) + { + $val = ( ($type & 64) && isset($HTTP_POST_VARS[$var]) ? $HTTP_REQUEST_VARS[$var] : $HTTP_GET_VARS[$var]); + if(!($type & 16)) + { + if(is_array($val)) + { + foreach($val as $k => $v) + { + $val[$k] = trim(stripslashes($v)); + } + } + else + { + $val = trim(stripslashes($val)); + } + } + } + else + { + $val = $dflt; + } + + if($type & 1) // integer + { + return $not_null && empty($val) ? $dflt : intval($val); + } + + if($type & 2) // float + { + return $not_null && empty($val) ? $dflt : floatval($val); + } + + if($type & 8) // ie username + { + if( is_array($val) ) + { + foreach( $val as $k => $v ) + { + $val[$k] = htmlspecialchars(strip_tags(ltrim(rtrim($v, " \t\n\r\0\x0B\\")))); + } + } + else + { + $val = htmlspecialchars(strip_tags(ltrim(rtrim($val, " \t\n\r\0\x0B\\")))); + } + } + elseif($type & 4) // no slashes nor html + { + if(is_array($val)) + { + foreach( $val as $k => $v ) + { + $val[$k] = htmlspecialchars(ltrim(rtrim($v, " \t\n\r\0\x0B\\"))); + } + } + else + { + $val = htmlspecialchars(ltrim(rtrim($val, " \t\n\r\0\x0B\\"))); + } + } + + if($type & 32) + { + if(is_array($val)) + { + foreach($val as $k => $v) + { + $val[$k] = str_replace(($type & 16 ? "\'" : "'"), "''", $v); + } + } + else + { + $val = str_replace(($type & 16 ? "\'" : "'"), "''", $val); + } + } + return $not_null && empty($val) ? $dflt : $val; + } + /** + * request_var + * + * Used to get passed variable + */ + function request_var($var_name, $default, $multibyte = false, $cookie = false) + { + if (($cookie == false) && isset($_COOKIE[$var_name])) + { + if (empty($_GET[$var_name]) && empty($_POST[$var_name])) + { + return (is_array($default)) ? array() : $default; + } + $_REQUEST[$var_name] = isset($_POST[$var_name]) ? $_POST[$var_name] : $_GET[$var_name]; + } + + $super_global = ($cookie) ? '_COOKIE' : '_REQUEST'; + if (!isset($GLOBALS[$super_global][$var_name]) || is_array($GLOBALS[$super_global][$var_name]) != is_array($default)) + { + return (is_array($default)) ? array() : $default; + } + + $var = $GLOBALS[$super_global][$var_name]; + if (!is_array($default)) + { + $type = gettype($default); + } + else + { + list($key_type, $type) = each($default); + $type = gettype($type); + $key_type = gettype($key_type); + if ($type == 'array') + { + reset($default); + $default = current($default); + list($sub_key_type, $sub_type) = each($default); + $sub_type = gettype($sub_type); + $sub_type = ($sub_type == 'array') ? 'NULL' : $sub_type; + $sub_key_type = gettype($sub_key_type); + } + } + + if (is_array($var)) + { + $_var = $var; + $var = array(); + + foreach ($_var as $k => $v) + { + set_var($k, $k, $key_type); + if ($type == 'array' && is_array($v)) + { + foreach ($v as $_k => $_v) + { + if (is_array($_v)) + { + $_v = null; + } + set_var($_k, $_k, $sub_key_type, $multibyte); + set_var($var[$k][$_k], $_v, $sub_type, $multibyte); + } + } + else + { + if ($type == 'array' || is_array($v)) + { + $v = null; + } + set_var($var[$k], $v, $type, $multibyte); + } + } + } + else + { + set_var($var, $var, $type, $multibyte); + } + + return $var; + } + + /** + * Is POST var? + * + * Boolean method to check for existence of POST variable. + * * autor John Olson + * @access public + * @param string $var + * @return boolean + */ + function is_post($var) + { + global $_POST; + // Note: _x and _y are used by (at least IE) to return the mouse position at onclick of INPUT TYPE="img" elements. + return (isset($_POST[$var]) || ( isset($_POST[$var.'_x']) && isset($_POST[$var.'_y']))) ? 1 : 0; + } + + /** + * Is GET var? + * + * Boolean method to check for existence of GET variable. + * * autor John Olson + * @access public + * @param string $var + * @return boolean + */ + function is_get($var) + { + global $_GET; + return isset($_GET[$var]) ? 1 : 0 ; + } + + /** + * Is REQUEST (either GET or POST) var? + * + * Boolean method to check for existence of any REQUEST (both) variable. + * * autor John Olson + * @access public + * @param string $var + * @return boolean + */ + function is_request($var) + { + return (is_get($var) || is_post($var)) ? 1 : 0; + } + + /** + * Is POST var empty? + * * autor John Olson + * Boolean method to check if POST variable is empty + * as it might be set but still be empty. + * + * @access public + * @param string $var + * @return boolean + */ + + function is_empty_post($var) + { + global $_POST; + + return (empty($_POST[$var]) && ( empty($_POST[$var.'_x']) || empty($_POST[$var.'_y']))) ? 1 : 0 ; + } + + /** + * Is GET var empty? + * * autor John Olson + * Boolean method to check if GET variable is empty + * as it might be set but still be empty + * + * @access public + * @param string $var + * @return boolean + */ + function is_empty_get($var) + { + global $_GET; + return empty($_GET[$var]) ? 1 : 0 ; + } + + /** + * Is REQUEST empty (GET and POST) var? + * * autor John Olson + * Boolean method to check if REQUEST (both) variable is empty. + * + * @access public + * @param string $var + * @return boolean + */ + function is_empty_request($var) + { + return (is_empty_get($var) && is_empty_post($var)) ? 1 : 0; + } + + /** + * Set config value. Creates missing config entry. + */ + function set_config($config_name, $config_value) + { + global $db, $board_config; + + $sql = 'UPDATE ' . CONFIG_TABLE . " + SET config_value = '" . $db->sql_escape($config_value) . "' + WHERE config_name = '" . $db->sql_escape($config_name) . "'"; + $db->sql_query($sql); + + if (!$db->sql_affectedrows() && !isset($board_config[$config_name])) + { + $sql = 'INSERT INTO ' . CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'config_name' => $config_name, + 'config_value' => $config_value)); + $db->sql_query($sql); + } + $config[$config_name] = $config_value; + } + + function get_db_stat($mode) { global $db; - switch( $mode ) + switch($mode) { case 'usercount': $sql = "SELECT COUNT(user_id) AS total @@ -53,34 +438,34 @@ public static function get_db_stat($mode) break; } - if ( !($result = $db->sql_query($sql)) ) + if (!($result = $db->sql_query($sql))) { return false; } $row = $db->sql_fetchrow($result); - switch ( $mode ) + switch ($mode) { case 'usercount': return $row['total']; - break; + break; case 'newestuser': return $row; - break; + break; case 'postcount': return $row['post_total']; - break; + break; case 'topiccount': return $row['topic_total']; - break; + break; } return false; } // added at phpBB 2.0.11 to properly format the username - public static function phpbb_clean_username($username) + function phpbb_clean_username($username) { $username = substr(htmlspecialchars(str_replace("\'", "'", trim($username))), 0, 25); $username = self::phpbb_rtrim($username, "\\"); @@ -93,13 +478,13 @@ public static function phpbb_clean_username($username) * This function is a wrapper for ltrim, as charlist is only supported in php >= 4.1.0 * Added in phpBB 2.0.18 */ - public static function phpbb_ltrim($str, $charlist = false) + function phpbb_ltrim($str, $charlist = false) { if ($charlist === false) { return ltrim($str); } - + $php_version = explode('.', PHP_VERSION); // php version < 4.1.0 @@ -119,13 +504,13 @@ public static function phpbb_ltrim($str, $charlist = false) } // added at phpBB 2.0.12 to fix a bug in PHP 4.3.10 (only supporting charlist in php >= 4.1.0) - public static function phpbb_rtrim($str, $charlist = false) + function phpbb_rtrim($str, $charlist = false) { if ($charlist === false) { return rtrim($str); } - + $php_version = explode('.', PHP_VERSION); // php version < 4.1.0 @@ -144,6 +529,79 @@ public static function phpbb_rtrim($str, $charlist = false) return $str; } + /** + * Generates an alphanumeric random string of given length + * + * @return string + */ + function gen_rand_string($num_chars = 8) + { + // [a, z] + [0, 9] = 36 + return substr(strtoupper(base_convert(unique_id(), 16, 36)), 0, $num_chars); + } + + /** + * Generates a user-friendly alphanumeric random string of given length + * We remove 0 and O so users cannot confuse those in passwords etc. + * + * @return string + */ + function gen_rand_string_friendly($num_chars = 8) + { + $rand_str = unique_id(); + + // Remove Z and Y from the base_convert(), replace 0 with Z and O with Y + // [a, z] + [0, 9] - {z, y} = [a, z] + [0, 9] - {0, o} = 34 + $rand_str = str_replace(array('0', 'O'), array('Z', 'Y'), strtoupper(base_convert($rand_str, 16, 34))); + + return substr($rand_str, 0, $num_chars); + } + + /** + * Return unique id + */ + function unique_id() + { + return bin2hex(random_bytes(8)); + } + + /** + * Wrapper for mt_rand() which allows swapping $min and $max parameters. + * + * PHP does not allow us to swap the order of the arguments for mt_rand() anymore. + * (since PHP 5.3.4, see http://bugs.php.net/46587) + * + * @param int $min Lowest value to be returned + * @param int $max Highest value to be returned + * + * @return int Random integer between $min and $max (or $max and $min) + */ + function phpbb_mt_rand($min, $max) + { + return ($min > $max) ? mt_rand($max, $min) : mt_rand($min, $max); + } + + /** + * Wrapper for getdate() which returns the equivalent array for UTC timestamps. + * + * @param int $time Unix timestamp (optional) + * + * @return array Returns an associative array of information related to the timestamp. + * See http://www.php.net/manual/en/function.getdate.php + */ + function phpbb_gmgetdate($time = false) + { + if ($time === false) + { + $time = time(); + } + + // getdate() interprets timestamps in local time. + // What follows uses the fact that getdate() and + // date('Z') balance each other out. + return getdate($time - date('Z')); + } + /** * Our own generator of random values * This uses a constantly changing value as the base for generating the values @@ -151,23 +609,23 @@ public static function phpbb_rtrim($str, $charlist = false) * With thanks to Anthrax101 for the inspiration on this one * Added in phpBB 2.0.20 */ - public static function dss_rand() + function dss_rand() { global $db, $board_config, $dss_seeded; $val = $board_config['rand_seed'] . microtime(); $val = md5($val); $board_config['rand_seed'] = md5($board_config['rand_seed'] . $val . 'a'); - + if($dss_seeded !== true) { $sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '" . $board_config['rand_seed'] . "' WHERE config_name = 'rand_seed'"; - - if( !$db->sql_query($sql) ) + + if(!$db->sql_query($sql)) { - mx_message_die(GENERAL_ERROR, "Unable to reseed PRNG", "", __LINE__, __FILE__, $sql); + $this->message_die(GENERAL_ERROR, "Unable to reseed PRNG", "", __LINE__, __FILE__, $sql); } $dss_seeded = true; @@ -175,87 +633,1138 @@ public static function dss_rand() return substr($val, 4, 16); } + // - // Get Userdata, $user can be username or user_id. If force_str is true, the username will be forced. + // Get Userdata, $mx_user can be username or user_id. If force_str is true, the username will be forced. // - public static function get_userdata($user, $force_str = false) + function get_userdata($mx_user, $force_str = false) { global $db; - if (!is_numeric($user) || $force_str) + if (!is_numeric($mx_user) || $force_str) { - $user = self::phpbb_clean_username($user); + $mx_user = $this->phpbb_clean_username($mx_user); } else { - $user = intval($user); + $mx_user = intval($mx_user); } $sql = "SELECT * - FROM " . USERS_TABLE . " + FROM " . USERS_TABLE . " WHERE "; - $sql .= ( ( is_integer($user) ) ? "user_id = $user" : "username = '" . str_replace("\'", "''", $user) . "'" ) . " AND user_id <> " . ANONYMOUS; - if ( !($result = $db->sql_query($sql)) ) + $sql .= ((is_integer($mx_user)) ? "user_id = $mx_user" : "username = '" . str_replace("\'", "''", $mx_user) . "'") . " AND user_id <> " . ANONYMOUS; + if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql); } - return ( $row = $db->sql_fetchrow($result) ) ? $row : false; + return ($row = $db->sql_fetchrow($result)) ? $row : false; + } + + /** + * obtain_phpbb_config + * + * @access public + * @param boolean $use_cache + * @return unknown + */ + function obtain_phpbb_config($use_cache = true) + { + global $db, $mx_cache, $phpEx; + + if (($config = $mx_cache->get('phpbb_config')) && ($use_cache) ) + { + return $config; + } + else + { + if (!defined('CONFIG_TABLE')) + { + global $table_prefix, $phpbb_root_path; + + require $phpbb_root_path. "includes/constants.$phpEx"; + } + + $sql = "SELECT * + FROM " . CONFIG_TABLE; + + if ( !( $result = $db->sql_query( $sql ) ) ) + { + if (!function_exists('message_die')) + { + die("Couldnt query config information, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + $this->message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); + } + } + + while ( $row = $db->sql_fetchrow($result) ) + { + $config[$row['config_name']] = $row['config_value']; + } + $db->sql_freeresult($result); + + if ($use_cache) + { + $mx_cache->put('phpbb_config', $config); + } + return $config; + } + } + + /** + * Enter description here... + * + * @return unknown + */ + function generate_group_select_sql() + { + $sql = "SELECT group_id, group_name + FROM " . GROUPS_TABLE . " + WHERE group_single_user <> " . TRUE . " + ORDER BY group_name ASC"; + return $sql; + } + + /** + * Enter description here... + * + * @return unknown + */ + function generate_session_online_sql($guest = false) + { + if ($guest) + { + $sql = "SELECT * + FROM " . SESSIONS_TABLE . " + WHERE session_logged_in = 0 + AND session_time >= " . ( time() - 300 ) . " + ORDER BY session_time DESC"; + } + else + { + $sql = "SELECT u.*, s.* + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE s.session_logged_in = " . TRUE . " + AND u.user_id = s.session_user_id + AND u.user_id <> " . ANONYMOUS . " + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY u.user_session_time DESC"; + } + return $sql; + } + + /** + * Enter description here... + * + * @return unknown + */ + function get_phpbb_version() + { + global $board_config; + + return '2' . $board_config['version']; } - public static function make_jumpbox($action, $match_forum_id = 0) + /** + * {@inheritdoc} + */ + function mx_chmod($files, $perms = null, $recursive = false, $force_chmod_link = false) { - global $template, $userdata, $lang, $db, $nav_links, $phpEx, $SID; + if (is_null($perms)) + { + // Default to read permission for compatibility reasons + $perms = self::CHMOD_READ; + } + + // Check if we got a permission flag + if ($perms > self::CHMOD_ALL) + { + $file_perm = $perms; - // $is_auth = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata); + // Extract permissions + //$owner = ($file_perm >> 6) & 7; // This will be ignored + $group = ($file_perm >> 3) & 7; + $other = ($file_perm >> 0) & 7; + + // Does any permissions provided? if so we add execute bit for directories + $group = ($group !== 0) ? ($group | self::CHMOD_EXECUTE) : $group; + $other = ($other !== 0) ? ($other | self::CHMOD_EXECUTE) : $other; + + // Compute directory permissions + $dir_perm = (self::CHMOD_ALL << 6) + ($group << 3) + ($other << 3); + } + else + { + // Add execute bit to owner if execute bit is among perms + $owner_perm = (self::CHMOD_READ | self::CHMOD_WRITE) | ($perms & self::CHMOD_EXECUTE); + $file_perm = ($owner_perm << 6) + ($perms << 3) + ($perms << 0); + + // Compute directory permissions + $perm = ($perms !== 0) ? ($perms | self::CHMOD_EXECUTE) : $perms; + $dir_perm = (($owner_perm | self::CHMOD_EXECUTE) << 6) + ($perm << 3) + ($perm << 0); + } + + // Symfony's filesystem component does not support extra execution flags on directories + // so we need to implement it again + foreach ($this->to_iterator($files) as $file) + { + if ($recursive && is_dir($file) && !is_link($file)) + { + $this->mx_chmod(new \FilesystemIterator($file), $perms, true); + } + + // Don't chmod links as mostly those require 0777 and that cannot be changed + if (is_dir($file) || (is_link($file) && $force_chmod_link)) + { + if (true !== @chmod($file, $dir_perm)) + { + throw new filesystem_exception('CANNOT_CHANGE_FILE_PERMISSIONS', $file, array()); + } + } + else if (is_file($file)) + { + if (true !== @chmod($file, $file_perm)) + { + throw new filesystem_exception('CANNOT_CHANGE_FILE_PERMISSIONS', $file, array()); + } + } + } + } + /** + * {@inheritdoc} + */ + function mx_chown($files, $mx_user, $recursive = false) + { + try + { + @chown($files, $mx_user, $recursive); + } + catch (IOException $e) + { + // Try to recover filename + // By the time this is written that is at the end of the message + $error = trim($e->getMessage()); + $file = substr($error, strrpos($error, ' ')); + + throw new filesystem_exception('CANNOT_CHANGE_FILE_GROUP', $file, array(), $e); + } + } + + /** + * {@inheritdoc} + */ + function mx_chgrp($files, $group, $recursive = false) + { + try + { + @chgrp($files, $group, $recursive); + } + catch (IOException $e) + { + // Try to recover filename + // By the time this is written that is at the end of the message + $error = trim($e->getMessage()); + $file = substr($error, strrpos($error, ' ')); + + throw new filesystem_exception('CANNOT_CHANGE_FILE_GROUP', $file, array(), $e); + } + } + + /** + * Global function for chmodding directories and files for internal use + * + * This function determines owner and group whom the file belongs to and user and group of PHP and then set safest possible file permissions. + * The function determines owner and group from common.php file and sets the same to the provided file. + * The function uses bit fields to build the permissions. + * The function sets the appropiate execute bit on directories. + * + * Supported constants representing bit fields are: + * + * CHMOD_ALL - all permissions (7) + * CHMOD_READ - read permission (4) + * CHMOD_WRITE - write permission (2) + * CHMOD_EXECUTE - execute permission (1) + * + * NOTE: The function uses POSIX extension and fileowner()/filegroup() functions. If any of them is disabled, this function tries to build proper permissions, by calling is_readable() and is_writable() functions. + * + * @param string $filename The file/directory to be chmodded + * @param int $perms Permissions to set + * + * @return bool true on success, otherwise false + * + * @deprecated 3.2.0-dev use \phpbb\filesystem\filesystem::phpbb_chmod() instead + */ + + function phpbb_chmod($files, $perms = null, $recursive = false, $force_chmod_link = false) + { + static $_chmod_info; + + if (is_null($perms)) + { + // Default to read permission for compatibility reasons + $perms = self::CHMOD_READ; + } + + if (empty($_chmod_info)) + { + if (!function_exists('fileowner') || !function_exists('filegroup')) + { + $_chmod_info['process'] = false; + } + else + { + $common_php_owner = @fileowner(__FILE__); + $common_php_group = @filegroup(__FILE__); + + // And the owner and the groups PHP is running under. + $php_uid = (function_exists('posic_getuid')) ? @posix_getuid() : false; + $php_gids = (function_exists('posix_getgroups')) ? @posix_getgroups() : false; + + // If we are unable to get owner/group, then do not try to set them by guessing + if (!$php_uid || empty($php_gids) || !$common_php_owner || !$common_php_group) + { + $_chmod_info['process'] = false; + } + else + { + $_chmod_info = array( + 'process' => true, + 'common_owner' => $common_php_owner, + 'common_group' => $common_php_group, + 'php_uid' => $php_uid, + 'php_gids' => $php_gids, + ); + } + } + } + + if ($_chmod_info['process']) + { + try + { + foreach ($this->to_iterator($files) as $file) + { + $file_uid = @fileowner($file); + $file_gid = @filegroup($file); + + // Change owner + if ($file_uid !== $_chmod_info['common_owner']) + { + $this->mx_chown($file, $_chmod_info['common_owner'], $recursive); + } + + // Change group + if ($file_gid !== $_chmod_info['common_group']) + { + $this->mx_chgrp($file, $_chmod_info['common_group'], $recursive); + } + + clearstatcache(); + $file_uid = @fileowner($file); + $file_gid = @filegroup($file); + } + } + + catch (filesystem_exception $e) + { + $_chmod_info['process'] = false; + } + } + + // Still able to process? + if ($_chmod_info['process']) + { + if ($file_uid === $_chmod_info['php_uid']) + { + $php = 'owner'; + } + else if (in_array($file_gid, $_chmod_info['php_gids'])) + { + $php = 'group'; + } + else + { + // Since we are setting the everyone bit anyway, no need to do expensive operations + $_chmod_info['process'] = false; + } + } + + // We are not able to determine or change something + if (!$_chmod_info['process']) + { + $php = 'other'; + } + + switch ($php) + { + case 'owner': + try + { + $this->mx_chmod($files, $perms, $recursive, $force_chmod_link); + clearstatcache(); + if ($this->is_readable($files) && $this->is_writable($files)) + { + break; + } + } + catch (filesystem_exception $e) + { + // Do nothing + } + case 'group': + try + { + mx_chmod($files, $perms, $recursive, $force_chmod_link); + clearstatcache(); + if ((!($perms & self::CHMOD_READ) || $this->is_readable($files, $recursive)) && (!($perms & self::CHMOD_WRITE) || $this->is_writable($files, $recursive))) + { + break; + } + } + catch (filesystem_exception $e) + { + // Do nothing + } + case 'other': + default: + $this->mx_chmod($files, $perms, $recursive, $force_chmod_link); + break; + } + } + + /** + * Enter description here... + * + * @return unknown + */ + function confirm_backend() + { + return 'phpbb2'; + } + + // Server functions (building urls, redirecting...) + + /** + * Append session id to url. + * This function supports hooks. + * + * @param string $url The url the session id needs to be appended to (can have params) + * @param mixed $params String or array of additional url parameters + * @param bool $is_amp Is url using & (true) or & (false) + * @param string $session_id Possibility to use a custom session id instead of the global one + * @param bool $is_route Is url generated by a route. + * + * @return string The corrected url. + * + * Examples: + * + * append_sid("{$phpbb_root_path}viewtopic.$phpEx?t=1&f=2"); + * append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=1&f=2'); + * append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=1&f=2', false); + * append_sid("{$phpbb_root_path}viewtopic.$phpEx", array('t' => 1, 'f' => 2)); + * + * + */ + function append_sid($url, $params = false, $is_amp = true, $session_id = false, $is_route = false) + { + global $SID, $mx_user, $_EXTRA_URL; + + // + // Obtain number of new private messages + // if user is logged in + if(isset($mx_user) || is_object($mx_user)) + { + $SID = $mx_user->session_id; + } + + if ($params === '' || (is_array($params) && empty($params))) + { + // Do not append the ? if the param-list is empty anyway. + $params = false; + } + + // Update the root path with the correct relative web path + if ($is_route === true) + { + $url = $this->generate_board_url(); + } + + $append_sid_overwrite = false; + + if ($append_sid_overwrite) + { + return $append_sid_overwrite; + } + + $params_is_array = is_array($params); //array ( [f] => 1 [t] => 3 [start] => 0 [quickmod] => 1 [redirect] => '') + + // Get anchor + $anchor = ''; + if (strpos($url, '#') !== false) + { + list($url, $anchor) = explode('#', $url, 2); + $anchor = '#' . $anchor; + } + else if (!$params_is_array && strpos($params, '#') !== false) + { + list($params, $anchor) = explode('#', $params, 2); + $anchor = '#' . $anchor; + } + + // Handle really simple cases quickly + if ($SID == '' && $session_id === false && empty($_EXTRA_URL) && !$params_is_array && !$anchor) + { + if ($params === false) + { + return $url; + } + + $url_delim = (strpos($url, '?') === false) ? '?' : (($is_amp) ? '&' : '&'); + return $url . ($params !== false ? $url_delim. $params : ''); + } + + // Assign sid if session id is not specified + if ($session_id === false) + { + $session_id = $SID; + } + + $amp_delim = ($is_amp) ? '&' : '&'; + $url_delim = (strpos($url, '?') === false) ? '?' : $amp_delim; + + // Appending custom url parameter? + $append_url = (!empty($_EXTRA_URL)) ? implode($amp_delim, $_EXTRA_URL) : ''; + + // Use the short variant if possible ;) + if ($params === false) + { + // Append session id + if (!$session_id) + { + return $url . (($append_url) ? $url_delim . $append_url : '') . $anchor; + } + else + { + return $url . (($append_url) ? $url_delim . $append_url . $amp_delim : $url_delim) . 'sid=' . $session_id . $anchor; + } + } + + // Build string if parameters are specified as array + if (is_array($params)) + { + $output = array(); + + foreach ($params as $key => $item) + { + if ($item === NULL) + { + continue; + } + + if ($key == '#') + { + $anchor = '#' . $item; + continue; + } + + $output[] = $key . '=' . $item; + } + + $params = implode($amp_delim, $output); + } + + // Append session id and parameters (even if they are empty) + // If parameters are empty, the developer can still append his/her parameters without caring about the delimiter + $url = $url . (($append_url) ? $url_delim . $append_url . $amp_delim : $url_delim) . $params . ((!$session_id) ? '' : $amp_delim . 'sid=' . $session_id) . $anchor; + + if (!empty($SID) && !preg_match('#sid=#', $url)) + { + $url .= $SID; + } + } + + /** + * Returns url from the session/current page with an re-appended SID with optionally stripping vars from the url + */ + function build_url($strip_vars = false) + { + global $mx_user, $phpEx, $phpbb_root_path; + + // Append SID + $redirect = $this->append_sid('index.'.$phpEx, false, false); + + // Add delimiter if not there... + if (strpos($redirect, '?') === false) + { + $redirect .= '?'; + } + + // Strip vars... + if ($strip_vars !== false && strpos($redirect, '?') !== false) + { + if (!is_array($strip_vars)) + { + $strip_vars = array($strip_vars); + } + + $query = $_query = array(); + + $args = substr($redirect, strpos($redirect, '?') + 1); + $args = ($args) ? explode('&', $args) : array(); + $redirect = substr($redirect, 0, strpos($redirect, '?')); + + foreach ($args as $argument) + { + $arguments = explode('=', $argument); + $key = $arguments[0]; + unset($arguments[0]); + + if ($key === '') + { + continue; + } + + $query[$key] = implode('=', $arguments); + } + + // Strip the vars off + foreach ($strip_vars as $strip) + { + if (isset($query[$strip])) + { + unset($query[$strip]); + } + } + + // Glue the remaining parts together... already urlencoded + foreach ($query as $key => $value) + { + $_query[] = $key . '=' . $value; + } + $query = implode('&', $_query); + + $redirect .= ($query) ? '?' . $query : ''; + } + + // We need to be cautious here. + // On some situations, the redirect path is an absolute URL, sometimes a relative path + // For a relative path, let's prefix it with $phpbb_root_path to point to the correct location, + // else we use the URL directly. + $url_parts = @parse_url($redirect); + + // URL + if ($url_parts !== false && !empty($url_parts['scheme']) && !empty($url_parts['host'])) + { + return str_replace('&', '&', $redirect); + } + + return $phpbb_root_path . str_replace('&', '&', $redirect); + } + + /** + * Generate board url (example: http://www.example.com/phpBB) + * + * @param bool $without_script_path if set to true the script path gets not appended (example: http://www.example.com) + * + * @return string the generated board url + */ + function generate_board_url($without_script_path = false) + { + global $board_config, $userdata, $mx_user; + + $server_name = !empty($board_config['server_name']) ? preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['server_name'])) : 'localhost'; + $server_protocol = ($board_config['cookie_secure'] ) ? 'https://' : 'http://'; + $server_port = (($board_config['server_port']) && ($board_config['server_port'] <> 80)) ? ':' . trim($board_config['server_port']) . '/' : ((!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT')); + $script_name_phpbb = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path'])) . '/'; + $server_url = $server_protocol . str_replace("//", "/", $server_name . $server_port . $server_name . '/'); //On some server the slash is not added and this trick will fix it + + // Forcing server vars is the only way to specify/override the protocol + if (!$server_name) + { + $server_protocol = ($board_config['server_protocol']) ? $board_config['server_protocol'] : (($board_config['cookie_secure']) ? 'https://' : 'http://'); + $server_name = $board_config['server_name']; + $server_port = (int) $board_config['server_port']; + $script_path = $board_config['script_path']; + + $url = $server_protocol . $server_name; + $cookie_secure = $board_config['cookie_secure']; + } + else + { + // Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection + $cookie_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0; + $url = (($cookie_secure) ? 'https://' : 'http://') . $server_name; + + $script_path = $url; + } + + if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80))) + { + // HTTP HOST can carry a port number (we fetch $mx_user->host, but for old versions this may be true) + if (strpos($server_name, ':') === false) + { + $url .= ':' . $server_port; + } + } + + if (!$without_script_path) + { + $url .= $script_path; + } + + // Strip / from the end + if (substr($url, -1, 1) == '/') + { + $url = substr($url, 0, -1); + } + + return $url; + } + + /* + * Creates a full server path + * for icy templates + */ + function create_server_url($without_script_path = false) + { + // usage: $server_url = create_server_url(); + global $board_config; + + $server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://'; + $server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name'])); + $server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : ''; + $script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path'])); + $script_name = ($script_name == '') ? '' : '/' . $script_name; + $server_url = $server_protocol . $server_name . $server_port . ($without_script_path ? '' : $script_name); + while(substr($server_url, -1, 1) == '/') + { + $server_url = substr($server_url, 0, -1); + } + $server_url = $server_url . '/'; + + return $server_url; + } + + /** + * Get username details for placing into templates. + * + * @param string $mode Can be profile (for getting an url to the profile), username (for obtaining the username), colour (for obtaining the user colour) or full (for obtaining a html string representing a coloured link to the users profile). + * @param int $mx_user_id The users id + * @param string $username The users name + * @param string $username_colour The users colour + * @param string $guest_username optional parameter to specify the guest username. It will be used in favor of the GUEST language variable then. + * @param string $custom_profile_url optional parameter to specify a profile url. The user id get appended to this url as &u={user_id} + * + * @return string A string consisting of what is wanted based on $mode. + */ + function get_username_string($mode, $mx_user_id, $username = false, $mx_user_colour = false, $guest_username = false, $custom_profile_url = false) + { + global $mx_user, $lang, $phpEx; + + $lang['Guest'] = !$guest_username ? $lang['Guest'] : $guest_username; + + $this_userdata = get_userdata($mx_user_id, false); + $topic_poster_style = 'style="font-weight : bold;"'; + + $username = ($username) ? $username : $this_userdata['username']; + + if ($this_userdata['user_level'] == ADMIN) + { + $mx_user_colour = ($mx_user_colour) ? $mx_user_colour : $mx_user->theme['fontcolor3']; + $mx_user_style = 'style="color:#' . $mx_user_colour . '; font-weight : bold;"'; + } + else if ($this_userdata['user_level'] == MOD) + { + $mx_user_colour = ($mx_user_colour) ? $mx_user_colour : $mx_user->theme['fontcolor2']; + $mx_user_style = 'style="color:#' . $mx_user_colour . '; font-weight : bold;"'; + } + else + { + $mx_user_colour = ($mx_user_colour) ? $mx_user_colour : $mx_user->theme['fontcolor1']; + $mx_user_style = 'style="color:#' . $mx_user_colour . '; font-weight : bold;"'; + } + // print_r(substr($mx_user_colour, 0, 3) . substr($mx_user_colour, 3, 2)); + // Only show the link if not anonymous + if ($mx_user_id != ANONYMOUS) + { + $profile_url = $this->append_sid(PHPBB_URL . "profile.$phpEx?mode=viewprofile&u=" . (int) $mx_user_id); + $full_url = '' . $username . ''; + } + else + { + $profile_url = $lang['Guest']; + $full_url = $lang['Guest']; + } + + switch ($mode) + { + case 'profile': + return $profile_url; + break; + + case 'username': + return $username; + break; + + case 'colour': + return $mx_user_colour; + break; + + case 'full': + default: + return $full_url; + break; + } + } + + /** + * Get user avatar + * + * @param array $mx_user_row Row from the users table + * @param string $alt Optional language string for alt tag within image, can be a language key or text + * @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP + * @param bool $lazy If true, will be lazy loaded (requires JS) + * + * @return string Avatar html + */ + function phpbb_get_user_avatar($mx_user_row, $alt = 'USER_AVATAR', $ignore_config = false, $lazy = false) + { + return phpbb_get_avatar($mx_user_row, $alt, $ignore_config, $lazy); + } + + /** + * Get group avatar + * + * @param array $group_row Row from the groups table + * @param string $alt Optional language string for alt tag within image, can be a language key or text + * @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP + * @param bool $lazy If true, will be lazy loaded (requires JS) + * + * @return string Avatar html + */ + function phpbb_get_group_avatar($mx_user_row, $alt = 'GROUP_AVATAR', $ignore_config = false, $lazy = false) + { + return phpbb_get_avatar($mx_user_row, $alt, $ignore_config, $lazy); + } + + /** + * Build gravatar URL for output on page + * + * @param array $row User data or group data that has been cleaned with + * \phpbb\avatar\manager::clean_row + * @return string Gravatar URL + */ + function get_gravatar_url($row) + { + $url = '//secure.gravatar.com/avatar/'; + + $url .= md5(strtolower(trim($row['avatar']))); + + if ($row['avatar_width'] || $row['avatar_height']) + { + $url .= '?s=' . max($row['avatar_width'], $row['avatar_height']); + } + + return $url; + } + + /** + * Get avatar + * + * @param array $row Row cleaned by \phpbb\avatar\manager::clean_row + * @param string $alt Optional language string for alt tag within image, can be a language key or text + * @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP + * @param bool $lazy If true, will be lazy loaded (requires JS) + * + * @return string Avatar html + */ + function phpbb_get_avatar($row, $alt, $ignore_config = false, $lazy = false) + { + global $mx_user, $board_config, $mx_cache, $phpbb_root_path, $phpEx; + + if (!$mx_user->optionget('viewavatars') && !$ignore_config) + { + return ''; + } + + $row = array( + 'avatar' => isset($row['avatar']) ? $row['avatar'] : $row['user_avatar'], + 'avatar_type' => isset($row['avatar_type']) ? $row['avatar_type'] : $row['user_avatar_type'], + 'avatar_width' => isset($row['avatar_width']) ? $row['avatar_width'] : (isset($row['user_avatar_width']) ? $row['user_avatar_width'] : '120'), + 'avatar_height' => isset($row['avatar_height']) ? $row['avatar_height'] : (isset($row['user_avatar_height']) ? $row['user_avatar_height'] : '120'), + ); + + $avatar_data = array( + 'src' => $row['avatar'], + 'width' => $row['avatar_width'], + 'height' => $row['avatar_height'], + ); + + + $driver = $row['avatar_type']; + $html = ''; + + if ($driver) + { + $html = ''; + + if (!empty($html)) + { + return $html; + } + + $root_path = $this->generate_board_url(); + + $avatar_data = array( + 'src' => $root_path . $board_config['avatar_gallery_path'] . '/' . $row['avatar'], + 'width' => $row['avatar_width'], + 'height' => $row['avatar_height'], + ); + } + else + { + $avatar_data['src'] = ''; + } + + if (!empty($avatar_data['src'])) + { + if ($lazy) + { + // Determine board url - we may need it later + $board_url = $this->generate_board_url() . '/'; + // This path is sent with the base template paths in the assign_vars() + // call below. We need to correct it in case we are accessing from a + // controller because the web paths will be incorrect otherwise. + + $web_path = $board_url; + + if (is_dir($phpbb_root_path . $mx_user->template_path . $mx_user->template_name . '/theme/images/')) + { + $theme_images = "{$web_path}{$mx_user->template_path}" . rawurlencode($mx_user->template_name) . '/theme/images'; + } + elseif (is_dir($phpbb_root_path . $mx_user->template_path . $mx_user->template_name . '/images/')) + { + $theme_images = "{$web_path}{$mx_user->template_path}" . rawurlencode($mx_user->template_name . '/images'); + } + $src = 'src="' . $theme_images . '/no_avatar.gif" data-src="' . $avatar_data['src'] . '"'; + } + else + { + $src = 'src="' . $avatar_data['src'] . '"'; + } + + $html = ''; + } + return $html; + } + + /** + * Get user rank title and image + * + * @param array $mx_user_data the current stored users data + * @param int $mx_user_posts the users number of posts + * + * @return array An associative array containing the rank title (title), the rank image as full img tag (img) and the rank image source (img_src) + * + * Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false + */ + function phpbb_get_user_rank($mx_user_data, $mx_user_posts, &$rank_title = null, &$rank_img = null, &$rank_img_src = null) + { + global $ranks, $config, $phpbb_root_path; + + $mx_user_rank_data = array( + 'title' => $rank_title ? $rank_title : null, + 'img' => $rank_img ? $rank_img : null, + 'img_src' => $rank_img_src ? $rank_img_src : null, + ); + + if (empty($ranks)) + { + global $mx_cache; + $ranks = $mx_cache->obtain_ranks(); + } + + if (!empty($mx_user_data)) + { + $mx_user_rank_data['title'] = (isset($ranks['special'][$mx_user_data['user_rank']]['rank_title'])) ? $ranks['special'][$mx_user_data['user_rank']]['rank_title'] : ''; + $mx_user_rank_data['img_src'] = (!empty($ranks['special'][$mx_user_data['user_rank']]['rank_image'])) ? $phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$mx_user_data['user_rank']]['rank_image'] : ''; + $mx_user_rank_data['img'] = (!empty($ranks['special'][$mx_user_data['user_rank']]['rank_image'])) ? '' . $ranks['special'][$mx_user_data['user_rank']]['rank_title'] . '' : ''; + + } + else if ($mx_user_posts !== false) + { + if (!empty($ranks['normal'])) + { + foreach ($ranks['normal'] as $rank) + { + if ($mx_user_posts >= $rank['rank_min']) + { + $mx_user_rank_data['title'] = $rank['rank_title']; + $mx_user_rank_data['img'] = (!empty($rank['rank_image'])) ? '' . $rank['rank_title'] . '' : ''; + $mx_user_rank_data['img_src'] = (!empty($rank['rank_image'])) ? $phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image'] : ''; + break; + } + } + } + } + + return $mx_user_rank_data; + } + + /** + * Generate sort selection fields + */ + function gen_sort_selects(&$limit_days, &$sort_by_text, &$sort_days, &$sort_key, &$sort_dir, &$s_limit_days, &$s_sort_key, &$s_sort_dir, &$u_sort_param, $def_st = false, $def_sk = false, $def_sd = false) + { + global $mx_user, $phpbb_dispatcher; + + $sort_dir_text = array('a' => $mx_user->lang('Ascending'), 'd' => $mx_user->lang('Descending')); + + $sorts = array( + 'st' => array( + 'key' => 'sort_days', + 'default' => $def_st, + 'options' => $limit_days, + 'output' => &$s_limit_days, + ), + + 'sk' => array( + 'key' => 'sort_key', + 'default' => $def_sk, + 'options' => $sort_by_text, + 'output' => &$s_sort_key, + ), + + 'sd' => array( + 'key' => 'sort_dir', + 'default' => $def_sd, + 'options' => $sort_dir_text, + 'output' => &$s_sort_dir, + ), + ); + $u_sort_param = ''; + + foreach ($sorts as $name => $sort_ary) + { + $key = $sort_ary['key']; + $selected = ${$sort_ary['key']}; + + // Check if the key is selectable. If not, we reset to the default or first key found. + // This ensures the values are always valid. We also set $sort_dir/sort_key/etc. to the + // correct value, else the protection is void. ;) + if (!isset($sort_ary['options'][$selected])) + { + if ($sort_ary['default'] !== false) + { + $selected = ${$key} = $sort_ary['default']; + } + else + { + @reset($sort_ary['options']); + $selected = ${$key} = key($sort_ary['options']); + } + } + + $sort_ary['output'] = ''; + + $u_sort_param .= ($selected !== $sort_ary['default']) ? ((strlen($u_sort_param)) ? '&' : '') . "{$name}={$selected}" : ''; + } + + return; + } + + /** + * Generate Jumpbox + */ + function make_jumpbox($action, $match_forum_id = 0) + { + $list = array(); + return $this->make_jumpbox_ref($action, $match_forum_id, $list); + } + + function make_jumpbox_ref($action, $match_forum_id, &$forums_list) + { + global $template, $mx_user, $lang, $db, $nav_links, $phpEx, $SID; $sql = "SELECT c.cat_id, c.cat_title, c.cat_order - FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f - WHERE f.cat_id = c.cat_id - GROUP BY c.cat_id, c.cat_title, c.cat_order - ORDER BY c.cat_order"; - if ( !($result = $db->sql_query($sql)) ) + FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f + WHERE f.cat_id = c.cat_id + GROUP BY c.cat_id, c.cat_title, c.cat_order + ORDER BY c.cat_order"; + if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, "Couldn't obtain category list.", "", __LINE__, __FILE__, $sql); } $category_rows = array(); - while ( $row = $db->sql_fetchrow($result) ) + while ($row = $db->sql_fetchrow($result)) { $category_rows[] = $row; } - if ( $total_categories = count($category_rows) ) + if ($total_categories = count($category_rows)) { - $sql = "SELECT * - FROM " . FORUMS_TABLE . " - ORDER BY cat_id, forum_order"; - if ( !($result = $db->sql_query($sql)) ) + $sql = "SELECT f.*, f.forum_id, f.forum_name, f.forum_parent, f.cat_id as forum_type, f.forum_id as left_id, f.forum_id as right_id + FROM " . FORUMS_TABLE . " f + ORDER BY f.cat_id, f.forum_order"; + if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql); } $boxstring = ''; } - // Let the jumpbox work again in sites having additional session id checks. - // if ( !empty($SID) ) + // Let the jumpbox work again in sites having additional session id checks. + // if (!empty($SID)) // { - $boxstring .= ''; + $boxstring .= ''; // } $template->set_filenames(array( @@ -302,50 +1869,352 @@ public static function make_jumpbox($action, $match_forum_id = 0) 'L_SELECT_FORUM' => $lang['Select_forum'], 'S_JUMPBOX_SELECT' => $boxstring, - 'S_JUMPBOX_ACTION' => mx_append_sid($action)) + 'S_DISPLAY_JUMPBOX' => $display_jumpbox, + 'S_JUMPBOX_ACTION' => $this->append_sid($action)) ); $template->assign_var_from_handle('JUMPBOX', 'jumpbox'); return; } + //if (!function_exists('htmlspecialchars_decode')) + //{ + /** + * A wrapper for htmlspecialchars_decode + * @ignore + */ + function htmlspecialchars_decode($string, $quote_style = ENT_COMPAT) + { + return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style))); + } + //} + + /** + * Generates a text with approx. the specified length which contains the specified words and their context + * + * @param string $text The full text from which context shall be extracted + * @param string $words An array of words which should be contained in the result, has to be a valid part of a PCRE pattern (escape with preg_quote!) + * @param int $length The desired length of the resulting text, however the result might be shorter or longer than this value + * + * @return string Context of the specified words separated by "..." + */ + function get_context($text, $words, $length = 400) + { + // first replace all whitespaces with single spaces + $text = preg_replace('/ +/', ' ', strtr($text, "\t\n\r\x0C ", ' ')); + + // we need to turn the entities back into their original form, to not cut the message in between them + $entities = array('<', '>', '[', ']', '.', ':', ':'); + $characters = array('<', '>', '[', ']', '.', ':', ':'); + $text = str_replace($entities, $characters, $text); + + $word_indizes = array(); + if (count($words)) + { + $match = ''; + // find the starting indizes of all words + foreach ($words as $word) + { + if ($word) + { + if (preg_match('#(?:[^\w]|^)(' . $word . ')(?:[^\w]|$)#i', $text, $match)) + { + if (empty($match[1])) + { + continue; + } + + $pos = utf8_strpos($text, $match[1]); + if ($pos !== false) + { + $word_indizes[] = $pos; + } + } + } + } + unset($match); + + if (count($word_indizes)) + { + $word_indizes = array_unique($word_indizes); + sort($word_indizes); + + $wordnum = count($word_indizes); + // number of characters on the right and left side of each word + $sequence_length = (int) ($length / (2 * $wordnum)) - 2; + $final_text = ''; + $word = $j = 0; + $final_text_index = -1; + + // cycle through every character in the original text + for ($i = $word_indizes[$word], $n = utf8_strlen($text); $i < $n; $i++) + { + // if the current position is the start of one of the words then append $sequence_length characters to the final text + if (isset($word_indizes[$word]) && ($i == $word_indizes[$word])) + { + if ($final_text_index < $i - $sequence_length - 1) + { + $final_text .= '... ' . preg_replace('#^([^ ]*)#', '', utf8_substr($text, $i - $sequence_length, $sequence_length)); + } + else + { + // if the final text is already nearer to the current word than $sequence_length we only append the text + // from its current index on and distribute the unused length to all other sequenes + $sequence_length += (int) (($final_text_index - $i + $sequence_length + 1) / (2 * $wordnum)); + $final_text .= utf8_substr($text, $final_text_index + 1, $i - $final_text_index - 1); + } + $final_text_index = $i - 1; + + // add the following characters to the final text (see below) + $word++; + $j = 1; + } + + if ($j > 0) + { + // add the character to the final text and increment the sequence counter + $final_text .= utf8_substr($text, $i, 1); + $final_text_index++; + $j++; + + // if this is a whitespace then check whether we are done with this sequence + if (utf8_substr($text, $i, 1) == ' ') + { + // only check whether we have to exit the context generation completely if we haven't already reached the end anyway + if ($i + 4 < $n) + { + if (($j > $sequence_length && $word >= $wordnum) || utf8_strlen($final_text) > $length) + { + $final_text .= ' ...'; + break; + } + } + else + { + // make sure the text really reaches the end + $j -= 4; + } + + // stop context generation and wait for the next word + if ($j > $sequence_length) + { + $j = 0; + } + } + } + } + return str_replace($characters, $entities, $final_text); + } + } + + if (!count($words) || !count($word_indizes)) + { + return str_replace($characters, $entities, ((utf8_strlen($text) >= $length + 3) ? utf8_substr($text, 0, $length) . '...' : $text)); + } + } + + /** + * Cleans a search string by removing single wildcards from it and replacing multiple spaces with a single one. + * + * @param string $search_string The full search string which should be cleaned. + * + * @return string The cleaned search string without any wildcards and multiple spaces. + */ + function phpbb_clean_search_string($search_string) + { + // This regular expressions matches every single wildcard. + // That means one after a whitespace or the beginning of the string or one before a whitespace or the end of the string. + $search_string = preg_replace('#(?<=^|\s)\*+(?=\s|$)#', '', $search_string); + $search_string = trim($search_string); + $search_string = preg_replace(array('#\s+#u', '#\*+#u'), array(' ', '*'), $search_string); + return $search_string; + } + + /** + * Decode text whereby text is coming from the db and expected to be pre-parsed content + * We are placing this outside of the message parser because we are often in need of it... + * + * NOTE: special chars are kept encoded + * + * @param string &$message Original message, passed by reference + * @param string $bbcode_uid BBCode UID + * @return null + */ + function decode_message(&$message, $bbcode_uid = '') + { + global $mx_cache, $phpbb_dispatcher; + + if (preg_match('#^<[rt][ >]#', $message)) + { + $message = htmlspecialchars($mx_cache->get('text_formatter.utils')->unparse($message), ENT_COMPAT); + } + else + { + if ($bbcode_uid) + { + $match = array('
', "[/*:m:$bbcode_uid]", ":u:$bbcode_uid", ":o:$bbcode_uid", ":$bbcode_uid"); + $replace = array("\n", '', '', '', ''); + } + else + { + $match = array('
'); + $replace = array("\n"); + } + + $message = str_replace($match, $replace, $message); + + $match = get_preg_expression('bbcode_htm'); + $replace = array('\1', '\1', '\2', '\2', '\1', '', ''); + + $message = preg_replace($match, $replace, $message); + } + } + + /** + * Little helper for the build_hidden_fields function + */ + function _build_hidden_fields($key, $value, $specialchar, $stripslashes) + { + $hidden_fields = ''; + + if (!is_array($value)) + { + $value = ($stripslashes) ? stripslashes($value) : $value; + $value = ($specialchar) ? htmlspecialchars($value, ENT_COMPAT, 'UTF-8') : $value; + + $hidden_fields .= '' . "\n"; + } + else + { + foreach ($value as $_key => $_value) + { + $_key = ($stripslashes) ? stripslashes($_key) : $_key; + $_key = ($specialchar) ? htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') : $_key; + + $hidden_fields .= _build_hidden_fields($key . '[' . $_key . ']', $_value, $specialchar, $stripslashes); + } + } + + return $hidden_fields; + } + + /** + * Build simple hidden fields from array + * + * @param array $field_ary an array of values to build the hidden field from + * @param bool $specialchar if true, keys and values get specialchared + * @param bool $stripslashes if true, keys and values get stripslashed + * + * @return string the hidden fields + */ + function build_hidden_fields($field_ary, $specialchar = false, $stripslashes = false) + { + $s_hidden_fields = ''; + + foreach ($field_ary as $name => $vars) + { + $name = ($stripslashes) ? stripslashes($name) : $name; + $name = ($specialchar) ? htmlspecialchars($name, ENT_COMPAT, 'UTF-8') : $name; + + $s_hidden_fields .= _build_hidden_fields($name, $vars, $specialchar, $stripslashes); + } + + return $s_hidden_fields; + } + + /** + * Parse cfg file + */ + function parse_cfg_file($filename, $lines = false) + { + $parsed_items = array(); + + if ($lines === false) + { + $lines = file($filename); + } + + foreach ($lines as $line) + { + $line = trim($line); + + if (!$line || $line[0] == '#' || ($delim_pos = strpos($line, '=')) === false) + { + continue; + } + + // Determine first occurrence, since in values the equal sign is allowed + $key = htmlspecialchars(strtolower(trim(substr($line, 0, $delim_pos)))); + $value = trim(substr($line, $delim_pos + 1)); + + if (in_array($value, array('off', 'false', '0'))) + { + $value = false; + } + else if (in_array($value, array('on', 'true', '1'))) + { + $value = true; + } + else if (!trim($value)) + { + $value = ''; + } + else if (($value[0] == "'" && $value[strlen($value) - 1] == "'") || ($value[0] == '"' && $value[strlen($value) - 1] == '"')) + { + $value = htmlspecialchars(substr($value, 1, strlen($value) - 2)); + } + else + { + $value = htmlspecialchars($value); + } + + $parsed_items[$key] = $value; + } + + if (isset($parsed_items['parent']) && isset($parsed_items['name']) && $parsed_items['parent'] == $parsed_items['name']) + { + unset($parsed_items['parent']); + } + + return $parsed_items; + } + // // Initialise user settings on page load - /* function init_userprefs($userdata) { - global $board_config, $theme, $images; + global $mx_user, $mx_cache, $board_config, $theme, $images; global $template, $lang, $phpEx, $phpbb_root_path, $db; global $nav_links; - if ( $userdata['user_id'] != ANONYMOUS ) + if ($userdata['user_id'] != ANONYMOUS) { - if ( !empty($userdata['user_lang'])) + if (!empty($userdata['user_lang'])) { - $default_lang = self::phpbb_ltrim(basename(self::phpbb_rtrim($userdata['user_lang'])), "'"); + $default_lang = phpbb_ltrim(basename(phpbb_rtrim($userdata['user_lang'])), "'"); } - if ( !empty($userdata['user_dateformat']) ) + if (!empty($userdata['user_dateformat'])) { $board_config['default_dateformat'] = $userdata['user_dateformat']; } - if ( isset($userdata['user_timezone']) ) + if (isset($userdata['user_timezone'])) { $board_config['board_timezone'] = $userdata['user_timezone']; } } else { - $default_lang = self::phpbb_ltrim(basename(self::phpbb_rtrim($board_config['default_lang'])), "'"); + $default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['default_lang'])), "'"); } - if ( !file_exists(@self::phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx)) ) + if (!file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx))) { - if ( $userdata['user_id'] != ANONYMOUS ) + if ($userdata['user_id'] != ANONYMOUS) { // For logged in users, try the board default language next - $default_lang = self::phpbb_ltrim(basename(self::phpbb_rtrim($board_config['default_lang'])), "'"); + $default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['default_lang'])), "'"); } else { @@ -355,36 +2224,36 @@ function init_userprefs($userdata) $default_lang = 'english'; } - if ( !file_exists(@self::phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx)) ) + if (!file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx))) { - mx_message_die(CRITICAL_ERROR, 'Could not locate valid language pack'); + $this->message_die(CRITICAL_ERROR, 'Could not locate valid language pack in init_userprefs()'); } } // If we've had to change the value in any way then let's write it back to the database // before we go any further since it means there is something wrong with it - if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_lang'] !== $default_lang ) + if ($userdata['user_id'] != ANONYMOUS && $userdata['user_lang'] !== $default_lang) { $sql = 'UPDATE ' . USERS_TABLE . " SET user_lang = '" . $default_lang . "' WHERE user_lang = '" . $userdata['user_lang'] . "'"; - if ( !($result = $db->sql_query($sql)) ) + if (!($result = $db->sql_query($sql))) { - mx_message_die(CRITICAL_ERROR, 'Could not update user language info'); + $this->message_die(CRITICAL_ERROR, 'Could not update user language info'); } $userdata['user_lang'] = $default_lang; } - elseif ( $userdata['user_id'] === ANONYMOUS && $board_config['default_lang'] !== $default_lang ) + elseif ($userdata['user_id'] == ANONYMOUS && $board_config['default_lang'] !== $default_lang) { $sql = 'UPDATE ' . CONFIG_TABLE . " SET config_value = '" . $default_lang . "' WHERE config_name = 'default_lang'"; - if ( !($result = $db->sql_query($sql)) ) + if (!($result = $db->sql_query($sql))) { - mx_message_die(CRITICAL_ERROR, 'Could not update user language info'); + $this->message_die(CRITICAL_ERROR, 'Could not update user language info'); } } @@ -392,9 +2261,9 @@ function init_userprefs($userdata) include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx); - if ( defined('IN_ADMIN') ) + if (defined('IN_ADMIN')) { - if( !file_exists(@self::phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.'.$phpEx)) ) + if(!file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.'.$phpEx))) { $board_config['default_lang'] = 'english'; } @@ -405,18 +2274,18 @@ function init_userprefs($userdata) // // Set up style // - if ( !$board_config['override_user_style'] ) + if (!$board_config['override_user_style']) { - if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 ) + if ($userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0) { - if ( $theme = setup_style($userdata['user_style']) ) + if ($theme = $this->setup_style($userdata['user_style'])) { return; } } } - $theme = setup_style($board_config['default_style']); + $theme = $this->setup_style($board_config['default_style']); // // Mozilla navigation bar @@ -425,195 +2294,562 @@ function init_userprefs($userdata) // and be able to change the variables within code. // $nav_links['top'] = array ( - 'url' => mx_append_sid($phpbb_root_path . 'index.' . $phpEx), + 'url' => $this->append_sid($phpbb_root_path . 'index.' . $phpEx), 'title' => sprintf($lang['Forum_Index'], $board_config['sitename']) ); $nav_links['search'] = array ( - 'url' => mx_append_sid($phpbb_root_path . 'search.' . $phpEx), + 'url' => $this->append_sid($phpbb_root_path . 'search.' . $phpEx), 'title' => $lang['Search'] ); $nav_links['help'] = array ( - 'url' => mx_append_sid($phpbb_root_path . 'faq.' . $phpEx), + 'url' => $this->append_sid($phpbb_root_path . 'faq.' . $phpEx), 'title' => $lang['FAQ'] ); $nav_links['author'] = array ( - 'url' => mx_append_sid($phpbb_root_path . 'memberlist.' . $phpEx), + 'url' => $this->append_sid($phpbb_root_path . 'memberlist.' . $phpEx), 'title' => $lang['Memberlist'] ); return; } - */ - /* function setup_style($style) { - global $db, $board_config, $template, $images, $phpbb_root_path; + global $mx_user, $db, $board_config, $template, $images, $phpbb_root_path; + + // + // Set up style + // + if ($mx_user->data['user_id'] == ANONYMOUS && empty($mx_user->data['user_style'])) + { + $mx_user->data['user_style'] = $board_config['default_style']; + } + + $style_request = $this->request_var('style', 0); + if ($style_request && (!$board_config['override_user_style'] || !defined('IN_ADMIN'))) + { + global $SID, $_EXTRA_URL; + $style = $style_request; + $SID .= '&style=' . $style; + $_EXTRA_URL = array('style=' . $style); + } + else + { + // Set up style + $style = ($style) ? $style : ((!$board_config['override_user_style']) ? $mx_user->data['user_style'] : $board_config['default_style']); + } + $sql = 'SELECT * FROM ' . THEMES_TABLE . ' WHERE themes_id = ' . (int) $style; - if ( !($result = $db->sql_query($sql)) ) + if (!($result = $db->sql_query($sql))) { - mx_message_die(CRITICAL_ERROR, 'Could not query database for theme info'); - } - - if ( !($row = $db->sql_fetchrow($result)) ) + message_die(CRITICAL_ERROR, 'Could not query database for theme info'); + } + $row = $db->sql_fetchrow($result); + + $template_path = 'templates/'; + + if (empty($row['template_name'])) { + /* Check for all installed styles first */ + $sql = 'SELECT * FROM ' . THEMES_TABLE; + $result = $db->sql_query($sql); + while ($rows = $db->sql_fetchrow($result)) + { + $styles_installed[] = $rows['template_name']; + } + + /* If query fails need to define this for foreach */ + if (!is_array($styles_installed)) + { + $rows['template_name'] = 'subSilver'; + $styles_installed[] = $rows['template_name']; + } + $db->sql_freeresult($result); + + // We are trying to setup a style which does not exist in the database // Try to fallback to the board default (if the user had a custom style) // and then any users using this style to the default if it succeeds - if ( $style != $board_config['default_style']) - { + /** **/ + if ($style != $board_config['default_style']) + { $sql = 'SELECT * FROM ' . THEMES_TABLE . ' WHERE themes_id = ' . (int) $board_config['default_style']; - if ( !($result = $db->sql_query($sql)) ) - { - mx_message_die(CRITICAL_ERROR, 'Could not query database for theme info'); - } - - if ( $row = $db->sql_fetchrow($result) ) + $result = $db->sql_query($sql); + + if ($row = $db->sql_fetchrow($result)) { $db->sql_freeresult($result); $sql = 'UPDATE ' . USERS_TABLE . ' SET user_style = ' . (int) $board_config['default_style'] . " WHERE user_style = $style"; - if ( !($result = $db->sql_query($sql)) ) + if (!($result = $db->sql_query($sql))) { - mx_message_die(CRITICAL_ERROR, 'Could not update user theme info'); + $this->message_die(CRITICAL_ERROR, 'Could not update user theme info'); } } else { - mx_message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]"); + $this->message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]"); } } else + { + /** + * Now check for the correct existance of all of the $mx_user->style['style_path'] images into + * each of the effectively installed styles. see $mx_user->style['style_id'], $mx_user->style['style_parent_id'] + */ + foreach ($styles_installed as $style_installed) + { + $style_installed = !empty($style_installed) ? $style_installed : $rows['template_name']; + $theme_info_path = $phpbb_root_path . 'templates/' . $style_installed . '/theme_info.cfg'; + + if ((@file_exists($theme_info_path))) + { + $template_name = $row['template_name'] = $style_installed; + + /** + * Reset custom module default style, once used. + */ + $sql = "SELECT mxt.*, bbt.* + FROM " . THEMES_TABLE . " mxt, " . THEMES_TABLE . " bbt + WHERE mxt.style_name = bbt.style_name + AND mxt.style_name = '$style_installed'"; + if ($row = $db->sql_fetchrow($result = @$db->sql_query($sql))) + { + $db->sql_freeresult($result); + + $config_name = 'default_style'; + /** */ + $board_config[$config_name] = $row['themes_id']; + + $sql = 'UPDATE ' . CONFIG_TABLE . " + SET config_value = '" . $db->sql_escape($board_config[$config_name]) . "' + WHERE config_name = '" . $db->sql_escape($config_name) . "'"; + $db->sql_query($sql); + + if (!$db->sql_affectedrows() && !isset($board_config[$config_name])) + { + $sql = 'INSERT INTO ' . CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'config_name' => $config_name, + 'config_value' => $board_config[$config_name])); + $db->sql_query($sql); + } + + if (!($result = $db->sql_query($sql))) + { + message_die(CRITICAL_ERROR, 'Could not update default_style theme info'); + } + /** */ + } + } + $template_name = $row['template_name']; + } + print_r(array( CRITICAL_ERROR, "Could not get theme data for themes_id [$style]", '', __LINE__, __FILE__, $sql )); + } + /** **/ + } + else + { + $template_name = $row['template_name']; + } + + $template = new phpbb_Template($phpbb_root_path . $template_path . $template_name); + @define('IP_ROOT_PATH', $phpbb_root_path); //for ICY-PHOENIX Styles + + if (is_object($template)) + { + if(is_dir($phpbb_root_path . $mx_user->current_template_path . '/theme/images/')) + { + $current_template_images = $current_template_images = $mx_user->current_template_path . "/theme/images"; + } + elseif(is_dir($phpbb_root_path . $mx_user->current_template_path . '/images/')) + { + $current_template_images = $current_template_images = $mx_user->current_template_path . "/images"; + } + + $current_template_path = $template_path . $template_name; + //include($phpbb_root_path . $template_path . $template_name . '/' . $template_name . '.cfg'); + if(@file_exists(@phpbb_realpath($phpbb_root_path . $template_path . $template_name . '/' . $template_name . '.cfg')) ) + { + @include($phpbb_root_path . $template_path . $template_name . '/' . $template_name . '.cfg'); + } + elseif( @file_exists(@phpbb_realpath($phpbb_root_path. "templates/" . $template_name . "/style.cfg")) ) + { + // + // Do not alter this line! + // + @define(TEMPLATE_CONFIG, TRUE); + + $current_template_images = $current_template_path . "/theme/images"; + // + // - First try phpBB2 then phpBB3 template lang images then old Olympus image sets + // + if ( file_exists($phpbb_root_path . $current_template_path . '/images/') ) + { + $current_template_images = $current_template_path . '/images'; + } + else if ( file_exists($phpbb_root_path . $current_template_path . '/theme/images/') ) + { + $current_template_images = $current_template_path . '/theme/images'; + } + if ( file_exists($phpbb_root_path . $current_template_path . '/imageset/') ) + { + $current_template_images = $current_template_path . '/imageset'; + } + + $images['icon_quote'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_post_quote.gif', '', '', '', 'filename'); + $images['icon_edit'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_post_edit.gif', '', '', '', 'filename'); + $images['icon_search'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_user_search.gif', '', '', '', 'filename'); + $images['icon_profile'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_user_profile.gif', '', '', '', 'filename'); + $images['icon_pm'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_contact_pm.gif', '', '', '', 'filename'); + $images['icon_email'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_contact_email.gif', '', '', '', 'filename'); + $images['icon_delpost'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_post_delete.gif', '', '', '', 'filename'); + $images['icon_ip'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_user_ip.gif', '', '', '', 'filename'); + $images['icon_www'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_contact_www.gif', '', '', '', 'filename'); + $images['icon_icq'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_contact_icq_add.gif', '', '', '', 'filename'); + $images['icon_aim'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_contact_aim.gif', '', '', '', 'filename'); + $images['icon_yim'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_contact_yim.gif', '', '', '', 'filename'); + $images['icon_msnm'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_contact_msnm.gif', '', '', '', 'filename'); + $images['icon_minipost'] = "$current_template_images/" . $mx_user->img('icon_post_target.gif', '', '', '', 'filename'); + $images['icon_gotopost'] = "$current_template_images/" . $mx_user->img('icon_gotopost.gif', '', '', '', 'filename'); + $images['icon_minipost_new'] = "$current_template_images/" . $mx_user->img('icon_post_target_unread.gif', '', '', '', 'filename'); + $images['icon_latest_reply'] = "$current_template_images/" . $mx_user->img('icon_latest_reply.gif', '', '', '', 'filename'); + $images['icon_newest_reply'] = "$current_template_images/" . $mx_user->img('icon_newest_reply.gif', '', '', '', 'filename'); + + $images['forum'] = "$current_template_images/" . $mx_user->img('forum_read.gif', '', '27', '', 'filename'); + $images['forum_new'] = "$current_template_images/" . $mx_user->img('forum_unread.gif', '', '', '', 'filename'); + $images['forum_locked'] = "$current_template_images/" . $mx_user->img('forum_read_locked.gif', '', '', '', 'filename'); + + // Begin Simple Subforums MOD + $images['forums'] = "$current_template_images/" . $mx_user->img('forum_read_subforum.gif', '', '', '', 'filename'); + $images['forums_new'] = "$current_template_images/" . $mx_user->img('forum_unread_subforum.gif', '', '', '', 'filename'); + // End Simple Subforums MOD + + $images['folder'] = "$current_template_images/" . $mx_user->img('topic_read.gif', '', '', '', 'filename'); + $images['folder_new'] = "$current_template_images/" . $mx_user->img('topic_unread.gif', '', '', '', 'filename'); + $images['folder_hot'] = "$current_template_images/" . $mx_user->img('topic_read_hot.gif', '', '', '', 'filename'); + $images['folder_hot_new'] = "$current_template_images/" . $mx_user->img('topic_unread_hot.gif', '', '', '', 'filename'); + $images['folder_locked'] = "$current_template_images/" . $mx_user->img('topic_read_locked.gif', '', '', '', 'filename'); + $images['folder_locked_new'] = "$current_template_images/" . $mx_user->img('topic_unread_locked.gif', '', '', '', 'filename'); + $images['folder_sticky'] = "$current_template_images/" . $mx_user->img('topic_read_mine.gif', '', '', '', 'filename'); + $images['folder_sticky_new'] = "$current_template_images/" . $mx_user->img('topic_unread_mine.gif', '', '', '', 'filename'); + $images['folder_announce'] = "$current_template_images/" . $mx_user->img('announce_read.gif', '', '', '', 'filename'); + $images['folder_announce_new'] = "$current_template_images/" . $mx_user->img('announce_unread.gif', '', '', '', 'filename'); + + $images['post_new'] = "$current_template_images/{LANG}/" . $mx_user->img('button_topic_new.gif', '', '', '', 'filename'); + $images['post_locked'] = "$current_template_images/{LANG}/" . $mx_user->img('button_topic_locked.gif', '', '', '', 'filename'); + $images['reply_new'] = "$current_template_images/{LANG}/" . $mx_user->img('button_topic_reply.gif', '', '', '', 'filename'); + $images['reply_locked'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_post_target_unread.gif', '', '', '', 'filename'); + + $images['pm_inbox'] = "$current_template_images/" . $mx_user->img('msg_inbox.gif', '', '', '', 'filename'); + $images['pm_outbox'] = "$current_template_images/" . $mx_user->img('msg_outbox.gif', '', '', '', 'filename'); + $images['pm_savebox'] = "$current_template_images/" . $mx_user->img('msg_savebox.gif', '', '', '', 'filename'); + $images['pm_sentbox'] = "$current_template_images/" . $mx_user->img('msg_sentbox.gif', '', '', '', 'filename'); + $images['pm_readmsg'] = "$current_template_images/" . $mx_user->img('topic_read.gif', '', '', '', 'filename'); + $images['pm_unreadmsg'] = "$current_template_images/" . $mx_user->img('topic_unread.gif', '', '', '', 'filename'); + $images['pm_replymsg'] = "$current_template_images/{LANG}/" . $mx_user->img('reply.gif', '', '', '', 'filename'); + $images['pm_postmsg'] = "$current_template_images/{LANG}/" . $mx_user->img('msg_newpost.gif', '', '', '', 'filename'); + $images['pm_quotemsg'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_quote.gif', '', '', '', 'filename'); + $images['pm_editmsg'] = "$current_template_images/{LANG}/" . $mx_user->img('icon_edit.gif', '', '', '', 'filename'); + $images['pm_new_msg'] = ""; + $images['pm_no_new_msg'] = ""; + + $images['Topic_watch'] = ""; + $images['topic_un_watch'] = ""; + $images['topic_mod_lock'] = "$current_template_images/" . $mx_user->img('topic_lock.gif', '', '', '', 'filename'); + $images['topic_mod_unlock'] = "$current_template_images/" . $mx_user->img('topic_unlock.gif', '', '', '', 'filename'); + $images['topic_mod_split'] = "$current_template_images/" . $mx_user->img('topic_split.gif', '', '', '', 'filename'); + $images['topic_mod_move'] = "$current_template_images/" . $mx_user->img('topic_move.gif', '', '', '', 'filename'); + $images['topic_mod_delete'] = "$current_template_images/" . $mx_user->img('topic_delete.gif', '', '', '', 'filename'); + + $images['voting_graphic'][0] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][1] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][2] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][3] = "$current_template_images/voting_bar.gif"; + $images['voting_graphic'][4] = "$current_template_images/voting_bar.gif"; + + // + // Vote graphic length defines the maximum length of a vote result + // graphic, ie. 100% = this length + // + $board_config['vote_graphic_length'] = 205; + $board_config['privmsg_graphic_length'] = 175; + } + else + { + @include($phpbb_root_path . $template_path . 'prosilver/prosilver.cfg'); + } + + if (!defined('TEMPLATE_CONFIG')) + { + message_die(CRITICAL_ERROR, "Could not open $template_name template config file", '', __LINE__, __FILE__, $sql); + } + + $img_lang = (file_exists(@phpbb_realpath($phpbb_root_path . $current_template_path . '/images/lang_' . $board_config['default_lang']))) ? $board_config['default_lang'] : 'english'; + + while(list($key, $value) = @each($images)) + { + if (!is_array($value)) + { + $images[$key] = str_replace('{LANG}', $mx_user->img_lang_dir, $value); + } + } + } + + return $row; + } + + // + // Pick a template/theme combo, + // + function select_style($default_style, $select_name = "style", $all = "") + { + global $db; + + $sql_where = (!$all) ? '' : ''; + $sql = 'SELECT t.themes_id, t.style_name + FROM ' . THEMES_TABLE . " t + $sql_where + ORDER BY style_name"; + if (!($result = $db->sql_query($sql))) + { + $this->message_die(CRITICAL_ERROR, 'Could not query user theme info'); + } + + $style_options = ''; + while ($row = $db->sql_fetchrow($result)) + { + $selected = ($row['themes_id'] == $default) ? ' selected="selected"' : ''; + $style_options .= ''; + } + $db->sql_freeresult($result); + + return $style_options; + } + + // + // Encode the IP from decimals into hexademicals + // + function encode_ip($dotquad_ip) + { + $ip_sep = explode('.', $dotquad_ip); + return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]); + } + + // + // Decode the IP from hexademicals to decimals + // + function decode_ip($int_ip) + { + $hexipbang = explode('.', chunk_split($int_ip, 2, '.')); + return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]); + } + + // + // Create date/time from format and timezone + // + function create_date($format, $gmepoch, $tz) + { + global $mx_user, $board_config, $lang; + + static $translate; + static $midnight; + static $date_cache; + + $format = (!$format) ? $mx_user->date_format : $format; + $now = time(); + $delta = $now - $gmepoch; + + if (!isset($date_cache[$format])) + { + // Is the user requesting a friendly date format (i.e. 'Today 12:42')? + $date_cache[$format] = array( + 'is_short' => strpos($format, '|'), + 'format_short' => substr($format, 0, strpos($format, '|')) . '||' . substr(strrchr($format, '|'), 1), + 'format_long' => str_replace('|', '', $format), + // Filter out values that are not strings (e.g. arrays) for strtr(). + 'lang' => array_filter($mx_user->lang['datetime'], 'is_string'), + ); + + // Short representation of month in format? Some languages use different terms for the long and short format of May + if ((strpos($format, '\M') === false && strpos($format, 'M') !== false) || (strpos($format, '\r') === false && strpos($format, 'r') !== false)) + { + $date_cache[$format]['lang']['May'] = $mx_user->lang['datetime']['May_short']; + } + } + + // Zone offset + $zone_offset = $mx_user->timezone + $mx_user->dst; + + // Show date <= 1 hour ago as 'xx min ago' but not greater than 60 seconds in the future + // A small tolerence is given for times in the future but in the same minute are displayed as '< than a minute ago' + if ($delta <= 3600 && $delta > -60 && ($delta >= -5 || (($now / 60) % 60) == (($gmepoch / 60) % 60)) && $date_cache[$format]['is_short'] !== false && !$forcedate && isset($this->lang['datetime']['AGO'])) + { + return $this->lang(array('datetime', 'AGO'), max(0, (int) floor($delta / 60))); + } + + if (!$midnight) + { + list($d, $m, $y) = explode(' ', gmdate('j n Y', time() + $zone_offset)); + $midnight = gmmktime(0, 0, 0, $m, $d, $y) - $zone_offset; + } + + if ($date_cache[$format]['is_short'] !== false && !$forcedate && !($gmepoch < $midnight - 86400 || $gmepoch > $midnight + 172800)) + { + $day = false; + + if ($gmepoch > $midnight + 86400) + { + $day = 'TOMORROW'; + } + else if ($gmepoch > $midnight) + { + $day = 'TODAY'; + } + else if ($gmepoch > $midnight - 86400) + { + $day = 'YESTERDAY'; + } + + if ($day !== false) + { + return str_replace('||', $mx_user->lang['datetime'][$day], strtr(@gmdate($date_cache[$format]['format_short'], $gmepoch + $zone_offset), $date_cache[$format]['lang'])); + } + } + + if (empty($translate) && $board_config['default_lang'] != 'english') + { + @reset($lang['datetime']); + while (list($match, $replace) = @each($lang['datetime'])) { - mx_message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]"); + $translate[$match] = $replace; } } - - $template_path = 'templates/' ; - $template_name = $row['template_name'] ; - - $template = new Template($phpbb_root_path . $template_path . $template_name); - - if ( $template ) + + if (empty($translate)) { - $current_template_path = $template_path . $template_name; - @include($phpbb_root_path . $template_path . $template_name . '/' . $template_name . '.cfg'); - - if ( !defined('TEMPLATE_CONFIG') ) + @reset($lang['datetime']); + while (list($match, $replace) = @each($lang['datetime'])) { - mx_message_die(CRITICAL_ERROR, "Could not open $template_name template config file", '', __LINE__, __FILE__); + $translate[$match] = $replace; } + } + return (!is_array($translate)) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $date_cache[$format]['lang']); + } - $img_lang = ( file_exists(@self::phpbb_realpath($phpbb_root_path . $current_template_path . '/images/lang_' . $board_config['default_lang'])) ) ? $board_config['default_lang'] : 'english'; + //Form validation - while( list($key, $value) = @each($images) ) - { - if ( !is_array($value) ) - { - $images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value); - } - } - } - return $row; - } + /** + * Add a secret hash for use in links/GET requests + * @param string $link_name The name of the link; has to match the name used in check_link_hash, otherwise no restrictions apply + * @return string the hash + unique_id() */ - - public static function encode_ip($dotquad_ip) + function generate_link_hash($link_name) { - $ip_sep = explode('.', $dotquad_ip); - return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]); + global $mx_user; + + if (!isset($mx_user->data["hash_$link_name"])) + { + $mx_user->data["hash_$link_name"] = substr(sha1($mx_user->data['user_form_salt'] . $link_name), 0, 8); + } + + return $mx_user->data["hash_$link_name"]; } - public static function decode_ip($int_ip) + + /** + * checks a link hash - for GET requests + * @param string $token the submitted token + * @param string $link_name The name of the link + * @return boolean true if all is fine + */ + function check_link_hash($token, $link_name) { - $hexipbang = explode('.', chunk_split($int_ip, 2, '.')); - return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]); + return $token === generate_link_hash($link_name); } - - /* - * Get DST + + /** + * Add a secret token to the form (requires the S_FORM_TOKEN template variable) + * @param string $form_name The name of the form; has to match the name used in check_form_key, otherwise no restrictions apply + * @param string $template_variable_suffix A string that is appended to the name of the template variable to which the form elements are assigned */ - public function get_dst($gmepoch, $tz = 0, $time_mode = 0) + function add_form_key($form_name, $template_variable_suffix = '') { - global $board_config, $mx_user; + global $config, $template, $mx_user; - $tz = empty($tz) ? $board_config['board_timezone'] : $tz; - $dst_time_lag = isset($mx_user->data['user_dst']) ? $mx_user->data['user_dst'] : $tz; + $now = time(); + $token_sid = ($mx_user->data['user_id'] == ANONYMOUS) ? $mx_user->session_id : ''; + $token = sha1($now . $mx_user->data['user_form_salt'] . $form_name . $token_sid); - switch ($time_mode) - { - case 2: - //MANUAL_DST - $dst_sec = $dst_time_lag * 60; - break; - case 1: - //SERVER_SWITCH - $dst_sec = gmdate('I', $gmepoch + (3600 * $tz)) * $dst_time_lag * 60; - //$dst_sec = @date('I', $gmepoch) * $dst_time_lag * 60; - break; - default: - $dst_sec = (isset($mx_user->timezone) && isset($mx_user->dst)) ? (int) $mx_user->timezone + (int) $mx_user->dst : 0; - break; - } - return $dst_sec; - } + $s_fields = build_hidden_fields(array( + 'creation_time' => $now, + 'form_token' => $token, + )); - /* - * Create date/time using the specified format and timezone - */ - public static function create_date($format, $gmepoch, $tz = 0) + $template->assign_var('S_FORM_TOKEN' . $template_variable_suffix, $s_fields); + } + + /** + * Check the form key. Required for all altering actions not secured by confirm_box + * + * @param string $form_name The name of the form; has to match the name used + * in add_form_key, otherwise no restrictions apply + * @param int $timespan The maximum acceptable age for a submitted form + * in seconds. Defaults to the config setting. + * @return bool True, if the form key was valid, false otherwise + */ + function check_form_key($form_name, $timespan = false) { - global $board_config, $mx_user, $lang; - static $translate; + global $config, $request, $mx_user; - $tz = empty($tz) ? $board_config['board_timezone'] : $tz; - // We need to force this ==> isset($lang['datetime']) <== otherwise we may have $lang initialized and we don't want that... - if (empty($translate) && ($board_config['default_lang'] != 'english') && isset($lang['datetime'])) + if ($timespan === false) { - $use_short_names = false; - if (((strpos($format, '\M') === false) && (strpos($format, 'M') !== false)) || ((strpos($format, '\r') === false) && (strpos($format, 'r') !== false))) - { - $use_short_names = true; - } - @reset($lang['datetime']); - while (list($match, $replace) = @each($lang['datetime'])) + // we enforce a minimum value of half a minute here. + $timespan = ($config['form_token_lifetime'] == -1) ? -1 : max(30, $config['form_token_lifetime']); + } + + if ($request->is_set_post('creation_time') && $request->is_set_post('form_token')) + { + $creation_time = abs(request_var('creation_time', 0)); + $token = $request->variable('form_token', ''); + + $diff = time() - $creation_time; + + // If creation_time and the time() now is zero we can assume it was not a human doing this (the check for if ($diff)... + if (defined('DEBUG_TEST') || $diff && ($diff <= $timespan || $timespan === -1)) { - $var_name = $match; - if ((strpos($match, '_short') !== false) && $use_short_names) + $token_sid = ($mx_user->data['user_id'] == ANONYMOUS && !empty($config['form_token_sid_guests'])) ? $mx_user->session_id : ''; + $key = sha1($creation_time . $mx_user->data['user_form_salt'] . $form_name . $token_sid); + + if ($key === $token) { - $var_name = str_replace('_short', '', $match); + return true; } - $translate[$var_name] = $replace; } } - $tz = empty($tz) ? $board_config['board_timezone'] : $tz; - $dst_time_lag = isset($mx_user->data['user_dst']) ? $mx_user->data['user_dst'] : $tz; - $dst_sec = (isset($mx_user->timezone) && isset($mx_user->dst)) ? (int) $mx_user->timezone + (int) $mx_user->dst : $dst_time_lag * 60; - //$dst_sec = self::get_dst($gmepoch, $tz); - $date = @gmdate($format, $gmepoch + (3600 * $tz) + $dst_sec); - $date = (is_array($translate) ? @strtr($date, $translate) : $date); - return $date; + + return false; } // // Pagination routine, generates // page number sequence // - public static function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE) + function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE) { global $lang; $total_pages = ceil($num_items/$per_page); - if ( $total_pages == 1 ) + if ($total_pages == 1) { return ''; } @@ -621,13 +2857,13 @@ public static function generate_pagination($base_url, $num_items, $per_page, $st $on_page = floor($start_item / $per_page) + 1; $page_string = ''; - if ( $total_pages > 10 ) + if ($total_pages > 10) { - $init_page_max = ( $total_pages > 3 ) ? 3 : $total_pages; + $init_page_max = ($total_pages > 3) ? 3 : $total_pages; for($i = 1; $i < $init_page_max + 1; $i++) { - $page_string .= ( $i == $on_page ) ? '' . $i . '' : '' . $i . ''; + $page_string .= ( $i == $on_page ) ? '' . $i . '' : '' . $i . ''; if ( $i < $init_page_max ) { $page_string .= ", "; @@ -645,10 +2881,10 @@ public static function generate_pagination($base_url, $num_items, $per_page, $st for($i = $init_page_min - 1; $i < $init_page_max + 2; $i++) { - $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; + $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; if ( $i < $init_page_max + 1 ) { - $page_string .= ', '; + $page_string .= ''; } } @@ -661,7 +2897,7 @@ public static function generate_pagination($base_url, $num_items, $per_page, $st for($i = $total_pages - 2; $i < $total_pages + 1; $i++) { - $page_string .= ( $i == $on_page ) ? '' . $i . '' : '' . $i . ''; + $page_string .= ( $i == $on_page ) ? '' . $i . '' : '' . $i . ''; if( $i < $total_pages ) { $page_string .= ", "; @@ -673,7 +2909,7 @@ public static function generate_pagination($base_url, $num_items, $per_page, $st { for($i = 1; $i < $total_pages + 1; $i++) { - $page_string .= ( $i == $on_page ) ? '' . $i . '' : '' . $i . ''; + $page_string .= ( $i == $on_page ) ? '' . $i . '' : '' . $i . ''; if ( $i < $total_pages ) { $page_string .= ', '; @@ -681,16 +2917,16 @@ public static function generate_pagination($base_url, $num_items, $per_page, $st } } - if ( $add_prevnext_text ) + if ($add_prevnext_text) { - if ( $on_page > 1 ) + if ($on_page > 1) { - $page_string = ' ' . $lang['Previous'] . '  ' . $page_string; + $page_string = ' ' . $lang['Previous'] . '  ' . $page_string; } - if ( $on_page < $total_pages ) + if ($on_page < $total_pages) { - $page_string .= '  ' . $lang['Next'] . ''; + $page_string .= '  ' . $lang['Next'] . ''; } } @@ -700,15 +2936,63 @@ public static function generate_pagination($base_url, $num_items, $per_page, $st return $page_string; } + /** + * Generate the debug output string + * + */ + function phpbb_generate_debug_output() + { + + global $db, $board_config, $auth, $mx_user; + $debug_info = array(); + + // Output page creation time + if (defined('PHPBB_DISPLAY_LOAD_TIME')) + { + if (isset($GLOBALS['starttime'])) + { + $totaltime = microtime(true) - $GLOBALS['starttime']; + $debug_info[] = sprintf('Time: %.3fs', $db->get_sql_time(), ($totaltime - $db->get_sql_time()), $totaltime); + } + + $debug_info[] = sprintf('Queries: %d', $db->sql_num_queries(true), $db->sql_num_queries()); + + $memory_usage = memory_get_peak_usage(); + if ($memory_usage) + { + $memory_usage = get_formatted_filesize($memory_usage); + + $debug_info[] = 'Peak Memory Usage: ' . $memory_usage; + } + } + + if (defined('DEBUG')) + { + $debug_info[] = 'GZIP: ' . (($board_config['gzip_compress'] && @extension_loaded('zlib')) ? 'On' : 'Off'); + + if ($mx_user->load) + { + $debug_info[] = 'Load: ' . $mx_user->load; + } + + if ($auth->acl_get('a_')) + { + $debug_info[] = 'SQL Explain'; + } + } + + return implode(' | ', $debug_info); + } + // // This does exactly what preg_quote() does in PHP 4-ish // If you just need the 1-parameter preg_quote call, then don't bother using this. // - public static function phpbb_preg_quote($str, $delimiter) + function phpbb_preg_quote($str, $delimiter) { $text = preg_quote($str); $text = str_replace($delimiter, '\\' . $delimiter, $text); - + return $text; } @@ -717,7 +3001,7 @@ public static function phpbb_preg_quote($str, $delimiter) // calling script, note that the vars are passed as references this just makes it easier // to return both sets of arrays // - public static function obtain_word_list(&$orig_word, &$replacement_word) + function obtain_word_list(&$orig_word, &$replacement_word) { global $db; @@ -726,19 +3010,19 @@ public static function obtain_word_list(&$orig_word, &$replacement_word) // $sql = "SELECT word, replacement FROM " . WORDS_TABLE; - if( !($result = $db->sql_query($sql)) ) + if(!($result = $db->sql_query($sql))) { - mx_message_die(GENERAL_ERROR, 'Could not get censored words from database', '', __LINE__, __FILE__, $sql); + message_die(GENERAL_ERROR, 'Could not get censored words from database', '', __LINE__, __FILE__, $sql); } - if ( $row = $db->sql_fetchrow($result) ) + if ($row = $db->sql_fetchrow($result)) { - do + do { $orig_word[] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\b#i'; $replacement_word[] = $row['replacement']; } - while ( $row = $db->sql_fetchrow($result) ); + while ($row = $db->sql_fetchrow($result)); } return true; @@ -750,41 +3034,96 @@ public static function obtain_word_list(&$orig_word, &$replacement_word) // // $msg_code can be one of these constants: // - // GENERAL_MESSAGE : Use for any simple text message, eg. results + // GENERAL_MESSAGE : Use for any simple text message, eg. results // of an operation, authorisation failures, etc. // - // GENERAL ERROR : Use for any error which occurs _AFTER_ the - // common.php include and session code, ie. most errors in + // Backported from MX-Publisher Portal-CMS + // by FlorinCB aka orynider + // + // GENERAL ERROR : Use for any error which occurs _AFTER_ the + // common.php include and session code, ie. most errors in // pages/functions // - // CRITICAL_MESSAGE : Used when basic config data is available but + // CRITICAL_MESSAGE : Used when basic config data is available but // a session may not exist, eg. banned users // // CRITICAL_ERROR : Used when config data cannot be obtained, eg // no database connection. Should _not_ be used in 99.5% of cases // - /* function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', $err_file = '', $sql = '') { - global $db, $template, $board_config, $theme, $lang, $phpEx, $phpbb_root_path, $nav_links, $gen_simple_header, $images; - global $userdata, $user_ip, $session_length; - global $starttime; + global $db, $layouttemplate, $template, $board_config, $theme, $lang, $phpEx, $phpbb_root_path, $nav_links, $gen_simple_header, $images, $phpbb_root_path; + global $mx_user, $userdata, $mx_user_ip, $session_length, $backend; + global $starttime, $mx_cache; + + static $msg_history; + + $default_lang = (isset($mx_user->lang['default_lang'])) ? $mx_user->lang['default_lang'] : $board_config['default_lang']; + + if( !isset($msg_history) ) + { + $msg_history = array(); + } + + $msg_history[] = array( + 'msg_code' => $msg_code, + 'msg_text' => $msg_text, + 'msg_title' => $msg_title, + 'err_line' => $err_line, + 'err_file' => $err_file, + 'sql' => $sql + ); + + // + //This will check whaever we are installing + // if(defined('HAS_DIED')) { - die("mx_message_die() was called multiple times. This isn't supposed to happen. Was message_die() used in page_tail.php?"); + // + // This message is printed at the end of the report. + // Of course, you can change it to suit your own needs. ;-) + // + $custom_error_message = 'Please, contact the %swebmaster%s. Thank you.'; + if ( !empty($board_config) && !empty($board_config['board_email']) ) + { + $custom_error_message = sprintf($custom_error_message, '', ''); + } + else + { + $custom_error_message = sprintf($custom_error_message, '', ''); + } + echo "\n\n\nCritical Error!
\nmx_message_die() was called multiple times.
 
"; + for( $i = 0; $i < count($msg_history); $i++ ) + { + echo 'Error #' . ($i+1) . "\n
\n"; + if( !empty($msg_history[$i]['msg_title']) ) + { + echo '' . $msg_history[$i]['msg_title'] . "\n
\n"; + } + echo $msg_history[$i]['msg_text'] . "\n

\n"; + if( !empty($msg_history[$i]['err_line']) ) + { + echo 'Line : ' . $msg_history[$i]['err_line'] . '
File : ' . $msg_history[$i]['err_file'] . "\n
\n"; + } + if( !empty($msg_history[$i]['sql']) ) + { + echo 'SQL : ' . $msg_history[$i]['sql'] . "\n
\n"; + } + echo " 
\n"; + } + echo $custom_error_message . '

'; + die("\n"); } - + define('HAS_DIED', 1); - - $sql_store = $sql; // // Get SQL error if we are debugging. Do this as soon as possible to prevent // subsequent queries from overwriting the status of sql_error() // - if ( DEBUG && ( $msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR ) ) + if (DEBUG && ($msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR)) { $sql_error = $db->sql_error(); @@ -802,36 +3141,98 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', if ( $err_line != '' && $err_file != '' ) { - $debug_text .= '

Line : ' . $err_line . '
File : ' . basename($err_file); + $debug_text .= '

Line : ' . $err_line . '
File : ' . $err_file; } } + //Security check + if(!@is_object($mx_user) && !isset($phpbb_auth)) + { + echo 'Couldn\'t initalize the user and auth classes required to call message_die().\n
\n'; + } + + if(!@is_object($mx_user)) + { + $user = $mx_user = new mx_user(); + } + + if(!isset($phpbb_auth)) + { + $auth = $phpbb_auth = new phpbb_auth(); + } + + if ( empty($page_id) && is_request('portalpage') ) + { + $page_id = request_var('portalpage', 1); + } + else if ( empty($page_id) ) + { + $page_id = request_var('page', 1); + } + + if (!$page_id) + { + $page_id = 1; + } + + // + // Start user session + // - populate $userdata and $lang + // if( empty($userdata) && ( $msg_code == GENERAL_MESSAGE || $msg_code == GENERAL_ERROR ) ) { - $userdata = session_pagestart($user_ip, PAGE_INDEX); - init_userprefs($userdata); + //$mx_user->init($mx_user_ip, $page_id, false); + $userdata = $mx_user->session_pagestart($mx_user_ip, $page_id); + } + + if(empty($theme)) + { + global $mx_user_ip; + $mx_user->page_id = 1; + $mx_user->user_ip = $mx_user_ip; + //$mx_user->_init_userprefs(); + init_userprefs($mx_user->data); + } + + $default_lang = (isset($mx_user->lang['default_lang'])) ? $mx_user->encode_lang($mx_user->lang['default_lang']) : $board_config['default_lang']; + + if ( empty($default_lang) ) + { + // - populate $default_lang + $default_lang= 'english'; } + $lang_path = $phpbb_root_path . 'language/'; + // // If the header hasn't been output then do it // if ( !defined('HEADER_INC') && $msg_code != CRITICAL_ERROR ) { - if ( empty($lang) ) + if ( empty($lang) || empty($lang['Board_disable']) ) { - if ( !empty($board_config['default_lang']) ) + if ((@include $lang_path . "lang_" . $default_lang . "/lang_main.$phpEx") === false) { - include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx); + if ((@include $lang_path . "lang_english/lang_main.$phpEx") === false) + { + die('Language file (message_die) ' . $lang_path . "lang_" . $default_lang . "/lang_main.$phpEx" . ' couldn\'t be opened.'); + } } - else + + if ((@include $phpbb_root_path . "language/lang_" . $default_lang . "/lang_main.$phpEx") === false) { - include($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx); + if ((@include $phpbb_root_path . "language/lang_english/lang_main.$phpEx") === false) + { + die('Language file (message_die) ' . $phpbb_root_path . "language/lang_" . $default_lang . "/lang_main.$phpEx" . ' couldn\'t be opened.'); + } } } - if ( empty($template) || empty($theme) ) + $page_title = !empty($msg_title) ? $msg_title : $lang['Information']; + + if(!is_object($template)) { - $theme = setup_style($board_config['default_style']); + $mx_user->init_style(); } // @@ -854,14 +3255,14 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', { $msg_title = $lang['Information']; } - break; + break; case CRITICAL_MESSAGE: if ( $msg_title == '' ) { $msg_title = $lang['Critical_Information']; } - break; + break; case GENERAL_ERROR: if ( $msg_text == '' ) @@ -873,27 +3274,50 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', { $msg_title = $lang['General_Error']; } - break; + break; case CRITICAL_ERROR: // // Critical errors mean we cannot rely on _ANY_ DB information being // available so we're going to dump out a simple echo'd statement // - include($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx); + if ((@include($lang_path . "lang_" . $default_lang . "/lang_main.$phpEx")) === false) + { + if ((@include($lang_path . "lang_english/lang_main.$phpEx")) === false) + { + $phpbb_lang_error = 'Language file ' . $lang_path . "lang_" . $default_lang . "/lang_main.$phpEx" . ' couldn\'t be opened.'; + } + else + { + $phpbb_lang_error = false; + } + } - if ( $msg_text == '' ) + if ((@include($phpbb_root_path . "language/lang_" . $default_lang . "/lang_main.$phpEx")) === false) + { + if ((@include($phpbb_root_path . "language/lang_english/lang_main.$phpEx")) === false) + { + $lang_error = 'Language file ' . $phpbb_root_path . "language/lang_" . $default_lang . "/lang_main.$phpEx" . ' couldn\'t be opened.'; + } + else + { + $lang_error = false; + } + } + + if ($msg_text == '') { $msg_text = $lang['A_critical_error']; } - if ( $msg_title == '' ) + if ($msg_title == '') { - $msg_title = 'phpBB : ' . $lang['Critical_Error'] . ''; + $msg_title = 'phpBB2 : ' . $lang['Critical_Error'] . ''; } - break; + break; } + // // Add on DEBUG info if we've enabled debug mode and this is an error. This // prevents debug info being output for general messages should DEBUG be @@ -903,53 +3327,98 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', { if ( $debug_text != '' ) { - $msg_text = $msg_text . '

DEBUG MODE' . $debug_text; + $msg_text = $msg_text . '

DEBUG MODE ' . $debug_text; } } + if (isset($phpbb_lang_error)) + { + $msg_text = $msg_text . '

ALLSO ' . $phpbb_lang_error; + } + + if (isset($lang_error)) + { + $msg_text = $msg_text . '

ALLSO ' . $lang_error; + } + if ( $msg_code != CRITICAL_ERROR ) { if ( !empty($lang[$msg_text]) ) { $msg_text = $lang[$msg_text]; } - if ( !defined('IN_ADMIN') ) { + $message_file = isset($mx_user->full_page) ? 'full_page_body.tpl' : 'message_body.tpl'; $template->set_filenames(array( - 'message_body' => 'message_body.tpl') + 'message_body' => $message_file) ); } else { - $template->set_filenames(array( - 'message_body' => 'admin/admin_message_body.tpl') - ); + $template->set_filenames(array('message_body' => 'admin/admin_message_body.tpl')); } - + + // + // Fix for correcting possible "bad" links to phpBB + // + if (!(strpos($msg_text, 'href') === false)) + { + $msg_text = str_replace('assign_vars(array( 'MESSAGE_TITLE' => $msg_title, 'MESSAGE_TEXT' => $msg_text) ); + + ob_start(); $template->pparse('message_body'); - + $phpbb_output = ob_get_contents(); + ob_end_clean(); + + $phpbb_output = str_replace('"templates/'.$theme['template_name'], '"' . $phpbb_root_path . 'templates/'.$theme['template_name'], $phpbb_output); + echo($phpbb_output); + unset($phpbb_output); + if ( !defined('IN_ADMIN') ) { - include($phpbb_root_path . 'includes/page_tail.'.$phpEx); + include_once($phpbb_root_path . 'includes/page_tail.'.$phpEx); } else { - include($phpbb_root_path . 'admin/page_footer_admin.'.$phpEx); + include_once($phpbb_root_path . 'admin/page_footer_admin.'.$phpEx); } } else { - echo "\n\n" . $msg_title . "\n

\n" . $msg_text . "\n"; + if (!defined('TEMPLATE_ROOT_PATH')) + { + define('TEMPLATE_ROOT_PATH', $phpbb_root_path.'templates/'.$theme['template_name'].'/'); + } + if (file_exists($phpbb_root_path . TEMPLATE_ROOT_PATH . 'msgdie_header.tpl')) + { + $layouttemplate->set_filenames(array( + 'overall_header' => 'msgdie_header.tpl', + )); + $layouttemplate->pparse('overall_header'); + } + echo "\n\n" . $msg_title . "\n

\n" . $msg_text . "\n"; + if (file_exists($phpbb_root_path . TEMPLATE_ROOT_PATH . 'msgdie_footer.tpl')) + { + $layouttemplate->set_filenames(array( + 'overall_footer' => 'msgdie_footer.tpl', + )); + $layouttemplate->pparse('overall_footer'); + } } - exit; } - */ // // This function is for compatibility with PHP 4.x's realpath() @@ -957,14 +3426,14 @@ function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', // to do checks with some functions. Older versions of PHP don't // seem to need this, so we'll just return the original value. // dougk_ff7 - public static function phpbb_realpath($path) + function phpbb_realpath($path) { global $phpbb_root_path, $phpEx; return (!@function_exists('realpath') || !@realpath($phpbb_root_path . 'includes/functions.'.$phpEx)) ? $path : @realpath($path); } - public static function redirect($url) + function redirect($url) { global $db, $board_config; @@ -975,7 +3444,7 @@ public static function redirect($url) if (strstr(urldecode($url), "\n") || strstr(urldecode($url), "\r") || strstr(urldecode($url), ';url')) { - message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.'); + $this->message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.'); } $server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://'; @@ -997,5 +3466,185 @@ public static function redirect($url) header('Location: ' . $server_protocol . $server_name . $server_port . $script_name . $url); exit; } + + /** + * Extract current session page + * + * @param string $root_path current root path (phpbb_root_path) + * @return array + */ + function extract_current_page($root_path) + { + global $board_config; + $page_array = array(); + + // First of all, get the request uri... + $script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($_SERVER['SCRIPT_NAME'])); + $args = func_get_args(); + + // If we are unable to get the script name we use REQUEST_URI as a failover and note it within the page array for easier support... + if (!$script_name) + { + $script_name = htmlspecialchars_decode($_SERVER('REQUEST_URI')); + $script_name = (($pos = strpos($script_name, '?')) !== false) ? substr($script_name, 0, $pos) : $script_name; + $page_array['failover'] = 1; + } + + // Replace backslashes and doubled slashes (could happen on some proxy setups) + $script_name = str_replace(array('\\', '//'), '/', $script_name); + + // Now, remove the sid and let us get a clean query string... + $use_args = array(); + + // Since some browser do not encode correctly we need to do this with some "special" characters... + // " -> %22, ' => %27, < -> %3C, > -> %3E + $find = array('"', "'", '<', '>', '"', '<', '>'); + $replace = array('%22', '%27', '%3C', '%3E', '%22', '%3C', '%3E'); + + foreach ($args as $key => $argument) + { + if (strpos($argument, 'sid=') === 0) + { + continue; + } + + $use_args[] = str_replace($find, $replace, $argument); + } + unset($args); + + // The following examples given are for an request uri of {path to the phpbb directory}/adm/index.php?i=10&b=2 + + // The current query string + $query_string = trim(implode('&', $use_args)); + + // basenamed page name (for example: index.php) + $page_name = (substr($script_name, -1, 1) == '/') ? '' : basename($script_name); + $page_name = urlencode(htmlspecialchars($page_name)); + + if (substr($root_path, 0, 2) === './' && strpos($root_path, '..') === false) + { + $root_dirs = explode('/', str_replace('\\', '/', rtrim($root_path, '/'))); + $page_dirs = explode('/', str_replace('\\', '/', '.')); + } + else + { + // current directory within the phpBB root (for example: adm) + $root_dirs = explode('/', str_replace('\\', '/', phpbb_realpath($root_path))); + $page_dirs = explode('/', str_replace('\\', '/', phpbb_realpath('./'))); + } + + $intersection = array_intersect_assoc($root_dirs, $page_dirs); + + $root_dirs = array_diff_assoc($root_dirs, $intersection); + $page_dirs = array_diff_assoc($page_dirs, $intersection); + + $page_dir = str_repeat('../', count($root_dirs)) . implode('/', $page_dirs); + + if ($page_dir && substr($page_dir, -1, 1) == '/') + { + $page_dir = substr($page_dir, 0, -1); + } + + // Current page from phpBB root (for example: adm/index.php?i=10&b=2) + $page = (($page_dir) ? $page_dir . '/' : '') . $page_name; + if ($query_string) + { + $page .= '?' . $query_string; + } + + // The script path from the webroot to the current directory (for example: /phpBB3/adm/) : always prefixed with / and ends in / + $script_path = dirname(__FILE__); + + // The script path from the webroot to the phpBB root (for example: /phpBB3/) + $script_dirs = explode('/', $script_path); + array_splice($script_dirs, -count($page_dirs)); + $root_script_path = implode('/', $script_dirs) . (count($root_dirs) ? '/' . implode('/', $root_dirs) : ''); + + // We are on the base level (phpBB root == webroot), lets adjust the variables a bit... + if (!$root_script_path) + { + $root_script_path = ($page_dir) ? str_replace($page_dir, '', $script_path) : $script_path; + } + + $script_path .= (substr($script_path, -1, 1) == '/') ? '' : '/'; + $root_script_path .= (substr($root_script_path, -1, 1) == '/') ? '' : '/'; + + $forum_id = request_var('f', 0); + // maximum forum id value is maximum value of mediumint unsigned column + $forum_id = ($forum_id > 0 && $forum_id < 16777215) ? $forum_id : 0; + + $page_array += array( + 'page_name' => $page_name, + 'page_dir' => $page_dir, + + 'query_string' => $query_string, + 'script_path' => str_replace(' ', '%20', htmlspecialchars($script_path)), + 'root_script_path' => str_replace(' ', '%20', htmlspecialchars($root_script_path)), + + 'page' => $page, + 'forum' => $forum_id, + ); + + return $page_array; + } + + /** + * Get valid hostname/port. HTTP_HOST is used, SERVER_NAME if HTTP_HOST not present. + */ + function extract_current_hostname() + { + global $board_config; + + /** + * A wrapper for htmlspecialchars_decode + * @Get hostname + */ + $host = (!empty($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : ((!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : getenv('SERVER_NAME')); + + // Should be a string and lowered + $host = (string) strtolower($host); + + // If host is equal the cookie domain or the server name (if config is set), then we assume it is valid + if ((isset($board_config['cookie_domain']) && $host === $board_config['cookie_domain']) || (isset($board_config['server_name']) && $host === $board_config['server_name'])) + { + return $host; + } + + // Is the host actually a IP? If so, we use the IP... (IPv4) + if (long2ip(ip2long($host)) === $host) + { + return $host; + } + + // Now return the hostname (this also removes any port definition). The http:// is prepended to construct a valid URL, hosts never have a scheme assigned + $host = @parse_url('http://' . $host); + $host = (!empty($host['host'])) ? $host['host'] : ''; + + // Remove any portions not removed by parse_url (#) + $host = str_replace('#', '', $host); + + // If, by any means, the host is now empty, we will use a "best approach" way to guess one + if (empty($host)) + { + if (!empty($board_config['server_name'])) + { + $host = $board_config['server_name']; + } + else if (!empty($board_config['cookie_domain'])) + { + $host = (strpos($board_config['cookie_domain'], '.') === 0) ? substr($board_config['cookie_domain'], 1) : $board_config['cookie_domain']; + } + else + { + // Set to OS hostname or localhost + $host = (function_exists('php_uname')) ? php_uname('n') : 'localhost'; + } + } + + // It may be still no valid host, but for sure only a hostname (we may further expand on the cookie domain... if set) + return $host; + } + + } ?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_albanian/index.htm b/includes/shared/phpbb2/language/lang_albanian/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb2/language/lang_albanian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb2/language/lang_chinese/email/admin_account_action.tpl b/includes/shared/phpbb2/language/lang_chinese/email/admin_account_action.tpl new file mode 100644 index 00000000..86d07b4d --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/admin_account_action.tpl @@ -0,0 +1,8 @@ +Subject: {SUBJECT} +Charset: windows-1251 + +您好ï¼{USERNAME}, + +{TEXT}. + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/admin_activate.tpl b/includes/shared/phpbb2/language/lang_chinese/email/admin_activate.tpl new file mode 100644 index 00000000..af016381 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/admin_activate.tpl @@ -0,0 +1,10 @@ +Subject: 新用户å¸æˆ· +Charset: UTF-8 + +您好, + +这个 "{USERNAME}" çš„å¸å·å¯èƒ½è¢«å†»ç»“了或是刚完æˆæ³¨å†Œç¨‹åº. 如果有必è¦çš„è¯, 请检查这个用户的详细资料和使用以下链接激活这个å¸å·: + +{U_ACTIVATE} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/admin_send_email.tpl b/includes/shared/phpbb2/language/lang_chinese/email/admin_send_email.tpl new file mode 100644 index 00000000..ee1e765f --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/admin_send_email.tpl @@ -0,0 +1,12 @@ +Charset: UTF-8 + +è¿™å°ç”µå­é‚®ä»¶æ˜¯ç”±"{SITENAME}"管ç†å‘˜å¯„出的. å‡å¦‚è¿™å°ç”µå­é‚®ä»¶çš„内容令你感到ä¸æ„‰å¿«, 甚至是æ¶æ„的攻击, 请使用以下链接æ出申诉: + +{BOARD_EMAIL} + +包å«å®Œæ•´çš„电å­é‚®ä»¶(特别是头信æ¯). + +附带给你的讯æ¯å¦‚下: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/admin_welcome_activated.tpl b/includes/shared/phpbb2/language/lang_chinese/email/admin_welcome_activated.tpl new file mode 100644 index 00000000..6fa75e7b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/admin_welcome_activated.tpl @@ -0,0 +1,8 @@ +Subject: 账户激活 +Charset: UTF-8 + +{USERNAME} 您好, + +您在"{SITENAME}"çš„å¸å·å·²ç»æ¿€æ´», 您å¯ä»¥ä½¿ç”¨æ‰€æ”¶åˆ°çš„会员å¸å·åŠå¯†ç ç™»å…¥"{SITENAME}". + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/admin_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_chinese/email/admin_welcome_inactive.tpl new file mode 100644 index 00000000..6e21c06e --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/admin_welcome_inactive.tpl @@ -0,0 +1,19 @@ +Subject: 欢迎您访问 {SITENAME} è®ºå› +Charset: UTF-8 + +{WELCOME_MSG} + +请妥善ä¿ç•™è¿™å°ç”µå­é‚®ä»¶. 您的å¸å·èµ„料如下: + +---------------------------- +å¸å·: {USERNAME} +密ç : {PASSWORD} +---------------------------- + +您的å¸å·ç›®å‰å°šæœªæ¿€æ´», 系统管ç†å‘˜å°†ä¸ºæ‚¨å¼€é€šå¸å·. 当您的账å·æ¿€æ´»åŽæ‚¨å°†ä¼šæ”¶åˆ°ä¸€å°ç¡®è®¤é‚®ä»¶. + +请牢记您的密ç , 由于所有密ç å‡ç»è¿‡åŠ å¯†å¤„ç†, 系统管ç†å‘˜ä¹Ÿæ— æ³•å–å¾—. 然而, 如果您忘记了密ç , 系统将会寄å‘一个新的密ç ç»™æ‚¨. + +感谢您的注册. + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/coppa_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_chinese/email/coppa_welcome_inactive.tpl new file mode 100644 index 00000000..eb1ae703 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/coppa_welcome_inactive.tpl @@ -0,0 +1,53 @@ +Subject: 欢迎您访问 {SITENAME} è®ºå› +Charset: UTF-8 + +{WELCOME_MSG} + +ä¾ç…§"美国儿童网路éšç§ä¿æŠ¤æ³•"规定, 您的å¸å·å°šæœªæ¿€æ´». + +请列å°ä»¥ä¸‹è¡¨æ ¼å¹¶è¯·æ‚¨çš„父æ¯æˆ–监护人签上å字和日期,将其传真到: + +{FAX_INFO} + +或邮寄到: + +{MAIL_INFO} + +------------------------------ 由此è£å¼€ ------------------------------ +{SITENAME} 会员注册申请 + +使用者å称: {USERNAME} +密ç : {PASSWORD} +电å­é‚®ä»¶: {EMAIL_ADDRESS} + +ICQ ç¼–å·: {ICQ} +AIM ä½å€: {AIM} +MSN 信使: {MSN} +雅虎å³æ—¶é€š: {YIM} +个人首页: {WEB_SITE} +æ¥è‡ª: {FROM} +èŒä¸š: {OCC} +兴趣: {INTERESTS} + +我已看过ä¿æŠ¤å„¿ç«¥çš„æ¡æ–‡å¹¶ä¸”å…许"{SITENAME}"储存这些资讯. +我了解这些资讯å¯èƒ½åœ¨ä»»ä½•æ—¶å€™è¢«é”®å…¥å¯†ç æ›´æ”¹. +我了解这些资料有å¯èƒ½åœ¨ä»»ä½•æ—¶å€™ç”±"{SITENAME}"删除. + + +家长或监护人 +(请在此签å): _____________________ + +(请在此签å): __________________ + +日期: _______________ + +------------------------------ 由此è£å¼€------------------------------ + + +当管ç†äººå‘˜æ”¶åˆ°ä»¥ä¸Šçš„申请传真或邮件并通过审核, 您的å¸å·æ‰ä¼šè¢«æ¿€æ´». + +请牢记您的密ç , 由于所有密ç å‡ç»è¿‡åŠ å¯†å¤„ç†, 系统管ç†å‘˜ä¹Ÿæ— æ³•å–å¾—. 然而, 如果您忘记了密ç , 系统将会寄å‘一个新的密ç ç»™æ‚¨. + +感谢您的注册. + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/group_added.tpl b/includes/shared/phpbb2/language/lang_chinese/email/group_added.tpl new file mode 100644 index 00000000..78f41571 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/group_added.tpl @@ -0,0 +1,12 @@ +Subject: 您已ç»è¢«åŠ å…¥è¿™ä¸ªå›¢é˜Ÿ +Charset: UTF-8 + +æ­å–œ, + +您已ç»æˆåŠŸåŠ å…¥"{SITENAME}"çš„"{GROUP_NAME}"这个群组. +这是由团队管ç†å‘˜æˆ–论å›ç®¡ç†å‘˜ä½œå‡ºçš„决定, è”络他们您å¯ä»¥å¾—到更多有关信æ¯. + +您å¯ä»¥ä½¿ç”¨ä»¥ä¸‹é“¾æŽ¥æŸ¥çœ‹å›¢é˜Ÿä¿¡æ¯: +{U_GROUPCP} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/group_approved.tpl b/includes/shared/phpbb2/language/lang_chinese/email/group_approved.tpl new file mode 100644 index 00000000..3cc2531f --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/group_approved.tpl @@ -0,0 +1,12 @@ + +Subject: 您的申请已ç»è¢«æ‰¹å‡†äº† +Charset: UTF-8 + +æ­å–œæ‚¨, + +你在"{SITENAME}"所申请加入的团队"{GROUP_NAME}"å·²ç»èŽ·å¾—批准. +è¯·ä½¿ç”¨ä»¥ä¸‹é“¾æŽ¥æŸ¥çœ‹æ‚¨çš„å›¢é˜Ÿä¿¡æ¯ + +{U_GROUPCP} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/group_request.tpl b/includes/shared/phpbb2/language/lang_chinese/email/group_request.tpl new file mode 100644 index 00000000..23e976b9 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/group_request.tpl @@ -0,0 +1,11 @@ +Subject: 加入这个团队的申请已ç»æ交 +Charset: UTF-8 + +亲爱的 {GROUP_MODERATOR}, + +有一个会员æ出申请加入你在"{SITENAME}"所管ç†çš„会员团队. +请使用以下链接批准或是拒ç»ç”³è¯·çš„决定: + +{U_GROUPCP} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_chinese/email/guestbook.tpl b/includes/shared/phpbb2/language/lang_chinese/email/guestbook.tpl new file mode 100644 index 00000000..5ba81ba8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/guestbook.tpl @@ -0,0 +1,11 @@ +Subject: 您的留言æ¿æœ‰æ–°çš„消æ¯ï¼ +Charset: UTF-8 + +亲爱的 {USERNAME}! + +您的留言æ¿æœ‰æ–°çš„消æ¯ï¼Œæ‚¨å¯ä»¥ç‚¹å‡»ä¸‹é¢çš„链接阅读: + +{U_ACT} + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/index.htm b/includes/shared/phpbb2/language/lang_chinese/email/index.htm new file mode 100644 index 00000000..77e39010 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/index.htm @@ -0,0 +1,9 @@ + + +phpBB-WAP + + + + + + diff --git a/includes/shared/phpbb2/language/lang_chinese/email/medal_added.tpl b/includes/shared/phpbb2/language/lang_chinese/email/medal_added.tpl new file mode 100644 index 00000000..035ef0d3 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/medal_added.tpl @@ -0,0 +1,12 @@ +Subject: 您获得一个奖 +Charset: UTF-8 + +æ­å–œæ‚¨, + +您在 “{SITENAME}†获得 “{MEDAL_NAME}†奖, +这是由该网站的管ç†å‘˜æˆ–版主é¢å‘çš„, 如果想了解更多的信æ¯è¯·è”系他们. + +您å¯ä»¥é€šè¿‡ç‚¹å‡»ä»¥ä¸‹é“¾æŽ¥èŽ·å–更多的信æ¯: +{U_MEDAL} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_chinese/email/privmsg_notify.tpl b/includes/shared/phpbb2/language/lang_chinese/email/privmsg_notify.tpl new file mode 100644 index 00000000..57d9bcb2 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/privmsg_notify.tpl @@ -0,0 +1,12 @@ +Subject: æ–°çš„ç«™å†…ä¿¡æ¯ +Charset: UTF-8 + +{USERNAME} 您好, + +您在 “{SITENAME}†有新的ç§äººä¿¡æ¯, 您è¦æ±‚系统以电å­é‚®ä»¶é€šçŸ¥. 您å¯ä»¥ä½¿ç”¨ä»¥ä¸‹çš„链接æµè§ˆæ‚¨åˆšæ”¶åˆ°çš„ç§äººä¿¡æ¯: + +{U_INBOX} + +请记得您éšæ—¶éƒ½å¯ä»¥å–消这类的电å­é‚®ä»¶é€šçŸ¥, 相关选项您å¯ä»¥åœ¨ä¸ªäººèµ„料设定里更改. + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/profile_send_email.tpl b/includes/shared/phpbb2/language/lang_chinese/email/profile_send_email.tpl new file mode 100644 index 00000000..ea06bc89 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/profile_send_email.tpl @@ -0,0 +1,14 @@ +Charset: UTF-8 + +{TO_USERNAME} 您好, + +è¿™å°ç”µå­é‚®ä»¶æ˜¯ “{FROM_USERNAME}†利用您在 “{SITENAME}†的会员资料的邮件地å€æ‰€å‘é€çš„. 如果这å°ç”µå­é‚®ä»¶çš„内容是æ¶æ„的攻击或是垃圾邮件, 请使用以下的链接æ出申诉: + +{BOARD_EMAIL} + +请包å«è¿™å°å®Œæ•´çš„电å­é‚®ä»¶å†…容(特别是头信æ¯). 请注æ„回å¤çš„电å­é‚®ä»¶åœ°å€å·²è®¾å®šä¸º “{FROM_USERNAME}â€. + +讯æ¯å¦‚下: +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/report_post.tpl b/includes/shared/phpbb2/language/lang_chinese/email/report_post.tpl new file mode 100644 index 00000000..fffc2730 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/report_post.tpl @@ -0,0 +1,14 @@ +Subject: æ‚¨çš„å¸–å­ {TOPIC_TITLE} è¢«ä¸¾æŠ¥ï¼ +Charset: UTF-8 + +您在 {SITENAME} å‘表的帖å­è¢«æŠ•è¯‰, 点击以下链接查看您被举报的å‘帖: + +{U_VIEW_POST} + +使用 {USERNAME} 在论å›å‘帖: + +{COMMENTS} + +您å¯ä»¥åœ¨ä¸ªäººèµ„料设定中退订投诉的邮件通知. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_chinese/email/reputation_ban.tpl b/includes/shared/phpbb2/language/lang_chinese/email/reputation_ban.tpl new file mode 100644 index 00000000..f9dcf3aa --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/reputation_ban.tpl @@ -0,0 +1,14 @@ +Subject: 您已被添加到网站黑åå•åˆ—表中 +Charset: UTF-8 + +亲爱的 {USERNAME}, æ‚¨å¥½ï¼ + +您在 {SITENAME} çš„å¸å·å·²è¢«åŠ ä¸ºé»‘åå•ï¼ + +时间:{TIME} + +原因: {REASON} + +执行人:{MODERATOR} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/reputation_warning.tpl b/includes/shared/phpbb2/language/lang_chinese/email/reputation_warning.tpl new file mode 100644 index 00000000..c92b8251 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/reputation_warning.tpl @@ -0,0 +1,16 @@ +Subject: æ‚¨å·²è¢«è­¦å‘Šï¼ +Charset: UTF-8 + +亲爱的 {USERNAME}, æ‚¨å¥½ï¼ + +现在对您在 {SITENAME} 注册的å¸å·è¿›è¡Œè­¦å‘Šï¼ + +原因: {REASON} + +执行人: {MODERATOR} + +您å¯ä»¥ç‚¹å‡»ä¸‹é¢é“¾æŽ¥èŽ·å–更多的信æ¯: + +{U_LINK} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/topic_notify.tpl b/includes/shared/phpbb2/language/lang_chinese/email/topic_notify.tpl new file mode 100644 index 00000000..f93ebd7b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/topic_notify.tpl @@ -0,0 +1,14 @@ +Subject: 回帖通知 - {TOPIC_TITLE} +Charset: UTF-8 + +{USERNAME} 您好, + +您收到这å°è¿™å°ç”µå­é‚®ä»¶æ˜¯å› ä¸ºæ‚¨åœ¨"{SITENAME}"订阅了主题"{TOPIC_TITLE}", 这个主题在您上次æ¥è®¿åŽæœ‰æ–°çš„回覆. 您å¯ä»¥ä½¿ç”¨ä»¥ä¸‹é“¾æŽ¥æ¥é˜…读回覆的内容, 在您æµè§ˆåŽŸä¸»é¢˜ä¹‹å‰, ä¸ä¼šå†æœ‰æ›´æ–°çš„讯æ¯. + +{U_TOPIC} + +如果您想å–消订阅这个主题, 您å¯ä»¥æŒ‰ä¸‹ä¸»é¢˜ä¸‹æ–¹çš„链接, 或直接使用以下链接: + +{U_STOP_WATCHING_TOPIC} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/user_activate.tpl b/includes/shared/phpbb2/language/lang_chinese/email/user_activate.tpl new file mode 100644 index 00000000..444a1072 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/user_activate.tpl @@ -0,0 +1,10 @@ +Subject: é‡æ–°æ¿€æ´»æ‚¨çš„账户! +Charset: UTF-8 + +{USERNAME} 您好, + +您在"{SITENAME}"çš„å¸å·æš‚时被冻结, 最有å¯èƒ½çš„原因是您更改了您的个人资料. 请使用以下链接é‡æ–°æ¿€æ´»æ‚¨çš„å¸å·: + +{U_ACTIVATE} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/user_activate_passwd.tpl b/includes/shared/phpbb2/language/lang_chinese/email/user_activate_passwd.tpl new file mode 100644 index 00000000..1781710d --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/user_activate_passwd.tpl @@ -0,0 +1,18 @@ +Subject: 新密ç æ¿€æ´» +Charset: UTF-8 + +{USERNAME} 您好, + +您收到这å°è¿™å°ç”µå­é‚®ä»¶æ˜¯å› ä¸ºæ‚¨ (也å¯èƒ½æ˜¯æŸäººå†’充您的å义) 申请了一个新的密ç . å‡å¦‚è¿™ä¸æ˜¯æ‚¨æœ¬äººæ‰€ç”³è¯·, 请ä¸ç”¨ç†ä¼šè¿™å°ç”µå­é‚®ä»¶, 但是如果您æŒç»­æ”¶åˆ°è¿™ç±»çš„信件骚扰, 请您尽快è”络管ç†å‘˜. + +è¦ä½¿ç”¨è¿™ç»„新的密ç , 请使用以下连结å¯ç”¨å¯†ç . + +{U_ACTIVATE} + +在密ç å¯ç”¨ä¹‹å¾Œ, 您将å¯ä»¥ä½¿ç”¨æ–°çš„密ç ç™»å…¥: + +密ç : {PASSWORD} + +您å¯ä»¥åœ¨æ‚¨çš„个人资料中自行更改å¸å·å¯†ç . 如果您还有任何的疑问, 请与系统管ç†å‘˜è”络. + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/user_welcome.tpl b/includes/shared/phpbb2/language/lang_chinese/email/user_welcome.tpl new file mode 100644 index 00000000..e4acd2b1 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/user_welcome.tpl @@ -0,0 +1,17 @@ +Subject: 欢迎您访问 {SITENAME} è®ºå› +Charset: UTF-8 + +{WELCOME_MSG} + +请妥善ä¿ç•™è¿™å°ç”µå­é‚®ä»¶. 您的å¸å·èµ„料如下: + +---------------------------- +å¸å·: {USERNAME} +密ç : {PASSWORD} +---------------------------- + +请牢记您的密ç , 因为所有密ç å‡ç»è¿‡åŠ å¯†å¤„ç†, 系统管ç†å‘˜ä¹Ÿæ— æ³•å–å¾—. 然而如果您忘记了密ç , 您å¯ä»¥é‡æ–°ç”³è¯·ä¸€ä¸ªæ–°çš„密ç . + +感谢您的注册. + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/email/user_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_chinese/email/user_welcome_inactive.tpl new file mode 100644 index 00000000..980e71a5 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/email/user_welcome_inactive.tpl @@ -0,0 +1,21 @@ +Subject: 欢迎您访问 {SITENAME} è®ºå› +Charset: UTF-8 + +{WELCOME_MSG} + +请妥善ä¿ç•™è¿™å°ç”µå­é‚®ä»¶. 您的å¸å·èµ„料如下: + +---------------------------- +å¸å·: {USERNAME} +密ç : {PASSWORD} +---------------------------- + +您的å¸å·å°šæœªæ¿€æ´», 您必须使用以下链接激活您的å¸å·: + +{U_ACTIVATE} + +请牢记您的密ç , 因为所有密ç å‡ç»è¿‡åŠ å¯†å¤„ç†, 系统管ç†å‘˜ä¹Ÿæ— æ³•å–å¾—. 然而如果您忘记了密ç , 您å¯ä»¥é‡æ–°ç”³è¯·ä¸€ä¸ªæ–°çš„密ç . + +感谢您的注册. + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/index.htm b/includes/shared/phpbb2/language/lang_chinese/index.htm new file mode 100644 index 00000000..77e39010 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/index.htm @@ -0,0 +1,9 @@ + + +phpBB-WAP + + + + + + diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_admin.php b/includes/shared/phpbb2/language/lang_chinese/lang_admin.php new file mode 100644 index 00000000..901a8021 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_admin.php @@ -0,0 +1,913 @@ +å¼€å‘者:phpBB Group
ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð´ WAP: Гутник Игорь ( чел )
中文phpBB-WAP:(爱疯的云)'; +$lang['Main_index'] = '首页'; +$lang['Forum_stats'] = '论å›ç»Ÿè®¡'; +$lang['Admin_Index'] = 'åŽå°é¢æ¿'; +$lang['Preview_forum'] = 'æµè§ˆè®ºå›'; + +$lang['Click_return_admin_index'] = '点击 %s这里%s 返回超级管ç†é¢æ¿é¦–页'; + +// 统计 +$lang['Statistic'] = '统计'; +$lang['Value'] = '值'; +$lang['Number_posts'] = '主题数é‡'; +$lang['Posts_per_day'] = 'å¹³å‡æ¯å¤©å‘表帖å­æ•°é‡'; +$lang['Number_topics'] = '帖å­æ•°é‡'; +$lang['Topics_per_day'] = 'å¹³å‡æ¯å¤©å‘表主题数é‡'; +$lang['Number_users'] = '论å›å·²æ³¨å†Œç”¨æˆ·æ•°é‡'; +$lang['Users_per_day'] = 'å¹³å‡æ¯æ—¥æ³¨å†Œç”¨æˆ·æ•°é‡'; +$lang['Board_started'] = '论å›å»ºè®¾æ—¥æœŸ'; +$lang['Avatar_dir_size'] = '头åƒç›®å½•å¤§å°'; +$lang['Database_size'] = 'æ•°æ®åº“大å°'; +$lang['Not_available'] = 'ä¸å¯ç”¨'; + +// å›¾ç‰‡éªŒè¯ +$lang['Visual_confirm'] = '图片验è¯'; +$lang['Visual_confirm_explain'] = '注册新用户时,è¦è¾“入图片验è¯'; + +// Gzip +$lang['Gzip_compression'] ='Gzip压缩'; +$lang['ON'] = 'å¼€å¯'; // 这是 Gzip 开关 +$lang['OFF'] = '关闭'; + + +// +// æ•°æ®åº“工具 +// +$lang['Database_Utilities'] = 'æ•°æ®å·¥å…·'; + +$lang['Restore'] = 'æ¢å¤'; +$lang['Backup'] = '备份'; +$lang['Restore_explain'] = '在这个选项中,您å¯ä»¥æ¢å¤phpBB-WAP所有数æ®ä¿¡æ¯ã€‚如果您的æœåŠ¡å™¨æ”¯æŒ GZIP 压缩的文件,æœåŠ¡å™¨å°†ä¼šè‡ªåŠ¨è§£åŽ‹æ‚¨æ‰€ä¸Šä¼ çš„压缩文件。注æ„: æ¢å¤è¿‡ç¨‹ä¸­å°†ä¼šå®Œå…¨è¦†ç›–所有现存的资料。数æ®åº“æ¢å¤è¿‡ç¨‹å¯èƒ½ä¼šèŠ±è´¹è¾ƒé•¿çš„时间,在æ¢å¤å®Œæˆå‰è¯·ä¸è¦å…³é—­æˆ–离开这个页é¢ã€‚'; +$lang['Backup_explain'] = '在这个选项中,您å¯ä»¥å¤‡ä»½phpBB-WAP所有数æ®ä¿¡æ¯ã€‚如果您有其它自行定义数æ®è¡¨æ”¾åœ¨phpBB-WAP论å›æ‰€ä½¿ç”¨çš„æ•°æ®åº“内,而且您也想备份这些的表格,请在下方的 附加数æ®è¡¨ æ å†…输入它们的å字并用英文逗å·åˆ†å¼€ï¼ˆä¾‹å¦‚:abc, cde) 如果您的æœåŠ¡å™¨æœ‰æ”¯æŒ GZIP 压缩格å¼ï¼Œæ‚¨å¯ä»¥åœ¨ä¸‹è½½å‰ä½¿ç”¨ GZIP 压缩æ¥å‡å°æ–‡ä»¶çš„大å°ã€‚'; + +$lang['Backup_options'] = '备份选项'; +$lang['Start_backup'] = '开始备份'; +$lang['Full_backup'] = '完整备份'; +$lang['Structure_backup'] = '结构备份'; +$lang['Data_backup'] = 'æ•°æ®å¤‡ä»½'; +$lang['Additional_tables'] = '附加表'; +$lang['Gzip_compress'] = 'gzip压缩格å¼'; +$lang['Select_file'] = '选择文件'; +$lang['Start_Restore'] = '开始æ¢å¤'; + +$lang['Restore_success'] = 'æ•°æ®åº“æˆåŠŸæ¢å¤ï¼
论å›å·²è¢«æ¢å¤æˆå¤‡ä»½æ—¶çš„状æ€ã€‚'; +$lang['Backup_download'] = '请等待。。。您的备份文件将被下载ï¼'; +$lang['Backups_not_supported'] = '对ä¸èµ·ï¼å¤‡ä»½æ•°æ®ä¸æ”¯æŒæ‚¨çš„æ•°æ®åº“系统'; + +$lang['Restore_Error_uploading'] = '上传备份文件有误'; +$lang['Restore_Error_filename'] = '文件å称有问题,请é‡é€‰æ–‡ä»¶å†è¯•'; +$lang['Restore_Error_decompress'] = 'ä¸èƒ½è§£åŽ‹ Gzip 文件,请上传纯文本文件'; +$lang['Restore_Error_no_file'] = '没有文件å¯ä»¥ä¸Šä¼ '; + +$lang['Search_Flood_Interval'] ='æœç´¢è®ºå›æ—¶é—´é—´éš”(å•ä½/秒)'; +$lang['Search_Flood_Interval_explain'] ='防止用户æ¶æ„æœç´¢ï¼Œå‡è½»æœåŠ¡å™¨çš„压力'; + +// +// æƒé™ +// +$lang['Select_a_User'] = '选择用户'; +$lang['Select_a_Group'] = '选择å°ç»„'; +$lang['Select_a_Forum'] = '选择论å›'; +$lang['Auth_Control_User'] = '用户æƒé™'; +$lang['Auth_Control_Group'] = 'å°ç»„æƒé™'; +$lang['Auth_Control_Forum'] = '论å›æƒé™'; +$lang['Look_up_User'] = '选择用户'; +$lang['Look_up_Group'] = '选择å°ç»„'; +$lang['Look_up_Forum'] = '选择论å›'; + +$lang['Group_auth_explain'] = '在这个选项中您å¯ä»¥æ›´æ”¹å°ç»„çš„æƒé™è®¾å®šåŠæŒ‡å®šç®¡ç†å‘˜èµ„格。请注æ„,修改å°ç»„æƒé™è®¾å®šåŽï¼Œç‹¬ç«‹çš„用户æƒé™å¯èƒ½ä»ç„¶å¯ä»¥ä½¿ç”¨æˆ·è¿›å…¥é™åˆ¶è®ºå›ã€‚如果å‘生这ç§æƒ…况将会显示æƒé™å†²çªçš„警告。'; +$lang['User_auth_explain'] = '在这个选项中您å¯ä»¥æ›´æ”¹ç”¨æˆ·çš„æƒé™è®¾å®šåŠæŒ‡å®šç®¡ç†å‘˜èµ„格。请注æ„,修改用户æƒé™è®¾å®šåŽï¼Œç‹¬ç«‹çš„用户æƒé™å¯èƒ½ä»ç„¶å¯ä»¥ä½¿ç”¨æˆ·è¿›å…¥é™åˆ¶è®ºå›ã€‚如果å‘生这ç§æƒ…况将会显示æƒé™å†²çªçš„警告。'; +$lang['Forum_auth_explain'] = '在这个选项中您å¯ä»¥æ›´æ”¹è®ºå›çš„使用æƒé™ã€‚您å¯ä»¥é€‰æ‹©ä½¿ç”¨ç®€å•æˆ–是高级两ç§æ¨¡å¼ï¼Œé«˜çº§æ¨¡å¼èƒ½æ供您完整的æƒé™è®¾å®šæŽ§åˆ¶ã€‚请注æ„,所有的改å˜éƒ½å°†ä¼šå½±å“到用户的论å›ä½¿ç”¨æƒé™ã€‚'; + +$lang['Simple_mode'] = '简æ´æ¨¡å¼'; +$lang['Advanced_mode'] = '高级模å¼'; +$lang['Moderator_status'] = 'æˆä¸ºç‰ˆä¸»'; + +$lang['Allowed_Access'] = 'å…许进入'; +$lang['Disallowed_Access'] = 'ç¦æ­¢è¿›å…¥'; +$lang['Is_Moderator'] = '是版主'; +$lang['Not_Moderator'] = 'ä¸æ˜¯ç‰ˆä¸»'; + +$lang['Conflict_warning'] = 'æƒé™å†²çªè­¦å‘Š'; +$lang['Conflict_access_userauth'] = '这个用户ä»ç„¶å¯ä»¥é€šè¿‡å°ç»„æˆå‘˜çš„资格进入特定的论å›ã€‚您å¯ä»¥æ›´æ”¹å°ç»„æƒé™æˆ–是å–消这个用户的å°ç»„资格æ¥ç¦æ­¢è¯¥ç”¨æˆ·è¿›å…¥é™åˆ¶çš„论å›ã€‚å°ç»„æƒé™å¦‚下:'; +$lang['Conflict_mod_userauth'] = '这个用户ä»ç„¶å¯ä»¥é€šè¿‡å°ç»„æˆå‘˜çš„资格拥有论å›ç®¡ç†çš„æƒé™ã€‚您å¯ä»¥æ›´æ”¹å°ç»„æƒé™æˆ–是å–消这个用户的æƒé™æ¥ç¦æ­¢è¯¥ç”¨æˆ·è¿›è¡Œè®ºå›ç®¡ç†ã€‚论å›ç®¡ç†æƒé™å¦‚下:'; + +$lang['Conflict_access_groupauth'] = '下列用户ä»ç„¶å¯ä»¥é€šè¿‡ç”¨æˆ·æƒé™è®¾å®šè¿›å…¥è¿™ä¸ªç‰¹å®šçš„论å›ã€‚您å¯ä»¥æ›´æ”¹ç”¨æˆ·æƒé™æ¥å–消他们进入é™åˆ¶çš„论å›ã€‚用户æƒé™å¦‚下:'; +$lang['Conflict_mod_groupauth'] = '下列用户ä¾ç„¶å¯ä»¥é€šè¿‡ä»–们的用户æƒé™æ‹¥æœ‰è®ºå›ç®¡ç†çš„æƒé™ã€‚您å¯ä»¥æ›´æ”¹ç”¨æˆ·æƒé™æ¥å–消他们的论å›ç®¡ç†æƒé™ã€‚用户æƒé™å¦‚下:'; + +$lang['Public'] = '公开'; +$lang['Private'] = '加密'; +$lang['Registered'] = '注册用户'; +$lang['Administrators'] = '超级用户'; +$lang['Hidden'] = 'éšè—'; + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! +$lang['Forum_ALL'] = '全部'; +$lang['Forum_REG'] = '注册'; +$lang['Forum_PRIVATE'] = 'æµè§ˆ'; +$lang['Forum_MOD'] = '版主'; +$lang['Forum_ADMIN'] = '管ç†å‘˜'; + +$lang['View'] = 'æµè§ˆ'; +$lang['Read'] = '阅读'; +$lang['Post'] = 'å‘表'; +$lang['Reply'] = '回å¤'; +$lang['Edit'] = '编辑'; +$lang['Delete'] = '删除'; +$lang['Sticky'] = '置顶'; +$lang['Announce'] = '公告'; +$lang['Vote'] = '投票'; +$lang['Pollcreate'] = '建立投票'; + +$lang['Permissions'] = 'æƒé™è®¾å®š'; +$lang['Simple_Permission'] = '基本æƒé™'; + +$lang['User_Level'] = '用户æƒé™'; +$lang['Auth_User'] = '注册用户'; +$lang['Auth_Admin'] = '超级管ç†å‘˜'; +$lang['Group_memberships'] = '用户å°ç»„列表'; +$lang['Usergroup_members'] = 'å°ç»„æˆå‘˜åˆ—表'; + +$lang['Forum_auth_updated'] = '论å›æƒé™è®¾å®šæ›´æ–°'; +$lang['User_auth_updated'] = '用户æƒé™è®¾å®šæ›´æ–°'; +$lang['Group_auth_updated'] = 'å°ç»„æƒé™è®¾å®šæ›´æ–°'; + +$lang['Auth_updated'] = 'æƒé™è®¾å®šå·²ç»æ›´æ–°'; +$lang['Click_return_userauth'] = '点击 %s这里%s 返回用户æƒé™è®¾å®š'; +$lang['Click_return_groupauth'] = '点击 %s这里%s 返回å°ç»„æƒé™è®¾å®š'; +$lang['Click_return_forumauth'] = '点击 %s这里%s 返回论å›æƒé™è®¾å®š'; + + +// +// 黑åå• +// +$lang['Ban_control'] = '黑åå•æŽ§åˆ¶é¢æ¿'; +$lang['Ban_explain'] = '在这个选项中您å¯ä»¥è®¾å®šç”¨æˆ·çš„黑åå•ï¼Œæ‚¨å¯ä»¥æŒ‡å®šä¸€ä¸ªç”¨æˆ·ä¸ºé»‘åå•ï¼Œä¸€ä¸ªæŒ‡å®šèŒƒå›´çš„ IP 地å€æˆ–是计算机主机å称,这些方法ç¦æ­¢è¢«å°é”的用户进入论å›é¦–页,您也å¯ä»¥æŒ‡å®šå°é”电å­é‚®ä»¶åœ°å€æ¥é˜²æ­¢æ³¨å†Œç”¨æˆ·ä½¿ç”¨ä¸åŒçš„å¸å·é‡å¤æ³¨å†Œï¼Œè¯·æ³¨æ„当您åªæ˜¯å°é”一个电å­é‚®ä»¶åœ°å€æ—¶å°†ä¸ä¼šå½±å“到用户在您论å›çš„登陆或是å‘表文章,您应该使用å‰é¢ä¸¤ç§æ–¹å¼å…¶ä¸­ä¹‹ä¸€æˆ–是两ç§ä¸€èµ·æ¥è®¾ç½®é»‘åå•ã€‚'; +$lang['Ban_explain_warn'] = '当您输入一个IP地å€èŒƒå›´æ—¶ï¼Œè¿™ä¸ªèŒƒå›´å†…所有的IP地å€éƒ½å°†ä¼šè¢«å°é”,您å¯ä»¥ä½¿ç”¨ç»Ÿé…符 * 定义è¦å°é”çš„ip地å€æ¥é™ä½Žè¢«æ”»å‡»çš„å¯èƒ½ï¼Œå¦‚果您一定è¦è¾“入一个范围请尽é‡ä¿æŒç²¾ç®€å’Œé€‚当以å…å½±å“正常的使用。'; + +$lang['Select_username'] = '选择一个用户å称'; +$lang['Select_ip'] = '选择一个 IP 地å€'; +$lang['Select_email'] = '选择一个邮件地å€'; + +$lang['Ban_username'] = '添加黑åå•ç”¨æˆ·'; +$lang['Ban_username_explain'] = '您å¯ä»¥ä½¿ç”¨é¼ æ ‡å’Œç»„åˆé”®ï¼ˆå¦‚: Ctrl 或 Shift)一次值得多个用户å称为黑åå•'; + +$lang['Ban_IP'] = '添加IP黑åå•'; +$lang['Ban_IP_explain'] = 'è¦æŒ‡å®šå¤šä¸ªä¸åŒçš„ IP 地å€æˆ–是主机å称,请使用英文逗å·ï¼ˆ,)æ¥åˆ†éš”它们,è¦æŒ‡å®š IP 地å€çš„范围,请使用(-)æ¥åˆ†éš”起始地å€åŠç»“æŸåœ°å€ï¼Œæˆ–是使用统é…符(*)'; + +$lang['Ban_email'] = '添加黑åå• E-mail'; +$lang['Ban_email_explain'] = 'è¦æŒ‡å®šå¤šä¸ªä¸åŒçš„电å­é‚®ä»¶åœ°å€ï¼Œè¯·ä½¿ç”¨é€—å·ï¼ˆ,)æ¥åˆ†éš”它们,或是使用通é…符(*),例如:*@hotmail.com'; + +$lang['Unban_username'] = '解除用户黑åå•'; + +$lang['Unban_IP'] = '解除 IP 黑åå•'; + +$lang['Unban_email'] = '解除黑åå• E-mail'; + +$lang['No_banned_users'] = '没有用户被列入黑åå•ï¼'; +$lang['No_banned_ip'] = '没有 IP 黑åå•'; +$lang['No_banned_email'] = '没有电å­é‚®ä»¶åœ°å€é»‘åå•'; + +$lang['Ban_update_sucessful'] = '黑åå•åˆ—表已ç»æˆåŠŸæ›´æ–°'; +$lang['Click_return_banadmin'] = '点击 %s这里%s 返回黑åå•ç®¡ç†é¢æ¿'; + + +// +// 论å›åŸºæœ¬é…ç½® +// +$lang['General_Config'] = '基本é…ç½®'; +$lang['Config_explain'] = '在这里您å¯ä»¥æ›´æ”¹ç½‘站的基本é…ç½®'; + +$lang['Click_return_config'] = '点击 %s这里%s 返回基本é…ç½®'; + +$lang['General_settings'] = '论å›åŸºæœ¬è®¾ç½®'; +$lang['Server_name'] = 'æœåŠ¡å™¨å称'; +$lang['Server_name_explain'] = 'è¿è¡Œè¯¥ç¨‹åºçš„æœåŠ¡å™¨å称'; +$lang['Script_path'] = '脚本路径'; +$lang['Script_path_explain'] = '与程åºç›¸å¯¹åº”的路径'; +$lang['Server_port'] = 'æœåŠ¡å™¨ç«¯å£'; +$lang['Server_port_explain'] = '您的æœåŠ¡å™¨æ‰€è¿è¡Œçš„端å£ï¼Œé»˜è®¤å€¼æ˜¯80,åªæœ‰åœ¨éžé»˜è®¤å€¼æ—¶æ”¹å˜è¿™ä¸ªé€‰é¡¹'; +$lang['Site_name'] = '域å(ä¸ç”¨http://)'; +$lang['Site_desc'] = '网站æè¿°'; +$lang['Board_disable'] = '是å¦åœæ­¢ä½¿ç”¨ç½‘ç«™'; +$lang['Board_disable_explain'] = '这将会关闭网站,当您执行这个设定时请勿退出,å¦åˆ™æ‚¨å°†æ— æ³•é‡æ–°ç™»é™†ï¼'; +$lang['Acct_activation'] = '是å¦å¼€å¯ç”¨æˆ·å¸å·æ¿€æ´»åŠŸèƒ½'; +$lang['Acc_None'] = '关闭'; // These three entries are the type of activation +$lang['Acc_User'] = '注册用户自行激活'; +$lang['Acc_Admin'] = '超级用户审核激活'; + +$lang['Abilities_settings'] = '用户åŠè®ºå›åŸºæœ¬è®¾å®š'; +$lang['Max_poll_options'] = 'å…许å‘起投票项目的最大数é‡'; +$lang['Flood_Interval'] = '论å›å‘帖间隔时间(å•ä½/秒)'; +$lang['Flood_Interval_explain'] = '防止用户æ¶æ„刷帖'; +$lang['Board_email_form'] = '在线å‘é€ E-mail 开关'; +$lang['Board_email_form_explain'] = 'å¼€å¯ä¹‹åŽï¼Œç”¨æˆ·å¯ä»¥é€šè¿‡æœ¬ç«™åœ¨çº¿å‘é€ç”µå­é‚®ä»¶ç»™å¯¹æ–¹'; +$lang['Topics_per_page'] = '论å›æ¯é¡µæ˜¾ç¤ºä¸»é¢˜çš„æ•°é‡'; +$lang['Posts_per_page'] = '主题æ¯é¡µæ˜¾ç¤ºå¸–å­çš„æ•°é‡'; +$lang['Hot_threshold'] = '热门è¯é¢˜çš„æ•°é‡é™åˆ¶'; +$lang['Default_style'] = '默认风格'; +$lang['Override_style'] = '忽略用户选择的风格'; +$lang['Override_style_explain'] = '将用户所选的风格改为默认风格'; +$lang['Default_language'] = '默认语言'; +$lang['Date_format'] = '默认日期格å¼ï¼ˆY=å¹´,M=月,D=æ—¥,H=æ—¶,i=分)'; +$lang['System_timezone'] = '默认时区(GMT+8 = 北京时间)'; +$lang['Enable_gzip'] = '是å¦å¼€å¯ GZip 文件压缩'; +$lang['Enable_prune'] = '是å¦å¼€å¯è®ºå›è‡ªåŠ¨æ¸…ç†ä¸»é¢˜'; +$lang['Allow_HTML'] = '是å¦å…许使用 HTML 语法'; +$lang['Allow_BBCode'] = '是å¦å…许使用 BBCode'; +$lang['Allowed_tags'] = '是å¦å…许使用 HTML 标签'; +$lang['Allowed_tags_explain'] = '以英文逗å·åˆ†éš” HTML 标签'; +$lang['Allow_smilies'] = '是å¦å…许使用表情'; +$lang['Smilies_path'] = '表情的路径'; +$lang['Smilies_path_explain'] = '默认在您 phpBB-WAP 根目录的路径,例如:images/smilies'; +$lang['Allow_sig'] = '是å¦å…许使用论å›å¸–å­ç­¾å'; +$lang['Max_sig_length'] = '论å›å¸–å­ç­¾å长度é™åˆ¶'; +$lang['Max_sig_length_explain'] = '用户个人签å最多å¯ä½¿ç”¨å­—数(å•ä½/字节)'; +$lang['Allow_name_change'] = '是å¦å…许更改用户å'; + +// å¤´åƒ +$lang['Avatar_settings'] = '头åƒè®¾ç½®'; +$lang['Allow_local'] = '是å¦å…许使用系统相册图片'; +$lang['Allow_remote'] = '是å¦å…许链接外站图片'; +$lang['Allow_remote_explain'] = '如果å…许,用户将å¯ä»¥ä»Žå…¶ä»–网å€é“¾æŽ¥å¤´åƒå›¾ç‰‡'; +$lang['Allow_upload'] = '是å¦å…许用户上传头åƒ'; +$lang['Max_filesize'] = '头åƒæ–‡ä»¶å¤§å°é™åˆ¶ï¼ˆå•ä½/B)'; +$lang['Max_filesize_explain'] = '用户上传头åƒå›¾ç‰‡çš„大å°é™åˆ¶'; +$lang['Max_avatar_size'] = '头åƒæ–‡ä»¶çš„åƒç´ é™åˆ¶'; +$lang['Max_avatar_size_explain'] = '(最大高度 x 最大宽度)'; +$lang['Avatar_storage_path'] = '会员头åƒçš„储存路径'; +$lang['Avatar_storage_path_explain'] = '在您 phpBB-WAP 根目录底下的路径,例如:images/avatars'; +$lang['Avatar_gallery_path'] = '系统相册的储存路径'; +$lang['Avatar_gallery_path_explain'] = '在您 phpBB-WAP 根目录底下的路径,例如:images/avatars/gallery'; + +// COPPA ,与中国无关无需汉化 +$lang['COPPA_settings'] = 'COPPA Settings'; +$lang['COPPA_fax'] = 'COPPA Fax Number'; +$lang['COPPA_mail'] = 'COPPA Mailing Address'; +$lang['COPPA_mail_explain'] = 'This is the mailing address where parents will send COPPA registration forms'; + +// 电å­é‚®ä»¶ +$lang['Email_settings'] = 'E-mail设置'; +$lang['Admin_email'] = '管ç†å‘˜E-mail'; +$lang['Email_sig'] = 'E-mailç­¾å'; +$lang['Email_sig_explain'] = '这个签å档将会被附加在所有由论å›ç³»ç»Ÿé€å‡ºçš„电å­é‚®ä»¶ä¸­'; +$lang['Use_SMTP'] = '是å¦ä½¿ç”¨ SMTP æœåŠ¡å™¨å‘é€ç”µå­é‚®ä»¶'; +$lang['Use_SMTP_explain'] = '如果您想è¦ä½¿ç”¨ SMTP æœåŠ¡å™¨å‘é€ç”µå­é‚®ä»¶è¯·é€‰æ‹© 是'; +$lang['SMTP_server'] = 'SMTP æœåŠ¡å™¨å称(例如:smtp.phpbb-wap.com)'; +$lang['SMTP_username'] = 'SMTP 用户å(例如:username)'; +$lang['SMTP_username_explain'] = 'åªæœ‰æ‚¨çš„ SMTP æœåŠ¡å™¨è¦æ±‚用户时æ‰å¡«å†™è¿™ä¸ªé€‰é¡¹'; +$lang['SMTP_password'] = 'SMTP 密ç ï¼ˆä¾‹å¦‚:password)'; +$lang['SMTP_password_explain'] = 'åªæœ‰æ‚¨çš„ SMTP æœåŠ¡å™¨è¦æ±‚用户时æ‰å¡«å†™è¿™ä¸ªé€‰é¡¹'; + +// ç«™å†…ä¿¡æ¯ +$lang['Disable_privmsg'] = '用户站内信æ¯åŠŸèƒ½å¼€å…³'; +$lang['Inbox_limits'] = '站内信æ¯çš„ 收信箱 最大数é‡ï¼ˆå•ä½/æ¡ï¼‰'; +$lang['Sentbox_limits'] = '站内信æ¯çš„ å‘ä¿¡ç®± 最大数é‡ï¼ˆå•ä½/æ¡ï¼‰'; +$lang['Savebox_limits'] = '站内信æ¯çš„ è‰ç¨¿ç®± 最大容é‡ï¼ˆå•ä½/æ¡ï¼‰'; + +// cookies +$lang['Cookie_settings'] = 'Cookie 设定'; +$lang['Cookie_settings_explain'] = 'è¿™äº›è®¾å®šæŽ§åˆ¶ç€ Cookie 的定义,就一般的情况,使用系统预设值就å¯ä»¥äº†ã€‚如果您è¦æ›´æ”¹è¿™äº›è®¾å®šï¼Œè¯·è°¨æ…Žè®¾å®šï¼Œä¸å½“的设定将影å“用户的登陆'; +$lang['Cookie_domain'] = 'Cookie 域å'; +$lang['Cookie_name'] = 'Cookie å称'; +$lang['Cookie_path'] = 'Cookie 路径'; +$lang['Cookie_secure'] = 'Cookie 加密(https)'; +$lang['Cookie_secure_explain'] = '如果您的æœåŠ¡å™¨è¿è¡ŒäºŽ SSL æ–¹å¼è¯·è®¾ç½®ä¸ºå¼€å¯ï¼Œå¦åˆ™è¯·è®¾ç½®ä¸ºå…³é—­'; +$lang['Session_length'] = 'Session 有效期é™ï¼ˆç§’)'; + + +// +// 论å›ç®¡ç† +// +$lang['Forum_admin'] = '论å›ç®¡ç†'; +$lang['Forum_admin_explain'] = '在这个控制é¢æ¿é‡Œæ‚¨å¯ä»¥å¢žåŠ ã€åˆ é™¤ã€ç¼–辑和é‡æ–°æŽ’列分类和论å›ï¼Œä»¥åŠè®¾å®šè®ºå›å†…的相应资料'; +$lang['Edit_forum'] = '编辑论å›'; +$lang['Create_forum'] = '创建论å›'; +$lang['Create_category'] = '创建分类'; +$lang['Remove'] = '删除'; +$lang['Action'] = '执行æ“作'; +$lang['Update_order'] = '更新顺åº'; +$lang['Config_updated'] = '论å›é…置更改æˆåŠŸ'; +$lang['Edit'] = '编辑'; +$lang['Delete'] = '删除'; +$lang['Move_up'] = '上移'; +$lang['Move_down'] = '下移'; +$lang['Resync'] = 'åŒæ­¥'; +$lang['No_mode'] = '没有指定模å¼'; +$lang['Forum_edit_delete_explain'] = '您å¯ä»¥ä½¿ç”¨ä¸‹åˆ—表格æ¥è°ƒæ•´ä¸€èˆ¬çš„设定选项,用户åŠç‰ˆé¢è®¾å®šè¯·ä½¿ç”¨ç”»é¢å·¦æ–¹ï¼ˆç³»ç»Ÿç®¡ç†ï¼‰çš„相关链接.'; + +$lang['Move_contents'] = '移动所有内容'; +$lang['Forum_delete'] = '删除论å›'; +$lang['Forum_delete_explain'] = '您å¯ä»¥ä½¿ç”¨ä¸‹åˆ—表格æ¥åˆ é™¤ç‰ˆé¢æˆ–分类,并å¯ç§»åŠ¨åŒ…å«åœ¨ç‰ˆé¢å†…的所有内容'; + +$lang['Status_locked'] = 'é”定'; +$lang['Status_unlocked'] = '解é”'; +$lang['Forum_settings'] = '论å›åŸºæœ¬è®¾å®š'; +$lang['Forum_name'] = '论å›å称'; +$lang['Forum_desc'] = '论å›æè¿°'; +$lang['Forum_status'] = '论å›çŠ¶æ€'; +$lang['Forum_pruning'] = '计划清ç†'; +$lang['Forum_postcount'] = '论å›å‘帖统计'; + +$lang['prune_freq'] = '定期检查周期'; +$lang['prune_days'] = '删除在几天内没有文章回覆的主题'; +$lang['Set_prune_data'] = '您已ç»å¼€å¯ç‰ˆé¢è®¡åˆ’删文的功能, 但并未完æˆç›¸å…³è®¾å®š. 请回到上一步设定相关的项目'; + +$lang['Move_and_Delete'] = '移动删除'; + +$lang['Delete_all_posts'] = '删除所有å‘帖'; +$lang['Nowhere_to_move'] = '没有移动的ä½ç½®'; + +$lang['Edit_Category'] = '编辑分类å称'; +$lang['Edit_Category_explain'] = '修改分类å称'; + +$lang['Forums_updated'] = '版é¢åŠåˆ†ç±»èµ„æ–™æˆåŠŸæ›´æ–°'; + +$lang['Must_delete_forums'] = '在删除这个分类之å‰ï¼Œæ‚¨å¿…须先删除分类底下的所有版é¢'; + +$lang['Click_return_forumadmin'] = '点击 %s这里%s 返回版é¢ç®¡ç†'; + + +// +// è¡¨æƒ…ç®¡ç† +// +$lang['smiley_title'] = '表情符å·ç¼–辑'; +$lang['smile_desc'] = '在这里,您å¯ä»¥ç¼–辑表情符,以便用户在å‘表帖å­æˆ–是站内信æ¯ä¸­ä½¿ç”¨'; + +$lang['smiley_config'] = '表情符å·è®¾å®š'; +$lang['smiley_code'] = '表情代ç '; +$lang['smiley_url'] = '表情图片'; +$lang['smiley_emot'] = '表情æè¿°'; +$lang['smile_add'] = '增加一个新表情'; +$lang['Smile'] = '表情图标'; +$lang['Emotion'] = '表情æè¿°'; + +$lang['Select_pak'] = '选择的表情符å·åŒ…(.pak)文件'; +$lang['replace_existing'] = '替æ¢çŽ°æœ‰çš„表情符å·'; +$lang['keep_existing'] = 'ä¿ç•™çŽ°æœ‰çš„表情符å·'; +$lang['smiley_import_inst'] = '您应将表情符å·åŒ…解压并上传至适当的表情符å·ç›®å½•ï¼Œç„¶åŽé€‰æ‹©æ­£ç¡®çš„项目导入表情符å·'; +$lang['smiley_import'] = '导入表情符å·åŒ…'; +$lang['choose_smile_pak'] = '选择一个表情符å·åŒ…(.pak)文件'; +$lang['import'] = '导入表情符å·'; +$lang['smile_conflicts'] = '在冲çªçš„情况下所应åšå‡ºçš„选择'; +$lang['del_existing_smileys'] = '导入å‰å…ˆåˆ é™¤æ—§çš„表情符å·'; +$lang['import_smile_pack'] = '导入表情符å·åŒ…'; +$lang['export_smile_pack'] = '下载表情符å·åŒ…'; +$lang['export_smiles'] = '如您希望将现有的表情符å·åˆ¶ä½œæˆè¡¨æƒ…符å·åŒ…,请点击 %s这里%s 下载 smiles.pak 文件,并确定其åŽç¼€ä¸º.pak'; + +$lang['smiley_add_success'] = '新的表情符å·å·²ç»æˆåŠŸå¢žåŠ '; +$lang['smiley_edit_success'] = '表情符å·å·²ç»æˆåŠŸæ›´æ–°'; +$lang['smiley_import_success'] = '表情符å·åŒ…å·²ç»æˆåŠŸå¯¼å…¥!'; +$lang['smiley_del_success'] = '表情符å·å·²ç»æˆåŠŸåˆ é™¤'; +$lang['Click_return_smileadmin'] = '点击 %s这里%s 返回表情符å·ç¼–辑'; + +// +// ä¼šå‘˜ç®¡ç† +// +$lang['User_admin'] = '用户管ç†'; +$lang['User_admin_explain'] = '在这个控制é¢æ¿é‡Œï¼Œæ‚¨å¯ä»¥å˜æ›´ç”¨æˆ·çš„个人资料以åŠçŽ°å­˜çš„特殊选项,如果您è¦ä¿®æ”¹ç”¨æˆ·çš„æƒé™ï¼Œè¯·ä½¿ç”¨ç”¨æˆ·åŠå°ç»„管ç†çš„æƒé™è®¾å®šåŠŸèƒ½'; + +$lang['Look_up_user'] = '查看用户'; +$lang['Admin_users_list'] = '会员列表'; + + +$lang['Admin_user_fail'] = '无法更新用户的个人资料'; +$lang['Admin_user_updated'] = '用户的个人资料已ç»æˆåŠŸæ›´æ–°'; +$lang['Click_return_useradmin'] = '点击 %s这里%s 返回用户管ç†'; +$lang['User_zvanie'] = '你在商店购买的标题'; + +$lang['User_delete'] = '删除用户'; +$lang['User_delete_explain'] = '点击这里将会删除用户,这个选择将无法æ¢å¤'; +$lang['User_deleted'] = '用户已æˆåŠŸåˆ é™¤'; + +$lang['User_status'] = '用户å¸å·å·²æ¿€æ´»'; +$lang['User_allowpm'] = 'å…许使用站内信æ¯'; +$lang['User_allowavatar'] = 'å…许使用头åƒ'; + +$lang['Admin_avatar_explain'] = '在这个选项您å¯ä»¥æµè§ˆæˆ–删除用户现存的个性头åƒ'; + +$lang['User_special'] = '管ç†å‘˜ä¸“区'; +$lang['User_special_explain'] = '您å¯ä»¥å˜æ›´ç”¨æˆ·çš„å¸å·æ¿€æ´»çŠ¶æ€åŠå…¶å®ƒæœªæŽˆæƒç”¨æˆ·çš„选项设定,普通用户无法自行改å˜è¿™äº›è®¾å®š'; + + +// +// å°ç»„ç®¡ç† +// +$lang['Group_administration'] = 'å°ç»„管ç†'; +$lang['Group_admin_explain'] = '在这个控制é¢æ¿é‡Œæ‚¨å¯ä»¥ç®¡ç†æ‰€æœ‰çš„用户å°ç»„,您å¯ä»¥å»ºç«‹ã€åˆ é™¤ä»¥åŠç¼–辑现存的用户å°ç»„,您å¯ä»¥æŒ‡å®šå°ç»„管ç†å‘˜ï¼Œè®¾å®šå°ç»„模å¼ï¼ˆå¼€æ”¾ã€å°é—­ã€éšè—)以åŠå°ç»„çš„å称和æè¿°'; +$lang['Error_updating_groups'] = 'å°ç»„æ›´æ–°æ—¶å‘生错误'; +$lang['Updated_group'] = 'å°ç»„å·²ç»æˆåŠŸæ›´æ–°'; +$lang['Added_new_group'] = 'æ–°çš„å°ç»„å·²æˆåŠŸæ·»åŠ '; +$lang['Deleted_group'] = 'å°ç»„å·²æˆåŠŸåˆ é™¤'; +$lang['New_group'] = '新建å°ç»„'; +$lang['Edit_group'] = '编辑å°ç»„'; +$lang['group_name'] = 'å°ç»„å称'; +$lang['group_description'] = 'å°ç»„æè¿°'; +$lang['group_moderator'] = 'å°ç»„管ç†å‘˜'; +$lang['group_status'] = 'å°ç»„状æ€'; +$lang['group_open'] = '开放å°ç»„'; +$lang['group_closed'] = '关闭å°ç»„'; +$lang['group_hidden'] = 'éšè—å°ç»„'; +$lang['group_delete'] = '删除å°ç»„'; +$lang['group_delete_check'] = '删除å°ç»„'; +$lang['group_gb_enable'] = 'å°ç»„全局开关'; +$lang['submit_group_changes'] = '更改'; +$lang['reset_group_changes'] = 'é‡ç½®'; +$lang['No_group_name'] = '您必许指定å°ç»„å称'; +$lang['No_group_moderator'] = '您必许指定å°ç»„的管ç†å‘˜'; +$lang['No_group_mode'] = '您必须指定å°ç»„状æ€ï¼ˆå¼€æ”¾ã€å°é—­ã€éšè—)'; +$lang['No_group_action'] = '没有指定æ“作'; +$lang['delete_group_moderator'] = '是å¦åˆ é™¤åŽŸæœ‰çš„å°ç»„管ç†å‘˜ï¼Ÿ'; +$lang['delete_moderator_explain'] = '如果您更改å°ç»„管ç†å‘˜è€Œä¸”勾选这个选项会将原有的å°ç»„管ç†å‘˜ä»Žå°ç»„中移除,如ä¸å‹¾é€‰ï¼Œè¿™ä¸ªç”¨æˆ·å°†æˆä¸ºå°ç»„的普通æˆå‘˜'; +$lang['Click_return_groupsadmin'] = '点击 %s这里%s 返回å°ç»„管ç†.'; +$lang['Select_group'] = '选择å°ç»„'; +$lang['Look_up_group'] = '查看å°ç»„'; + + +// +// è‡ªåŠ¨æ¸…ç† +// +$lang['Forum_Prune'] = '版é¢è®¡åˆ’清ç†'; +$lang['Forum_Prune_explain'] = '这将删除所有在é™å®šæ—¶é—´å†…没有回覆的主题,如果您没有指定时é™ï¼ˆæ—¥æ•°ï¼‰ï¼Œæ‰€æœ‰çš„主题都将会被删除,但是无法删除正在进行中的投票主题或是公告,您必须手动移除这些主题'; +$lang['Do_Prune'] = '执行计划清ç†'; +$lang['All_Forums'] = '全部版é¢'; +$lang['Prune_topics_not_posted'] = '删除在几天内没有文章回å¤çš„主题'; +$lang['Topics_pruned'] = '计划删除的主题'; +$lang['Posts_pruned'] = '计划删除的文章'; +$lang['Prune_success'] = 'æˆåŠŸå®Œæˆç‰ˆé¢æ–‡ç« åˆ é™¤'; + + +// +// 文字过滤 +// +$lang['Words_title'] = '文字过滤'; +$lang['Words_explain'] = '在这个控制é¢æ¿é‡Œæ‚¨å¯ä»¥å»ºç«‹ã€ç¼–辑åŠåˆ é™¤è¿‡æ»¤æ–‡å­—,这些指定的文字将会被过滤并以替æ¢æ–‡å­—显示,å¦å¤–用户也将无法使用å«æœ‰è¿™äº›é™å®šæ–‡å­—çš„å称æ¥æ³¨å†Œï¼Œé™å®šçš„å称å…许使用通用匹é…符 *,例如: *test* 代表包括 detestable等,test* 包括 testing等,*test 包括 detestç­‰'; +$lang['Word'] = '过滤文字'; +$lang['Edit_word_censor'] = '编辑过滤文字'; +$lang['Replacement'] = '替æ¢æ–‡å­—'; +$lang['Add_new_word'] = '增加过滤文字'; +$lang['Update_word'] = '更新过滤文字'; + +$lang['Must_enter_word'] = '您必须输入è¦è¿‡æ»¤çš„文字åŠå…¶æ›¿æ¢æ–‡å­—'; +$lang['No_word_selected'] = '您没有选择è¦ç¼–辑的过滤文字'; + +$lang['Word_updated'] = '您所选择的过滤文字已ç»æˆåŠŸæ›´æ–°'; +$lang['Word_added'] = '新的过滤文字已ç»æˆåŠŸåŠ å…¥'; +$lang['Word_removed'] = '您所选择的过滤文字已被æˆåŠŸç§»é™¤'; + +$lang['Click_return_wordadmin'] = '点击 %s这里%s 返回文字过滤'; + + +// +// ç¾¤å‘ Email +// +$lang['Mass_email_explain'] = '在这个选项里您å¯ä»¥å‘é€E-mail给所有的用户或是特定的å°ç»„çš„æˆå‘˜ï¼Œè¿™å°E-mail将被寄é€è‡³ç³»ç»Ÿç®¡ç†å‘˜æ供的E-mail信箱,并以密件副本的方å¼å¯„é€ç»™æ‰€æœ‰æ”¶ä»¶äººã€‚如果收件人数过多,系统需è¦è¾ƒé•¿çš„时间æ¥æ‰§è¡Œï¼Œè¯·åœ¨æ交é€å‡ºåŽè€å¿ƒç­‰å€™ï¼Œè¯·å‹¿åœ¨ç¨‹åºå®Œæˆä¹‹å‰åœæ­¢ç½‘页动作,当å‘é€å®Œæˆæ—¶å°†æ˜¾ç¤ºæ示'; +$lang['Compose'] = '群å‘邮件'; + +$lang['Recipients'] = '收件人'; +$lang['All_users'] = '所有用户'; + +$lang['Email_successfull'] = '邮件已ç»å¯„出'; +$lang['Click_return_massemail'] = '点击 %s这里%s 返回E-mail群å‘'; + + +// +// ç­‰çº§ç®¡ç† +// +$lang['Ranks_title'] = '等级管ç†'; +$lang['Ranks_explain'] = '在这个控制é¢æ¿é‡Œï¼Œæ‚¨å¯ä»¥åœ¨å¢žåŠ ã€ç¼–辑ã€æµè§ˆä»¥åŠåˆ é™¤ç­‰çº§ï¼Œæ‚¨ä¹Ÿå¯ä»¥ä½¿ç”¨ç­‰çº§åº”用于用户管ç†åŠŸèƒ½'; + +$lang['Add_new_rank'] = '新建等级'; + +$lang['Rank_title'] = '等级'; +$lang['Rank_special'] = '特殊等级'; +$lang['Rank_minimum'] = '至少需è¦å‘è´´'; +$lang['Rank_maximum'] = '至多需è¦å‘帖'; +$lang['Rank_image'] = '等级图片(请使用 phpBB-WAP çš„ç»å¯¹è·¯å¾„)'; +$lang['Rank_image_explain'] = '使用这个æ¥å®šä¹‰ç­‰çº§å›¾ç‰‡çš„路径'; + +$lang['Must_select_rank'] = '您必须选择一个等级'; +$lang['No_assigned_rank'] = '没有指定的等级'; + +$lang['Rank_updated'] = '等级设置已ç»æˆåŠŸæ›´æ–°'; +$lang['Rank_added'] = '新的等级已ç»æˆåŠŸåŠ å…¥'; +$lang['Rank_removed'] = '等级å称已被æˆåŠŸåˆ é™¤'; +$lang['No_update_ranks'] = '等级å称已ç»è¢«æˆåŠŸåˆ é™¤ï¼Œå°½ç®¡å¦‚此,使用该等级的用户å¸å·æ²¡æœ‰èŽ·å¾—更新,您需è¦æ‰‹åŠ¨å¤ç½®é‚£äº›ä½¿ç”¨è¿‡è¯¥ç­‰çº§çš„用户å¸å·'; + +$lang['Click_return_rankadmin'] = '点击 %s这里%s 返回等级管ç†'; + + +// +// ç¦æ­¢ä½¿ç”¨ç®¡ç†å‘˜ç”¨æˆ·å +// +$lang['Disallow_control'] = 'æ•æ„Ÿç”¨æˆ·å'; +$lang['Disallow_explain'] = '在这个选项中,您å¯ä»¥æŽ§åˆ¶ç¦æ­¢ä½¿ç”¨çš„用户å(å¯ä½¿ç”¨é€šé…符 *),请注æ„,您无法ç¦ç”¨å·²ç»æ³¨å†Œä½¿ç”¨çš„用户å,您必须先删除或更改这个用户å,æ‰èƒ½ä½¿ç”¨ç¦æ­¢ç®¡ç†å‘˜ç”¨æˆ·å的功能'; + +$lang['Delete_disallow'] = '删除'; +$lang['Delete_disallow_title'] = '删除ç¦æ­¢ä½¿ç”¨çš„用户å'; +$lang['Delete_disallow_explain'] = '您å¯ä»¥ä»Žåˆ—表中选择è¦ç§»é™¤ç¦æ­¢ä½¿ç”¨çš„用户å'; + +$lang['Add_disallow'] = '添加'; +$lang['Add_disallow_title'] = '增加ç¦æ­¢ä½¿ç”¨çš„用户å'; +$lang['Add_disallow_explain'] = '请输入用户å,您å¯ä»¥ä½¿ç”¨é€šé…符 * æ¥ç¦ç”¨èŒƒå›´è¾ƒå¤§çš„用户å'; + +$lang['No_disallowed'] = '没有ç¦æ­¢ä½¿ç”¨çš„用户å'; + +$lang['Disallowed_deleted'] = '您所选择的ç¦ç”¨å¸å·å称已æˆåŠŸè¢«ç§»é™¤'; +$lang['Disallow_successful'] = 'æ–°çš„ç¦æ­¢ä½¿ç”¨çš„用户åå·²ç»æˆåŠŸåŠ å…¥'; +$lang['Disallowed_already'] = '无法ç¦æ­¢ä½¿ç”¨æ‚¨æ‰€è¾“入的用户å,该用户åå¯èƒ½å·²åœ¨ç¦ç”¨åˆ—表内或已被注册使用'; + +$lang['Click_return_disallowadmin'] = '点击 %s这里%s 返回æ•æ„Ÿç”¨æˆ·å控制é¢æ¿'; + +// +// 安装 +// +$lang['Welcome_install'] = '欢迎使用 phpBB-WAP'; +$lang['Initial_config'] = '安装é…ç½®'; +$lang['DB_config'] = 'æ•°æ®åº“é…ç½®'; +$lang['Admin_config'] = '管ç†é…ç½®'; +$lang['continue_upgrade'] = '在您下载完系统设定文件(config.php)之åŽï¼Œæ‚¨å¯ä»¥æŒ‰ä¸‹ 继续å‡çº§ 的按钮继续下一步. 请在所有å‡çº§ç¨‹åºå®ŒæˆåŽå†ä¸Šä¼ è®¾å®šæ¡£.'; +$lang['upgrade_submit'] = '继续å‡çº§'; + +$lang['Installer_Error'] = '安装过程错误'; +$lang['Previous_Install'] = '您之å‰å·²ç»å®‰è£…过'; +$lang['Install_db_error'] = '安装时数æ®å‡ºé”™'; + +$lang['Re_install'] = '您先å‰å®‰è£…çš„ phpBB-WAP 论å›ç³»ç»Ÿæ­£åœ¨è¿è¡Œä¸­
如果您希望é‡æ–°å®‰è£… phpBB-WAP 论å›ç³»ç»Ÿè¯·é€‰æ‹© 是 的按钮,请注æ„,执行åŽå°†ä¼šç§»é™¤æ‰€æœ‰çš„现存资料,而且ä¸ä¼šæœ‰ä»»ä½•å¤‡ä»½ï¼ç³»ç»Ÿç®¡ç†å‘˜å¸å·åŠå¯†ç å°†è¢«é‡æ–°å»ºç«‹ï¼Œæ‰€æœ‰è®¾å®šä¹Ÿå°†ä¸ä¼šè¢«ä¿ç•™ã€‚
请在您按下 是 的按钮å‰è°¨æ…Žè€ƒè™‘ï¼'; + +$lang['Inst_Step_0'] = '感谢您选择 phpBB-WAP 论å›ç³»ç»Ÿï¼Œæ‚¨å¿…须填写下列资料以完æˆå®‰è£…程åºã€‚在安装å‰ï¼Œè¯·å…ˆç¡®å®šæ‚¨æ‰€è¦ä½¿ç”¨çš„æ•°æ®åº“å·²ç»å»ºç«‹'; + +$lang['Start_Install'] = '开始安装'; +$lang['Finish_Install'] = '完æˆå®‰è£…'; + +$lang['Default_lang'] = '默认语言'; +$lang['DB_Host'] = 'MySQL地å€'; +$lang['DB_Name'] = 'æ•°æ®åº“å称'; +$lang['DB_Username'] = 'æ•°æ®åº“用户å'; +$lang['DB_Password'] = 'æ•°æ®åº“密ç '; +$lang['Database'] = 'æ•°æ®åº“'; +$lang['Install_lang'] = '选择安装语言'; +$lang['dbms'] = 'MySQL版本'; +$lang['Table_Prefix'] = 'æ•°æ®è¡¨å‰ç¼€'; +$lang['Admin_Username'] = '管ç†å‘˜ç”¨æˆ·å'; +$lang['Admin_Password'] = '管ç†å‘˜å¯†ç '; +$lang['Admin_Password_confirm'] = '确认管ç†å‘˜å¯†ç '; + +$lang['Inst_Step_2'] = '您的网站管ç†å‘˜ç”¨æˆ·å·²ç»å»ºç«‹ï¼Œç›¸å…³åŸºæœ¬å®‰è£…过程已ç»å®Œæˆï¼Œæ‚¨å°†å¯ä»¥ä½¿ç”¨ç®¡ç†å‘˜ç”¨æˆ·å称对新安装的论å›è¿›è¡Œç®¡ç†ï¼Œè¯·æ£€æŸ¥æ•´ä½“设置资料并ä¾æ®æ‚¨çš„æ„愿进行任何修改,谢谢您选择 phpBB-WAP'; + +$lang['Unwriteable_config'] = '您的系统设定档无法写入,您å¯ä»¥ç‚¹å‡»ä¸‹æ–¹æŒ‰é’®ä¸‹è½½è®¾å®šæ–‡ä»¶ï¼Œå†å°†è¿™ä¸ªæ–‡ä»¶ä¸Šä¼ è‡³ phpBB-WAP 论å›çš„资料夹。在完æˆåŽæ‚¨å¿…须使用管ç†å‘˜å¸å·è·Ÿå¯†ç ç™»é™†å¹¶è¿›å…¥ç³»ç»Ÿç®¡ç†æŽ§åˆ¶é¢æ¿ï¼ˆåœ¨æ‚¨ç™»é™†åŽï¼Œä¸‹æ–¹å°†å‡ºçŽ°ä¸€ä¸ª “超级管ç†é¢æ¿â€ 的链接)检查您的基本é…置设定,最åŽæ„Ÿè°¢æ‚¨é€‰æ‹©ä½¿ç”¨å®‰è£…çš„ phpBB-WAP 论å›ç³»ç»Ÿ.'; +$lang['Download_config'] = '下载é…ç½®'; + +$lang['ftp_choose'] = '选择下载方å¼'; +$lang['ftp_option'] = '
在 FTP 设定完æˆåŽï¼Œæ‚¨å¯ä»¥ä½¿ç”¨è‡ªåŠ¨ä¸Šä¼ çš„功能'; +$lang['ftp_instructs'] = '您已ç»é€‰æ‹©ä½¿ç”¨ FTP 去自动安装您的 phpBB-WAP 论å›ã€‚请输入下列资料æ¥ç®€åŒ–这个过程。请注æ„:FTP 路径须跟您安装 phpBB-WAP çš„ FTP 路径完全相åŒ'; +$lang['ftp_info'] = '输入您的 FTP ä¿¡æ¯'; +$lang['Attempt_ftp'] = '使用 FTP 上传设定文件:'; +$lang['Send_file'] = '自行上传设定文件'; +$lang['ftp_path'] = '安装 phpBB-WAP çš„ FTP 路径:'; +$lang['ftp_username'] = '您的 FTP 用户å称'; +$lang['ftp_password'] = '您的 FTP 用户密ç '; +$lang['Transfer_config'] = '开始传é€'; +$lang['NoFTP_config'] = 'FTP 上传设定文件失败,请下载设定文件并使用手动上传'; + +$lang['Install'] = '全新安装'; +$lang['Upgrade'] = 'å‡çº§ç‰ˆæœ¬'; + + +$lang['Install_Method'] = '请选择安装模å¼'; + +$lang['Install_No_Ext'] = '您æœåŠ¡å™¨ä¸Šçš„PHPé…ç½®ä¸æ”¯æŒæ‚¨æ‰€é€‰æ‹©çš„æ•°æ®åº“类型'; + +$lang['Install_No_PCRE'] = '您的PHPé…ç½®ä¸æ”¯æŒå®‰è£…phpBB-WAP所需è¦çš„Perl语言标准表达模å¼çš„兼容性'; + +// +// 风格 +// + +$lang['Confirm_delete_style'] = '请确认是å¦åˆ é™¤è¿™ä¸ªé£Žæ ¼ï¼Ÿ'; + +// +// Shop +// +$lang['Shop'] = '商店相关管ç†'; +$lang['Shop_url'] = '出售 URL'; +$lang['Shop_sites'] = '出售链接'; +$lang['Shop_icq'] = '出售ICQ'; +$lang['Shop_Config'] = '全局设置'; +$lang['Shop_meney'] = '金å¸ç®¡ç†'; +$lang['Shop_pay'] = '支付管ç†'; +// 需è¦è¯¥åŠŸèƒ½è‡ªå·±æ±‰åŒ– +$lang['Shop_Open_Pay_money'] = 'Включить ÑиÑтему выплат за ÑообщениÑ'; +$lang['Shop_Kurs_Payment'] = 'ÐšÑƒÑ€Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° монет на рубли (Ñколько выдавать рублей за одну монету)'; +$lang['Shop_Kurs_Payment_Explain'] = 'в Ñлучае, еÑли вы хотите указать не целое чиÑло, то вмеÑто запÑтой иÑпользуйте точку, например 0.4'; +$lang['Shop_Error_Not_Open_Pay_money'] = 'СиÑтема выплат на Ñтом форуме отключена.'; +$lang['Shop_Cancel_User_Pay_money'] = 'Ð—Ð°Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ ÑŽÐ·ÐµÑ€Ð¾Ð¼ %s Ñумма в %s руб аннулирована.'; +$lang['Shop_Message_User_Pay_money'] = 'Сумма в %s руб помечена у юзера %s как выплаченнаÑ.
ПеречиÑлите ему Ñту Ñумму на кошелёк %s'; +$lang['Shop_Pay_money_Explain'] = 'ЗдеÑÑŒ вы можете произвеÑти выплаты отдельным пользователÑм, либо ÑброÑить (аннулировать) их рублёвый заработок, например, за нарушениÑ.
Ðа данный момент юзерами вÑего заработано %s руб, из них вами выплачено %s руб.'; +$lang['Shop_Not_Pay_Money_Users'] = 'Пока некому выплачивать'; +$lang['Shop_Note_Pay_Money'] = '* - в Ñтом ÑпиÑке отображаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ те пользователи, у которых еÑÑ‚ÑŒ рубли на виртуальном Ñчёте'; +$lang['Shop_Cancel'] = 'ÑброÑ'; +$lang['Shop_Pay_Money'] = 'Конвертировать в рубли'; + +// +// 编辑网页 +// +$lang['Edit_Page'] = '网页编辑'; +$lang['Edit_Page_Direct_Select'] = '直接选择'; +$lang['Edit_Page_Enter_Select'] = '输入选择'; + +// +// That's all Folks! +// ------------------------------------------------- +// Start add - 在线/离线/éšèº« Mod +$lang['Online_time'] = '在线时间'; +$lang['Online_time_explain'] = '用户显示在线的时间(è¦æ±‚大与60秒)'; +$lang['Online_setting'] = '在线设置'; +$lang['Online_color'] = '在线颜色'; +$lang['Offline_color'] = '离线颜色'; +$lang['Hidden_color'] = 'éšèº«é¢œè‰²'; +// End add - 在线/离线/éšèº« Mod +$lang['Max_Topics_per_page'] ='æ¯é¡µä¸»é¢˜çš„最大数é‡'; +$lang['Max_Posts_per_page'] ='æ¯é¡µå‘帖的最大数目'; + +// +// Democracy MOD +// +$lang = array( + 'reputation_democracy' => '评价系统', + 'reputation_democracy_exp' => '', + 'reputation_enable' => 'å¼€å¯è¯„价系统', + 'reputation_enable_warnings' => 'å¯ç”¨è­¦å‘ŠåŠŸèƒ½', + 'reports_enabled' => '帖å­ä¸»æŒäºº', + 'reputation_positive_only' => 'åªå¯ä»¥ç»™äºˆå¥½çš„评价(+)', + 'reputation_positive_only_exp' => '用户ä¸èƒ½ç»™äºˆå·®è¯„,如果给予差评,那么它是ä¿æŒä¸å˜çš„', + 'reputation_empty_reviews' => 'å…许空的评论', + 'reputation_reputation_options' => '评价设置', + 'reputation_warnings_options' => '警告设置', + 'reputation_reports_options' => '报告选项', + 'Click_return_reputation_index' => '点击 %s这里%s 返回到评价系统', + + 'reputation_access_rights' => '访问æƒé™', + 'reputation_add_rep' => '添加评论', + 'reputation_add_rep_nonpost' => '添加评价(å¯ä»¥ä¸å‘表评论)', + 'reputation_edit_rep' => '编辑评论', + 'reputation_delete_rep' => '删除评论', + 'reputation_no_limits' => '没有é™åˆ¶', + 'reputation_warn' => 'å‘出警告', + 'reputation_warn_nonpost' => 'å‘出警告(ä¸å‘表)', + 'reputation_ban' => '黑åå•', + 'reputation_ban_nonpost' => '黑åå•ï¼ˆä¸å‘表)', + 'reputation_edit_warns' => '编辑警告', + 'reputation_delete_warns' => '删除警告', + 'reputation_not_applicable' => 'ä¸é€‚用于', + 'reputation_anonymous_view_rep' => '匿å用户å¯ä»¥æµè§ˆå’Œè¯„论', + 'reputation_anonymous_view_warns' => '匿å用户å¯ä»¥æµè§ˆå’ŒæŸ¥çœ‹è¯„论', + 'reputation_perms_notes' => '* = åªæœ‰è‡ªå·±
** = åªæœ‰åœ¨è¿™äº›è®ºå›, ä»–/她是一个版主', + 'reputation_warn_perms_notes' => '', + + 'reputation_days_req' => '注册时间ä¸å°äºŽ %s 天', + 'reputation_posts_req' => 'å‘表的帖å­ä¸å°‘于 %s 帖', + 'reputation_warnings_req' => 'ä¸å¤šäºŽ %s 警告', + 'reputation_points_req' => '如果得到一个好的评价增加 %s 积分', + 'reputation_time_limit' => '用户å¯ä»¥åœ¨è¯„è®ºåŽ %s 分钟内修改评论', + 'reputation_rotation_limit' => '旋转å˜åŒ–: %s 用户.', + 'reputation_rotation_limit_exp' => '有多少ä¸åŒçš„用户需è¦æ›´æ”¹çš„声誉,你å¯ä»¥æ”¹å˜çš„声誉两次以相åŒçš„用户。', + 'reputation_most_respected' => 'Показывать %s наиболее уважаемых пользователей.',//ä¸çŸ¥é“是什么 + 'reputation_least_respected' => 'Показывать %s наименее уважаемых пользователей.',//ä¸çŸ¥é“是什么 + 'reputation_display' => '个人资料显示选项', + 'reputation_display_sum' => 'åªæ˜¾ç¤ºæ€»æ•°', + 'reputation_display_plusminus' => '显示好评与和差评(+2/-3)', + + 'reputation_infinite' => '没有é™åˆ¶', + 'reputation_infinite_exp' => '如果设置为无é™åˆ¶ï¼Œç‰ˆä¸»ã€ç®¡ç†å‘˜éœ€è¦æ‰‹åŠ¨åˆ é™¤å‘出的警告', + 'reputation_infinite_ban_exp' => '如果设置为无é™åˆ¶ï¼Œç‰ˆä¸»ã€ç®¡ç†å‘˜éœ€è¦æ‰‹åŠ¨åˆ é™¤ç”¨æˆ·é»‘åå•', + 'reputation_fixed' => '固定 %s 天.', + 'reputation_modifiable' => '您å¯ä»¥æ›´æ”¹ %s 至 %s 之间', + 'reputation_modifiable_exp' => '您å¯ä»¥ç•™ä¸‹ä¸€ä¸ªæˆ–两个字段留空ä¸è®¾é™ã€‚', + 'reputation_store' => '存储', + 'reputation_delete_days' => '%s 天åŽåˆ é™¤', + 'reputation_ban_warnings' => '自动ç¦æ­¢ %s 警告和黑åå•', + 'reputation_ban_warnings_exp' => '最新的警告ç¦æ­¢è‡ªåŠ¨è½¬æ¢ã€‚', + 'reputation_check_rate' => '检测 %s 分钟内有效的警告', + 'reputation_check_rate_exp' => '数值的大å°è®¾å®šä¼šå¯¹æœåŠ¡å™¨é€ æˆä¸€å®šçš„è´Ÿæ‹…', + + 'reputation_check_confirm' => 'Подтвердите намеренноÑÑ‚ÑŒ изменений, уÑтановив ÑоответÑтвующую галочку!', + + 'reputation_reports_color' => 'Цвет Ð´Ð»Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑылки на Ñтраницу уведомлений:', + 'reputation_reports_color_exp' => 'ОÑтавьте поле пуÑтым, чтобы не выделÑÑ‚ÑŒ ÑÑылку цветом.', + + 'reputation_warning_expiry' => '警告时间设定', + 'reputation_ban_expiry' => '黑åå•æ—¶é—´è®¾å®š', + 'reputation_expired_warnings' => '过期的警告', + 'reputation_index_page' => '声誉', + 'reputation_prerequirements' => 'è¦æ±‚', + 'reputation_limits' => '其他é™åˆ¶', + + 'reputation_maintenance' => '实用工具', + 'reputation_resync' => 'åŒæ­¥è¯„价系统设定', + 'reputation_resync_exp' => '本地与数æ®åº“的设定进行åŒæ­¥', + 'reputation_success' => 'åŒæ­¥æˆåŠŸï¼', + + /* + 'reputation_reports_per_page' => 'КоличеÑтво Ñообщений модераторам на Ñтраницу', + 'reputation_reviews_per_page' => 'КоличеÑтво отзывов на Ñтраницу', + 'reputation_allow_empty_warns' => 'Разрешить Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð±ÐµÐ· ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ñ‹', + */ +) + $lang; + +// Start add - Birthday MOD +$lang['Birthday_required'] ='是å¦è¦æ±‚用户注册时填写生日'; +$lang['Enable_birthday_greeting'] ='是å¦å¼€å¯ç”¨æˆ·ç”Ÿæ—¥ç¥ç¦'; +$lang['Birthday_greeting_expain'] ='当用户过生日时首页将é€ä¸Šç”¨æˆ·çš„ç¥ç¦'; +$lang['Next_birthday_greeting'] ='为下一个过生日的用户é€ä¸Šç¥ç¦'; +$lang['Next_birthday_greeting_expain'] ='当用户将快è¦è¿‡ç”Ÿæ—¥æ—¶ï¼Œç³»ç»Ÿè®²ä¸ºä¸‹ä¸€ä¸ªè¿‡ç”Ÿæ—¥çš„用户é€ä¸Šç¥ç¦'; +$lang['Wrong_next_birthday_greeting'] ='您输入的出生年月是无效的,请å†è¯•ä¸€æ¬¡'; +$lang['Max_user_age'] = '用户填写生日时å¯å¡«å†™çš„最大年龄'; +$lang['Min_user_age'] ='用户填写生日时å¯å¡«å†™çš„最低年龄'; +$lang['Birthday_lookforward'] ='是å¦åœ¨ç½‘站首页显示用户的生日'; +// End add - Birthday MOD + +// 登录é™åˆ¶ +$lang['Max_login_attempts'] = '最多å…许登录å°è¯•æ¬¡æ•°'; +$lang['Max_login_attempts_explain'] ='防止用户å°è¯•ç›—å–会员密ç ä»¥åŠæœºå™¨äººï¼'; +$lang['Login_reset_time'] ='登录é‡ç½®æ—¶é—´'; +$lang['Login_reset_time_explain'] ='当用户登录超过 最多å…许登录å°è¯•æ¬¡æ•° 时,网站会é”定该用户å,需è¦ç­‰å¾…多少时间(å•ä½/分)æ‰å¯ä»¥è§£é™¤é”定'; + +// 奖 +$lang['Medals'] = '奖的管ç†'; +$lang['Medal_Config'] = '奖é…ç½®'; +$lang['Medal_Config_explain'] = '在这里,您å¯ä»¥æŒ‡å®šè¯¥å¥–的基本设置以åŠç¼–辑奖'; +$lang['Medal_setting'] = '奖设置'; +$lang['Allow_medal'] = '是å¦å…许使用论å›å¥–'; +$lang['Medal_rand'] = 'éšæœºæ˜¾ç¤ºä¸€ä¸ªå¥–'; +$lang['Medal_rand_explain'] = '它会显示一个éšæœºçš„图åƒ'; +$lang['Medal_display'] = '表奖(行数×列数)'; +$lang['Medal_display_explain'] = '指定的行数和列数æ¯é¡µå¥–显示主题
例如,一行和一列会显示一个图åƒï¼Œ1å·çº¿å’Œ2列 - 2张图片。
ç¡®ä¿è®¾ç½®æ˜¯æ­£ç¡®çš„,并ä¸ä¼šé€ æˆé—®é¢˜æ—¶ï¼Œæ˜¾ç¤ºè¯¥ä¸»é¢˜ã€‚'; +$lang['Medal_size'] = '奖图标大å°'; +$lang['Medal_size_explain'] = '(最大 x Ð’Ñ‹Ñота ),如果没有指定则按原图显示'; +$lang['Click_return_medalcfg'] = '点击 %s这里%s 返回奖管ç†é¢æ¿'; +$lang['Medal_admin'] = '奖管ç†'; +$lang['Medal_admin_explain'] = '在这里,您å¯ä»¥ç®¡ç†ç½‘站所有的奖,您也å¯ä»¥æŒ‡å®šç‰ˆä¸»çš„奖和建立它的å称ã€è¯´æ˜Žå’Œå›¾æ ‡'; +$lang['Updated_medal'] = '奖的设定已æˆåŠŸæ›´æ–°'; +$lang['Updated_medal_category'] = '奖的分类已æˆåŠŸæ›´æ–°'; +$lang['Added_new_medal'] = '奖已æˆåŠŸåˆ›å»º'; +$lang['Added_new_category'] = '奖分类已æˆåŠŸåˆ›å»º'; +$lang['Deleted_medal'] = '奖已æˆåŠŸåˆ é™¤'; +$lang['Deleted_medal_category'] = '奖的分类已æˆåŠŸåˆ é™¤'; +$lang['New_medal'] = '创建奖'; +$lang['medal_name'] = '奖å称'; +$lang['medal_description'] = '奖æè¿°'; +$lang['medal_image'] = '奖图片'; +$lang['medal_image_explain'] = '填写奖图标的路径(使用 phpBB-WAP çš„ç»å¯¹è·¯å¾„)'; +$lang['No_medal_name'] = '没有指定奖的å称'; +$lang['No_medal_description'] = '没有指定奖的æè¿°'; +$lang['No_medal_image'] = '没有指定奖的图片'; +$lang['Must_select_medal'] = '您必须选择一个奖'; +$lang['Click_return_medaladmin'] = '点击 %s这里%s 返回奖管ç†é¢æ¿'; +$lang['Medal_mod'] = '版主奖'; +$lang['Medal_mod_admin'] = '管ç†ç‰ˆä¸»å¥–'; +$lang['Medal_mod_admin_explain'] = '在这里,您å¯ä»¥ç®¡ç†ç®¡ç†å‘˜ä¸Žç‰ˆä¸»çš„奖ï¼'; +$lang['Medal_mod_username'] = '版主的用户å'; +$lang['Medal_unmod_username'] = '剥去奖'; +$lang['Medal_unmod_username_explain'] = '剥去版主用户的奖'; +$lang['No_medal_mod'] = '没有版主奖'; +$lang['No_medal_in_cat'] = '这个分类目录下没有奖'; +$lang['Must_delete_medal'] = '您必须删除奖'; +$lang['Category_delete'] = '删除分类'; +$lang['Category_delete_explain'] = '在删除这个分类之å‰ï¼Œæ‚¨å¿…须先删除分类底下的所有奖'; +$lang['Move_medals'] = '移动奖'; +$lang['Category_name'] = '分类å称'; +$lang['Medal_mod_update_sucessful'] = '版主奖已æˆåŠŸæ›´æ–°'; +$lang['Click_return_medal_mod_admin'] = '点击 %s这里%s 返回版主奖管ç†é¢æ¿'; + +// +// 用户账户æ“作 +// +$lang['Account_actions'] = '账户æ“作'; +$lang['Account_inactive_explain'] = '等待激活的用户å¸å·'; +$lang['Account_active_explain'] = '已激活的用户å¸å·'; +$lang['Account_active'] = '激活'; +$lang['Account_inactive'] = '等待激活'; +$lang['Account_activate'] = '激活'; +$lang['Account_deactivate'] = 'åœç”¨'; +$lang['Account_none'] = '没有此å¸å·.'; +$lang['Account_activation'] = '激活方法'; +$lang['Account_inactive'] = '等待激活å¸å·'; +$lang['Account_active'] = 'å·²ç»æ¿€æ´»è´¦å·'; +$lang['Account_delete_users'] = '请确认是å¦åˆ é™¤è¿™äº›ç”¨æˆ·å¸å·ï¼Ÿ'; +$lang['Account_delete_user'] = '请确认是å¦åˆ é™¤è¿™ä¸ªç”¨æˆ·å¸å·ï¼Ÿ'; +$lang['Account_all'] = '全部'; +$lang['Account_year'] = 'å¹´'; +$lang['Account_years'] = 'å¹´'; +$lang['Account_week'] = '周'; +$lang['Account_weeks'] = '周'; +$lang['Account_day'] = '天'; +$lang['Account_days'] = '天'; +$lang['Account_hour'] = 'å°æ—¶'; +$lang['Account_hours'] = 'å°æ—¶'; +$lang['Account_user_activated'] = '激活'; +$lang['Account_users_activated'] = '激活'; +$lang['Account_user_deactivated'] = 'åœç”¨'; +$lang['Account_users_deactivated'] = 'åœç”¨'; +$lang['Account_user_deleted'] = '删除'; +$lang['Account_users_deleted'] = '删除'; +$lang['Account_activated'] = '用户å¸å·æ¿€æ´»'; +$lang['Account_activated_text'] = '用户å¸æˆ·å·²æ¿€æ´»'; +$lang['Account_deactivated'] = 'åœç”¨ç”¨æˆ·å¸å·'; +$lang['Account_deactivated_text'] = '用户å¸å·å·²åœç”¨'; +$lang['Account_deleted'] = '删除用户å¸å·'; +$lang['Account_deleted_text'] = '用户å¸å·å·²åˆ é™¤'; +$lang['Account_notification'] = '用电å­é‚®ä»¶é€šçŸ¥ç”¨æˆ·'; + +// ç•™è¨€æ¿ +$lang['gb_no_guest'] = '匿å用户(论å›æ¸¸å®¢)å¯ä»¥åœ¨ç•™è¨€æ¿ç•™è¨€?'; +$lang['gb_can'] = '是å¦æ˜¾ç¤ºç•™è¨€æ¿?'; +$lang['gb_post'] = 'åŒä¸€ä¸ªç”¨æˆ·å…许留言的数é‡(0代表无é™)'; +$lang['gb_quick'] = '是å¦å…许给自己留言?'; + +// 模版编辑 Mod +$lang['Template_Edit_Choose'] = '请选择一个文件夹或文件'; +$lang['Template_Edit_No_Template'] = '文件夹ä¸å­˜åœ¨ï¼'; +$lang['Template_Edit_No_File'] = '文件ä¸å­˜åœ¨ï¼'; +$lang['Template_Edit'] = '编辑文件'; +$lang['Template_Edit_No_Open'] = '无法打开文件ï¼'; +$lang['Template_Edit_No_Write'] = '无法写入文件ï¼'; +$lang['Template_Edit_Yes_Write'] = '文件编辑完æˆï¼'; +$lang['Click_return_template_edit'] = '点击 %s返回%s 文件编辑'; + +// 全局版主 +$lang['Modcp'] = '全局版主é¢æ¿'; +$lang['global_MOD'] = '全局版主'; +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_admin_album.php b/includes/shared/phpbb2/language/lang_chinese/lang_admin_album.php new file mode 100644 index 00000000..756f64c8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_admin_album.php @@ -0,0 +1,95 @@ + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_admin_attach.php b/includes/shared/phpbb2/language/lang_chinese/lang_admin_attach.php new file mode 100644 index 00000000..f9c8a13b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_admin_attach.php @@ -0,0 +1,225 @@ + ç®¡ç† +$lang['Attach_settings'] = '附件设定'; +$lang['Manage_attachments_explain'] = '在这里你å¯ä»¥è®¾å®šé™„件功能的主è¦è®¾å®šã€‚如果你点击测试设定按钮,附件功能å¯ä»¥åšäº›ç³»ç»Ÿæµ‹è¯•æ¥ç¡®å®šé‚£åŠŸèƒ½ä¼šæ­£ç¡®åœ°è¿ä½œã€‚如果你有上传文件的问题,请执行这个测试,æ¥å˜æˆè¯¦ç»†çš„错误讯æ¯ã€‚'; +$lang['Attach_filesize_settings'] = '附件大å°é™åˆ¶'; +$lang['Attach_number_settings'] = '附件数é‡è®¾å®š'; +$lang['Attach_options_settings'] = '附件选项设定'; + +$lang['Upload_directory'] = '附件的上传或下载目录'; +$lang['Attach_img_path'] = '帖å­é™„件å‰çš„图标'; +$lang['Attach_img_path_explain'] = '在附件链接å‰é¢çš„图标,如果留空则ä¸æ˜¾ç¤ºã€‚注æ„:这个设定会覆盖附件组的设定ï¼'; +$lang['Attach_topic_icon'] = '帖å­æ ‡é¢˜å‰çš„图标'; +$lang['Attach_topic_icon_explain'] = '如果帖å­ä¸­å­˜åœ¨é™„件,那么帖å­æ ‡é¢˜å‰å°±ä¼šæ˜¾ç¤ºä¸€ä¸ªå›¾æ ‡ï¼Œå¦‚果留空则ä¸æ˜¾ç¤ºã€‚'; +$lang['Attach_display_order'] = '附件显示顺åº'; +$lang['Show_apcp'] = '显示新版附件å‘表控制å°'; +$lang['Show_apcp_explain'] = '选择 2.32 版以後的新版附件å‘表控制å°(选择:是)或者是选 2.24 以å‰æ—§ç‰ˆçš„附件å‘表控制å°(选择:å¦)。这个有点难以解释,因此您还是自己去试一试罗!'; + +$lang['Max_filesize_attach'] = 'å•ä¸ªä¸Šä¼ æ–‡ä»¶çš„最大é™åˆ¶'; +$lang['Max_filesize_attach_explain'] = '附件的最大的文件大å°(字节)。数值 0 代表 “没有é™åˆ¶â€ã€‚这个设定是å—é™åˆ¶çš„被你的æœåŠ¡å™¨ç»„æ€ã€‚如果你的 php 组æ€åªå…è®¸æœ€å¤§ä¸Šä¼ çš„å¤§å° 2 MB,这个无法由这功能覆写。'; +$lang['Attach_quota'] = '全部附件的最大é™åˆ¶'; +$lang['Attach_quota_explain'] = '全部的附件é™åˆ¶ï¼Œ0 表示 “无é™åˆ¶â€'; +$lang['Max_filesize_pm'] = 'ä¿¡æ¯ä¸­å•ä¸ªä¸Šä¼ é™„件的最大é™åˆ¶'; +$lang['Max_filesize_pm_explain'] = '会员最大å¯ä»¥ä¸Šä¼ å¤šå¤§çš„附件到信æ¯ä¸­çš„附件框'; +$lang['Default_quota_limit'] = '默认é™åˆ¶è®¾å®š'; +$lang['Default_quota_limit_explain'] = '这里你å¯ä»¥é€‰æ‹©ä¸€ä¸ªé»˜è®¤é™åˆ¶ç»™æ–°æ³¨å†Œçš„用户和没有指定é™å®¢çš„用户。选项 “无é™â€ 表示没有é™åˆ¶è®¾å®šï¼Œè€Œä½¿ç”¨ä¸Šé¢çš„附件大å°é™åˆ¶è®¾å®šã€‚'; + +$lang['Max_attachments'] = '帖å­é™„件数é™åˆ¶'; +$lang['Max_attachments_explain'] = '在一个楼层帖å­ä¸­æœ€å¤šå¯ä»¥ä¸Šä¼ å¤šå°‘个附件?'; +$lang['Max_attachments_pm'] = 'ä¿¡æ¯é™„件数é™åˆ¶'; +$lang['Max_attachments_pm_explain'] = '在一个信æ¯ä¸­æœ€å¤šå¯ä»¥ä¸Šä¼ å¤šå°‘个附件?'; + +$lang['Disable_mod'] = 'ä¸ä½¿ç”¨é™„件功能'; +$lang['Disable_mod_explain'] = '选择关闭则关闭全站的附件上传功能ï¼'; +$lang['PM_Attachments'] = 'ä¿¡æ¯ä¸­æ˜¯å¦å¯ä»¥ä¸Šä¼ é™„件'; +$lang['Ftp_upload'] = '是å¦å¼€å¯ FTP 上传'; +$lang['Attachment_topic_review'] = '你想è¦æ˜¾ç¤ºé™„件在查看主题视窗å—?'; +$lang['Attachment_topic_review_explain'] = '如果你选择「是ã€ï¼Œå½“你回覆主题时全部已附加的文件将被在查看主题中显示。'; + +$lang['Ftp_server'] = 'æœåŠ¡å™¨'; +$lang['Ftp_server_explain'] = 'æœåŠ¡å™¨çš„地å€ï¼Œæ— éœ€ftp://'; + +$lang['Attach_ftp_path'] = '目录'; +$lang['Attach_ftp_path_explain'] = 'FTP 的路径,例如: /home/web/uploads'; +$lang['Ftp_download_path'] = '下载目录'; +$lang['Ftp_download_path_explain'] = '输入路径到你的 FTP 路径,你的附件储存的地方。请输入完整的路径,例如 http://www.mystorage.com/phpBB2/upload。多馀的斜线「/ã€å°†è¢«ç§»é™¤ã€‚
ä¿æŒè¿™ä¸ªæ ä½ç©ºç™½çš„,如果你有路径外é¢çš„你的网站根目录。但是与这个æ ä½ç©ºç™½çš„你无法使用实体的下载方å¼ã€‚'; +$lang['Ftp_passive_mode'] = '是å¦å¼€å¯ FTP 被动模å¼'; + +$lang['No_ftp_extensions_installed'] = 'ä½ ä¸èƒ½ä½¿ç”¨FTP上传功能,因为你安装的PHPä¸æ”¯æŒFTP功能。'; + +// Attachments -> Shadow Attachments +$lang['Shadow_attachments_explain'] = '在这里你å¯ä»¥åˆ é™¤é™„件资料从å‘表文章中当文件从你的文件系统é—失的时候,并且删除那些较久没有附加到任何å‘表文章的文件。如果你点击它,并且你å¯ä»¥ä¸‹è½½æˆ–查看文件; 如果目å‰æ˜¯æ²¡æœ‰è¿žç»“的,文件就ä¸ä¼šå­˜åœ¨ã€‚'; +$lang['Shadow_attachments_file_explain'] = '删除全部的附件那些在你的文件系统而且是没有指定到存在的å‘表文章。'; +$lang['Shadow_attachments_row_explain'] = '删除全部å‘表文章里的附件资料对于文件那些ä¸å­˜åœ¨ä½ çš„文件系统。'; +$lang['Empty_file_entry'] = '空文件'; + +// Attachments -> åŒæ­¥ +$lang['Syncs'] = '缓存åŒæ­¥'; +$lang['Sync_thumbnail_resetted'] = '缩略图已é‡è®¾ç»™é™„件: %s'; +$lang['Attach_sync_finished'] = '附件缓存åŒæ­¥æˆåŠŸ'; +$lang['Sync_topics'] = '主题缓存åŒæ­¥æˆåŠŸ';//预留功能 +$lang['Sync_posts'] = '回å¤ç¼“å­˜åŒæ­¥æˆåŠŸ';//预留功能 +$lang['Sync_thumbnails'] = '缩略图缓存åŒæ­¥æˆåŠŸ';//预留功能 + +// Extensions -> 扩展å +$lang['Manage_extensions'] = '管ç†æ‰©å±•å'; +$lang['Manage_extensions_explain'] = '在这里你å¯ä»¥ç®¡ç†ä½ çš„文件扩展å。如果你想å…许或ä¸å…许å¯ä¸Šæ¡£çš„扩展å,请使用扩展å群组管ç†ã€‚'; +$lang['Explanation'] = '解释'; +$lang['Extension_group'] = '扩展å组'; +$lang['Invalid_extension'] = '无效扩展å'; +$lang['Extension_exist'] = '扩展å %s å·²ç»å­˜åœ¨'; // replace %s with the Extension +$lang['Unable_add_forbidden_extension'] = '扩展å %s 是ç¦æ­¢ä¸Šä¼ çš„,你没有将它加入已å…许的扩展å群组里。'; + +// Extensions -> 扩展åç¾¤ç»„ç®¡ç† +$lang['Manage_extension_groups'] = '管ç†æ‰©å±•å群组'; +$lang['Manage_extension_groups_explain'] = '在这里你å¯ä»¥åŠ å…¥ï¼Œåˆ é™¤å’Œä¿®æ”¹ä½ çš„扩展å群组,你å¯ä»¥åœç”¨æ‰©å±•å群组,指定特殊类别给它们,å˜æ›´ä¸‹è½½åŠžæ³•è€Œä¸”ä½ å¯ä»¥å®šä¹‰ä¸Šä¼ å›¾ç¤ºå½“åšè¢«æ˜¾ç¤ºåœ¨é™„件适用到群组的最å‰é¢æ—¶å€™ã€‚'; +$lang['Special_category'] = '特殊类'; +$lang['Category_images'] = '图片文件'; +$lang['Category_stream_files'] = 'æµåª’体文件'; +$lang['Category_swf_files'] = 'Flash 文件'; +$lang['Allowed'] = 'å…许的'; +$lang['Allowed_forums'] = 'å·²å…许的论å›'; +$lang['Ext_group_permissions'] = '群组æƒé™'; +$lang['Download_mode'] = '下载模å¼'; +$lang['Upload_icon'] = '上传åŽæ˜¾ç¤ºå›¾æ ‡è·¯å¾„'; +$lang['Max_groups_filesize'] = '最大的文件大å°'; +$lang['Extension_group_exist'] = '扩展å群组 %s å·²ç»å­˜åœ¨'; // %s 代表扩展åå°ç»„å称 +$lang['Collapse'] = '+'; +$lang['Decollapse'] = '-'; + +// Extensions -> 特殊类别 +$lang['Manage_categories'] = '管ç†ç‰¹æ®Šç±»åˆ«'; +$lang['Manage_categories_explain'] = '在这里你å¯ä»¥ç»„æ€ç‰¹æ®Šç±»åˆ«ã€‚ä½ å¯ä»¥è®¾å®šç‰¹æ®Šåæ•°å’Œæ¡ä»¶ç»™ç‰¹æ®Šç±»åˆ«æŒ‡å®šåˆ°æ‰©å±•å群组。'; +$lang['Settings_cat_images'] = 'MIME,例如: image/jpeg'; +$lang['Settings_cat_streams'] = '特殊类设定: æµåª’体文件'; +$lang['Settings_cat_flash'] = '特殊类设定: Flash 文件'; +$lang['Display_inlined'] = '是å¦ç›´æŽ¥æ˜¾ç¤ºå›¾åƒé™„件'; +$lang['Max_image_size'] = '图åƒåƒç´ çš„最大é™åˆ¶ï¼ˆå®½x高)'; +$lang['Image_link_size'] = '直接显示的图åƒåƒç´ çš„最大é™åˆ¶ï¼ˆå®½x高)'; +$lang['Image_link_size_explain'] = '如果在线显示查看是å¯ç”¨çš„,当图片尺寸超过这里定义的尺寸,图片将被按照原始比例自动缩å°(宽度 x 高度,å•ä½:åƒç´ )ï¼Œå¦‚æžœå®ƒæ˜¯è®¾å®šæˆ 0x0 则ä¸ä¼šé™åˆ¶å›¾ç‰‡çš„大å°ã€‚对于é™åˆ¶PHP中的æŸäº›å›¾ç‰‡è¿™ä¸ªåŠŸèƒ½å°†ä¸èµ·ä½œç”¨ã€‚'; +$lang['Assigned_group'] = '指定的群组'; + +$lang['Image_create_thumbnail'] = '是å¦åˆ›å»ºç¼©ç•¥å›¾'; +$lang['Image_create_thumbnail_explain'] = '永远使用建立缩略图。这个功能几乎推翻在这个特殊类别全部的设定,除了最大图片尺寸之外。使用这个功能将使缩略图被显示于å‘表的文章中,使用者å¯ä»¥ç‚¹å‡»ç¼©ç•¥å›¾æ¥å¼€å¯å›¾ç‰‡ã€‚
请注æ„这功能需è¦å®‰è£… Imagick,如果没有安装 Imagick 而且å‡å¦‚å·²å¯ç”¨å®‰å…¨æ¨¡å¼ï¼Œåˆ™ PHP çš„ GD-Extention 将被使用。如果图片类型是 PHP ä¸æ”¯æ´çš„,这个功能将无法使用。'; +$lang['Image_min_thumb_filesize'] = '缩略图的最å°é™åˆ¶'; +$lang['Image_imagick_path'] = 'Imagick ç¼©ç•¥å›¾ç¨‹å¼ (完整路径)'; +$lang['Image_imagick_path_explain'] = '输入 Imagick 的缩略图转æ¢ç¨‹å¼çš„路径,一般是 /usr/bin/convert (在 windows 是: c:/imagemagick/convert.exe)。'; +$lang['Image_search_imagick'] = 'æœå¯» Imagick'; + +$lang['Use_gd2'] = '是å¦ä½¿ç”¨GD2扩展'; +$lang['Use_gd2_explain'] = 'PHPå°†å¯ä»¥ä½¿ç”¨GD1或GD2扩展功能对图片进行æ“作. è¦æ­£ç¡®ç”Ÿæˆç¼©ç•¥å›¾ï¼Œå¹¶ä¸åˆä½¿ç”¨imagemagick,附件Modæ供了两ç§ä¸åŒçš„方法,å¯ä»¥ç”±æ‚¨æ¥è¿›è¡Œé€‰æ‹©. 如果缩图质é‡å·®æˆ–图片过大,您å¯ä»¥å°è¯•æ”¹å˜è®¾ç½®.'; +$lang['Attachment_version'] = '附件Modç‰ˆæœ¬å· %s'; // %s ä»£è¡¨ç‰ˆæœ¬å· + +// Extensions -> ç¦æ­¢æ‰©å±• +$lang['Manage_forbidden_extensions'] = '管ç†ç¦æ­¢æ‰©å±•å'; +$lang['Manage_forbidden_extensions_explain'] = '在这里你å¯ä»¥åŠ å…¥æˆ–删除ç¦æ­¢çš„扩展å。这扩展å php, php3 å’Œ php4 是内定预设ç¦æ­¢çš„基于安全ç†ç”±ï¼Œä½ ä¸å¯ä»¥åˆ é™¤å®ƒä»¬ã€‚'; +$lang['Forbidden_extension_exist'] = 'ç¦æ­¢çš„扩展å %s å·²ç»å­˜åœ¨'; // replace %s with the extension +$lang['Extension_exist_forbidden'] = '扩展å %s 是已定义在你已å…许的扩展å,在你在这里加入它之å‰è¯·å…ˆåˆ é™¤ã€‚'; + +// Extensions -> 扩展å群组æƒé™ -> 群组æƒé™ +$lang['Group_permissions_title'] = '扩展å群组æƒé™ -> \'%s\''; +$lang['Group_permissions_explain'] = '在这里你能够é™åˆ¶å·²é€‰æ‹©çš„扩展å群组给确定的论å›(定义在å…许的论å›å¯¹è¯ç›’)。预设为å…许扩展å群组给全部论å›çš„使用者是å¯ä»¥é™„件到(一般方å¼é™„件功能是给åˆå­¦è€…使用)。åªè¦åŠ å…¥é‚£äº›è®ºå›åˆ°ä½ æƒ³ä½¿ç”¨çš„扩展å群组(扩展å必须在这个群组使用)并在那里准许使用,预设为全部论å›å°†ä¸ä¼šå‡ºçŽ°å½“你加入论å›åˆ°æ¸…å•ä¸­ã€‚ä½ å¯ä»¥åœ¨ä»»ä½•æ—¶å€™é‡æ–°åŠ å…¥å…¨éƒ¨è®ºå›ã€‚如果你加入论å›åˆ°ä½ çš„讨论区和æƒé™æ˜¯è®¾å®šåˆ°å…¨éƒ¨è®ºå›æ˜¯ä¸ä¼šæœ‰ä»»ä½•æ”¹å˜ã€‚但是如果你有å˜æ›´å’Œé™åˆ¶å­˜å–到æŸäº›è®ºå›ï¼Œä½ å¿…须回到这里检查æ¥åŠ å…¥ä½ æ–°å»ºç«‹çš„论å›ã€‚它是容易执行这个是自动地,但是这个将强制你去编辑一串的文件,因此我会选择这方法它是目å‰çš„情形。请谨记在心,那些全部你的论å›å°†ä¼šåœ¨æ­¤åˆ—出。'; +$lang['Note_admin_empty_group_permissions'] = '注æ„:
使用在下é¢åˆ—表的论å›ï¼Œä½¿ç”¨è€…通常是被å…许添加附件,但是自从没有扩展å群组在那里被å…许去附加的,你的使用者是无法附加任何文件的。如果他们曾ç»å°è¯•é™„加文件,他们将会接收到错误讯æ¯ã€‚å¯èƒ½ä½ æƒ³è¦è®¾å®šæƒé™\'å¯é™„加的文件\' æ¥ç®¡ç†åœ¨è¿™ä¸ªè®ºå›çš„附件。

'; +$lang['Add_forums'] = '加入论å›'; +$lang['Add_selected'] = '加入已选择的'; +$lang['Perm_all_forums'] = '全部论å›'; + +// Attachments -> 附件é™åˆ¶ +$lang['Manage_quotas'] = '管ç†é™„件é™åˆ¶'; +$lang['Manage_quotas_explain'] = '这里你å¯ä»¥å¢žåŠ /删除/修改é™åˆ¶ã€‚ä½ å¯ä»¥æŠŠè¿™äº›é™åˆ¶åˆ†é…给会员和团队。è¦æŠŠä¸€ä¸ªé™åˆ¶åˆ†é…给一个会员,你必须通过会员管ç†->管ç†é€‰é¡¹ï¼Œé€‰æ‹©ç”¨æˆ·åŽä½ ä¼šåœ¨ä¸‹é¢çœ‹åˆ°è¿™ä¸ªé€‰é¡¹ã€‚è¦æŠŠä¸€ä¸ªé™åˆ¶åˆ†é…给一个团队,你必须通过团队管ç†->管ç†é€‰é¡¹ï¼Œé€‰æ‹©å›¢é˜ŸåŽä½ ä¼šçœ‹åˆ°é…置项。如果你想查看一个é™åˆ¶è¢«åˆ†é…给了哪些用户和团队,点击é™åˆ¶æ述左边的\'æµè§ˆ\'。'; +$lang['Assigned_users'] = '被分é…的用户'; +$lang['Assigned_groups'] = '被分é…的团队'; +$lang['Quota_limit_exist'] = 'é™åˆ¶ %s å·²ç»å­˜åœ¨ã€‚'; // %s 代表é™åˆ¶çš„æè¿° + +// 附件的æƒé™ +$lang['Auth_attach'] ='上传附件'; +$lang['Auth_download'] ='下载æƒé™'; + +// Attachments -> 附加控制é¢æ¿ +$lang['Control_panel_title'] = '文件附加控制å°'; +$lang['Control_panel_explain'] = '在这里你å¯ä»¥æŸ¥çœ‹å’Œç®¡ç†å…¨éƒ¨çš„附件基本设定在使用者,附件,查看其它...'; +$lang['File_comment_cp'] = '文件注解'; + +// Control Panel -> æœç´¢ +$lang['Search_wildcard_explain'] = '使用 * 当åšé€šé…符åšä¸ºç¬¦åˆçš„部分'; +$lang['Size_smaller_than'] = '附件大å°å°äºŽ(字节)'; +$lang['Size_greater_than'] = '附件大å°å¤§äºŽ(字节)'; +$lang['Count_smaller_than'] = '下载次数是å°äºŽ'; +$lang['Count_greater_than'] = '下载次数是大于'; +$lang['More_days_old'] = '比这些天数更旧的'; +$lang['No_attach_search_match'] = '没有附件符åˆä½ çš„æœç´¢æ¡ä»¶'; + +// Control Panel -> 统计 +$lang['Number_of_attachments'] = '附件的数é‡'; +$lang['Total_filesize'] = '总计文件大å°'; +$lang['Number_posts_attach'] = 'å‘表文章和附件的数é‡'; +$lang['Number_topics_attach'] = '主题与附件的数é‡'; +$lang['Number_users_attach'] = '个别的使用者已å‘表的附件'; +$lang['Number_pms_attach'] = '总计附件的数é‡åœ¨ç«™å†…短信'; + +// Control Panel -> 附件 +$lang['Statistics_for_user'] = '%s 的附件统计'; // replace %s with username +$lang['Size_in_kb'] = 'å¤§å° (KB)'; +$lang['Downloads'] = '下载次数'; +$lang['Post_time'] = 'å‘表时间'; +$lang['Posted_in_topic'] = '所属帖å­'; +$lang['Submit_changes'] = '更改'; + +// 排åºæ–¹å¼ +$lang['Sort_Attachments'] = '附件'; +$lang['Sort_Size'] = '文件大å°'; +$lang['Sort_Filename'] = '文件å称'; +$lang['Sort_Comment'] = '文件注解'; +$lang['Sort_Extension'] = '扩展å'; +$lang['Sort_Downloads'] = '下载次数'; +$lang['Sort_Posttime'] = 'å‘表时间'; +$lang['Sort_Posts'] = 'å‘表'; + +// æµè§ˆæ–¹å¼ +$lang['View_Statistic'] = '附件统计'; +$lang['View_Search'] = 'æœç´¢é™„件'; +$lang['View_Username'] = '用户附件'; +$lang['View_Attachments'] = '所有附件'; + +// 完æˆã€‚。。。 +$lang['Attach_config_updated'] = '附件设定更新完毕'; +$lang['Click_return_attach_config'] = '请点 %s这里%s 回到附件设定'; +$lang['Test_settings_successful'] = '设定测试完æˆï¼Œè®¾å®šçœ‹èµ·æ¥æ˜¯å¥½çš„。'; + +// 一些基本的定义 +$lang['Attachments'] = '附件相关管ç†'; +$lang['Attachment'] = '附件'; +$lang['Extensions'] = '扩展å相关管ç†'; +$lang['Extension'] = '扩展å'; + +$lang['Sort_Descending'] = '递å‡'; +$lang['Sort_Ascending'] = '递增'; + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_guestbook.php b/includes/shared/phpbb2/language/lang_chinese/lang_guestbook.php new file mode 100644 index 00000000..2b22fa66 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_guestbook.php @@ -0,0 +1,52 @@ + 清空
留言æ¿ä¿¡æ¯ï¼'; +$lang['gb_email_explain'] = '如果"是",然åŽä½ å‘现在墙å£ä¸Šä¸€ä¸ªæ–°çš„消æ¯!'; +$lang['gb_email'] = '当有新消æ¯æ—¶å‘电å­é‚®ä»¶é€šçŸ¥æˆ‘'; +$lang['delete_pro'] = '删除'; +$lang['delete_all_pro'] = '清ç†'; +$lang['post_pro'] = 'post'; +$lang['edit_pro'] = '编辑'; +$lang['back_pro'] = '返回'; +$lang['gb_posts_not'] = 'ä½ å¯ä»¥ä¸å†™stene.U你应该更%s帖å­.'; +$lang['re'] = 'RE'; +$lang['dis'] = '关闭'; +$lang['en'] = '打开'; +$lang['cacho_not_write'] = '请设置文件æƒé™ä¸º 777 '; +$lang['number_url'] = 'å¤åˆ¶æ­¤ç½‘å€é“¾æŽ¥åˆ°è¿™ä¸ªæ¶ˆæ¯:'; +$lang['Confirm_delete_gbpost'] = '你确定è¦åˆ é™¤ç•™è¨€?'; +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_link_exchange.php b/includes/shared/phpbb2/language/lang_chinese/lang_link_exchange.php new file mode 100644 index 00000000..002ad1d6 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_link_exchange.php @@ -0,0 +1,31 @@ +请到贵站添加本站连接
网å€ï¼šhttp://zisuw.com
标题:资速论å›ï¼ˆèµ„速)
'; + +$lang['Link_out_message'] = '5秒åŽè‡ªåŠ¨è·³è½¬,如果您的æµè§ˆå™¨ä¸èƒ½è·³è½¬,请点击这里 跳转ï¼'; + +$lang['Empty_name_submission'] = '您的姓å填写ä¸æ­£ç¡®ï¼'; +$lang['Empty_email_submission'] = '邮箱填写ä¸æ­£ç¡®ï¼'; +$lang['Empty_website_submission'] = '网站å称ä¸æ­£ç¡®ï¼'; +$lang['Empty_site_desc_submission'] = '网站æè¿°ä¸æ­£ç¡®ï¼'; +$lang['Empty_links_url_submission'] = '网å€ä¸æ­£ç¡®ï¼'; +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_main.php b/includes/shared/phpbb2/language/lang_chinese/lang_main.php new file mode 100644 index 00000000..cbb29747 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_main.php @@ -0,0 +1,1432 @@ +%d
页(共有%d页)'; + +$lang['ICQ'] = 'ICQ'; +$lang['Number'] = '电è¯å·ç '; +$lang['AIM'] = 'AIM'; +$lang['MSNM'] = 'MSNM'; +$lang['YIM'] = 'YIM'; +$lang['skr'] = 'éšè—'; + +$lang['Forum_Index'] = '论å›é¦–页'; + +$lang['Post_new_topic'] = 'å‘表新帖'; +$lang['Reply_to_topic'] = '回å¤'; +$lang['Reply_with_quote'] = '引用'; + +$lang['Click_return_topic'] = '点击 %s这里%s 返回主题'; // %s 替æ¢a href链接 +$lang['Click_return_login'] = '点击 %s这里%s 返回é‡è¯•'; +$lang['Click_return_forum'] = '点击 %s这里%s 返回论å›'; +$lang['Click_view_message'] = '点击 %s这里%s 查看贴å­'; +$lang['Click_return_modcp'] = '点击 %s这里%s 返回版主控制é¢ç‰ˆ'; +$lang['Click_return_group'] = '点击 %s这里%s 返回管ç†å›¢é˜Ÿä¿¡æ¯'; + +$lang['Admin_panel'] = '超级管ç†é¢ç‰ˆ'; + +$lang['Board_disable'] = '对ä¸èµ·, 该论å›æš‚æ—¶ä¸å¯ç”¨, 请ç¨å€™é‡è¯•'; +$lang['No_banlist'] = '还没有黑åå•ç”¨æˆ·åœ¨æ­¤åˆ—表上ï¼'; + +$lang['Album'] = '相册'; +$lang['Personal_Gallery_Of_User'] = '%s 的相册'; + +// +// 全局 Header 匹é…字符串 +// +$lang['Registered_users'] = '已注册用户:'; +$lang['Browsing_forum'] = 'æµè§ˆè®ºå›ï¼š'; +$lang['Online_users_zero_total'] ='当å‰å…±æœ‰ 0 ä½ç”¨æˆ·åœ¨çº¿'; +$lang['Online_users_zero_total1'] ='当å‰å…±æœ‰0 为用户在线'; +$lang['Online_user_total'] ='当å‰å…±æœ‰ %d ä½ç”¨æˆ·åœ¨çº¿'; +$lang['Online_users_total1'] ='当å‰å…±æœ‰ %d ä½ç”¨æˆ·åœ¨çº¿'; +$lang['Online_user_total'] ='当å‰å…±æœ‰ %d ä½ç”¨æˆ·åœ¨çº¿'; +$lang['Online_user_totall'] ='当å‰å…±æœ‰ %d ä½ç”¨æˆ·åœ¨çº¿'; +$lang['Reg_users_zero_total'] ='注册用户 0 ä½, '; +$lang['Reg_users_zero_total1'] = ' (0/'; +$lang['Reg_users_zero_total'] ='0 ä½æ³¨å†Œç”¨æˆ·
'; +$lang['Reg_users_total1'] = ' (%d/'; +$lang['Reg_user_total'] = '%d ä½éŸ³å£°ç”¨æˆ·
'; +$lang['Reg_user_total1'] = ' (%d/'; +$lang['Hidden_users_zero_total'] ='0 ä½éšèº«ç”¨æˆ·'; +$lang['Hidden_users_zero_totall'] ='0 ä½éšèº«ç”¨æˆ·'; +$lang['Hidden_users_total'] = '%d ä½éšèº«ç”¨æˆ·'; +$lang['Hidden_users_total1'] = '%d ä½éšèº«ç”¨æˆ·'; +$lang['Hidden_user_total'] = '%d ä½éšèº«ç”¨æˆ·'; +$lang['Hidden_user_total1'] = '%d ä½éšèº«ç”¨æˆ·'; +$lang['Guest_users_zero_total'] = '0 ä½åŒ¿å用户'; +$lang['Guest_users_zero_total1'] = '0)'; +$lang['Guest_users_total'] = '%d ä½åŒ¿å用户'; +$lang['Guest_users_total1'] = '%d)'; +$lang['Guest_user_total'] = '%d ä½åŒ¿å用户'; +$lang['Guest_user_total1'] = '%d)'; +$lang['Record_online_users'] = '最高在线记录 %s ä½ ( %s )';//第二个 %s 匹é…时间 + +$lang['Admin_online_color'] = '%s 超级管ç†å‘˜ %s'; +$lang['Mod_online_color'] = '%s 论å›ç‰ˆä¸» %s'; + +$lang['You_last_visit'] = '上次访问 %s'; +$lang['Current_time'] = '%s'; + +$lang['Search_new'] = 'æœç´¢è®ºå›æ–°è´´'; +$lang['Search_your_posts'] = 'æœç´¢æ‚¨çš„帖å­'; +$lang['Search_unanswered'] = 'æœç´¢æœªå›žå¤ä¸»é¢˜'; + +$lang['Register'] = '注册用户'; +$lang['Profile'] = '用户资料'; +$lang['Edit_profile'] = '编辑简历'; +$lang['Search'] = 'æœç´¢'; +$lang['Memberlist'] = '会员'; +$lang['Banlist'] = '黑åå•'; +$lang['FAQ'] = '疑惑'; +$lang['BBCode_guide'] = 'BBcodeå‘导'; +$lang['Usergroups'] = '用户å°ç»„'; +$lang['Last_Post'] = '最新å‘表'; +$lang['Moderator'] = '版主';//å•æ•° +$lang['Moderators'] = '版主';//å¤æ•° + + +// +// å°ç»„管ç†é¢æ¿ +// +$lang['Group_Control_Panel'] = 'å°ç»„管ç†é¢æ¿'; +$lang['Group_member_details'] = 'å°ç»„列表'; +$lang['Group_member_join'] = 'æˆä¸ºè¯¥å°ç»„æˆå‘˜'; + +$lang['Group_Information'] = 'å°ç»„çš„ä¿¡æ¯'; +$lang['Group_name'] = 'å°ç»„çš„å称'; +$lang['Group_description'] = 'å°ç»„çš„æè¿°'; +$lang['Group_membership'] = 'å°ç»„æˆå‘˜èµ„æ ¼'; +$lang['Group_Members'] = 'å°ç»„æˆå‘˜'; +$lang['Group_Moderator'] = 'å°ç»„的管ç†è€…'; +$lang['Pending_members'] = '等待审核的用户'; + +$lang['Group_type'] = 'å°ç»„类型'; +$lang['Group_open'] = 'å¼€å¯å°ç»„'; +$lang['Group_closed'] = '关闭å°ç»„'; +$lang['Group_hidden'] = 'éšè—å°ç»„'; + +$lang['Current_memberships'] = '点击å°ç»„çš„å称å³å¯æŸ¥çœ‹ä¿¡æ¯'; +$lang['Non_member_groups'] = 'ä¸æ˜¯è¯¥å°ç»„çš„æˆå‘˜'; +$lang['Memberships_pending'] = '等待审核的æˆå‘˜'; + +$lang['No_groups_exist'] = '没有该å°ç»„'; +$lang['Group_not_exist'] = 'å°ç»„ä¸å­˜åœ¨'; + +$lang['Join_group'] = '加入本å°ç»„'; +$lang['No_group_members'] = '没有å°ç»„æˆå‘˜'; +$lang['Group_hidden_members'] = '这是éšè—çš„å°ç»„,您ä¸èƒ½æŸ¥çœ‹æˆå‘˜'; +$lang['No_pending_group_members'] = '没有等待审核的用户'; +$lang['Group_joined'] = '您的申请已ç»æ交,接下æ¥æ‚¨éœ€è¦ç­‰å¾…该å°ç»„的管ç†å‘˜æ‰¹å‡†ï¼Œé€šè¿‡å®¡æ ¸æ—¶æ‚¨ä¼šæ”¶åˆ°é‚®ä»¶é€šçŸ¥ã€‚'; +$lang['Group_request'] = 'å°ç»„申请è¦æ±‚'; +$lang['Group_approved'] = '您申请加入å°ç»„的审核已通过'; +$lang['Group_added'] = '您已ç»åŠ å…¥è¯¥å°ç»„'; +$lang['Already_member_group'] = '您已ç»æ˜¯è¯¥å°ç»„çš„æˆå‘˜'; +$lang['User_is_member_group'] = '用户已ç»æ˜¯è¯¥å°ç»„çš„æˆå‘˜'; +$lang['Group_type_updated'] = 'å·²ç»æˆåŠŸæ›´æ–°å°ç»„类型'; + +$lang['Could_not_add_user'] = '无法添加这个用户'; +$lang['Could_not_anon_user'] = '无法添加匿å用户'; + +$lang['Confirm_unsub'] = '您是å¦è¦é€€å‡ºè¿™ä¸ªå°ç»„?'; +$lang['Confirm_unsub_pending'] = '你确定è¦æ‹’ç»å‚加这一组?'; + +$lang['Unsub_success'] = '您已ç»æˆåŠŸé€€å‡ºè¿™ä¸ªå°ç»„'; + +$lang['Approve_selected'] = '确认'; +$lang['Deny_selected'] = 'æ‹’ç»'; +$lang['Not_logged_in'] = '您必须登陆到用户å°ç»„'; +$lang['Remove_selected'] = '移除'; +$lang['Add_member'] = '添加'; +$lang['Not_group_moderator'] = '您ä¸æ˜¯è¯¥å›¢é˜Ÿçš„管ç†å‘˜ï¼Œæ— æ³•æ‰§è¡Œå›¢é˜Ÿç®¡ç†åŠŸèƒ½'; + +$lang['Login_to_join'] = '请登录网站åŽåœ¨ç”³è¯·åŠ å…¥å°ç»„'; +$lang['This_open_group'] = '这是一个开å¯çš„å°ç»„,å¯ä»¥ç‚¹å‡»ç”³è¯·æˆå‘˜'; +$lang['This_closed_group'] = '这是一个关闭的团队,ä¸æŽ¥å—æ–°çš„æˆå‘˜'; +$lang['This_hidden_group'] = '这是一个éšè—的团队, ä¸å®¹è®¸ä¼šå‘˜ç”³è¯·å¢žåŠ æˆå‘˜'; +$lang['Member_this_group'] = '您是这个å°ç»„çš„æˆå‘˜'; +$lang['Pending_this_group'] = '您申请加入这个å°ç»„的请求正在审核中'; +$lang['Are_group_moderator'] = '您是这个å°ç»„的管ç†å‘˜'; + +$lang['Subscribe'] = '订阅'; +$lang['Unsubscribe'] = '退订'; +$lang['View_Information'] = 'æµè§ˆä¿¡æ¯'; + +// +// 统计 +// +$lang['Topiced_total'] = '主题总数:%d'; +$lang['Posted_articles_total'] = 'å‘贴总数:%d'; +$lang['Registered_users_total'] = '注册会员:%d'; +$lang['Newest_user'] = '新会员:%s%s%s'; +$lang['Attach_total'] = '附件统计:%d'; +$lang['No_new_posts_last_visit'] = ''; +$lang['No_new_posts'] = ''; +$lang['New_posts'] = '>'; +$lang['New_post'] = '>'; +$lang['No_new_posts_hot'] = ''; +$lang['New_posts_hot'] = ''; +$lang['No_new_posts_locked'] = ''; +$lang['New_posts_locked'] = ''; +$lang['Forum_is_locked'] = ''; + +// +// æŽ’åº +// +$lang['Select_sort_method'] = '显示方å¼'; +$lang['Sort'] = '排åº'; +$lang['Sort_Top_Ten'] = 'å‰å排å'; +$lang['Sort_Joined'] = '注册时间'; +$lang['Sort_Username'] = '用户å'; +$lang['Sort_Location'] = '所在地'; +$lang['Sort_Posts'] = '帖å­'; +$lang['Sort_Email'] = 'E-mail'; +$lang['Sort_Website'] = '网站'; +$lang['Sort_Ascending'] = '递增'; +$lang['Sort_Descending'] = '递å‡'; +$lang['Order'] = ''; + +// +// 登录 +// +$lang['Enter_password'] = '输入用户å称和用户密ç ç™»é™†è®ºå›'; +$lang['Login'] = '登录'; +$lang['Logout'] = '退出'; + +$lang['Forgotten_password'] = '忘记密ç ï¼Ÿ'; + +$lang['Log_me_in'] = 'è®°ä½æˆ‘'; + +$lang['Error_login'] = '用户å称或者用户密ç é”™è¯¯'; + + +// +// 索引页 +// +$lang['Index'] = '首页'; +$lang['No_Posts'] = '没有帖å­'; +$lang['No_forums'] = '没有论å›'; + +$lang['Private_Message'] = 'ä¿¡æ¯'; //å•æ•° +$lang['Private_Messages'] = 'ä¿¡æ¯'; //å¤æ•° +$lang['Who_is_Online'] = 'è°åœ¨çº¿'; + +$lang['Mark_all_forums'] = '标记所有论å›ä¸ºå·²è¯»'; +$lang['Forums_marked_read'] = '所有论å›å·²ç»æ ‡è®°å·²è¯»'; + + +// +// 论å›æ¨¡å— +// +$lang['View_forum'] = 'æµè§ˆè®ºå›'; + +$lang['Forum_not_exist'] = '论å›ä¸å­˜åœ¨'; +$lang['Reached_on_error'] = '指定打开的页é¢é”™è¯¯'; + +$lang['Display_topics'] = '查看主题范围'; +$lang['All_Topics'] = '全部主题'; + +$lang['Topic_Announcement'] = '*'; +$lang['Topic_Sticky'] = '!'; +$lang['Topic_Moved'] = '^'; +$lang['Topic_Poll'] = '[%]'; + +$lang['Mark_all_topics'] = '标记所有主题为已读'; +$lang['Topics_marked_read'] = '这个论å›çš„所有主题已ç»æ ‡è®°å·²è¯»'; +$lang['Rules_moderate'] = '您å¯ä»¥ %s管ç†è®ºå›%s '; // %s replaced by a href +$lang['No_topics_post_one'] = '论å›ä¸­è¿˜æ²¡æœ‰è´´å­
点击 å‘表新贴 链接å‘表贴å­'; + + +// +// 帖å­é¡µé¢ +// +$lang['View_topic'] = '查看主题'; +$lang['Download_topic'] = '下载帖å­(txt)'; +$lang['Guest'] = '匿å用户'; +$lang['Post_subject'] = '标题'; +$lang['View_next_topic'] = '下一主题'; +$lang['View_previous_topic'] = '上一主题'; +$lang['Submit_vote'] = 'æ交投票'; +$lang['View_results'] = '查看投票'; + +$lang['No_newer_topics'] = '论å›æ²¡æœ‰æ›´æ–°çš„主题'; +$lang['No_older_topics'] = '论å›æ²¡æœ‰æ›´æ—§çš„主题'; +$lang['Topic_post_not_exist'] = '主题ä¸å­˜åœ¨'; +$lang['No_posts_topic'] = '主题没有这样的贴å­'; + +$lang['Display_posts'] = '显示贴å­èŒƒå›´'; +$lang['All_Posts'] = '全部帖å­'; +$lang['Newest_First'] = '新贴优先'; +$lang['Oldest_First'] = '旧贴优先'; + +$lang['Back_to_top'] = '返回顶部'; + +$lang['Read_profile'] = '*'; // Followed by username of poster +$lang['Send_email'] = 'å‘é€ E-mail '; // Followed by username of poster +$lang['Visit_website'] = '访问å‘贴作者网站'; +$lang['ICQ_status'] = 'ICQ 状æ€'; +$lang['Edit_delete_post'] = '编辑'; +$lang['View_IP'] = 'IP'; +$lang['Delete_post'] = '删除'; + +$lang['wrote'] = '写é“:'; // proceeds the username and is followed by the quoted text +$lang['Quote'] = '引用:'; // comes before bbcode quote output. +$lang['Code'] = ''; // comes before bbcode code output. + +$lang['Edited_time_total'] = 'ç”± %s 最åŽä¿®æ”¹äºŽ %s 共修改了 %d 次ï¼'; +$lang['Edited_times_total'] = 'ç”± %s 最åŽä¿®æ”¹äºŽ %s 共修改了 %d 次ï¼'; + +$lang['Lock_topic'] = 'é”定主题'; +$lang['Unlock_topic'] = '解é”主题'; +$lang['Move_topic'] = '移动主题'; +$lang['Delete_topic'] = '删除主题'; +$lang['Split_topic'] = '分割主题'; + +$lang['Stop_watching_topic'] = 'åœæ­¢è·Ÿè¸ª'; +$lang['Start_watching_topic'] = '跟踪主题'; +$lang['No_longer_watching'] = '您ä¸å†è·Ÿè¸ªè¿™ä¸ªä¸»é¢˜'; +$lang['You_are_watching'] = '您现在开始跟踪这个主题'; + +$lang['Total_votes'] = '投票统计'; + +// +// å‘表ã€å›žå¤é¡µé¢(éžä¿¡æ¯) +// +$lang['Message_body'] = '内容'; +$lang['Topic_review'] = '主题评论'; + +$lang['No_post_mode'] = '没有指定å‘帖模å¼'; + +$lang['Post_a_new_topic'] = 'å‘表一个新的主题'; +$lang['Post_a_reply'] = '对当å‰ä¸»é¢˜å‘表回å¤'; +$lang['Post_topic_as'] = 'å‘表一个新的主题'; +$lang['Edit_Post'] = '编辑已å‘布的主题或帖å­'; +$lang['Options'] = 'è´´å­é€‰é¡¹'; + +$lang['Post_Announcement'] = '公告'; +$lang['Post_Sticky'] = '置顶'; +$lang['Post_Normal'] = '正常'; + +$lang['Confirm_delete'] = '请确认是å¦æ‰§è¡Œåˆ é™¤ï¼Ÿ'; +$lang['Confirm_delete_poll'] = '请确认是å¦æ‰§è¡Œåˆ é™¤æŠ•ç¥¨ï¼Ÿ'; + +$lang['Flood_Error'] = '您ä¸èƒ½é©¬ä¸Šå‘表第二æ¡ä¿¡æ¯ï¼Œå› ä¸ºå°äºŽå‘表两æ¡ä¿¡æ¯æ‰€å¿…须最å°é—´éš”时间,请ç¨å€™é‡è¯•'; +$lang['Flood_Icq_Error'] = '您ä¸èƒ½é©¬ä¸Šå‘表第二æ¡icqä¿¡æ¯ï¼Œå› ä¸ºå°äºŽå‘表两æ¡ä¿¡æ¯æ‰€å¿…须最å°é—´éš”时间,请ç¨å€™é‡è¯•'; +$lang['Empty_subject'] = 'å‘表新主题,必须指定主题的标题'; +$lang['Empty_message'] = 'å‘表主题或帖å­å¿…é¡»è¦æœ‰å†…容'; +$lang['Forum_locked'] = '该论å›å·²ç»é”定,ä¸èƒ½å‘表新主题ã€å¸–å­ã€å›žå¤ä¸»é¢˜å’Œç¼–辑å‘è´´'; +$lang['Topic_locked'] = '该主题已ç»é”定,ä¸èƒ½ç¼–辑贴å­å’Œå›žå¤ä¸»é¢˜'; +$lang['Topic_locked1'] = '#'; +$lang['No_post_id'] = '您必须选择è¦ç¼–辑的贴å­'; +$lang['No_topic_id'] = '您必须选择è¦å›žå¤çš„主题'; +$lang['No_valid_mode'] = '您åªèƒ½å‘表新帖å­ã€å›žå¤ä¸»é¢˜æˆ–者引用回å¤ï¼Œè¯·è¿”回é‡è¯•'; +$lang['No_such_post'] = '帖å­ä¸å­˜åœ¨ï¼Œè¯·è¿”回é‡è¯•'; +$lang['Edit_own_posts'] = '对ä¸èµ·ï¼Œæ‚¨æ²¡æœ‰æƒé™ç¼–辑别人的帖å­æˆ–主题'; +$lang['Delete_own_posts'] = '对ä¸èµ·ï¼Œæ‚¨æ²¡æœ‰æƒé™åˆ é™¤åˆ«äººçš„帖å­æˆ–主题'; +$lang['Cannot_delete_replied'] = '对ä¸èµ·ï¼Œæ‚¨ä¸èƒ½åˆ é™¤æ‚¨å‘表的主题,因为别人已ç»æ¢å¤äº†æ‚¨çš„主题'; +$lang['Cannot_delete_poll'] = '对ä¸èµ·ï¼Œæ‚¨ä¸èƒ½åˆ é™¤ä¸€ä¸ªå·²ç»æœ‰æŠ•ç¥¨çš„è´´å­'; +$lang['Empty_poll_title'] = '您必须输入投票标题'; +$lang['To_few_poll_options'] = '您必须输入两个或更多的投票选项'; +$lang['To_many_poll_options'] = '您输入的投票选项已ç»è¶…出'; +$lang['Post_has_no_poll'] = '这个贴å­æ²¡æœ‰æŠ•ç¥¨'; +$lang['Already_voted'] = '您已ç»æŠ•ç¥¨'; +$lang['No_vote_option'] = '你必须指定投票选项'; + +$lang['Add_poll'] = '添加投票'; +$lang['Add_poll_explain'] = 'å‡å¦‚ä¸æƒ³ä¸ºä¸»é¢˜æ·»åŠ æŠ•ç¥¨ï¼Œè¯·ä¿ç•™ä¸‹é¢é¡¹ç›®ç•™ç©º'; +$lang['Poll_question'] = '投票问题'; +$lang['Poll_option'] = '投票选项'; +$lang['Add_option'] = '添加选项'; +$lang['Update'] = 'æ›´æ–°'; +$lang['Delete'] = '删除'; +$lang['Poll_for'] = '有效期é™'; +$lang['Days'] = '天'; // This is used for the Run poll for ... Days + in admin_forums for pruning +$lang['Poll_for_explain'] = '[ å•ä½:天. 输入 0 或者ä¿ç•™ç©ºç™½è¡¨ç¤ºæ— é™æœŸæŽ¥å—投票 ]'; +$lang['Delete_poll'] = '删除投票'; + +$lang['Disable_HTML_post'] = '在该贴中å±è”½ HTML 代ç '; +$lang['Disable_BBCode_post'] = '在该贴中å±è”½ BBCode 代ç '; +$lang['Disable_Smilies_post'] = '在该贴中å±è”½è¡¨æƒ…代ç '; + +$lang['HTML_is_ON'] = 'HTML 表情 开放'; +$lang['HTML_is_OFF'] = 'HTML 表情 关闭'; +$lang['BBCode_is_ON'] = '%sBBCode%s ä»£ç  å¼€æ”¾'; +$lang['BBCode_is_OFF'] = '%sBBCode%s ä»£ç  å…³é—­'; +$lang['Smilies_are_ON'] = 'è¡¨æƒ…ä»£ç  å¼€æ”¾'; +$lang['Smilies_are_OFF'] = 'è¡¨æƒ…ä»£ç  å…³é—­'; + +$lang['Attach_signature'] = '个性签å (个性签åå¯ä»¥åœ¨ç”¨æˆ·èµ„料中进行修改)'; +$lang['Notify'] = '当有回贴时候请通知我'; +$lang['Delete_post'] = '删除'; + +$lang['Stored'] = '您的评论已ç»æˆåŠŸå‘表'; +$lang['Deleted'] = '您的贴å­å·²ç»æˆåŠŸåˆ é™¤'; +$lang['Poll_delete'] = '您的投票已ç»æˆåŠŸåˆ é™¤'; +$lang['Vote_cast'] = '您已ç»å®ŒæˆæŠ•ç¥¨'; + +$lang['Topic_reply_notification'] = '主题回å¤é€šçŸ¥'; + +$lang['bbcode_b_help'] = '粗体文字: [b]粗体文字[/b] (alt+b)'; +$lang['bbcode_i_help'] = '斜体文字: [i]斜体文字[/i] (alt+i)'; +$lang['bbcode_u_help'] = '下划线文字: [u]下划线文字[/u] (alt+u)'; +$lang['bbcode_q_help'] = '引用文字: [quote]引用文字[/quote] (alt+q)'; +$lang['bbcode_c_help'] = '代ç æ˜¾ç¤º: [code]代ç èŒƒä¾‹[/code] (alt+c)'; +$lang['bbcode_l_help'] = 'å­å¼¹åˆ—表: [list]å­å¼¹åˆ—表[/list] (alt+l)'; +$lang['bbcode_o_help'] = '顺åºåˆ—表: [list=]顺åºåˆ—表[/list] (alt+o)'; +$lang['bbcode_p_help'] = 'æ’入图åƒ: [img]http://image_url[/img] (alt+p)'; +$lang['bbcode_w_help'] = 'æ’入链接: [url]http://url[/url] 或者 [url=http://url]链接标题[/url] (alt+w)'; +$lang['bbcode_a_help'] = '关闭所有标签'; +$lang['bbcode_s_help'] = '字体颜色: [color=red]范例文字[/color] æ示: 也å¯ä»¥ä½¿ç”¨ color=#FF0000'; +$lang['bbcode_f_help'] = '字体大å°: [size=x-small]å°å­—体[/size]'; + +$lang['Emoticons'] = '表情图标'; +$lang['More_emoticons'] = '更多图标'; + +$lang['Font_color'] = '字体颜色'; +$lang['color_default'] = '默认'; +$lang['color_dark_red'] = '深红色'; +$lang['color_red'] = '红色'; +$lang['color_orange'] = '橙色'; +$lang['color_brown'] = '棕色'; +$lang['color_yellow'] = '黄色'; +$lang['color_green'] = '绿色'; +$lang['color_olive'] = '橄榄色'; +$lang['color_cyan'] = 'é’色'; +$lang['color_blue'] = 'è“色'; +$lang['color_dark_blue'] = 'æ·±è“色'; +$lang['color_indigo'] = 'é›è“'; +$lang['color_violet'] = 'è“ç´«'; +$lang['color_white'] = '白色'; +$lang['color_black'] = '黑色'; + +$lang['Font_size'] = '字体大å°'; +$lang['font_tiny'] = '很å°'; +$lang['font_small'] = 'å°å·'; +$lang['font_normal'] = '正常'; +$lang['font_large'] = '大å·'; +$lang['font_huge'] = '巨大'; + +$lang['Close_Tags'] = '关闭标签'; +$lang['Styles_tip'] = 'æ示: 这些风格设置å¯ä»¥å¿«é€Ÿåœ°åº”到指定的文字当中'; + + +// +// ä¿¡æ¯ é¡µé¢ +// +$lang['Private_Messaging'] = 'ä¿¡æ¯'; + +$lang['Login_check_pm'] = '登录验è¯æ¶ˆæ¯'; +$lang['New_pms'] = '收信箱(%d)'; // 您有 x æ¡æ¶ˆæ¯ +$lang['New_pm'] = '收信箱(%d)'; // You have 1 new message +$lang['No_new_pm'] = '收信箱(0)'; +$lang['Unread_pms'] = '未读的信æ¯ï¼š%d'; //å•æ•° +$lang['Unread_pm'] = '未读的信æ¯ï¼š%d'; //å¤æ•° +$lang['No_unread_pm'] = '没有未读信æ¯'; +$lang['You_new_pm'] = '您有 %d æ¡æœªè¯»ä¿¡æ¯'; +$lang['You_new_pms'] = '您有 %d æ¡æœªè¯»ä¿¡æ¯'; +$lang['You_no_new_pm'] = ''; + +$lang['Unread_message'] = '>'; +$lang['Read_message'] = ''; + +$lang['Read_pm'] = '阅读信æ¯'; +$lang['Pm_history'] = 'ä¿¡æ¯è®°å½•'; +$lang['Post_new_pm'] = 'å‘ä¿¡æ¯'; +$lang['Post_reply_pm'] = '回信æ¯'; +$lang['Post_quote_pm'] = '引用'; +$lang['Edit_pm'] = '编辑信æ¯'; + +$lang['Inbox'] = '收件箱'; +$lang['Outbox'] = 'å‘件箱'; +$lang['Savebox'] = 'è‰ç¨¿'; +$lang['Sentbox'] = 'å·²å‘é€'; +$lang['Flag'] = '图标'; +$lang['Subject'] = '标题'; +$lang['From'] = 'æ¥è‡ª'; +$lang['To'] = '收件人'; +$lang['Date'] = '日期'; +$lang['Mark'] = '标记'; +$lang['Sent'] = 'å‘é€'; +$lang['Saved'] = 'ä¿å­˜'; +$lang['Delete_marked'] = '删除已读'; +$lang['Delete_all'] = '全部删除'; +$lang['Save_marked'] = 'ä¿å­˜å·²è¯»'; +$lang['Save_message'] = 'ä¿å­˜ä¿¡æ¯'; +$lang['Delete_message'] = '删除信æ¯'; + +$lang['Display_messages'] = '显示信æ¯èŒƒå›´'; // Followed by number of days/weeks/months +$lang['All_Messages'] = '全部信æ¯'; + +$lang['No_messages_folder'] = '该文件夹没有信æ¯'; + +$lang['PM_disabled'] = '管ç†å‘˜å±è”½äº†ç§äººä¿¡æ¯åŠŸèƒ½'; +$lang['Cannot_send_privmsg'] = '对ä¸èµ·ï¼Œä»…管ç†å‘˜å¯ä»¥æ‹’收ç§äººä¿¡æ¯'; +$lang['No_to_user'] = '必须输入用户å称æ‰èƒ½å‘é€ä¿¡æ¯'; +$lang['No_such_user'] = '对ä¸èµ·ï¼Œæ‚¨è¾“入的用户ä¸å­˜åœ¨'; +$lang['Strlen_subject'] = '您输入的标题必须大于3个字符'; + +$lang['Disable_HTML_pm'] = '在这个信æ¯é‡Œç¦æ­¢HTML语言'; +$lang['Disable_BBCode_pm'] = '在这个信æ¯é‡Œç¦æ­¢BBCode'; +$lang['Disable_Smilies_pm'] = '在这个信æ¯é‡Œç¦æ­¢è¡¨æƒ…符å·'; + +$lang['Message_sent'] ='您的消æ¯å·²å‘é€'; + +$lang['Click_return_inbox'] = '点击 %s这里%s 返回信æ¯é¡µé¢'; +$lang['Click_return_index'] = '点击 %s这里%s 返回论å›é¦–页'; + +$lang['Send_a_new_message'] = 'å‘é€ä¿¡æ¯'; +$lang['Send_a_reply'] = '回å¤ä¿¡æ¯'; +$lang['Edit_message'] = '编辑信æ¯'; + +$lang['Notification_subject'] = '有新的信æ¯'; + +$lang['Find_username'] = '查找用户å称'; +$lang['Find'] = '查找'; +$lang['No_match'] = '没有找到匹é…项'; + +$lang['No_post_id'] = '没有指定å‘è´´ ID'; +$lang['No_such_folder'] = '没有这样的文件夹'; +$lang['No_folder'] = '没有指定文件'; + +$lang['Mark_all'] = '全部选中'; +$lang['Unmark_all'] = '全部å选'; + +$lang['Confirm_delete_pm'] = '确认是å¦åˆ é™¤è¿™äº›ä¿¡æ¯ï¼Ÿ'; +$lang['Confirm_delete_pms'] = '确认是å¦åˆ é™¤è¿™äº›ä¿¡æ¯ï¼Ÿ'; + +$lang['Click_view_privmsg'] = '点击 %s这里%s 进入信æ¯é¡µé¢'; + +$lang['register_pm_subject'] = 'æ­å–œæ‚¨ï¼Œæ‚¨å·²æˆåŠŸæ³¨å†Œä¸º %s 的会员ï¼'; +$lang['register_pm'] = '当您收到这æ¡ä¿¡æ¯æ—¶ï¼Œè¯´æ˜Žæ‚¨çš„账户已æˆåŠŸæ¿€æ´»ï¼Œæ‚¨å¯ä»¥åˆ é™¤è¿™æ¡æ¶ˆæ¯ï¼Œè¯·å‹¿å›žå¤æ­¤ä¿¡æ¯ï¼'; + +// +// 个人简介ã€æ³¨å†Œ +// +$lang['Viewing_user_profile'] = '%s 的个人空间'; +$lang['About_user'] = '关于 %s'; +$lang['Edit_Prorile_Reg'] = '修改密ç '; +$lang['Edit_Prorile_Style'] = '修改风格'; + +$lang['Edit_Prorile_Config'] = '个人设置'; +$lang['Edit_Prorile_Info'] = '编辑资料'; +$lang['Items_required'] = '标记 * 选项必须填写'; +$lang['Registration_info'] = '注册信æ¯'; +$lang['Profile_info'] = '个人空间'; +$lang['Profile_info_warn'] = '该信æ¯è¢«å…¬å¼€æ˜¾ç¤º'; +$lang['Avatar_panel'] = '头åƒç®¡ç†'; +$lang['Avatar_gallery'] = '头åƒåˆ—表'; +$lang['Preferences'] = 'å‚数选项'; + +$lang['Website'] = '网站'; +$lang['Location'] = '所在地'; +$lang['Contact'] = 'è”系方å¼'; +$lang['Email_address'] = 'E-mail地å€'; +$lang['Email'] = 'E-mail'; +$lang['Send_private_message'] = 'å‘ä¿¡æ¯'; +$lang['Hidden_email'] = '[ éšè— ]'; +$lang['Search_user_posts'] = 'æœç´¢ç”¨æˆ·å‘è´´'; +$lang['Interests'] = '爱好'; +$lang['Occupation'] = 'èŒä¸š'; +$lang['Poster_rank'] = '等级'; +$lang['No_user_icq_send'] = 'ICQ功能已关闭ï¼'; + +$lang['Total_posts'] = '帖å­æ€»æ•°'; +$lang['User_post_pct_stats'] = 'å %.2f%%'; +$lang['User_post_day_stats'] = 'å %.2f'; +$lang['Search_user_posts'] = 'æœç´¢ %s 的所有å‘è´´'; + +$lang['No_user_id_specified'] = '对ä¸èµ·ï¼Œç”¨æˆ·ä¸å­˜åœ¨'; +$lang['No_user_icq_specified'] = '此用户没有 ICQ å·ç '; +$lang['Wrong_Profile'] = '您ä¸èƒ½ç¼–辑他人的资料'; + +$lang['Only_one_avatar'] = 'åªèƒ½è®¾ç½®ä¸€ä¸ªå¤´åƒ'; +$lang['File_no_data'] = '您指定的 URL 没有包å«ç›¸å…³çš„文件数æ®'; +$lang['No_connection_URL'] = '无法连接到您指定的 URL'; +$lang['Incomplete_URL'] = '您输入 URL ä¸å®Œæ•´'; +$lang['Wrong_remote_avatar_format'] = '指定的 URL 远程头åƒä¸æ­£ç¡®'; +$lang['No_send_account_inactive'] = '对ä¸èµ·ï¼Œå› ä¸ºæ‚¨çš„å¸å·å°šæœªæ¿€æ´»ï¼Œæ‰€ä»¥æ— æ³•ä½¿ç”¨æ‰¾å›žå¯†ç åŠŸèƒ½ã€‚请è”系论å›ç®¡ç†å‘˜ä»¥èŽ·å¾—更多的信æ¯'; + +$lang['Always_smile'] = '总是å…许表情符å·'; +$lang['Always_html'] = '总是å…许 HTML'; +$lang['Always_bbcode'] = '总是å…许 BBCode'; +$lang['Always_add_sig'] = '总是附上个性签å'; +$lang['Always_notify'] = '总是接å—回贴通知'; +$lang['Always_notify_to_email'] = 'å…许论å›ç›´æŽ¥å‘é€ E-mail'; +$lang['Always_notify_to_pm'] = 'å…许论å›å‘é€ä¿¡æ¯'; +$lang['Notify_to_pm_subject'] = 'å…许å‘é€ä¿¡æ¯æ ‡é¢˜'; +$lang['Notify_to_pm_msg'] = '您好ï¼æ‚¨æ”¶åˆ°æ­¤æ¶ˆæ¯ï¼Œå› ä¸ºï¼Œè§‚看此主题 “%sâ€ã€‚ 在本主题中,一个新的消æ¯è‡ªæ‚¨ä¸Šæ¬¡è®¿é—®ã€‚您å¯ä»¥æŒ‰ç…§é“¾æŽ¥ï¼Œè¯»å–å“应;没有新的通知将å‘é€ï¼Œç›´åˆ°ä½ çœ‹åˆ°çš„主题 %s 。如果你ä¸æƒ³éµå¾ªè¿™ä¸ªä¸»é¢˜ï¼Œç„¶åŽç‚¹å‡»é“¾æŽ¥ “ä¸å†å¯»æ‰¾ç­”案†在页é¢åº•éƒ¨çš„è¯é¢˜ï¼Œæˆ–点击以下链接 %s'; +$lang['Always_notify_explain'] = '当有人回å¤ä¸»é¢˜æ—¶å€™ï¼Œå‘é€é‚®ä»¶é€šçŸ¥ç»™æˆ‘,å¯ä»¥åœ¨æ‚¨çš„任何å‘贴中修改'; + +$lang['Board_style'] = '风格'; +$lang['Board_lang'] = '语言'; +$lang['No_themes'] = '没有论å›é£Žæ ¼å¯é€‰æ‹©'; +$lang['Timezone'] = '所在时区'; +$lang['Date_format'] = '日期格å¼'; +$lang['Signature'] = '个性签å'; +$lang['Public_view_email'] = '总是显示我的邮件地å€'; + +$lang['Current_password'] = '当å‰å¯†ç '; +$lang['New_password'] = '新的密ç '; +$lang['Confirm_password'] = '确认密ç '; +$lang['Confirm_password_explain'] = '当您希望改å˜å¯†ç æˆ–是您的电å­é‚®ä»¶åœ°å€æ—¶æ‚¨å¿…须确认现在正在使用的密ç '; +$lang['password_if_changed'] = 'å‡å¦‚ä¸æƒ³ä¿®æ”¹å¯†ç ï¼Œè¯·ä¿ç•™ç©ºç™½'; +$lang['password_confirm_if_changed'] = '当修改密ç æ—¶å€™ï¼Œè¯·é‡å¤è¾“入新的密ç '; + +$lang['Avatar'] = '头åƒ'; +$lang['Avatar_explain'] = '最高é™åˆ¶ (åƒç´ %d x %d å’Œ %d KB)'; +$lang['Upload_Avatar_file'] = '从本地上传个性头åƒ'; +$lang['Upload_Avatar_URL'] = '从一个 URL 链接上传个性头åƒ'; +$lang['Upload_Avatar_URL_explain'] = '输入完整的头åƒå›¾ç‰‡æ‰€åœ¨ URL 链接ä½ç½®ï¼Œåˆ™å›¾ç‰‡å°†è¢«å¤åˆ¶åˆ°è¯¥æœ¬åœ°æœåŠ¡å™¨ä¸Š'; +$lang['Pick_local_Avatar'] = '从æœåŠ¡å™¨å¤´åƒåˆ—表中选择个性头åƒ'; +$lang['Link_remote_Avatar'] = '链接个性头åƒ'; +$lang['Link_remote_Avatar_explain'] = '输入完整的头åƒå›¾ç‰‡æ‰€åœ¨ URL 链接ä½ç½®ï¼Œåˆ™æ‚¨çš„个性头åƒé“¾æŽ¥åˆ°è¯¥ç½‘å€'; +$lang['Avatar_URL'] = 'ä¸ªæ€§å¤´åƒ URL'; +$lang['Select_from_gallery'] = '从头åƒåˆ—表中选择个性头åƒ'; +$lang['View_avatar_gallery'] = '显示个性头åƒåˆ—表'; + +$lang['Select_avatar'] = '选择头åƒ'; +$lang['Return_profile'] = 'é‡ç½®å¤´åƒ'; +$lang['Select_category'] = '选择分类'; + +$lang['Delete_Image'] ='删除图åƒ'; +$lang['Current_Image'] ='当å‰å›¾åƒ'; + +$lang['Notify_on_privmsg'] = '用信æ¯é€šçŸ¥æˆ‘'; +$lang['Popup_on_privmsg'] = '当有新的ç§äººä¿¡æ¯å¼¹å‡ºçª—å£'; +$lang['Popup_on_privmsg_explain'] = '当有新的ç§äººä¿¡æ¯æ—¶å€™ï¼ŒæŸäº›æ¨¡æ¿å¯ä»¥æ‰“开新的窗å£è¿›è¡Œæ示'; +$lang['Hide_user'] = 'éšè—论å›åœ¨çº¿çŠ¶æ€'; + +$lang['Profile_updated'] = '您的用户资料已ç»æ›´æ–°'; +$lang['Profile_updated_inactive'] = '您的用户资料已ç»æ›´æ–°ï¼Œä½†å› ä¸ºä¿®æ”¹äº†æŸäº›é‡è¦çš„用户资料部分,当å‰å¸å·æš‚时处于ä¸å¯ç”¨ã€‚请收å–邮件将被告知如何é‡æ–°æ¿€æ´»æ‚¨çš„å¸å·ï¼Œæˆ–者请求论å›ç®¡ç†å‘˜æ¢å¤æ¿€æ´»æ‚¨çš„å¸å·'; + +$lang['Password_mismatch'] = '两次输入密ç ä¸ä¸€æ ·'; +$lang['Current_password_mismatch'] = 'æ供的当å‰å¯†ç ä¸æ­£ç¡®æ‰€ä»¥ä¿®æ”¹å¯†ç ä¸æˆåŠŸ'; +$lang['Password_long'] = '密ç ä¸èƒ½å¤šäºŽ 32 个字符'; +$lang['Username_taken'] ='对ä¸èµ·ï¼Œè¯¥ç”¨æˆ·åå·²ç»å­˜åœ¨'; +$lang['Username_invalid'] ='对ä¸èµ·ï¼Œä½ ä¸èƒ½ä½¿ç”¨è¿™ä¸ªç”¨æˆ·å'; +$lang['Username_disallowed'] ='对ä¸èµ·ï¼Œè¿™ä¸ªåå­—ä¸å…许使用'; +$lang['Email_taken'] ='对ä¸èµ·ï¼Œè¿™ä¸ªE-mail地å€å·²ç»è¢«å…¶ä»–用户使用'; +$lang['Email_banned'] ='对ä¸èµ·ï¼Œè¿™ä¸ªE-mail地å€å·²ç»è¢«åˆ—入黑åå•'; +$lang['Email_invalid'] ='对ä¸èµ·ï¼Œè¿™ä¸ªE-mail地å€æ˜¯ä¸æ­£ç¡®'; +$lang['Invalid_username'] ='所请求的用户å已被使用,ç¦æ­¢æˆ–包å«ä¸æ°å½“字符,比如:英文引å·'; +$lang['Signature_too_long'] ='ç­¾å太长'; +$lang['Fields_empty'] ='您必须填写必填资料'; +$lang['Avatar_filetype'] ='头åƒæ–‡ä»¶å¿…须是.JPG .gif或.png'; +$lang['Avatar_filesize'] ='头åƒæ–‡ä»¶ä¸å¤§äºŽ %d KB'; +$lang['Avatar_imagesize'] ='头åƒä¸å¾—超过%dåƒç´ å®½å’Œ%dåƒç´ é«˜'; + +$lang['Welcome_subject'] = '欢迎您访问 %s'; +$lang['New_account_subject'] = '新的用户å¸å·'; +$lang['Account_activated_subject'] = 'å¸å·å·²ç»æ¿€æ´»'; + +$lang['Account_added'] = '谢谢您的注册,å¸å·å·²ç»å»ºç«‹ï¼Œé©¬ä¸Šå°±ä½¿ç”¨æ‚¨çš„用户å称和用户密ç ç™»é™†è®ºå›'; +$lang['Account_inactive'] = '您的å¸å·å·²ç»å»ºç«‹ã€‚然而,由于论å›éœ€è¦å¸å·æ¿€æ´»è¯·æ±‚,一段激活代ç å·²ç»é€šè¿‡æ‚¨å…ˆå‰æ供的邮件地å€å‘é€å‡ºåŽ»ã€‚请查收邮件并点击激活代ç '; +$lang['Account_inactive_admin'] = '您的å¸å·å·²ç»å»ºç«‹ã€‚然而,由于论å›é™åˆ¶å¸å·å¿…须由论å›ç®¡ç†å‘˜æ¿€æ´»ã€‚当您的å¸å·è¢«è®ºå›ç®¡ç†å‘˜æ¿€æ´»æ—¶å€™å°†å‘é€ä¸€ä¸ªé‚®ä»¶é€šçŸ¥ç»™æ‚¨'; +$lang['Account_active'] = '您的å¸å·å·²ç»æ¿€æ´»ï¼Œè°¢è°¢æ‚¨çš„注册'; +$lang['Account_active_admin'] = '该å¸å·çŽ°åœ¨å·²ç»æ¿€æ´»'; +$lang['Reactivate'] = 'é‡æ–°æ¿€æ´»å¸å·!'; +$lang['Already_activated'] = '您已ç»æ¿€æ´»å¸å·'; +$lang['COPPA'] = '您的å¸å·å·²ç»èŽ·å¾—批准并且被激活,请收信查阅相关信æ¯'; + +$lang['Registration'] = '论å›æ³¨å†Œç« ç¨‹'; +$lang['Reg_agreement'] = '尽管论å›ç®¡ç†å‘˜å’Œç‰ˆä¸»ä»¬å°†åŠªåŠ›æŽ§åˆ¶ä¸é€‚åˆå‘表的贴å­äº§ç”Ÿï¼Œä½†ä¸å¯èƒ½åšåˆ°ä»”细阅读æ¯ä¸ªè´´å­å†…容。论å›ç”¨æˆ·å‘表的所有信æ¯å°†è¿…速出现在论å›ä¸Šï¼Œå…¶æ‰€å‘表的信æ¯ä»…代表å‘贴者本人的言行与è§è§£ï¼Œå¹¶ä¸”由此å¯èƒ½å¼•èµ·çš„任何争议与纠纷,甚至法律责任å‡ç”±å‘贴者å•ç‹¬æ‰¿æ‹…其所å‘表内容的全部责任。与本论å›å’ŒåŠå…¶ç¨‹åºçš„å‘布者无任何关系,都ä¸æ‰¿æ‹…任何责任。
您必需åŒæ„ä¸å‘表带有辱骂ã€æ·«ç§½ã€ç²—ä¿—ã€è¯½è°¤ã€å¸¦æœ‰ä»‡æ¨æ€§ã€æå“çš„ã€ä¸å¥åº·çš„或是任何è¿å法律的内容。如果您这样åšå°†å¯¼è‡´æ‚¨çš„账户将立å³å’Œæ°¸ä¹…性的被å°é”。(您的网络æœåŠ¡æ供商也会被通知)在这个情况下,这个IP地å€çš„所有用户都将被记录。您必须åŒæ„系统管ç†æˆå‘˜ä»¬æœ‰åœ¨ä»»ä½•æ—¶é—´åˆ é™¤ã€ä¿®æ”¹ã€ç§»åŠ¨æˆ–关闭任何主题的æƒåŠ›ã€‚作为一个论å›çš„一个æˆå‘˜ï¼Œæ‚¨å¿…é¡»åŒæ„您所æ供的任何资料都将被存入数æ®åº“中,这些资料除éžæœ‰æ‚¨çš„åŒæ„,系统管ç†å‘˜ä»¬ç»ä¸ä¼šå¯¹ç¬¬ä¸‰æ–¹å…¬å¼€ï¼Œç„¶è€Œæˆ‘们ä¸èƒ½ä¿è¯ä»»ä½•å¯èƒ½å¯¼è‡´èµ„料泄露的骇客入侵行为。
1ã€éµå®ˆä¸­åŽäººæ°‘共和国的å„项有关法律法规。
2ã€ä¸å¾—在å‘布任何色情éžæ³•ï¼Œä»¥åŠå±å®³å›½å®¶å®‰å…¨çš„言论。
3ã€ä¸¥ç¦é“¾æŽ¥æœ‰å…³æ”¿æ²»ã€è‰²æƒ…ã€å®—æ•™ã€è¿·ä¿¡ç­‰è¿æ³•ä¿¡æ¯ã€‚
4ã€æ‰¿æ‹…一切因您的行为而直接或间接导致的民事或刑事法律责任。
5ã€äº’相尊é‡ï¼Œéµå®ˆäº’è”网络é“德;严ç¦äº’相æ¶æ„攻击,漫骂。
6ã€ç®¡ç†å‘˜åŠç‰ˆä¸»æœ‰æƒä¿ç•™æˆ–删除论å›ä¸­çš„ä»»æ„内容。
7ã€è®ºå›ç®¡ç†å‘˜æ‹¥æœ‰ä¸€åˆ‡ç®¡ç†è®ºå›çš„æƒåŠ›ã€‚
这个讨论区系统使用cookieæ¥å‚¨å­˜æ‚¨çš„个人信æ¯(在您使用的本地计算机),这些cookieä¸åŒ…å«ä»»ä½•æ‚¨æ›¾ç»è¾“入过的信æ¯ï¼Œå®ƒä»¬åªä¸ºäº†æ–¹ä¾¿æ‚¨èƒ½æ›´æ–¹ä¾¿çš„æµè§ˆã€‚电å­é‚®ä»¶åœ°å€åªç”¨æ¥ç¡®è®¤æ‚¨çš„注册和å‘é€å¯†ç ä½¿ç”¨ã€‚(如果您忘记了密ç ,将会å‘é€æ–°å¯†ç çš„地å€)
当您点击下é¢é“¾æŽ¥çš„åŒæ—¶ï¼Œè¡¨ç¤ºæ‚¨æ„¿æ„æ— æ¡ä»¶æŽ¥å—上述é˜è¿°ä¸Žå£°æ˜Žï¼Œå¹¶ä¸”对所有的言行负责。
管ç†å‘˜åœ¨ä»»ä½•æ—¶å€™ï¼Œæ‹¥æœ‰åˆ é™¤ã€ç¼–辑ã€ç§»åŠ¨æˆ–者关闭任何线索(è´´å­)çš„æƒåŠ›'; + +$lang['Agree_under_13'] = '我åŒæ„这些å议,但是 å°äºŽ 13 å²'; +$lang['Agree_over_13'] = '我åŒæ„这些å议,并且 大于 13 å²'; +$lang['Agree_not'] = '我ä¸åŒæ„这些åè®®'; + +$lang['Wrong_activation'] = '激活代ç ä¸æ­£ç¡®'; +$lang['Send_password'] = 'å‘é€æ–°å¯†ç ç»™æˆ‘'; +$lang['Password_updated'] = '新的密ç å·²ç»å»ºç«‹ï¼Œè¯·æ”¶ä¿¡å¹¶æŸ¥é˜…ä¿¡æ¯ï¼Œä»¥ä¾¿äº†è§£å¦‚何使新的密ç ç”Ÿæ•ˆ'; +$lang['No_email_match'] = '无法从论å›ç”¨æˆ·åˆ—表中找到与该邮件地å€ç›¸åŒ¹é…的用户å称'; +$lang['New_password_activation'] = '新的密ç å·²ç»ç”Ÿæ•ˆ'; +$lang['Password_activated'] = '您的å¸å·å·²ç»ç”Ÿæ•ˆï¼Œè¯·ä½¿ç”¨æ‚¨æ”¶åˆ°çš„邮件中æ供的用户å称和用户密ç è¿›è¡Œç™»é™†è®ºå›'; + +$lang['Send_email_msg'] = 'å‘é€é‚®ä»¶ä¿¡æ¯'; +$lang['No_user_specified'] = '没有指定用户'; +$lang['User_prevent_email'] = '该用户ä¸å¸Œæœ›æŽ¥æ”¶é‚®ä»¶ï¼Œè¯·å¿è¯•å‘é€ç§äººä¿¡æ¯'; +$lang['User_not_exist'] = '用户ä¸å­˜åœ¨'; +$lang['CC_email'] = 'å‘é€ä¸€ä»½æ‹·è´ç»™æ‚¨è‡ªå·±'; +$lang['Email_message_desc'] = 'åªèƒ½å‘é€çº¯æ–‡æœ¬ä¿¡æ¯ï¼Œä¸èƒ½åŒ…括任何 HTML 代ç æˆ–者 BBCode 论å›ä»£ç ï¼Œè¯¥è¿”回信æ¯å°†å‘é€åˆ°æ‚¨çš„邮件地å€ã€‚'; +$lang['Flood_email_limit'] = '您当å‰ä¸èƒ½å‘é€å…¶ä»–的邮件给其他人,请ç¨å€™é‡è¯•'; +$lang['Recipient'] = '收件人'; +$lang['Email_sent'] = '邮件已ç»å‘é€'; +$lang['Send_email'] = 'å‘é€é‚®ä»¶'; +$lang['Empty_subject_email'] = '您必须指定邮件标题'; +$lang['Empty_message_email'] = '您必须邮件内容'; + +$lang['Confirm_code_wrong'] ='确认代ç è¾“入无效'; +$lang['Too_many_registers'] ='您已ç»è¾¾åˆ°äº†æ³¨å†Œå°è¯•é™åˆ¶æ•°é‡ï¼Œè¯·ç¨åŽå†è¯•.'; +$lang['No_message_icq'] ='请输入消æ¯'; +$lang['Message_icq_send'] ='èŠå¤©æ¶ˆæ¯å·²å‘é€'; +$lang['Icq_disable'] ='论å›å·²ç¦ç”¨å‘é€ICQ'; +$lang['Icq_msg_bot'] ='\n------------\n点击 %s这里%s 返回'; + +// +// æœç´¢ +// +$lang['Search_query'] = 'æœç´¢æ¡ä»¶'; +$lang['Search_options'] = 'æœç´¢é€‰é¡¹'; +$lang['Sort_Ascending'] = '递增'; +$lang['Sort_Descending'] = '递å‡'; + +$lang['Search_keywords'] = 'æœç´¢å…³é”®è¯'; +$lang['Search_keywords_explain'] = '您å¯ä»¥ä½¿ç”¨ AND,OR å’Œ NOT 连接è¯å¾—到更准确的æœç´¢ç»“果。使用 * 作为通é…符。短语请使用 "" 包括起æ¥'; +$lang['Search_author'] = 'æœç´¢ä½œè€…'; +$lang['Search_user'] = 'æœç´¢ä¼šå‘˜'; +$lang['Search_author_explain'] = '使用通é…符 * 批é‡ç¬¦åˆçš„结果'; + +$lang['Search_for_any'] = '模糊æœç´¢'; +$lang['Search_for_all'] = '精确æœç´¢'; +$lang['Search_title_msg'] = 'æœç´¢è´´å­ä¸»é¢˜å’Œå†…容'; +$lang['Search_msg_only'] = 'ä»…æœç´¢è´´å­çš„内容'; + +$lang['Return_first'] = '显示最先的'; // followed by xxx characters in a select box +$lang['characters_posts'] = '个符åˆçš„项目'; + +$lang['Search_previous'] = 'æœç´¢ä»¥å‰çš„文章'; + +$lang['Sort_by'] = '排åºæ–¹æ³•'; +$lang['Sort_Time'] = 'å‘表时间'; +$lang['Sort_Post_Subject'] = '主题'; +$lang['Sort_Topic_Title'] = '文章标题'; +$lang['Sort_Author'] = '作者'; +$lang['Sort_Forum'] = '论å›'; + +$lang['Display_results'] = '显示模å¼'; +$lang['All_available'] = '所有'; +$lang['No_searchable_forums'] = '您没有æƒé™æœç´¢ä»»ä½•è®ºå›'; + +$lang['No_search_match'] = '没有找到本匹é…的主题或者贴å­'; +$lang['Found_search_match'] = '找到 %d 个æœç´¢ç»“æžœ'; // eg. Search found 1 match +$lang['Found_search_matches'] = '找到 %d 个æœç´¢ç»“æžœ'; // eg. Search found 24 matches + +$lang['Search_Flood_Error'] = '请勿在短时间é‡å¤æœç´¢ï¼'; +$lang['Close_window'] = '关闭窗å£'; + + +// +// æƒé™ +// +// 下é¢çš„ %s 讲å–代 'user' arrays 数组 +$lang['Sorry_auth_announce'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥å‘表公告'; +$lang['Sorry_auth_sticky'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥ç½®é¡¶è´´å­'; +$lang['Sorry_auth_read'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥é˜…读主题'; +$lang['Sorry_auth_post'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥å‘表新贴'; +$lang['Sorry_auth_reply'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥å›žå¤å‘è´´'; +$lang['Sorry_auth_edit'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥ç¼–辑å‘è´´'; +$lang['Sorry_auth_delete'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥åˆ é™¤è´´å­'; +$lang['Sorry_auth_vote'] = '对ä¸èµ·ï¼Œä»… %s å¯ä»¥å‚与投票'; + +// These replace the %s in the above strings +$lang['Auth_Anonymous_Users'] = '游客'; +$lang['Auth_Registered_Users'] = '注册用户'; +$lang['Auth_Users_granted_access'] = '授æƒç”¨æˆ·'; +$lang['Auth_Moderators'] = '论å›ç‰ˆä¸»'; +$lang['Auth_Administrators'] = '超级管ç†å‘˜'; + +$lang['Not_Moderator'] = '您ä¸æ˜¯è¯¥è®ºå›ç‰ˆä¸»'; +$lang['Not_Authorised'] = '您没有æƒé™è®¿é—®'; + +$lang['You_been_banned'] = '您已ç»è¢«è®ºå›ç¦æ­¢ï¼è¯·è”系网站管ç†å‘˜æˆ–者论å›ç®¡ç†å‘˜ä»¥èŽ·å¾—更多信æ¯ï¼Œæˆ–者查看您是å¦è§¦çŠ¯äº†
规则 '; + + +// +// 在线 +// +$lang['Reg_users_zero_online'] = '注册用户:0
'; // There ae 5 Registered and +$lang['Reg_users_online'] = '注册用户:%d
'; // There ae 5 Registered and +$lang['Reg_user_online'] = '注册用户:%d
'; +$lang['Hidden_users_zero_online'] = '注册用户:0
'; // 6 Hidden users online +$lang['Hidden_users_online'] = 'éšèº«ç”¨æˆ·ï¼š%d
'; +$lang['Hidden_user_online'] = 'éšèº«ç”¨æˆ·ï¼š%d
'; // 6 Hidden users online +$lang['Guest_users_online'] = '匿å用户:%d
'; +$lang['Guest_users_zero_online'] = '匿å用户:0
'; // There are 10 Guest users online +$lang['Guest_user_online'] = '匿å用户:%d'; +$lang['No_users_browsing'] = '当å‰æ²¡æœ‰ç”¨æˆ·åœ¨çº¿'; + +$lang['Online_explain'] = '该数æ®åªæ˜¾ç¤ºæœ€è¿‘五分钟以æ¥çš„论å›ç”¨æˆ·æ´»åŠ¨æƒ…况'; + +$lang['Forum_Location'] = 'ä½ç½®'; +$lang['Last_updated'] = '动æ€'; + +$lang['Forum_index'] = '论å›é¦–页'; +$lang['Logging_on'] = '正在登陆网站'; +$lang['Posting_message'] = '正在å‘表贴å­'; +$lang['Searching_forums'] = '正在æœç´¢è®ºå›'; +$lang['Viewing_profile'] = 'æµè§ˆç”¨æˆ·èµ„æ–™'; +$lang['Viewing_online'] = 'æµè§ˆè®ºå›åœ¨çº¿'; +$lang['Viewing_member_list'] = 'æµè§ˆä¼šå‘˜åˆ—表'; +$lang['Viewing_priv_msgs'] = '正在æµè§ˆä¿¡æ¯'; +$lang['Viewing_FAQ'] = '正在æµè§ˆ FAQ'; + + +// +// 版主控制é¢æ¿ +// +$lang['Mod_CP'] = '版主控制é¢ç‰ˆ'; +$lang['Mod_CP_locktopic'] = 'é”定帖å­'; +$lang['Mod_CP_explain'] = '您有æƒé™ä½¿ç”¨ä¸‹é¢è¡¨å•å¯¹è¯¥è®ºå›è¿›è¡Œç®¡ç†ï¼Œæ‚¨å¯ä»¥é”定ã€è§£é”ã€ç§»åŠ¨æˆ–者删除任何主题。
å‡å¦‚该论å›è¢«æŒ‡å®šä¸ºåŠ å¯†è®ºå›ï¼Œæ‚¨è¿˜å¯ä»¥å¯¹è®ºå›ç”¨æˆ·è¿›è¡Œè®¿é—®æŽˆæƒ.'; + +$lang['Select'] = '选择'; +$lang['Delete'] = '删除'; +$lang['Move'] = '移动'; +$lang['Lock'] = 'é”定'; +$lang['Unlock'] = '解é”'; + +$lang['Topics_Removed'] = '选中的主题已ç»æˆåŠŸä»Žæ•°æ®åº“中删除'; +$lang['Topics_Locked'] = '选中的主题已ç»é”定'; +$lang['Topics_Moved'] = '选中的主题已ç»ç§»åŠ¨'; +$lang['Topics_Unlocked'] = '选中的主题已ç»è§£é”'; +$lang['No_Topics_Moved'] = '没有主题移动'; + +$lang['All_review_topics_modcp'] = '全部评论'; +$lang['Paginal_review_topics_modcp'] = '版主æ¯é¡µè¯„论的主题'; +$lang['Page_Delete_Post'] = '删除'; + +$lang['Confirm_delete_topic'] = '是å¦è¦åˆ é™¤é€‰å®šçš„主题å—?'; +$lang['Confirm_lock_topic'] = '是å¦è¦é”定选定的主题å—?'; +$lang['Confirm_unlock_topic'] = '是å¦è¦è§£é”选定的主题å—?'; +$lang['Confirm_move_topic'] = '是å¦è¦ç§»åŠ¨é€‰æ‹©çš„主题å—?'; + +$lang['Move_to_forum'] = '移动主题到新的论å›'; +$lang['Leave_shadow_topic'] = '移动帖å­åˆ°æ–°çš„论å›ï¼Œä¿ç•™åŽŸå¸–å­'; + +$lang['Split_Topic'] = '分割主题控制é¢ç‰ˆ'; +$lang['Split_Topic_explain'] = '使用下é¢è¡¨å•ï¼Œå¯ä»¥å°†ä¸»é¢˜ä¸€åˆ†ä¸ºäºŒï¼Œå¯ä»¥é€‰æ‹©ä»»ä¸€è´´å­æˆ–者从选定的贴å­è¿›è¡Œåˆ†å‰²'; +$lang['Split_title'] = '新主题标题'; +$lang['Split_forum'] = '新贴所在论å›'; +$lang['Split_posts'] = '分割已选贴å­'; +$lang['Split_after'] = '选择分割贴å­'; +$lang['Topic_split'] = '所选主题已ç»æˆåŠŸåˆ†å‰²'; + +$lang['Too_many_error'] = '选择的贴å­å¤ªå¤šï¼Œåªå¯ä»¥é€‰æ‹©ä¸»é¢˜ä¸­çš„一个贴å­è¿›è¡Œåˆ†å‰²ï¼'; + +$lang['None_selected'] = '您没有预先选择任何主题以供æ“作,请返回最少选择一个.'; +$lang['New_forum'] = '新的论å›'; + +$lang['This_posts_IP'] = 'å‘表本贴使用的 IP 是'; +$lang['Other_IP_this_user'] = '该用户曾ç»ä½¿ç”¨çš„其他 IP 是'; +$lang['Users_this_IP'] = '使用该 IP 的用户有'; +$lang['IP_info'] = 'IP ä¿¡æ¯'; +$lang['Lookup_IP'] = '查找 IP'; + +// +// 规则 +// +$lang['Edit_cat_rules'] = '编辑规则分类'; +$lang['New_cat_rules'] = '新的规则分类'; +$lang['Edit_rules'] = '编辑规则'; +$lang['New_rules'] = '新的规则'; +$lang['Delete_rules'] = '删除规则'; +$lang['Delete_cat_rules'] = '删除规则分类'; + +// +// 时间 +// +$lang['All_times'] = '当å‰æ—¶åŒºä¸º %s å°æ—¶'; + +$lang['-12'] = 'GMT - 12'; +$lang['-11'] = 'GMT - 11'; +$lang['-10'] = 'GMT - 10'; +$lang['-9'] = 'GMT - 9'; +$lang['-8'] = 'GMT - 8'; +$lang['-7'] = 'GMT - 7'; +$lang['-6'] = 'GMT - 6'; +$lang['-5'] = 'GMT - 5'; +$lang['-4'] = 'GMT - 4'; +$lang['-3.5'] = 'GMT - 3:30'; +$lang['-3'] = 'GMT - 3'; +$lang['-2'] = 'GMT - 2'; +$lang['-1'] = 'GMT - 1'; +$lang['0'] = 'GMT'; +$lang['1'] = 'GMT + 1'; +$lang['2'] = 'GMT + 2'; +$lang['3'] = 'GMT + 3'; +$lang['3.5'] = 'GMT + 3:30'; +$lang['4'] = 'GMT + 4'; +$lang['4.5'] = 'GMT + 4:30'; +$lang['5'] = 'GMT + 5'; +$lang['5.5'] = 'GMT + 5:30'; +$lang['6'] = 'GMT + 6'; +$lang['6.5'] = 'GMT + 6:30'; +$lang['7'] = 'GMT + 7'; +$lang['8'] = 'GMT + 8'; +$lang['9'] = 'GMT + 9'; +$lang['9.5'] = 'GMT + 9:30'; +$lang['10'] = 'GMT + 10'; +$lang['11'] = 'GMT + 11'; +$lang['12'] = 'GMT + 12'; + +// These are displayed in the timezone select box +$lang['tz']['-12'] = 'GMT - 12 时间'; +$lang['tz']['-11'] = 'GMT - 11 时间'; +$lang['tz']['-10'] = 'GMT - 10 时间'; +$lang['tz']['-9'] = 'GMT - 9 时间'; +$lang['tz']['-8'] = 'GMT - 8 时间'; +$lang['tz']['-7'] = 'GMT - 7 时间'; +$lang['tz']['-6'] = 'GMT - 6 时间'; +$lang['tz']['-5'] = 'GMT - 5 时间'; +$lang['tz']['-4'] = 'GMT - 4 时间'; +$lang['tz']['-3.5'] = 'GMT - 3.5 时间'; +$lang['tz']['-3'] = 'GMT - 3 时间'; +$lang['tz']['-2'] = 'GMT - 2 时间'; +$lang['tz']['-1'] = 'GMT - 1 时间'; +$lang['tz']['0'] = 'GMT'; +$lang['tz']['1'] = 'GMT + 1 时间'; +$lang['tz']['2'] = 'GMT + 2 时间'; +$lang['tz']['3'] = 'GMT + 3 时间'; +$lang['tz']['3.5'] = 'GMT + 3.5 时间'; +$lang['tz']['4'] = 'GMT + 4 时间'; +$lang['tz']['4.5'] = 'GMT + 4.5 时间'; +$lang['tz']['5'] = 'GMT + 5 时间'; +$lang['tz']['5.5'] = 'GMT + 5.5 时间'; +$lang['tz']['6'] = 'GMT + 6 时间'; +$lang['tz']['6.5'] = 'GMT + 6.5 时间'; +$lang['tz']['7'] = 'GMT + 7 时间'; +$lang['tz']['8'] = 'GMT + 8 北京时间'; +$lang['tz']['9'] = 'GMT + 9 时间'; +$lang['tz']['9.5'] = 'GMT + 9.5 时间'; +$lang['tz']['10'] = 'GMT + 10 时间'; +$lang['tz']['11'] = 'GMT + 11 时间'; +$lang['tz']['12'] = 'GMT + 12 时间'; +$lang['tz']['13'] = 'GMT + 13 时间'; + +$lang['datetime']['Sunday'] = '星期日'; +$lang['datetime']['Monday'] = '星期一'; +$lang['datetime']['Tuesday'] = '星期二'; +$lang['datetime']['Wednesday'] = '星期三'; +$lang['datetime']['Thursday'] = '星期四'; +$lang['datetime']['Friday'] = '星期五'; +$lang['datetime']['Saturday'] = '星期六'; + +$lang['datetime']['Sun'] = 'æ—¥'; +$lang['datetime']['Mon'] = '一'; +$lang['datetime']['Tue'] = '二'; +$lang['datetime']['Wed'] = '三'; +$lang['datetime']['Thu'] = 'å››'; +$lang['datetime']['Fri'] = '五'; +$lang['datetime']['Sat'] = 'å…­'; + +$lang['datetime']['January'] = '1'; +$lang['datetime']['February'] = '2'; +$lang['datetime']['March'] = '3'; +$lang['datetime']['April'] = '4'; +$lang['datetime']['Mays'] = '5'; +$lang['datetime']['June'] = '6'; +$lang['datetime']['July'] = '7'; +$lang['datetime']['August'] = '8'; +$lang['datetime']['September'] = '9'; +$lang['datetime']['October'] = '10'; +$lang['datetime']['November'] = '11'; +$lang['datetime']['December'] = '12'; + +$lang['datetime']['Jan'] = '1'; +$lang['datetime']['Feb'] = '2'; +$lang['datetime']['Mar'] = '3'; +$lang['datetime']['Apr'] = '4'; +$lang['datetime']['May'] = '5'; +$lang['datetime']['Jun'] = '6'; +$lang['datetime']['Jul'] = '7'; +$lang['datetime']['Aug'] = '8'; +$lang['datetime']['Sep'] = '9'; +$lang['datetime']['Oct'] = '10'; +$lang['datetime']['Nov'] = '11'; +$lang['datetime']['Dec'] = '12'; + +// +// 系统æ示 +// +$lang['Information'] = '系统æ示'; +$lang['Critical_Information'] = 'é‡è¦ä¿¡æ¯'; + +$lang['General_Error'] = '一般错误'; +$lang['Critical_Error'] = 'é‡è¦é”™è¯¯'; +$lang['An_error_occured'] = 'å‘生错误'; +$lang['A_critical_error'] = '一个é‡è¦é”™è¯¯'; + +$lang['Please_remove_install'] ='请先把install文件夹删除或改åï¼'; +$lang['Session_invalid'] ='错误ï¼è¯·é‡æ–°åŠ è½½é¡µé¢ï¼'; +$lang['Invalid_session'] ='错误ï¼è¯·é‡æ–°åŠ è½½é¡µé¢ï¼'; +$lang['Login_attempts_exceeded'] ='已达到å°è¯•ç™»å½•æ¬¡æ•°(%s),您需è¦ç­‰å¾…(%s)分钟æ‰èƒ½å†æ¬¡å°è¯•ç™»å½•ã€‚'; + +// +// That's all Folks! +// ------------------------------------------------- + +// Start add - Online/Offline/Hidden Mod +$lang['Online'] = '(在线)'; +$lang['Offline'] = '(离线)'; +$lang['Hidden'] = '(éšèº«)'; +$lang['is_online'] = '%s 在线'; +$lang['is_offline'] = '%s 离线'; +$lang['is_hidden'] = '%s éšèº«'; +$lang['Online_status'] = '在线状æ€'; +// End add - Online/Offline/Hidden Mod + +$lang['Topics_per_page'] ='æ¯é¡µæ˜¾ç¤ºä¸»é¢˜'; +$lang['Posts_per_page'] ='æ¯é¡µæ˜¾ç¤ºå›žå¤'; + +// Shopã€points相关 +$lang['Shop'] = '虚拟商店'; +$lang['Welcome_To_Shop'] = '欢迎光临虚拟商店'; +$lang['Welcome_To_Shop_Example'] = '当你在论å›å‘布帖å­ï¼Œç³»ç»Ÿä¼šç»™äºˆæ‚¨ç›¸åº”çš„%s,您å¯ä»¥ä½¿ç”¨è¿™äº›%s进行购买本站的一些æœåŠ¡';// %s替æ¢ç§¯åˆ† +$lang['Shop_Virtual_Service_List'] = '虚拟æœåŠ¡åˆ—表'; + +$lang['Shop_Enter_Username'] = '请输入用户å'; +$lang['Shop_Enter_Buy_Username'] = '输入è¦è´­ä¹°çš„用户å'; +$lang['Shop_Enter_Color'] = '输入颜色代ç '; +$lang['Shop_Enter_Rank'] = '输入等级'; + + +$lang['Shop_Error_not_open'] = '该功能未放,如需è¦å¼€é€šè¯·è”系超级管ç†å‘˜ï¼'; +$lang['Shop_Error_Not_Enough_Points'] = '对ä¸èµ·ï¼Œæ‚¨æ²¡æœ‰è¶³å¤Ÿçš„ %sï¼';// 替æ¢ç§¯åˆ†å +$lang['Shop_Error_Enter_Char_invalid'] = '输入的字符串无效ï¼'; + +$lang['Shop_Back'] = '返回商店'; +$lang['Shop_Back_Index'] = '返回首页'; + +// 下é¢çš„ %s 替æ¢ç§¯åˆ†å称,%d替æ¢ç§¯åˆ†æ•°é‡ +$lang['Shop_Change_Username'] = '更改用户å'; +$lang['Shop_Change_Username_Example'] = '在这里,您åªè¦æ”¯ä»˜ %d %s,您就å¯ä»¥å¾—到一次更改用户å的机会ï¼
注æ„:请ä¸è¦å«æœ‰éžæ³•å­—符。
'; +$lang['Shop_Change_Username_Example2'] = '您的虚拟账户现在有 %d %s,足够支付更改用户å的费用,请确认是å¦éœ€è¦æ›´æ”¹ç”¨æˆ·å?
'; +$lang['Shop_Change_Username_Example3'] = '您的虚拟账户现在有 %d %s,ä¸è¶³æ”¯ä»˜æ›´æ”¹ç”¨æˆ·å的费用ï¼
'; + +$lang['Shop_Change_Username_Color'] = '更改用户å颜色'; +$lang['Shop_Change_Username_Color_Example'] = '在这里,您åªè¦æ”¯ä»˜ %d %s,您就å¯ä»¥å¾—到一次更改用户å颜色的机会ï¼
注æ„:颜色ä¸èƒ½å¤ªè¿‡äºŽåˆºçœ¼æˆ–令人å感。
'; +$lang['Shop_Change_Username_Color_Example2'] = '您的虚拟账户现在有 %d %s,足够支付更改用户å颜色的费用,请确认是å¦éœ€è¦æ›´æ”¹ç”¨æˆ·å颜色?
'; +$lang['Shop_Change_Username_Color_Example3'] = '您的虚拟账户现在有 %d %s,ä¸è¶³æ”¯ä»˜æ›´æ”¹ç”¨æˆ·å颜色的费用ï¼
'; + +$lang['Shop_Change_Rank'] = '更改我的等级'; +$lang['Shop_Change_Rank_Example'] = '在这里,您åªè¦æ”¯ä»˜ %d %s,您就å¯ä»¥å¾—到一次更改等级的机会ï¼
注æ„:请ä¸è¦å«æœ‰éžæ³•å­—符。
'; +$lang['Shop_Change_Username_Color_Example2'] = '您的虚拟账户现在有 %d %s,足够支付更改等级的费用,请确认是å¦éœ€è¦æ›´æ”¹æˆ‘的等级?
'; +$lang['Shop_Change_Username_Color_Example3'] = '您的虚拟账户现在有 %d %s,ä¸è¶³æ”¯ä»˜æ›´æ”¹ç­‰çº§çš„费用ï¼
'; + +$lang['Shop_Buy_Account'] = '购买本站å¸å·'; +$lang['Shop_Buy_Account_Example'] = '在这里,您å¯ä»¥ç”¨æ‚¨è´¦æˆ·çš„%sæ¥è´­ä¹°å·²è¿‡æœŸçš„å¸å·ï¼Œè´­ä¹°å¸å·å¿…须满足以下æ¡ä»¶ï¼š
1ã€ç›®å‰å¸å·ä¸èƒ½å°‘于 %d 帖å­
2ã€æ³¨å†Œæ—¶é—´ä¸å°‘于 %d 周
3ã€è´­ä¹°éœ€è¦ %d %s
'; +$lang['Shop_Buy_Account_Example2'] = '您的虚拟账户现在有 %d %s,足够支付购买å¸å·çš„费用,请确认是å¦éœ€è¦è´­ä¹°å¸å·ï¼Ÿ
'; +$lang['Shop_Buy_Account_Example3'] = '您的虚拟账户现在有 %d %s,ä¸è¶³æ”¯ä»˜è´­ä¹°å¸å·çš„费用ï¼
'; + +$lang['Shop_Remove_Ban'] = '解除黑åå•'; +$lang['Shop_Remove_Ban_Example'] = '在这里,您å¯ä»¥ä½¿ç”¨è´¦æˆ·çš„%s为您的朋å‹è§£é™¤é»‘åå•
解除黑åå•æ¯å°æ—¶éœ€è¦ %d %sï¼ä¸è¶³ä¸€å°æ—¶æŒ‰ä¸€å°æ—¶è®¡ç®—
'; +$lang['Shop_Remove_Ban_Example2'] = '您的虚拟账户目å‰æœ‰ %d %s,å¯ä»¥ä¸ºæ‚¨çš„好å‹è§£é™¤é»‘åå•ï¼Œè¯·ç¡®è®¤æ˜¯å¦éœ€è¦ä¸ºå¥½å‹è§£é™¤é»‘åå•ï¼Ÿ
'; +$lang['Shop_Remove_Ban_Example3'] = '您的虚拟账户目å‰æœ‰ %d %s,ä¸è¶³æ”¯ä»˜è§£é™¤å¥½å‹é»‘åå•çš„费用ï¼
'; + +$lang['Shop_Buy_ICQ'] = 'è´­ä¹° ICQ å¸å·'; +$lang['Shop_Buy_ICQ_Example'] = '在这里,您å¯ä»¥ç”¨æ‚¨è´¦æˆ·çš„%sæ¥è´­ä¹°æœ¬ç«™å‡ºå”®çš„ ICQ å¸å·ï¼Œè´­ä¹°ä¹‹å‰è¯·ç¡®è®¤æ‚¨çš„虚拟账户是å¦æœ‰%s
'; +$lang['Shop_Buy_ICQ_Example2'] = '您的虚拟账户没有%sï¼
'; +$lang['Shop_Buy_ICQ_Example3'] = '您的虚拟账户现在有 %d %s,是å¦åŽ»è¿›å…¥é€‰è´­ï¼Ÿ
'; + +$lang['Shop_Earn_points'] = 'æµè§ˆå¹¿å‘Š'; +$lang['Shop_Earn_points_Example'] = '您å¯ä»¥ç‚¹å‡»èµžåŠ©å•†çš„链接æ¥èµšå–%s,您的虚拟账户目å‰æœ‰ %d %s,请确认是å¦è¿›å…¥èµžåŠ©å•†çš„链接列表看看?
'; + +$lang['Shop_Put_In_Ad'] = '投放广告'; +$lang['Shop_Put_In_Ad_Example'] = '在这里,您å¯ä»¥ç”¨%s购买本站的首页广告ä½ç½®æ¥æŠ•æ”¾å¹¿å‘Šï¼
'; +$lang['Shop_Put_In_Ad_Example2'] = '您的虚拟账户目å‰æœ‰ %d %sï¼%s必须大于 1 æ‰æœ‰æƒé™è¿›å…¥æŸ¥çœ‹ï¼
'; +$lang['Shop_Put_In_Ad_Example3'] = '您的虚拟账户目å‰æœ‰ %d %sï¼é¡¶éƒ¨å¹¿å‘Šéœ€è¦ %d %sï¼Œåº•éƒ¨å¹¿å‘Šéœ€è¦ %d%s,请确认是å¦è¿›å…¥æŠ•æ”¾å¹¿å‘Šé“¾æŽ¥ï¼
'; + +// 支付功能 +$lang['Shop_Error_pay_Money_not_open'] = 'СиÑтема выплат на Ñтом форуме отключена.'; +$lang['Shop_Pay_Money'] = 'Конвертировать в рубли'; +$lang['Shop_Pay_Money_Exch'] = 'ОбменÑÑ‚ÑŒ'; +$lang['Shop_Pay_Money_To_Shop'] = 'Ð’ магазин'; +$lang['Shop_Pay_Money_To_Index'] = 'Заработать ещё'; +$lang['Shop_Pay_Money_Edit_Profileinfo'] = 'Редактировать профиль'; +$lang['Shop_Pay_Money_Example'] = 'Ð’ Ñтом разделе вы можете обменÑÑ‚ÑŒ любое количеÑтво Ñвоих монет на рубли, которые впоÑледÑтвии будут выплачены вам в ÑоответÑтвии Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ð¼Ð¸ оплаты за ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° форуме (при уÑловии что вы указали номер рублёвого кошелька у ÑÐµÐ±Ñ Ð² профиле).
За одну монету мы даём %d руб.
'; +$lang['Shop_Pay_Money_Example1'] = 'Ðа вашем Ñчету %d монет(Ñ‹). Хотите произвеÑти обмен?
'; +$lang['Shop_Pay_Money_Example2'] = 'Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтой функции необходимо в профиле указать номер рублёвого кошелька.
'; +$lang['Shop_Pay_Money_Example3'] = 'Ðа вашем Ñчету %d монет. Этого недоÑтаточно.
'; + +$lang['Shop_Pay_Money_Action'] = 'Введите количеÑтво монет, которое вы хотите обменÑÑ‚ÑŒ на рубли (не более %s . )'; +$lang['Shop_Pay_Money_money'] = 'указанное вами количеÑтво'; +$lang['Shop_error_message_die_1'] = 'Обмен уÑпешно Ñовершён.
Ðа ваш рублёвый Ñчёт на форуме перечиÑлено %s руб.
Итого у Ð²Ð°Ñ %s руб.
Со Ñчёта ÑпиÑано %s монет.
ОÑтаток %s монет.'; + + +$lang['Profile_Send_Money'] = '转让积分'; +$lang['Error_Profile_Send_Money'] = '请指定转让的数é‡ï¼'; + + + +// +// Democracy MOD +// +$lang = array( + // 一般åŠæ‚项 + 'Reputation' => '评价', + 'Warnings' => '*', + 'Warning' => '*', + 'reputation_display' => '显示评价', + 'reputation_banned_permanently' => 'æ— é™æœŸç¦æ­¢', + 'reputation_golosov' => '评价:', + 'reputation_polezn' => 'ç»™ Ta 一个评价:', + 'reputation_za' => '好评', + 'reputation_protiv' => '差评', + + // 索引页 + 'reputation_reported_posts' => '通知信æ¯ç»™ç”¨æˆ·: %s', + 'reputation_most_respected_user' => '尊敬的用户: ', + 'reputation_most_respected_users' => '尊敬的用户: ', + 'reputation_least_respected_user' => '尊敬的用户: ', + 'reputation_least_respected_users' => '尊敬的用户: ', + + // 查看评论 + 'New_warning' => '新的警告', + 'New_review' => '新评论', + 'Post_Reports' => '举报给版主', + 'Review' => 'æµè§ˆ', + 'Official' => 'å·²å‘è¡Œ', // i.e. Moderator + 'reputation_of' => '评级报告 %s', + 'reputation_warnings_to' => '由用户å‘出的警告 %s', + 'reputation_warnings_expired' => '过去用户å‘出的警告 %s', + 'reputation_display_expired' => '显示过去的警告', + 'reputation_post_ref' => '看', + 'reputation_post_reviews' => 'å馈消æ¯', + 'reputation_post_deleted' => '删除', + 'reputation_total' => 'ä»…', + 'reputation_issued' => 'å·²å‘è¡Œ', + 'Edit' => '编辑', + 'reputation_edit_review' => '编辑您的评论', + 'reputation_delete_review' => '删除评论', + + // 查看报告 + 'reputation_actions' => '活动', + 'reputation_order_by' => '按', + 'reputation_post_peports_exp' => '使用此页é¢ä¸­ï¼Œæ‚¨å¯ä»¥æ£€æŸ¥æŠ¥å‘Šå’Œè¯„论, æ请您注æ„用户, 并采å–å¿…è¦çš„措施.
æ示: åŽ, åŒæ—¶è¦è€ƒè™‘到 “抱怨†并采å–行动, 删除它, 其他主æŒäººä¸é‡å¤ä½ çš„动作 :)', + 'reputation_report_date' => 'åŽæ—¶é—´', + 'reputation_reports_number' => 'èŒä½æ•°ç›®', + 'reputation_first_reported' => '第一个(ND)', + 'reputation_confirm_report' => '你确定你想è¦æ­¤æ¶ˆæ¯æŠ¥å‘Šç»™ç‰ˆä¸»?', + 'reputation_confirm_report2' => '你确定è¦åœ¨æœ¬æ¬¡å¬å›žæŠ¥å‘Šç‰ˆä¸»?', + 'reputation_report_deleted' => '该通知已被删除', + 'reputation_report_success' => '官员被通报', + 'reputation_reviewed' => 'å‘表的评论文章', // TODO: replace + + // 个人资料 + 'reputation_search_given' => '查找所有用户的评论', + 'reputation_search_reputation' => '详情...', + 'reputation_search_warnings' => '查找所有用户å‘出警告', + + // æµè§ˆå¸–å­ (+一些一般性的按钮) + 'Reviews' => '评论', + 'reputation_view_reviews' => '评论数: %s', + 'reputation_post_warning' => 'å‘出警告 %s (%s, 有效期至: %s)', + 'reputation_post_ban' => '黑åå• %s (%s, 有效期至: %s)', + 'reputation_approve' => '为', + 'reputation_disapprove' => '针对', + 'reputation_reason' => '注æ„', + 'reputation_warn' => '警告', + 'reputation_ban' => '', + 'reputation_ban1' => '加黑', + 'reputation_warn_user' => '警告', + 'reputation_ban_user' => '黑åå•', + 'reputation_report_post' => '报告主æŒäººï¼ˆS)', + 'reputation_report' => '报告', + + // expiration + 'reputation_expire' => '期é™', + 'reputation_expired' => '完æˆ', + 'reputation_expire_never' => 'ä¸é™åˆ¶', + + // 添加/编辑评论 + 'reputation_modify' => '编辑信誉', + 'Reputation_mail_warning'=>'您收到一个警告', + 'Reputation_mail_ban'=>'你已被本论å›ç¦æ­¢', + + 'reputation_expire_fixed' => 'å³æ—¶èµ· %s', // 注æ„:ä¸è¦æŠŠ %s 修改为 %d ! + 'reputation_expire_limited_bottom' => '指定一个值之间 %d 天.', + 'reputation_expire_limited' => '指定一个值之间 %d 至 %d 天', + 'reputation_note_cant_edit' => '请注æ„,您å¯ä»¥åœ¨ä»¥åŽç¼–辑您的评论', + 'reputation_note_can_edit' => '请注æ„,您å¯ä»¥ç¨åŽç¼–辑的文字您的评论', + 'reputation_for_days' => '至 %d 天', + + 'reputation_confirm_delete' => '你确定è¦åˆ é™¤æ­¤è¯„论å—?', + 'reputation_update_successfull' => '已添加您的评论', + 'reputation_warning_successfull' => '用户被警告', + 'reputation_delete_success' => '评论已删除。声望报告进行了更新。', + + // 输入错误 + 'reputation_no_comments_entered' => '您没有输入评论ï¼', + 'reputation_no_post_spec' => 'ä¸ç»™å®šçš„消æ¯ï¼', + 'reputation_no_user_spec' => '未知的用户ï¼', + 'reputation_no_review_spec' => 'Ň评论ï¼', + 'reputation_no_expire_entered' => '您还没有进入这个警告的有效期', + + // 程åºé”™è¯¯ + 'reputation_deleted_no_edit' => '审查,你è¦ç¼–辑的,指的是被删除的消æ¯', + 'reputation_last_warning_issued' => '用户已ç»æŽ¥å—了最åŽçš„警告', + 'reputation_already_warned' => '这篇文章已ç»è­¦å‘Šç”¨æˆ·', + 'reputation_already_banned' => '此用户已被ç¦æ­¢', + 'reputation_already_voted' => '您已ç»æ到了这个帖å­ï¼', + + // æƒé™æŽ§åˆ¶é”™è¯¯ + 'reputation_cant_warn_mods' => '版主,管ç†å‘˜æ— æ³•å¾—到一个警告', + 'reputation_self_no_modify' => 'ä½ ä¸èƒ½æ”¹å˜ä½ çš„å声ï¼', + 'reputation_others_no_edit' => '您åªèƒ½ç¼–辑您自己的评论。', + 'reputation_not_applicable' => '该用户没有信誉', + 'reputation_other_mods_no_edit' => '您å¯ä»¥ç¼–辑留下的其他主æŒäººçš„评论。', + 'reputation_anonymous_no_reputation' => '匿å用户ä¸èƒ½æœ‰ä¿¡èª‰ï¼', + 'reputation_anonymous_no_reviews' => '客人å¯ä»¥åœ¨æ²¡æœ‰æ‚¨çš„å馈ï¼', + 'reputation_limits_apply' => '我有一个信誉,åªæœ‰ç”¨æˆ·å·²ç»è¾¾åˆ°äº†ä¸€å®šçš„èŒä½å’Œå£°æœ›ç‚¹æ•°ã€‚', + 'reputation_time_limit' => 'ä½ ä¸èƒ½æ”¹å˜çš„声誉和相åŒçš„人多一次 %d 分钟', + 'reputation_rotation_limit' => '我们必须改å˜çš„声誉ä¸ä½ŽäºŽ %d ä¸åŒçš„用户, 能够æ高声誉两次相åŒçš„用户。', + + // 空值错误 + 'reputation_no_reviews' => '这篇文章没有任何评论', + 'reputation_no_details' => '该用户没有信誉', + 'reputation_no_warnings' => '该用户没有警告', + + // åå‘链接 + 'reputation_msg_view_warning' => '点击 %s这里%s 查看警告', + 'reputation_msg_delete_report' => '点击 %s这里%s 删除文章', + 'reputation_msg_view_profile' => '点击 %s这里%s æµè§ˆä¸ªäººèµ„æ–™', + 'reputation_msg_back_to_topic' => '点击 %s这里%s 返回帖å­', + 'reputation_msg_back_to_reviews' => '点击 %s这里%s 返回评论', + 'reputation_msg_view_your_review' => '', + 'reputation_msg_back_to_reports' => '点击 %s这里%s 返回通知', + + // å‘布 + 'Post_locked' => '对ä¸èµ·ï¼Œä½ å¯ä»¥ä¸å†ç¼–辑或删除的消æ¯ã€‚', + 'reputation_lock_post' => '冻结åŽ', +) + $lang; + +$lang['Rupoisk_Spam']= '垃圾ä¸é«˜privestvuyutsya,在论å›ä¸Šï¼Œè¯•å›¾æ‰¾åˆ°ä¸€ä¸ªä¸åŒçš„论å›ä¸­çš„垃圾邮件。'; +$lang['SpamMessageDetected']= '垃圾邮件和å‘布链接的网站å«æœ‰ç—…毒éžå¸¸privestvuyutsya在论å›ä¸Šï¼Œè¯•å›¾æ‰¾åˆ°ä¸€ä¸ªä¸åŒçš„论å›ä¸Šçš„垃圾邮件。'; +$lang['GuestsAndNewUsersCondition']= '出版是å—几个æ¡ä»¶ï¼Œç¬¬ä¸€ï¼Œå…¶ä¸­ï¼Œéµå®ˆè®ºå›çš„链接。'; + +// Start add - Birthday MOD +$lang['Birthday'] = '生日'; +$lang['No_birthday_specify'] = '没有会员过生日'; +$lang['Age'] = '年龄'; +$lang['Wrong_birthday_format'] = '生日格å¼æ— æ•ˆ'; +$lang['Birthday_to_high'] = '对ä¸èµ·ï¼Œæ‚¨å¿…须在 %d 月'; +$lang['Birthday_require'] = '你的生日,在此网站上è¦æ±‚'; +$lang['Birthday_to_low'] = '对ä¸èµ·ï¼Œæ‚¨å¿…须至少 %d 月'; +$lang['Submit_date_format'] = 'Y-m-d'; //php date() æ ¼å¼ - 注æ„: åªæœ‰å¹´yã€æœˆmã€æ—¥då¯ä»¥ä½¿ç”¨ï¼Œè€Œä¸”必须使用(å¯ä»¥ä½¿ç”¨ä¸åŒçš„分隔符) +$lang['Birthday_greeting_today'] = '我们想ç¥è´ºï¼Œç¥ä½ åœ¨åˆ°è¾¾ %s å²çš„今天.

管ç†';//%s 被å–代的的用户的年龄 +$lang['Birthday_greeting_prev'] = '我们想给你一个迟æ¥çš„ç¥è´ºï¼Œæˆä¸º %s å²çš„ %s.

管ç†';//%s 被å–代的用户年龄,和生日 +$lang['Greeting_Messaging'] = 'ç¥è´ºæ‚¨'; +$lang['Birthday_today'] = 'ç¥ä½ ç”Ÿæ—¥å¿«ä¹:'; +$lang['Birthday_week'] = '
与生日在未æ¥ç”¨æˆ· %d 天:'; +$lang['Nobirthday_week'] = ''; // %d 是替代天数 +$lang['Nobirthday_today'] = ''; +$lang['Year'] = 'å¹´'; +$lang['Month'] = '月'; +$lang['Day'] = 'æ—¥'; + +// 注æ„: 请ä¸è¦ç¿»è¯‘下é¢4è¡Œ +// 它们会被自动翻译æˆæ‚¨çš„语言 +$lang['day_short'] = array ($lang['datetime']['Sun'],$lang['datetime']['Mon'],$lang['datetime']['Tue'],$lang['datetime']['Wed'],$lang['datetime']['Thu'],$lang['datetime']['Fri'],$lang['datetime']['Sat']); +$lang['day_long'] = array ($lang['datetime']['Sunday'],$lang['datetime']['Monday'],$lang['datetime']['Tuesday'],$lang['datetime']['Wednesday'],$lang['datetime']['Thursday'],$lang['datetime']['Friday'],$lang['datetime']['Saturday']); +$lang['month_short'] = array ($lang['datetime']['Jan'],$lang['datetime']['Feb'],$lang['datetime']['Mar'],$lang['datetime']['Apr'],$lang['datetime']['May'],$lang['datetime']['Jun'],$lang['datetime']['Jul'],$lang['datetime']['Aug'],$lang['datetime']['Sep'],$lang['datetime']['Oct'],$lang['datetime']['Nov'],$lang['datetime']['Dec']); +$lang['month_long'] = array ($lang['datetime']['January'],$lang['datetime']['February'],$lang['datetime']['March'],$lang['datetime']['April'],$lang['datetime']['May'],$lang['datetime']['June'],$lang['datetime']['July'],$lang['datetime']['August'],$lang['datetime']['September'],$lang['datetime']['October'],$lang['datetime']['November'],$lang['datetime']['December']); +// End add - Birthday MOD + +// 开始 - 星座 +$lang['Zodiac'] = '星座'; +$lang['Capricorn'] = '摩羯座'; +$lang['Aquarius'] = '水瓶座'; +$lang['Pisces'] = 'åŒé±¼åº§'; +$lang['Aries'] = '白羊座'; +$lang['Taurus'] = '金牛座'; +$lang['Gemini'] = 'åŒå­åº§'; +$lang['Cancer'] = '巨蟹座'; +$lang['Leo'] = 'ç‹®å­åº§'; +$lang['Virgo'] = '处女座'; +$lang['Libra'] = '天秤座'; +$lang['Scorpio'] = '天èŽåº§'; +$lang['Sagittarius'] = '射手座'; +// ç»“æŸ - 星座 + +// Start add - Gender MOD +$lang['Gender'] = "性别";//在用户的个人资料显示他/她的性别 +$lang['Male'] = "ç”·"; +$lang['Female']="女"; +$lang['No_gender_specify'] = "未知"; +// End add - Gender MOD + +$lang['Staff'] = '管ç†å‘˜'; +$lang['Staff_level'] = array('超级管ç†å‘˜', '总版主', '版主'); +$lang['Staff_forums'] = '论å›'; +$lang['Staff_online'] = '(在线)'; + +// 奖 +$lang['Medal_Control_Panel'] = '奖项控制é¢æ¿'; +$lang['Medals'] = '奖项'; +$lang['View_More'] = '阅读全文...'; +$lang['Medal_amount'] = 'æ•°é‡ï¼š'; +$lang['Medal_Information'] = 'ä¿¡æ¯'; +$lang['Medal_name'] = 'å称'; +$lang['Medal_description'] = '说明'; +$lang['Medal_image'] = '图片'; +$lang['Medal_details'] = '详细信æ¯'; +$lang['Medal_reason'] = '原因'; +$lang['Medal_reason_explain'] = 'é¢å‘该奖项的原因,å¯ä¸å¡«'; +$lang['Medal_no_reason'] = '没有说明原因'; +$lang['Medal_time'] = '获奖时间'; +$lang['Medal_moderator'] = '获奖的版主'; +$lang['No_medal_mod'] = '还没有版主获得该奖ï¼'; +$lang['Medal_userlist'] = '获奖的用户'; +$lang['Medal_Members'] = '获奖的用户'; +$lang['Medal_Members_explain'] = '点击用户å¯ç¼–辑奖的原因'; +$lang['No_medal_members'] = '没有奖项会员'; +$lang['No_medals_exist'] = '没有获奖'; +$lang['Medal_not_exist'] = '奖项ä¸å­˜åœ¨'; +$lang['No_username_specified'] = '没有用户å'; +$lang['No_medal_id_specified'] = '没有用户ID'; +$lang['Medal_user_username'] = '把奖é¢å‘给一个或多个用户'; +$lang['Medal_unmedal_username'] = 'å–消一个或者多个用户奖项'; +$lang['Medal_unmedal_username_explain'] = '您å¯ä»¥é€‰æ‹©å¤šä¸ªç”¨æˆ·ï¼Œä½¿ç”¨åˆé€‚çš„æµè§ˆå™¨ï¼Œä½ çš„键盘和鼠标的组åˆ'; +$lang['Medal_added'] = '奖项添加完æˆ'; +$lang['Medal_update_sucessful'] = '用户和奖励有关的信æ¯å·²æˆåŠŸæ›´æ–°'; +$lang['Could_not_anonymous_user'] = '未注册用户ä¸å¯ä»¥å‚与'; +$lang['Not_medal_moderator'] = 'ä½ ä¸æ˜¯è¿™ä¸ªå¥–项的版主'; +$lang['Link_to_cp'] = '管ç†'; +$lang['Click_return_medal'] = '点击 %s这里%s 返回奖项页é¢'; +$lang['No_medal'] = '没有获奖'; + +// 书签 +$lang['Bookmarks'] = '书签'; +$lang['Set_Bookmark'] = 'ä¿å­˜åˆ°ä¹¦ç­¾'; +$lang['Remove_Bookmark'] = '删除书签'; +$lang['No_Bookmarks'] = '您没有书签'; +$lang['Found_bookmark'] = '您有 %d æ¡ä¹¦ç­¾'; +$lang['Found_bookmarks'] = '您有 %d æ¡ä¹¦ç­¾'; + +// ã€ã€ +$lang['gb_no_id'] = '未知的IDä¿¡æ¯'; +$lang['gb_del'] = '删除'; +$lang['gb_all_del'] = '删除全部'; +$lang['gb_no_per'] = '没有æƒé™ %s'; +$lang['gb_no_me'] = '空消æ¯'; +$lang['gb_post'] = '消æ¯å·²å‘布'; +$lang['gb_edit'] = '消æ¯å·²ç¼–辑'; +$lang['gb_nopag'] = '此页ä¸å¯ç”¨'; +$lang['gb_nores'] = '这堵墙没有消æ¯'; +$lang['gb_error'] = '错误'; +$lang['gb_txt'] = '墙'; +$lang['gb_text2'] = ' [清ç†]'; +$lang['delete_pro'] = '删除'; +$lang['delete_all_pro'] = '删除全部'; +$lang['post_pro'] = 'å‘表'; +$lang['edit_pro'] = '编辑'; +$lang['back_pro'] = '返回'; +$lang['Confirm_delete_gbpost'] = '请确认是å¦åˆ é™¤ï¼Ÿ'; + +// 投诉 +$lang['Post_reports_none_cp'] = '无投诉'; +$lang['Post_reports_one_cp'] = '收到 %s 宗投诉'; +$lang['Post_reports_many_cp'] = '收到 %s 宗投诉'; +$lang['All'] = '全部'; +$lang['Display'] = '显示'; +$lang['Report_post'] = '举报'; +$lang['Reporter'] = '举报者'; +$lang['Status'] = '状æ€'; +$lang['Select_one'] = '选择'; +$lang['Opt_in'] = '新的投诉,å‘出一å°é‚®ä»¶'; +$lang['Opt_out'] = '新的投诉,ä¸è¦å‘出一å°é‚®ä»¶'; +$lang['Post_reported'] = '该报告已æˆåŠŸæ交'; +$lang['Close_success'] = '投诉已æˆåŠŸæ‰“å¼€/关闭'; +$lang['Opt_success'] = '您已订阅/退订的通知'; +$lang['Delete_success'] = '投诉已被æˆåŠŸåˆ é™¤'; +$lang['Click_return_reports'] = '点击 %s返回%s 投诉管ç†'; +$lang['Report_email'] = '接收电å­é‚®ä»¶æŠ•è¯‰'; +$lang['Post_already_reported'] = '此消æ¯å·²æŽ¥èŽ·æŠ•è¯‰ï¼Œ'; +$lang['Report_not_selected'] = '您还没有选择任何投诉'; +$lang['Comments'] = '评论'; +$lang['Last_action_comments'] = '评论的版主'; +$lang['Last_action_comments_explain'] = '请说明对自己的行为的投诉'; +$lang['Comments_explain'] = '请输入举报的原因'; +$lang['Action'] = '行动'; +$lang['Report_comment'] = '动上的评论'; +$lang['Previous_comments'] = '以å‰çš„评论'; +$lang['Last_action_checkbox'] = '这一行动是通过下拉èœå•è¿›è¡Œ'; +$lang['Opened_by_user_on_date'] = 'å¼€å¯ %s %s'; +$lang['Closed_by_user_on_date'] = '关闭 %s %s'; +$lang['Opened'] = 'å¼€å¯å®Œæ¯•'; +$lang['Closed'] = '关闭完毕'; +$lang['Open'] = 'å¼€å¯'; +$lang['Close'] = '关闭'; +$lang['View_post_reports'] = '投诉'; +$lang['Non_existent_posts'] = '找到并删除 %s 宗投诉,有关已删除的邮件'; + +$lang['Links_Allowed_For_Registered_Only'] = '[您必须 %s%s%s åŽæ‰èƒ½æŸ¥çœ‹è¯¥å†…容]'; +$lang['newest_first'] = '新回å¤åœ¨å‰é¢'; +$lang['newest_first_explain'] = '把新的帖å­å›žå¤æ˜¾ç¤ºåœ¨å‰é¢'; + +// 银行 +$lang['bank'] = '虚拟银行'; + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_main_album.php b/includes/shared/phpbb2/language/lang_chinese/lang_main_album.php new file mode 100644 index 00000000..ea254981 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_main_album.php @@ -0,0 +1,150 @@ +å¯ä»¥
添加这类别的图åƒ'; +$lang['Album_upload_cannot'] = '您 ä¸å¯ä»¥ 添加这类别的图åƒ'; +$lang['Album_rate_can'] = 'ä½  å¯ä»¥ è¯„ä»·è¿™ä¸€ç±»åˆ«çš„å›¾åƒ '; +$lang['Album_rate_cannot'] = 'ä½  ä¸å¯ä»¥ 评价这一类别的图åƒ'; +$lang['Album_comment_can'] = 'ä½  å¯ä»¥ 在图åƒä¸Šè¯„论这一类'; +$lang['Album_comment_cannot'] = 'ä½  ä¸å¯ä»¥ 在图åƒä¸Šè¯„论这一类'; +$lang['Album_edit_can'] = 'ä½  å¯ä»¥ 编辑你的照片在这个类别和评论'; +$lang['Album_edit_cannot'] = 'ä½  ä¸å¯ä»¥ 编辑你的照片在这个类别和评论'; +$lang['Album_delete_can'] = 'ä½  å¯ä»¥ 在这个类别中删除你的照片和评论'; +$lang['Album_delete_cannot'] = 'ä½  ä¸å¯ä»¥ 在这个类别中删除你的照片和评论'; +$lang['Album_moderate_can'] = 'ä½  å¯ä»¥ %调整%s 这一类别'; +$lang['Album_moderka'] = '管ç†è¯¥åˆ†ç±»'; + +$lang['Edit_pic'] = '编辑'; +$lang['Delete_pic'] = '删除'; +$lang['Lock'] = 'é”定'; +$lang['Unlock'] = '开放'; +$lang['Move'] = '移动'; +$lang['Rating'] = '分数'; +$lang['Comments'] = '评论'; +$lang['New_Comment'] = '新评论'; + +$lang['Not_rated'] = '未分级'; + +// +// 上传 +// +$lang['Pic_Desc'] = '图片说明'; +$lang['Plain_text_only'] = '文本'; +$lang['Max_length'] = '最大长度(字节)'; +$lang['Upload_pic_from_machine'] = '上传图åƒ'; +$lang['Upload_pic_from_machine_om'] = '上传网络头åƒ'; +$lang['Upload_to_Category'] = '上传到'; +$lang['Upload_thumbnail_from_machine'] = '上传照片(图åƒå¿…须是原始照片一样大å°ï¼‰ç¼©ç•¥å›¾'; +$lang['Upload_thumbnail'] = '上传的缩略图'; +$lang['Upload_thumbnail_explain'] = '必须与原始图åƒç›¸åŒçš„大å°'; +$lang['Thumbnail_size'] = '缩略图尺寸(åƒç´ ï¼‰'; +$lang['Filetype_and_thumbtype_do_not_match'] = 'æ ¼å¼å›¾åƒå’Œå…¶ç¼©ç•¥å›¾ä¸åŒ¹é…'; + +$lang['Upload_no_title'] = '您必须输入图åƒçš„å称'; +$lang['Upload_no_file'] = '您必须输入图åƒçš„路径'; +$lang['Desc_too_long'] = '本图片的æ述长度超过å…许的最大值'; + +$lang['Max_file_size'] = '最大大å°ï¼ˆå­—节)'; +$lang['Max_width'] = '最大图åƒå®½åº¦ï¼ˆåƒç´ ï¼‰'; +$lang['Max_height'] = '最大图åƒé«˜åº¦ï¼ˆåƒç´ ï¼‰'; + +$lang['JPG_allowed'] = 'å…许上传JPGæ ¼å¼å›¾åƒ'; +$lang['PNG_allowed'] = 'å…许上传PNGæ ¼å¼å›¾ç‰‡'; +$lang['GIF_allowed'] = 'å…许上传GIFæ ¼å¼å›¾ç‰‡'; + +$lang['Album_reached_quota'] = '这个类别达到上传图åƒçš„é™åˆ¶ã€‚现在你ä¸èƒ½æ·»åŠ å›¾åƒã€‚请è”系管ç†å‘˜'; +$lang['User_reached_pics_quota'] = '您已达到上传图åƒçš„é™åˆ¶ã€‚现在你ä¸èƒ½æ·»åŠ å›¾åƒã€‚请è”系管ç†å‘˜ã€‚'; + +$lang['Bad_upload_file_size'] = '上传的图片超过å…许大å°ï¼Œæˆ–者文件已æŸå'; +$lang['Not_allowed_file_type'] = 'ä¸å…许的格å¼'; +$lang['Upload_image_size_too_big'] = '图片尺寸太大'; +$lang['Upload_thumbnail_size_too_big'] = '大å°è¶…出'; + +$lang['Missed_pic_title'] = '请输入å称'; + +$lang['Album_upload_successful'] = '图片已æˆåŠŸä¸Šä¼ '; +$lang['Album_upload_need_approval'] = '照片æˆåŠŸä¸Šä¼ 

但是,图åƒå¿…须由版主或管ç†å‘˜æ‰¹å‡†æ‰å˜å¾—å¯ç”¨'; +$lang['Click_return_category'] = '点击 %s这里%s 返回上级页é¢'; +$lang['Click_return_album_index'] = '点击 %s这里%s 返回相册页é¢'; + +// 查看图片 +$lang['Pic_not_exist'] = '此图片ä¸å­˜åœ¨'; + +// 编辑图片 +$lang['Edit_Pic_Info'] = '编辑图片信æ¯'; +$lang['Pics_updated_successfully'] = '图片资料编辑æˆåŠŸ'; + +// 删除图片 +$lang['Album_delete_confirm'] = '你确定删除此图片?'; +$lang['Pics_deleted_successfully'] = '删除æˆåŠŸ'; + +// +// ModCP +// +$lang['Approval'] = '适度'; +$lang['Approve'] = '接å—'; +$lang['Unapprove'] = '下é™'; +$lang['Status'] = '状æ€'; +$lang['Locked'] = '关闭'; +$lang['Not_approved'] = 'æ‹’ç»'; +$lang['Approved'] = '接å—'; +$lang['Move_to_Category'] = '移动到分类'; +$lang['Pics_moved_successfully'] = 'æˆåŠŸç§»åŠ¨'; +$lang['Pics_locked_successfully'] = 'å·²æˆåŠŸæŠŠè¯¥å›¾ç‰‡é”定'; +$lang['Pics_unlocked_successfully'] = 'å·²æˆåŠŸæŠŠè¯¥å›¾ç‰‡è§£é”'; +$lang['Pics_approved_successfully'] = '接å—æˆåŠŸ'; +$lang['Pics_unapproved_successfully'] = 'æ‹’ç»æˆåŠŸ'; + +// +// 评价æˆåŠŸ +// +$lang['Current_Rating'] = '估计'; +$lang['Please_Rate_It'] = '评论图片'; +$lang['Already_rated'] = '你已评论过此图片'; +$lang['Album_rate_successfully'] = '已对该图片进行评论'; +$lang['Post_your_comment'] = 'å‘表评论'; + +// +// 评价错误 +// +$lang['Comment_no_text'] = '您必须输入一个注解文字'; +$lang['Comment_too_long'] = '评论的长度超过å…许的最大值'; +$lang['Comment_delete_confirm'] = '你确定è¦åˆ é™¤æ­¤è¯„论?'; +$lang['Pic_Locked'] = '对ä¸èµ·ï¼Œä½†å›¾åƒçš„讨论已ç»å…³é—­ã€‚ä½ ä¸èƒ½å‘表评论。'; + +// +// 个人相册 +// +$lang['Personal_Gallery_Explain'] = '您å¯ä»¥é€šè¿‡åœ¨è‡ªå·±çš„个人资料上点击链接其他æˆå‘˜çš„个人相册'; +$lang['Personal_gallery_not_created'] = '个人相册 %s 为空或ä¸å­˜åœ¨'; +$lang['Not_allowed_to_create_personal_gallery'] = '对ä¸èµ·ï¼Œç¦æ­¢ä¸ªäººç›¸å†Œåˆ›å»º'; +$lang['Click_return_personal_gallery'] = '点击 %s这里%s 返回相册页é¢'; + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/lang_main_attach.php b/includes/shared/phpbb2/language/lang_chinese/lang_main_attach.php new file mode 100644 index 00000000..20d543c4 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/lang_main_attach.php @@ -0,0 +1,129 @@ +å¯ä»¥ 添加附件'; +$lang['Rules_attach_cannot'] = '您 ä¸å¯ä»¥ 添加附件'; +$lang['Rules_download_can'] = '您 å¯ä»¥ 下载附件'; +$lang['Rules_download_cannot'] = '您 ä¸å¯ä»¥ 下载附件'; +$lang['Sorry_auth_view_attach'] = '对ä¸èµ·ï¼Œæ‚¨æ²¡æœ‰è¢«æŽˆæƒæŸ¥çœ‹æˆ–下载这个添加附件'; + +// Viewtopic é¡µé¢ -> 附件显示 +$lang['Description'] = 'æè¿°'; +$lang['Downloaded'] = '下载过的'; +$lang['Download'] = '下载'; +$lang['Filesize'] = '文件大å°'; +$lang['Viewed'] = '看过的'; +$lang['Download_number'] = '文件被下载或查看 %d 次'; +$lang['Extension_disabled_after_posting'] = '文件扩展å “%s†已被管ç†å‘˜ç¦ç”¨ï¼Œå› æ­¤è¿™ä¸ªé™„件是ä¸è¢«æ˜¾ç¤ºçš„'; + +// Posting/PM é¡µé¢ -> åˆå§‹æ˜¾ç¤º +$lang['Attach_posting_cp'] = '附件å‘表控制é¢æ¿'; +$lang['Attach_posting_cp_explain'] = '如果您点击「新增附件ã€ï¼Œæ‚¨å°†å¯ä»¥çœ‹è§é™„件的对è¯æ¡†ã€‚
上传新的版本,如果您ä¸æƒ³è¦ä¸‹è½½æ¬¡æ•°è¢«å½’零而更新原先旧版的文件。
如何上传新版本文件,先点击「å‘表的附件清å•ã€ï¼Œå†ç‚¹å‡»ã€Œæ–°å¢žé™„件ã€ï¼Œå†ç‚¹[新增附件]中的「æµè§ˆã€ï¼Œ
选择新版本的文件之åŽï¼Œå†ç‚¹å‡»[å‘表的附件清å•]中的「上传新的版本ã€ã€‚'; + +// Posting/PM -> 添加附件 +$lang['Add_attachment'] = '新增附件'; +$lang['Add_attachment_title'] = '新增附件'; +$lang['Add_attachment_explain'] = '如果您ä¸æƒ³æ–°å¢žé™„件到您的文章中,请留空å³å¯'; +$lang['File_name'] = '文件å'; +$lang['File_comment'] = '文件注解'; + +// Posting/PM -> å·²å‘表的附件 +$lang['Posted_attachments'] = 'å‘表的附件清å•'; +$lang['Options'] = '选项'; +$lang['Update_comment'] = '更新注解'; +$lang['Delete_attachments'] = '删除附件'; +$lang['Delete_attachment'] = '删除附件'; +$lang['Delete_thumbnail'] = '删除缩略图'; +$lang['Upload_new_version'] = '上传新的版本'; + +// Errors -> 正在å‘表的文件 +$lang['Invalid_filename'] = '%s 是一个无效的文件å'; // replace %s with given filename +$lang['Attachment_php_size_na'] = '附件太大了。
无法å–得在 PHP 定义的大å°é™åˆ¶ã€‚
系统无法确定定义在 php.ini 中的最大上传大å°ã€‚'; +$lang['Attachment_php_size_overrun'] = '附加文件太大了。
最大上传大å°: %d MB。
请注æ„那个大å°æ˜¯å®šä¹‰åœ¨ php.ini,这个工具是由 PHP 所设定而且系统无法改å˜è¿™ä¸ªæ•°å€¼ã€‚'; // replace %d with ini_get('upload_max_filesize') +$lang['Disallowed_extension'] = '扩展å %s 是ä¸è¢«å…许的'; // replace %s with extension (e.g. .php) +$lang['Disallowed_extension_within_forum'] = '您未被å…许在此论å›æ·»åŠ æ‰©å±•å为 %s的附件'; +$lang['Attachment_too_big'] = '附件太大了。
最大的大å°: %d %s'; // replace %d with maximum file size, %s with size var +$lang['Attach_quota_reached'] = '对ä¸èµ·ï¼Œå·²è¾¾åˆ°å…¨éƒ¨é™„件最大的文件大å°é™åˆ¶ã€‚如果您有问题请è”系系统管ç†å‘˜ã€‚'; +$lang['Too_many_attachments'] = '附件无法被新增,由于最大é™åˆ¶ã€‚%d 个的附加文件在这个å‘表已完æˆã€‚'; // replace %d with maximum number of attachments +$lang['Error_imagesize'] = '附件/图片必须å°äºŽå®½åº¦ %d åƒç´ å’Œé«˜åº¦ %d åƒç´ '; +$lang['General_upload_error'] = '上传错误: 无法上传附件到 %s 。'; // replace %s with local path + +$lang['Error_empty_add_attachbox'] = '您必须先在「新增附件ã€å¯¹è¯ç›’里点击「æµè§ˆã€ç„¶åŽåœ¨æ‚¨è¦æ›´æ–°çš„项目点击「上传新的版本ã€ã€‚'; +$lang['Error_missing_old_entry'] = '无法更新附件,无法找到旧的附件项目。'; + +// Errors -> ä¿¡æ¯ç›¸å…³ +$lang['Attach_quota_sender_pm_reached'] = '对ä¸èµ·ï¼Œä½†æ˜¯åœ¨æ‚¨çš„站内短信收件夹已达到全部附加文件最大文件的大å°é™åˆ¶ã€‚请删除一些在您的收件夹/寄收匣的附加文件。'; +$lang['Attach_quota_receiver_pm_reached'] = '对ä¸èµ·ï¼Œä½†æ˜¯åœ¨ç«™å†…短信收件夹的 \'%s\' 已达到全部附加文件的最大文件的大å°é™åˆ¶ã€‚请让他们知é“,或等待直到他/她删除一些在他的/她的附加文件。'; + +// Errors -> 下载 +$lang['No_attachment_selected'] = '您没有选择一个附件æ¥ä¸‹è½½æˆ–查看。'; +$lang['Error_no_attachment'] = '选择的附件ä¸å­˜åœ¨ã€‚'; + +// 删除附件 +$lang['Confirm_delete_attachments'] = '您确定您想è¦åˆ é™¤é€‰æ‹©çš„附件?'; +$lang['Deleted_attachments'] = '选择的附件已被删除。'; +$lang['Error_deleted_attachments'] = '无法删除附件。'; +$lang['Confirm_delete_pm_attachments'] = '您确定您想è¦åˆ é™¤å·²å‘表在这个站内短信中全部的附件å—?'; + +// ä¸€èˆ¬é”™è¯¯ä¿¡æ¯ +$lang['Attachment_feature_disabled'] = '附件功能已被åœç”¨ã€‚'; + +$lang['Directory_does_not_exist'] = '文件夹 \'%s\' ä¸å­˜åœ¨æˆ–找ä¸åˆ°ã€‚'; // replace %s with directory +$lang['Directory_is_not_a_dir'] = '如果 \'%s\' 是一个文件夹请查核。'; // replace %s with directory +$lang['Directory_not_writeable'] = '文件夹 \'%s\' 是ä¸å¯å†™å…¥çš„。您将需è¦å»ºç«‹ä¸Šä¼ è·¯å¾„并å˜æ›´å±žæ€§ä¸º 777 (或å˜æ›´æ‹¥æœ‰è€…为您 httpd-æœåŠ¡å™¨çš„拥有者) è¦ä¸Šä¼ æ–‡ä»¶ã€‚
如果您åªè¦å®Œå…¨çš„ ftp-å­˜å– å˜æ›´æ–‡ä»¶å¤¹çš„ \'属性\' 为 rwxrwxrwx。'; // replace %s with directory + +$lang['Ftp_error_connect'] = '无法连线到 FTP æœåŠ¡å™¨: \'%s\'。请检查您的 FTP-设定。'; +$lang['Ftp_error_login'] = '无法登入到 FTP æœåŠ¡å™¨ã€‚这用户å称 \'%s\' 或密ç æ˜¯é”™è¯¯çš„。请检查您的 FTP-设定。'; +$lang['Ftp_error_path'] = 'æ— æ³•å­˜å– FTP 文件夹: \'%s\'。请检查您的 FTP 设定。'; +$lang['Ftp_error_upload'] = '无法上传文件到 FTP 文件夹: \'%s\'。请检查您的 FTP 设定。'; +$lang['Ftp_error_delete'] = '无法删除在 FTP 文件夹的文件: \'%s\'。请检查您的 FTP 设定。
'; +$lang['Ftp_error_pasv_mode'] = '无法开å¯/关闭FTP被动模å¼'; + +// é™„ä»¶è§„åˆ™é¡µé¢ +$lang['Rules_page'] = '附件规则'; +$lang['Attach_rules_title'] = 'å·²å…许扩展å群组和他们的大å°'; +$lang['Group_rule_header'] = '%s -> 最大上传的大å°: %s'; +$lang['Allowed_extensions_and_sizes'] = 'ã€è¯´æ˜Žã€‘'; +$lang['Note_user_empty_group_permissions'] = '注æ„:
ä½ å¯ä»¥åœ¨è¿™ä¸ªè®ºå›æ·»åŠ é™„件,
但是因为没有附件扩展å群组被å…许添加加,
您无法添加任何文件。如果你试ç€é™„加文件,
你将会收到错误讯æ¯ã€‚
'; + +// é™é¢ç›¸å…³ +$lang['Upload_quota'] = '上传é™é¢'; +$lang['Pm_quota'] = 'ç§äººçŸ­ä¿¡é™é¢'; +$lang['User_upload_quota_reached'] = '对ä¸èµ·ï¼Œä½ å·²ç»è¾¾åˆ°äº†ä½ çš„最大上传é™é¢ %d %s'; // replace %d with Size, %s with Size Lang (MB for example) + +// 用户附件控制é¢æ¿ +$lang['User_acp_title'] = 'æœåŠ¡é™„件控制é¢æ¿'; +$lang['UACP'] = '用户附件控制é¢æ¿'; +$lang['User_uploaded_profile'] = '上传了: %s'; +$lang['User_quota_profile'] = 'é™é¢ä¸º: %s'; +$lang['Upload_percent_profile'] = '总共的%d%%'; + +// 公共的å˜é‡ +$lang['Bytes'] = '字节'; +$lang['KB'] = 'KB'; +$lang['MB'] = 'MB'; +$lang['Attach_search_query'] = 'æœç´¢é™„件'; +$lang['Test_settings'] = '测试设定'; +$lang['Not_assigned'] = '未被指定'; +$lang['No_file_comment_available'] = 'æ— å¯ç”¨çš„文件注解'; +$lang['Attachbox_limit'] = '您的附件箱已使用%d%%'; +$lang['No_quota_limit'] = '没有附件é™é¢'; +$lang['Unlimited'] = '没有é™åˆ¶çš„'; + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/mods/lang_bank.php b/includes/shared/phpbb2/language/lang_chinese/mods/lang_bank.php new file mode 100644 index 00000000..7919b4b1 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/mods/lang_bank.php @@ -0,0 +1,91 @@ + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/mods/lang_lottery.php b/includes/shared/phpbb2/language/lang_chinese/mods/lang_lottery.php new file mode 100644 index 00000000..b41e2ae0 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/mods/lang_lottery.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_chinese/search_stopwords.txt b/includes/shared/phpbb2/language/lang_chinese/search_stopwords.txt new file mode 100644 index 00000000..5629d9a0 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/search_stopwords.txt @@ -0,0 +1,251 @@ +a +about +after +ago +all +almost +along +alot +also +am +an +and +answer +any +anybody +anybodys +anywhere +are +arent +around +as +ask +askd +at +bad +be +because +been +before +being +best +better +between +big +btw +but +by +can +cant +come +could +couldnt +day +days +days +did +didnt +do +does +doesnt +dont +down +each +etc +either +else +even +ever +every +everybody +everybodys +everyone +far +find +for +found +from +get +go +going +gone +good +got +gotten +had +has +have +havent +having +her +here +hers +him +his +home +how +hows +href +I +Ive +if +in +ini +into +is +isnt +it +its +its +just +know +large +less +like +liked +little +looking +look +looked +looking +lot +maybe +many +me +more +most +much +must +mustnt +my +near +need +never +new +news +no +none +not +nothing +now +of +off +often +old +on +once +only +oops +or +other +our +ours +out +over +page +please +put +question +questions +questioned +quote +rather +really +recent +said +saw +say +says +she +see +sees +should +sites +small +so +some +something +sometime +somewhere +soon +take +than +true +thank +that +thatd +thats +the +their +theirs +theres +theirs +them +then +there +these +they +theyll +theyd +theyre +this +those +though +through +thus +time +times +to +too +under +until +untrue +up +upon +use +users +version +very +via +want +was +way +we +well +went +were +werent +what +when +where +which +who +whom +whose +why +wide +will +with +within +without +wont +world +worse +worst +would +wrote +www +yes +yet +you +youd +youll +your +youre +yours +AFAIK +IIRC +LOL +ROTF +ROTFLMAO +YMMV diff --git a/includes/shared/phpbb2/language/lang_chinese/search_synonyms.txt b/includes/shared/phpbb2/language/lang_chinese/search_synonyms.txt new file mode 100644 index 00000000..0359039e --- /dev/null +++ b/includes/shared/phpbb2/language/lang_chinese/search_synonyms.txt @@ -0,0 +1,149 @@ +abcense absence +abridgement abridgment +accomodate accommodate +acknowledgment acknowledgement +airplane aeroplane +allright alright +andy andrew +anemia anaemia +anemic anaemic +anesthesia anaesthesia +appologize appologise +archean archaean +archeology archaeology +archeozoic archaeozoic +armor armour +artic arctic +attachment attachement +attendence attendance +barbecue barbeque +behavior behaviour +biassed biased +biol biology +buletin bulletin +calender calendar +canceled cancelled +car automobile +catalog catalogue +cenozoic caenozoic +center centre +check cheque +color colour +comission commission +comittee committee +commitee committee +conceed concede +creating createing +curiculum curriculum +defense defence +develope develop +discription description +dulness dullness +encyclopedia encyclopaedia +enroll enrol +esthetic aesthetic +etiology aetiology +exhorbitant exorbitant +exhuberant exuberant +existance existence +favorite favourite +fetus foetus +ficticious fictitious +flavor flavour +flourescent fluorescent +foriegn foreign +fourty forty +gage guage +geneology genealogy +grammer grammar +gray grey +guerilla guerrilla +gynecology gynaecology +harbor harbour +heighth height +hemaglobin haemaglobin +hematin haematin +hematite haematite +hematology haematology +honor honour +innoculate inoculate +installment instalment +irrelevent irrelevant +irrevelant irrelevant +jeweler jeweller +judgement judgment +labeled labelled +labor labour +laborer labourer +laborers labourers +laboring labouring +licence license +liesure leisure +liquify liquefy +maintainance maintenance +maintenence maintenance +medieval mediaeval +meter metre +milage mileage +millipede millepede +miscelaneous miscellaneous +morgage mortgage +noticable noticeable +occurence occurrence +offense offence +ommision omission +ommission omission +optimize optimize +organise organize +pajamas pyjamas +paleography palaeography +paleolithic palaeolithic +paleontological palaeontological +paleontologist palaeontologist +paleontology palaeontology +paleozoic palaeozoic +pamplet pamphlet +paralell parallel +parl parliament +parlt parliament +pediatric paediatric +pediatrician paediatrician +pediatrics paediatrics +pedodontia paedodontia +pedodontics paedodontics +personel personnel +practise practice +program programme +psych psychology +questionaire questionnaire +rarify rarefy +reccomend recommend +recieve receive +resistence resistance +restaraunt restaurant +savior saviour +sep september +seperate separate +sept september +sieze seize +summarize summarise +summerize summarise +superceed supercede +superintendant superintendent +supersede supercede +suprise surprise +surprize surprise +synchronise synchronize +temperary temporary +theater theatre +threshhold threshold +transfered transferred +truely truly +truley truly +useable usable +valor valour +vigor vigour +vol volume +whack wack +withold withhold +yeild yield diff --git a/includes/shared/phpbb2/language/lang_english/lang_main.php b/includes/shared/phpbb2/language/lang_english/lang_main.php index 1540a4f3..312a39c3 100644 --- a/includes/shared/phpbb2/language/lang_english/lang_main.php +++ b/includes/shared/phpbb2/language/lang_english/lang_main.php @@ -6,7 +6,7 @@ * copyright : (C) 2001 The phpBB Group * email : support@phpbb.com * - * $Id: lang_main.php,v 1.6 2011/03/28 02:32:52 orynider Exp $ + * $Id: lang_main.php,v 1.1 2010/10/10 15:09:19 orynider Exp $ * ****************************************************************************/ @@ -33,7 +33,8 @@ // varies ... give it your best guess! // -$lang['ENCODING'] = 'UTF-8'; //This is also for mx_phpbb3 and needs to be overwriten in module +$lang['USER_LANG'] = 'en'; +$lang['ENCODING'] = 'UTF-8'; $lang['DIRECTION'] = 'ltr'; $lang['LEFT'] = 'left'; $lang['RIGHT'] = 'right'; @@ -87,7 +88,29 @@ $lang['Enabled'] = 'Enabled'; $lang['Disabled'] = 'Disabled'; $lang['Error'] = 'Error'; +// ------------------------------------------------- +$lang['Goto_page'] = 'Goto page'; + +$lang['Post_by_author'] = 'by'; +$lang['Posted_on_date'] = 'on'; +$lang['In'] = 'in'; + +$lang['Statistics'] = 'Statistics'; +$lang['Legend'] = 'Legend: '; +$lang['Posted_articles_zero_total'] = 'No post'; // Number of posts +$lang['Posted_articles_total'] = 'Total posts %d'; // Number of posts +$lang['Posted_article_total'] = 'Total posts %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'No member'; // # registered users +$lang['Registered_users_total'] = 'Total members %d'; // # registered users +$lang['Registered_user_total'] = 'Total members %d'; // # registered users +$lang['Newest_user'] = 'Our newest member %s%s%s'; // a href, username, /a +$lang['Rules_moderate'] = '%sModerate this forum%s'; // %s replaced by a href links, do not remove! + +$lang['Quick_mod'] = 'Quick-mod tools:'; + +$lang['Search_forums'] = 'Search within'; +// ------------------------------------------------- $lang['Next'] = 'Next'; $lang['Previous'] = 'Previous'; $lang['Goto_page'] = 'Goto page'; @@ -162,18 +185,22 @@ $lang['Last_Post'] = 'Last Post'; $lang['Moderator'] = 'Moderator'; $lang['Moderators'] = 'Moderators'; - +$lang['Post_by_author'] = 'by'; +$lang['Posted_on_date'] = 'on'; +$lang['In'] = 'in'; // // Stats block text // -$lang['Posted_articles_zero_total'] = 'Our users have posted a total of 0 articles'; // Number of posts -$lang['Posted_articles_total'] = 'Our users have posted a total of %d articles'; // Number of posts -$lang['Posted_article_total'] = 'Our users have posted a total of %d article'; // Number of posts -$lang['Registered_users_zero_total'] = 'We have 0 registered users'; // # registered users -$lang['Registered_users_total'] = 'We have %d registered users'; // # registered users -$lang['Registered_user_total'] = 'We have %d registered user'; // # registered users -$lang['Newest_user'] = 'The newest registered user is %s%s%s'; // a href, username, /a +$lang['Statistics'] = 'Statistics'; +$lang['Legend'] = 'Legend: '; +$lang['Posted_articles_zero_total'] = 'No post'; // Number of posts +$lang['Posted_articles_total'] = 'Total posts %d'; // Number of posts +$lang['Posted_article_total'] = 'Total posts %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'No member'; // # registered users +$lang['Registered_users_total'] = 'Total members %d'; // # registered users +$lang['Registered_user_total'] = 'Total members %d'; // # registered users +$lang['Newest_user'] = 'Our newest member %s%s%s'; // a href, username, /a $lang['No_new_posts_last_visit'] = 'No new posts since your last visit'; $lang['No_new_posts'] = 'No new posts'; @@ -244,7 +271,7 @@ $lang['Rules_delete_cannot'] = 'You cannot delete your posts in this forum'; $lang['Rules_vote_can'] = 'You can vote in polls in this forum'; $lang['Rules_vote_cannot'] = 'You cannot vote in polls in this forum'; -$lang['Rules_moderate'] = 'You can %smoderate this forum%s'; // %s replaced by a href links, do not remove! +$lang['Rules_moderate'] = '%sModerate this forum%s'; // %s replaced by a href links, do not remove! $lang['No_topics_post_one'] = 'There are no posts in this forum.
Click on the Post New Topic link on this page to post one.'; @@ -287,6 +314,7 @@ $lang['Edited_time_total'] = 'Last edited by %s on %s; edited %d time in total'; // Last edited by me on 12 Oct 2001; edited 1 time in total $lang['Edited_times_total'] = 'Last edited by %s on %s; edited %d times in total'; // Last edited by me on 12 Oct 2001; edited 2 times in total +$lang['Quick_mod'] = 'Quick-mod tools:'; $lang['Lock_topic'] = 'Lock this topic'; $lang['Unlock_topic'] = 'Unlock this topic'; $lang['Move_topic'] = 'Move this topic'; @@ -762,6 +790,7 @@ $lang['Search_for_any'] = 'Search for any terms or use query as entered'; $lang['Search_for_all'] = 'Search for all terms'; +$lang['Search_forums'] = 'Search within'; $lang['Search_title_msg'] = 'Search topic title and message text'; $lang['Search_msg_only'] = 'Search message text only'; diff --git a/includes/shared/phpbb2/language/lang_french/lang_main.php b/includes/shared/phpbb2/language/lang_french/lang_main.php index 4ae8149e..37458eba 100644 --- a/includes/shared/phpbb2/language/lang_french/lang_main.php +++ b/includes/shared/phpbb2/language/lang_french/lang_main.php @@ -87,6 +87,30 @@ $lang['Sub_to_forum'] = 'Surveiller ce Forum'; $lang['Sub_to_thread'] = 'Surveiller ce Sujet'; +// ------------------------------------------------- +$lang['Goto_page'] = 'Goto page'; + +$lang['Post_by_author'] = 'by'; +$lang['Posted_on_date'] = 'on'; +$lang['In'] = 'in'; + +$lang['Statistics'] = 'Statistics'; +$lang['Legend'] = 'Legend: '; +$lang['Posted_articles_zero_total'] = 'No post'; // Number of posts +$lang['Posted_articles_total'] = 'Total posts %d'; // Number of posts +$lang['Posted_article_total'] = 'Total posts %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'No member'; // # registered users +$lang['Registered_users_total'] = 'Total members %d'; // # registered users +$lang['Registered_user_total'] = 'Total members %d'; // # registered users +$lang['Newest_user'] = 'Our newest member %s%s%s'; // a href, username, /a + +$lang['Rules_moderate'] = '%sModerate this forum%s'; // %s replaced by a href links, do not remove! + +$lang['Quick_mod'] = 'Quick-mod tools:'; + +$lang['Search_forums'] = 'Search within'; +// ------------------------------------------------- + $lang['Next'] = 'Suivant'; $lang['Previous'] = 'Précédent'; $lang['Goto_page'] = 'Allez à la page'; @@ -96,7 +120,7 @@ $lang['Select_forum'] = 'Sélectionnez un Forum'; $lang['View_latest_post'] = 'Voir derniers messages'; $lang['View_newest_post'] = 'Voir messages récents'; -$lang['Online_explain'] = 'Ces données sont basées sur les Membres actifs des dernières ' . $board_config['whosonline_time'] . ' minutes'; +$lang['Online_explain'] = 'Ces données sont basées sur les Membres actifs des dernières 5 minutes'; $lang['Page_of'] = 'Page %d sur %d'; // Replaces with: Page 1 of 2 for example $lang['ICQ'] = 'ICQ'; diff --git a/includes/shared/phpbb2/language/lang_greek/lang_main.php b/includes/shared/phpbb2/language/lang_greek/lang_main.php index a87ddb99..43241ef0 100644 --- a/includes/shared/phpbb2/language/lang_greek/lang_main.php +++ b/includes/shared/phpbb2/language/lang_greek/lang_main.php @@ -89,6 +89,30 @@ $lang['Disabled'] = 'ΑπενεÏγοποιημένο'; $lang['Error'] = 'Λάθος'; +// ------------------------------------------------- +$lang['Goto_page'] = 'Goto page'; + +$lang['Post_by_author'] = 'by'; +$lang['Posted_on_date'] = 'on'; +$lang['In'] = 'in'; + +$lang['Statistics'] = 'Statistics'; +$lang['Legend'] = 'Legend: '; +$lang['Posted_articles_zero_total'] = 'No post'; // Number of posts +$lang['Posted_articles_total'] = 'Total posts %d'; // Number of posts +$lang['Posted_article_total'] = 'Total posts %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'No member'; // # registered users +$lang['Registered_users_total'] = 'Total members %d'; // # registered users +$lang['Registered_user_total'] = 'Total members %d'; // # registered users +$lang['Newest_user'] = 'Our newest member %s%s%s'; // a href, username, /a + +$lang['Rules_moderate'] = '%sModerate this forum%s'; // %s replaced by a href links, do not remove! + +$lang['Quick_mod'] = 'Quick-mod tools:'; + +$lang['Search_forums'] = 'Search within'; +// ------------------------------------------------- + $lang['Next'] = 'Επόμενη'; $lang['Previous'] = 'ΠÏοηγοÏμενη'; $lang['Goto_page'] = 'Μετάβαση στη σελίδα'; diff --git a/includes/shared/phpbb2/language/lang_hebrew/index.htm b/includes/shared/phpbb2/language/lang_hebrew/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb2/language/lang_hebrew/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb2/language/lang_hebrew/lang_admin.php b/includes/shared/phpbb2/language/lang_hebrew/lang_admin.php new file mode 100644 index 00000000..e69de29b diff --git a/includes/shared/phpbb2/language/lang_hebrew/lang_main.php b/includes/shared/phpbb2/language/lang_hebrew/lang_main.php new file mode 100644 index 00000000..29fc2069 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_hebrew/lang_main.php @@ -0,0 +1,1047 @@ + $lang['message'] = 'text'; +// +// You should also try to set a locale and a character encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +$lang['ENCODING'] = "utf-8"; //"iso-8859-8-I"; +$lang['DIRECTION'] = "Rtl"; +$lang['LEFT'] = "right"; +$lang['RIGHT'] = "left"; +$lang['DATE_FORMAT'] = "d/m/Y ב- H:i:s"; // This should be changed to the default date format for your language, php date() format + +// This is optional, if you would like a _SHORT_ message output +// along with our copyright message indicating you are the translator +// please add it here. +$lang['TRANSLATION'] = '×ª×•×¨×’× ×¢×œ ידי צוות גירסה 1.0.20'; + +// +// Common, these terms are used +// extensively on several pages +// +$lang['Forum'] = "פורו×"; +$lang['Category'] = "קטגוריה"; +$lang['Topic'] = "נוש×"; +$lang['Topics'] = "נוש××™×"; +$lang['Replies'] = "תגובות"; +$lang['Views'] = "צפיות"; +$lang['Post'] = "הודעה"; +$lang['Posts'] = "הודעות"; +$lang['Posted'] = "נשלח"; +$lang['Username'] = "×©× ×ž×©×ª×ž×©"; +$lang['Password'] = "סיסמה"; +$lang['Email'] = "דו×ר ×לקטרוני"; +$lang['Poster'] = "שולח"; +$lang['Author'] = "מחבר"; +$lang['Time'] = "זמן"; +$lang['Hours'] = "שעות"; +$lang['Message'] = "הודעה"; + +$lang['1_Day'] = "×™×•× ×חד"; +$lang['7_Days'] = "שבעה ימי×"; +$lang['2_Weeks'] = "שבועיי×"; +$lang['1_Month'] = "חודש ×חד"; +$lang['3_Months'] = "שלושה חודשי×"; +$lang['6_Months'] = "חצי שנה"; +$lang['1_Year'] = "שנה"; + +$lang['Go'] = "עבור"; +$lang['Jump_to'] = "עבור"; +$lang['Submit'] = "שליחה"; +$lang['Reset'] = "×יפוס"; +$lang['Cancel'] = "ביטול"; +$lang['Preview'] = "תצוגה מקדימה"; +$lang['Confirm'] = "×ישור"; +$lang['Spellcheck'] = "בדיקת ×יות"; +$lang['Yes'] = "כן"; +$lang['No'] = "ל×"; +$lang['Enabled'] = "פעיל"; +$lang['Disabled'] = "×œ× ×¤×¢×™×œ"; +$lang['Error'] = "שגי××”"; + +$lang['Next'] = "הב×"; +$lang['Previous'] = "הקוד×"; +$lang['Goto_page'] = "עבור לעמוד"; +$lang['Joined'] = "הצטרף בת×ריך"; +$lang['IP_Address'] = "כתובת IP"; + +$lang['Select_forum'] = "בחר פורו×"; +$lang['View_latest_post'] = "צפה בהודעה ×”×חרונה"; +$lang['View_newest_post'] = "צפה בהודעה החדשה ביותר"; +$lang['Page_of'] = "עמוד %d מתוך %d"; // Replaces with: Page 1 of 2 for example + +$lang['ICQ'] = "מספר ICQ"; +$lang['AIM'] = "AIM"; +$lang['MSNM'] = "MSN Messenger"; +$lang['YIM'] = "Yahoo! Messenger"; +$lang['Forum_Index'] = "עמוד ר×שי"; // eg. sitename Forum Index, %s can be removed if you prefer + +$lang['Post_new_topic'] = "שליחת הודעה חדשה"; +$lang['Reply_to_topic'] = "תגובה להודעה"; +$lang['Reply_with_quote'] = "תגובה ×¢× ×¦×™×˜×•×˜"; + +$lang['Click_return_topic'] = "לחץ %s×›×ן%s כדי לחזור להודעה"; // %s's here are for uris, do not remove! +$lang['Click_return_login'] = "לחץ %s×›×ן%s כדי לנסות שוב"; +$lang['Click_return_forum'] = "לחץ %s×›×ן%s כדי לחזור לפורו×"; +$lang['Click_view_message'] = "לחץ %s×›×ן%s כדי לר×ות ×ת הודעתך"; +$lang['Click_return_modcp'] = "לחץ %s×›×ן%s כדי לחזור ללוח הבקרה למנהלי×"; +$lang['Click_return_group'] = "לחץ %s×›×ן%s כדי לחזור לעמוד המידע על קבוצות משתמשי×"; + +$lang['Admin_panel'] = "עבור ללוח הבקרה למנהלי×"; + +$lang['Board_disable'] = "×œ× × ×™×ª×Ÿ להיכנס לפורומי×. ×× × × ×¡×” מ×וחר יותר"; + + +// +// Global Header strings +// +$lang['Registered_users'] = "×ž×©×ª×ž×©×™× ×¨×©×•×ž×™×:"; +$lang['Browsing_forum'] = "×ž×©×ª×ž×©×™× ×ž×—×•×‘×¨×™× ×œ×¤×•×¨×•×:"; +$lang['Online_users_zero_total'] = "×ין ×ž×©×ª×ž×©×™× ×ž×—×•×‘×¨×™× :: "; +$lang['Online_users_total'] = "סך הכל יש %d ×ž×©×ª×ž×©×™× ×ž×—×•×‘×¨×™× :: "; +$lang['Online_user_total'] = "סך הכל יש משתמש ×חד מחובר :: "; +$lang['Reg_users_zero_total'] = "×ין ×ž×©×ª×ž×©×™× ×¨×©×•×ž×™×, "; +$lang['Reg_users_total'] = "%d ×ž×©×ª×ž×©×™× ×¨×©×•×ž×™×, "; +$lang['Reg_user_total'] = "משתמש ×¨×©×•× ×חד, "; +$lang['Hidden_users_zero_total'] = "×ין ×ž×©×ª×ž×©×™× ×‘×œ×ª×™ נר××™× ×•-"; +$lang['Hidden_user_total'] = "משתמש בלתי נר××” ×חד ו- "; +$lang['Hidden_users_total'] = "%d ×ž×©×ª×ž×©×™× ×‘×œ×ª×™ נר××™× ×•- "; +$lang['Guest_users_zero_total'] = "0 ×ורחי×"; +$lang['Guest_users_total'] = "%d ×ורחי×"; +$lang['Guest_user_total'] = "%d ×ורח"; +$lang['Record_online_users'] = "מספר ×”×’×•×œ×©×™× ×”×¨×‘ ביותר שהיו ×ž×—×•×‘×¨×™× ×‘×• זמנית ×œ×¤×•×¨×•×ž×™× ×”×•×: %s ×’×•×œ×©×™× ×‘×ª×ריך %s"; + +$lang['Admin_online_color'] = "%sמנהל ר×שי%s"; +$lang['Mod_online_color'] = "%sמנהל%s"; + +$lang['You_last_visit'] = "ביקרת ל×חרונה ב- %s"; // %s replaced by date/time +$lang['Current_time'] = "השעה כעת ×”×™× %s"; // %s replaced by time + +$lang['Search_new'] = "הצג הודעות מ××– ביקורך ×”×חרון"; +$lang['Search_your_posts'] = "הצג ×ת הודעותיך"; +$lang['Search_unanswered'] = "הצג הודעות ×œ×œ× ×ª×’×•×‘×”"; + +$lang['Register'] = "הרשמה"; +$lang['Profile'] = "כרטיס ×ישי"; +$lang['Edit_profile'] = "ערוך ×ת הכרטיס ×”×ישי שלך"; +$lang['Search'] = "חיפוש"; +$lang['Memberlist'] = "רשימת חברי×"; +$lang['FAQ'] = "ש×לות נפוצות"; +$lang['BBCode_guide'] = "מדריך BBCode"; +$lang['Usergroups'] = "קבוצות משתמשי×"; +$lang['Last_Post'] = "הודעה ×חרונה"; +$lang['Moderator'] = "מנהל"; +$lang['Moderators'] = "מנהלי×"; + +// +// Stats block text +// +$lang['Posted_articles_zero_total'] = "×”×ž×©×ª×ž×©×™× ×‘×¤×•×¨×•× ×œ× ×©×œ×—×• ××£ הודעה"; // Number of posts +$lang['Posted_articles_total'] = "×”×ž×©×ª×ž×©×™× ×‘×¤×•×¨×•× ×©×œ×—×• בסך הכל %d הודעות"; // Number of posts +$lang['Posted_article_total'] = "×”×ž×©×ª×ž×©×™× ×‘×¤×•×¨×•× ×©×œ×—×• הודעה ×חת בלבד"; // Number of posts +$lang['Registered_users_zero_total'] = "×ין ×ž×©×ª×ž×©×™× ×¨×©×•×ž×™× ×‘×ž×¢×¨×›×ª"; // # registered users +$lang['Registered_users_total'] = "בקהילה יש %d ×ž×©×ª×ž×©×™× ×¨×©×•×ž×™×"; // # registered users +$lang['Registered_user_total'] = "בקהילה יש משתמש ×חד רשו×"; // # registered users +$lang['Newest_user'] = "המשתמש החדש ביותר בקהילה הו×:: %s%s%s"; // a href, username, /a +$lang['No_new_posts_last_visit'] = "×ין הודעות חדשות מ××– ביקורך ×”×חרון"; +$lang['No_new_posts'] = "×ין הודעות חדשות"; +$lang['New_posts'] = "יש הודעות חדשות"; +$lang['New_post'] = "יש הודעה חדשה"; +$lang['No_new_posts_hot'] = "×ין הודעות חמות חדשות"; +$lang['New_posts_hot'] = "יש הודעות חמות חדשות"; +$lang['No_new_posts_locked'] = "×ין הודעות נעולות חדשות"; +$lang['New_posts_locked'] = "יש הודעות נעולות חדשות"; +$lang['Forum_is_locked'] = "×”×¤×•×¨×•× × ×¢×•×œ"; + + +// +// Login +// +$lang['Enter_password'] = "הזן ×©× ×ž×©×ª×ž×© וסיסמה"; +$lang['Login'] = "התחבר"; +$lang['Logout'] = "התנתק"; + +$lang['Forgotten_password'] = "שכחתי ×ת הסיסמה שלי"; + +$lang['Log_me_in'] = "זכור סיסמה"; + +$lang['Error_login'] = "הסיסמה ×ו ×©× ×”×ž×©×ª×ž×© ××™× × × ×›×•× ×™× ×ו ש××™× × ×¤×¢×™×œ×™×"; + + +// +// Index page +// +$lang['Index'] = "עמוד ר×שי"; +$lang['No_Posts'] = "×ין הודעות"; +$lang['No_forums'] = "לקהילה זו ×ין פורומי×"; + +$lang['Private_Message'] = "מסר ×ישי"; +$lang['Private_Messages'] = "×ž×¡×¨×™× ×ישיי×"; +$lang['Who_is_Online'] = "מי מחובר"; + +$lang['Mark_all_forums'] = "סמן ×ת כל ההודעות בכל ×”×¤×•×¨×•×ž×™× ×›×”×•×“×¢×•×ª שנקר×ו"; +$lang['Forums_marked_read'] = "כל ההודעות בכל ×”×¤×•×¨×•×ž×™× ×¡×•×ž× ×• כהודעות שנקר×ו"; + + + +// +// Viewforum +// +$lang['View_forum'] = "הצגת פורו×"; + +$lang['Forum_not_exist'] = "×”×¤×•×¨×•× ×©×‘×—×¨×ª ×ינו קיי×"; +$lang['Reached_on_error'] = "הגעת לעמוד ×–×” בעקבות שגי××” בעמוד הקוד×"; + +$lang['Display_topics'] = "הצג נוש××™× ×§×•×“×ž×™×"; +$lang['All_Topics'] = "כל הנוש××™×"; + +$lang['Topic_Announcement'] = "הכרזה:"; +$lang['Topic_Sticky'] = "דביק:"; +$lang['Topic_Moved'] = "הועבר:"; +$lang['Topic_Poll'] = "[ מש×ל ]"; + +$lang['Mark_all_topics'] = "סמן ×ת כל הנוש××™× ×‘×¤×•×¨×•× ×–×” כנוש××™× ×©× ×§×¨×ו"; +$lang['Topics_marked_read'] = "הנוש××™× ×‘×¤×•×¨×•× ×”×–×” סומנו כנוש××™× ×©× ×§×¨×ו"; + +$lang['Rules_post_can'] = "×תה יכול לשלוח הודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_post_cannot'] = "×תה ×œ× ×™×›×•×œ לשלוח הודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_reply_can'] = "×תה יכול להגיב להודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_reply_cannot'] = "×תה ×œ× ×™×›×•×œ להגיב להודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_edit_can'] = "×תה יכול לערוך ×ת הודעותיך ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_edit_cannot'] = "×תה ×œ× ×™×›×•×œ לערוך ×ת הודעותיך ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_delete_can'] = "×תה יכול למחוק ×ת הודעותיך ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_delete_cannot'] = "×תה ×œ× ×™×›×•×œ למחוק ×ת הודעותיך ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_vote_can'] = "×תה יכול להצביע למש××œ×™× ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_vote_cannot'] = "×תה ×œ× ×™×›×•×œ להצביע למש××œ×™× ×‘×¤×•×¨×•× ×–×”"; +$lang['Rules_moderate'] = "×תה יכול %sלנהל ×¤×•×¨×•× ×–×”%s"; // %s replaced by a href links, do not remove! + +$lang['No_topics_post_one'] = "×ין הודעות ×‘×¤×•×¨×•× ×”× ×•×›×—×™
לחץ על הקישור שלח הודעה שמופיע בעמוד למעלה כדי לשלוח הודעה חדשה."; + +// +// Viewtopic +// +$lang['View_topic'] = "צפייה בנוש×"; + +$lang['Guest'] = '×ורח'; +$lang['Post_subject'] = "כותרת הודעה"; +$lang['View_next_topic'] = "צפה ×‘× ×•×©× ×”×‘×"; +$lang['View_previous_topic'] = "צפה ×‘× ×•×©× ×”×§×•×“×"; +$lang['Submit_vote'] = "שלח הצבעה"; +$lang['View_results'] = "ר××” תוצ×ות"; + +$lang['No_newer_topics'] = "×ין נוש××™× ×—×“×©×™× ×™×•×ª×¨ ×‘×¤×•×¨×•× ×–×”"; +$lang['No_older_topics'] = "×ין נוש××™× ×™×©× ×™× ×™×•×ª×¨ ×‘×¤×•×¨×•× ×–×”"; +$lang['Topic_post_not_exist'] = "ההודעה שביקשת ×œ× × ×ž×¦××”"; +$lang['No_posts_topic'] = "×œ× ×§×™×™×ž×•×ª תגובות ×œ× ×•×©× ×”× ×•×›×—×™"; + +$lang['Display_posts'] = "הצג הודעות קודמות"; +$lang['All_Posts'] = "כל ההודעות"; +$lang['Newest_First'] = "חדשות קוד×"; +$lang['Oldest_First'] = "ישנות קוד×"; + +$lang['Back_to_top'] = "חזור למעלה"; + +$lang['Read_profile'] = "צפה בכרטיס ×”×ישי של המשתמש"; + +$lang['Visit_website'] = "בקר ב×תר הבית של המשתמש"; +$lang['ICQ_status'] = "מצב ××™×™-סיי-קיו"; +$lang['Edit_delete_post'] = "ערוך/מחק הודעה זו"; +$lang['View_IP'] = "ר××” כתובת IP של השולח"; + +$lang['wrote'] = "כתב"; // proceeds the username and is followed by the quoted text +$lang['Quote'] = "ציטוט"; // comes before bbcode quote output. +$lang['Code'] = "קוד"; // comes before bbcode code output. + +$lang['Edited_time_total'] = "נערך ×‘×¤×¢× ×חרונה על-ידי %s בת×ריך %s, נערך סך הכל ×¤×¢× ×חת"; // Last edited by me on 12 Oct 2001, edited 1 time in total +$lang['Edited_times_total'] = "נערך ×‘×¤×¢× ×חרונה על-ידי %s בת×ריך %s, נערך בסך הכל %d פעמי×"; // Last edited by me on 12 Oct 2001, edited 2 times in total + +$lang['Lock_topic'] = "נעל × ×•×©× ×–×”"; +$lang['Unlock_topic'] = "שחרר × ×•×©× ×–×”"; +$lang['Move_topic'] = "העבר × ×•×©× ×–×”"; +$lang['Delete_topic'] = "מחק × ×•×©× ×–×”"; +$lang['Split_topic'] = "פצל × ×•×©× ×–×”"; + +$lang['Stop_watching_topic'] = "הפסק ×ת הצפייה ×‘× ×•×©× ×”× ×•×›×—×™"; +$lang['Start_watching_topic'] = "צפה בתגובות של ×”× ×•×©× ×”× ×•×›×—×™"; +$lang['No_longer_watching'] = "×תה כבר ×œ× ×¦×•×¤×” ×‘× ×•×©× ×–×”"; +$lang['You_are_watching'] = "×תה עכשיו צופה ×‘× ×•×©× ×–×”"; + +$lang['Total_votes'] = "סך הכול הצבעות"; + +// +// Posting/Replying (Not private messaging!) +// +$lang['Message_body'] = "גוף הודעה"; +$lang['Topic_review'] = "ההודעה שעליה ×תה מגיב"; + +$lang['No_post_mode'] = "×ין מצב × ×•×©× ×ž×¡×•×™×™×"; // If posting.php is called without a mode (newtopic/reply/delete/etc, shouldn't be shown normaly) + +$lang['Post_a_new_topic'] = "שליחת × ×•×©× ×—×“×©"; +$lang['Post_a_reply'] = "שליחת תגובה"; +$lang['Post_topic_as'] = "שליחת × ×•×©× ×‘×ופן"; +$lang['Edit_Post'] = "עריכת נוש×"; +$lang['Options'] = "×פשרויות"; + +$lang['Post_Announcement'] = "הכרזה"; +$lang['Post_Sticky'] = "דביק"; +$lang['Post_Normal'] = "רגיל"; + +$lang['Confirm_delete'] = "×”×× ×תה בטוח שברצונך למחוק ×ת ההודעה הנוכחית?"; +$lang['Confirm_delete_poll'] = "×”×× ×תה בטוח שברצונך למחוק ×ת המש×ל הנוכחי?"; + +$lang['Flood_Error'] = "×ינך יכול לשלוח הודעה נוספת בזמן כל כך קצר מ××– הודעתך ×”×חרונה. ×× × × ×¡×” במועד מ×וחר יותר"; +$lang['Empty_subject'] = "×תה חייב לציין ×ת ×”× ×•×©× ×©×œ ההודעה החדשה"; +$lang['Empty_message'] = "×תה חייב לכתוב ×ת התוכן של ההודעה"; +$lang['Forum_locked'] = "×”×¤×•×¨×•× × ×¢×•×œ. ×ינך יכול להוסיף הודעות, לכתוב תגובות ולערוך הודעות של עצמך"; +$lang['Topic_locked'] = "ההודעה נעולה. ×ינך יכול לכתוב תגובות ×ו לערוך ×ת ההודעה, ×× ×תה כתבת ×ותה"; +$lang['No_post_id'] = "×תה חייב לבחור ×ת ההודעה ש×ותה ×תה רוצה לערוך"; +$lang['No_topic_id'] = "×תה חייב לבחור ×ת ההודעה שעליה ×תה רוצה להגיב"; +$lang['No_valid_mode'] = "×תה יכול רק לשלוח הודעות, תגובות , לערוך ×ת ההודעות שלך ולכתוב הודעות ×¢× ×¦×™×˜×•×˜, יש פעולות ש×ינך מורשה לעשות. ×× × ×—×–×•×¨ ונסה שנית"; +$lang['No_such_post'] = "הודעה זו ××™× ×” קיימת. חזור ונסה שנית"; +$lang['Edit_own_posts'] = "×ž×¦×˜×¢×¨×™× ×בל ×תה יכול לערוך הודעות ש×תה כתבת בלבד"; +$lang['Delete_own_posts'] = "×יתך הסליחה, ×ך ×תה יכול למחוק הודעות ש×תה כתבת בלבד"; +$lang['Cannot_delete_replied'] = "×יתך הסליחה, ×ך ×ינך יכול למחוק הודעות שיש תגובות עליהן"; +$lang['Cannot_delete_poll'] = "×ž×¦×˜×¢×¨×™× ×בל ×ינך יכול למחוק מש×ל פעיל"; +$lang['Empty_poll_title'] = "×תה חייב לכתוב ×ת ש×לת המש×ל"; +$lang['To_few_poll_options'] = '×תה חייב להזין לפחות שתי ×פשרויות על מנת ×œ×§×™×™× ×ת המש×ל'; +$lang['To_many_poll_options'] = 'הזנת למעלה מכמות ×”×פשרויות המירבית ×× × ×¦×ž×¦× ×ת ×”×פשרויות'; +$lang['Post_has_no_poll'] = 'להודעה זו ×ין מש×ל'; +$lang['Already_voted'] = 'כבר הצבעת למש×ל ×–×”'; +$lang['No_vote_option'] = '×תה חייב לפרט ×ת ×”×פשרויות ×›×שר ×תה מצביע'; + +$lang['Add_poll'] = "הוסף מש×ל"; +$lang['Add_poll_explain'] = "×× ×ין ברצונך לצרף מש×ל להודעתך הש×ר שדה ×–×” ריק"; +$lang['Poll_question'] = "ש×לת המש×ל"; +$lang['Poll_option'] = "×פשרויות המש×ל"; +$lang['Add_option'] = "הוסף ×פשרות"; +$lang['Update'] = "עדכן"; +$lang['Delete'] = "מחק"; +$lang['Poll_for'] = "תקופת פעילות המש×ל"; +$lang['Days'] = "ימי×"; // This is used for the Run poll for ... Days + in admin_forums for pruning +$lang['Poll_for_explain'] = '(הקש 0 ×ו הש×ר ריק כפי ×©×”×•× ×¢×œ מנת שהמש×ל ×œ× ×™×•×’×‘×œ בזמן)'; +$lang['Delete_poll'] = 'מחק מש×ל'; + +$lang['Disable_HTML_post'] = 'בטל הצגת HTML בהודעה זו'; +$lang['Disable_BBCode_post'] = 'בטל הצגת BBCode בהודעה זו'; +$lang['Disable_Smilies_post'] = 'בטל הצגת מחוות בהודעה זו'; + +$lang['HTML_is_ON'] = 'HTML פעיל'; +$lang['HTML_is_OFF'] = 'HTML ×œ× ×¤×¢×™×œ'; +$lang['BBCode_is_ON'] = '%sBBCode%s פעיל'; // %s are replaced with URI pointing to FAQ +$lang['BBCode_is_OFF'] = '%sBBCode%s ×œ× ×¤×¢×™×œ'; +$lang['Smilies_are_ON'] = 'מחוות פעילות'; +$lang['Smilies_are_OFF'] = 'מחוות ×œ× ×¤×¢×™×œ×•×ª'; + +$lang['Attach_signature'] = 'צרף חתימה (×ת החתימה ניתן לשנות ב×מצעות הכרטיס ×”×ישי)'; +$lang['Notify'] = 'יידע ×ותי ×›×שר יש תגובה חדשה'; +$lang['Delete_post'] = 'מחק הודעה זו'; + +$lang['Stored'] = 'הודעתך נוספה בהצלחה'; +$lang['Deleted'] = 'הודעתך נמחקה בהצלחה'; +$lang['Poll_delete'] = 'המש×ל שיצרת נמחק בהצלחה'; +$lang['Vote_cast'] = 'הצבעתך נתקבלה בהצלחה'; + +$lang['Topic_reply_notification'] = 'יידע בדו×ר ×”×לקטרוני ×›×שר מתקבלת תגובה חדשה להודעה'; + +$lang['bbcode_b_help'] = 'תמליל מודגש: [b]תמליל[/b] ×ו (alt+b)'; +$lang['bbcode_i_help'] = 'תמליל נטוי: [i]תמליל[/i] ×ו (alt+i)'; +$lang['bbcode_u_help'] = 'תמליל ×¢× ×§×• תחתי: [u]תמליל[/u] ×ו (alt+u)'; +$lang['bbcode_q_help'] = 'תמליל מצוטט: [quote]תמליל[/quote] ×ו (alt+q)'; +$lang['bbcode_c_help'] = 'תצוגת קוד: [code]קוד[/code] ×ו (alt+c)'; + +$lang['bbcode_l_help'] = 'תצוגת רשימה: [list]תמליל[/list] ×ו (alt+l)'; +$lang['bbcode_o_help'] = 'תצוגת רשימה ממויינת: [list=]text[/list] ×ו (alt+o)'; + +$lang['bbcode_p_help'] = 'הוסף תמונה: [img]כתובת תמונה[/img] ×ו (alt+p)'; +$lang['bbcode_w_help'] = 'הוסף כתובת: [url]כתובת[/url] ×ו [url=כתובת]תמליל מקושר[/url] ×ו (alt+w)'; +$lang['bbcode_a_help'] = 'סגור ×ת כל תגי ×”- BBCode הפתוחי×'; +$lang['bbcode_s_help'] = 'צבע גופן: [color=red]תמליל[/color] ×ו להשתמש במפת צבעי ×ינטרנט כמו color=#FF0000'; +$lang['bbcode_f_help'] = 'גודל גופן: [size=x-small]תמליל קטן[/size]'; + +$lang['Emoticons'] = 'מחוות'; +$lang['More_emoticons'] = 'הצג מחוות נוספות'; + +$lang['Font_color'] = 'צבע גופן'; +$lang['color_default'] = 'ברירת מחדל'; +$lang['color_dark_red'] = '××“×•× ×›×”×”'; +$lang['color_red'] = '×דו×'; +$lang['color_orange'] = 'כתו×'; +$lang['color_brown'] = 'חו×'; +$lang['color_yellow'] = 'צהוב'; +$lang['color_green'] = 'ירוק'; +$lang['color_olive'] = 'ירוק זית'; +$lang['color_cyan'] = 'תכלת'; +$lang['color_blue'] = 'כחול'; +$lang['color_dark_blue'] = 'כחול ×›×”×”'; +$lang['color_indigo'] = 'סגול ×›×”×”'; +$lang['color_violet'] = 'סגול'; +$lang['color_white'] = 'לבן'; +$lang['color_black'] = 'שחור'; + +$lang['Font_size'] = 'גודל גופן'; +$lang['font_tiny'] = 'קטן מ×וד'; +$lang['font_small'] = 'קטן'; +$lang['font_normal'] = 'רגיל'; +$lang['font_large'] = 'גדול'; +$lang['font_huge'] = 'גדול מ×וד'; + +$lang['Close_Tags'] = 'סגור תגי×'; +$lang['Styles_tip'] = 'עצה: סגנונות ×™×›×•×œ×™× ×œ×”×ª×•×•×¡×£ במהירות לתמליל שבחרת'; + + +// +// Private Messaging +// +$lang['Private_Messaging'] = "×ž×¡×¨×™× ×ישיי×"; + +$lang['Login_check_pm'] = "התחבר כדי לבדוק ×ž×¡×¨×™× ×ישיי×"; +$lang['New_pms'] = 'יש לך %d ×ž×¡×¨×™× ××™×©×™×™× ×—×“×©×™×'; // You have 2 new messages +$lang['New_pm'] = 'יש לך מסר ×ישי חדש'; // You have 1 new message +$lang['No_new_pm'] = '×ין לך ×ž×¡×¨×™× ××™×©×™×™× ×—×“×©×™×'; +$lang['Unread_pms'] = 'יש לך %d ×ž×¡×¨×™× ××™×©×™×™× ×©×œ× × ×§×¨×ו'; +$lang['Unread_pm'] = 'יש לך מסר ×ישי ×חד ×©×œ× × ×§×¨×'; +$lang['No_unread_pm'] = '×ין לך ×ž×¡×¨×™× ××™×©×™×™× ×©×œ× × ×§×¨×ו'; +$lang['You_new_pm'] = "מסר ×ישי חדש מחכה לך בתיבת דו×ר נכנס"; +$lang['You_new_pms'] = "×ž×¡×¨×™× ××™×©×™×™× ×—×“×©×™× ×ž×—×›×™× ×œ×š בתיבת דו×ר נכנס"; +$lang['You_no_new_pm'] = "×ין ×ž×¡×¨×™× ××™×©×™×™× ×—×“×©×™×"; + + +$lang['Unread_message'] = 'הודעה ×©×œ× × ×§×¨××”'; +$lang['Read_message'] = 'הודעה שנקר××”'; + +$lang['Read_pm'] = '×§×¨× ×”×•×“×¢×”'; +$lang['Post_new_pm'] = 'שלח הודעה'; +$lang['Post_reply_pm'] = 'הגב להודעה'; +$lang['Post_quote_pm'] = 'צטט הודעה'; +$lang['Edit_pm'] = 'ערוך הודעה'; + +$lang['Inbox'] = 'תיבת דו×ר נכנס'; +$lang['Outbox'] = 'תיבת דו×ר יוצ×'; +$lang['Savebox'] = 'דו×ר שמור'; +$lang['Sentbox'] = 'תיבת דו×ר שנשלח'; +$lang['Flag'] = 'מצב'; +$lang['Subject'] = 'נוש×'; +$lang['From'] = 'השולח'; +$lang['To'] = 'הנמען'; +$lang['Date'] = 'ת×ריך'; +$lang['Mark'] = 'סמן'; +$lang['Sent'] = 'נשלח'; +$lang['Saved'] = 'נשמר'; +$lang['Delete_marked'] = 'מחק ×ת ההודעות המסומנות'; +$lang['Delete_all'] = 'מחק הכול'; +$lang['Save_marked'] = 'שמור ×ת ההודעות המסומנות'; +$lang['Save_message'] = 'שמור הודעה'; +$lang['Delete_message'] = 'מחק הודעה'; + +$lang['Display_messages'] = 'הצג הודעות ישנות'; // Followed by number of days/weeks/months +$lang['All_Messages'] = 'כל ההודעות'; + +$lang['No_messages_folder'] = '×ין לך הודעות בתיבה זו'; + +$lang['PM_disabled'] = 'מערכת ×”×ž×¡×¨×™× ××™×©×™×™× ×ž×‘×•×˜×œ×ª'; +$lang['Cannot_send_privmsg'] = '×יתך הסליחה, ×ך המנהל הר×שי מנע ממך מלשלוח ×ž×¡×¨×™× ×ישיי×'; +$lang['No_to_user'] = "×תה חייב לציין ×ת ×©× ×”×ž×©×ª×ž×© ש×ליו תישלח ההודעה"; +$lang['No_such_user'] = "×©× ×”×ž×©×ª×ž×© ×ינו ×§×™×™× ×‘×ž×¢×¨×›×ª"; + +$lang['Disable_HTML_pm'] = "בטל קוד HTML בהודעה"; +$lang['Disable_BBCode_pm'] = "בטל BBCode בהודעה"; +$lang['Disable_Smilies_pm'] = "בטל מחוות בהודעה"; + +$lang['Message_sent'] = "הודעתך נשלחה"; + +$lang['Click_return_inbox'] = "לחץ %s×›×ן%s כדי לחזור לתיבת ההודעות הנכנסות שלך"; +$lang['Click_return_index'] = "לחץ %s×›×ן%s כדי לחזור לעמוד הר×שי של הפורומי×"; + +$lang['Send_a_new_message'] = "שלח מסר ×ישי חדש"; +$lang['Send_a_reply'] = "הגב על מסר ×ישי"; +$lang['Edit_message'] = "ערוך מסר ×ישי"; + +$lang['Notification_subject'] = "מסר ×ישי חדשה ×”×’×™×¢"; + +$lang['Find_username'] = "מצי×ת ×©× ×ž×©×ª×ž×©"; +$lang['Find'] = "חיפוש"; +$lang['No_match'] = "×œ× × ×ž×¦×ו הת×מות"; + +$lang['No_post_id'] = "×œ× ×¦×•×™×™×Ÿ מספר הזיהוי של ההודעה"; +$lang['No_such_folder'] = "×œ× ×§×™×™×ž×ª תיקיה ×›×–×ת"; +$lang['No_folder'] = "התייקיה המסויימת ×œ× × ×ž×¦××”"; + +$lang['Mark_all'] = "סמן הכל"; +$lang['Unmark_all'] = "בטל סימון מהכל"; + +$lang['Confirm_delete_pm'] = "×”×× ×תה בטוח שברצונך למחוק ×ת ההודעה הנוכחית?"; +$lang['Confirm_delete_pms'] = "×”×× ×תה בטוח שברצונך למחוק ×ת ההודעה שבחרת?"; + +$lang['Inbox_size'] = "תיבת הדו×ר הנכנס שלך %d%% מל××”"; // eg. Your Inbox is 50% full +$lang['Sentbox_size'] = "תיבת הדו×ר ×”×™×•×¦× ×©×œ×š %d%% מל××”"; +$lang['Savebox_size'] = "תיבת הדו×ר השמור שלך %d%% מל××”"; + +$lang['Click_view_privmsg'] = "לחץ %s×›×ן%s כדי לבדוק ×ת הדו×ר הנכנס שלך"; + + +// +// Profiles/Registration +// +$lang['Viewing_user_profile'] = "צופה בכרטיס ×”×ישי של :: %s"; // %s is username +$lang['About_user'] = "הכול על %s"; // %s is username + +$lang['Preferences'] = "העדפות"; +$lang['Items_required'] = "שדה שמסומן ב - * ×”×•× ×©×“×” חובה ××œ× ×× ×›×ª×•×‘ ×חרת"; +$lang['Registration_info'] = "פרטי הרשמה"; +$lang['Profile_info'] = "פרטי כרטיס ×”×ישי"; +$lang['Profile_info_warn'] = "מידע ×–×” יוצג לכל חברי ×”×תר"; +$lang['Avatar_panel'] = "ניהול הדמות ×”×ישית"; +$lang['Avatar_gallery'] = "גלריית הדמויות ×”×ישיות"; + +$lang['Website'] = "×תר פרטי"; +$lang['Location'] = "מיקו×"; +$lang['Contact'] = "צור קשר ×¢×"; +$lang['Email_address'] = "כתובת דו×ר ×לקטרוני"; +$lang['Send_private_message'] = "שלח מסר ×ישי"; +$lang['Hidden_email'] = "[ בלתי נר××” ]"; +$lang['Interests'] = "תחומי עניין"; +$lang['Occupation'] = "מקצוע"; +$lang['Poster_rank'] = "דירוג משתמש"; + +$lang['Total_posts'] = "סך הכל הודעות"; +$lang['User_post_pct_stats'] = "%.2f%% בסך הכל"; +$lang['User_post_day_stats'] = "%.2f הודעות ליו×"; +$lang['Search_user_posts'] = "×ž×¦× ×ת כל ההודעות של %s"; + +$lang['No_user_id_specified'] = "×יתך הסליחה, ×ך משתמש ×–×” ×ינו קיי×"; +$lang['Wrong_Profile'] = "×ינך יכול לערוך כרטיס ×”×ישי ×©×œ× ×©×œ×š."; + +$lang['Only_one_avatar'] = 'ניתן לבחור רק דמות ×ישית ×חת'; +$lang['File_no_data'] = 'הקובץ בכתובת שהב×ת ×ינו מכיל מידע'; +$lang['No_connection_URL'] = '×ין ×פשרות ליצור קשר ×¢× ×”×›×ª×•×‘×ª שהב×ת'; +$lang['Incomplete_URL'] = 'הכתובת שהב×ת הוקשה ככתובת בלתי מל××”'; +$lang['Wrong_remote_avatar_format'] = 'הכתובת של הדמות ×”×ישית ××™× ×” תקינה'; +$lang['No_send_account_inactive'] = '×יתך סליחה, ×ך סיסמתך ××™× × ×” יכולה להישלח ×ž×©×•× ×©×—×©×‘×•× ×š ×יננו פעיל ברגע ×–×”. ×× × ×¤× ×” למנהל-על ליותר מידע'; + +$lang['Always_smile'] = 'מחוות יהיו תמיד פעילות'; +$lang['Always_html'] = 'HTML ×™×”×™×” תמיד פעיל'; +$lang['Always_bbcode'] = ' BBCode תמיד ×™×”×™×” פעיל'; +$lang['Always_add_sig'] = 'תמיד צרף חתימה למכתבייך'; +$lang['Always_notify'] = 'יידע ×ותי תמיד ×›×שר יש תגובות'; +$lang['Always_notify_explain'] = 'שלח דו×ר ×לקטרוני ×›×שר מישהו מגיב להודעות ש×תה שלחת. ניתן לשנות ×–×ת זמנית בזמן השליחה.'; + +$lang['Board_style'] = "סגנון הפורו×"; +$lang['Board_lang'] = "שפת הפורו×"; +$lang['No_themes'] = "×ין סגנונות במסד הנתוני×"; +$lang['Timezone'] = "×זור זמן"; +$lang['Date_format'] = "סדר הצגת הת×ריך"; +$lang['Date_format_explain'] = "השימוש נעשה בעזרת הפקודה ()date בשפת המפענח PHP."; +$lang['Signature'] = "חתימה"; +$lang['Signature_explain'] = "החתימה ×”×™× ×ª×ž×œ×™×œ שיכול להיות מצורף בסוף כל הודעה של המשתמש. מוגבל ל- %d תווי×."; +$lang['Public_view_email'] = "תמיד הצג ×ת כתובת הדו×ר ×”×לקטרוני שלי"; + +$lang['Current_password'] = "סיסמה נוכחית"; +$lang['New_password'] = "סיסמה חדשה"; +$lang['Confirm_password'] = "חזור על הסיסמה"; +$lang['Confirm_password_explain'] = "×תה חייב לחזור על הסיסמה הנוכחית ×× ×תה רוצה לשנות ×ותה ×ו ×ת הדו×ר ×”×לקטרוני"; +$lang['password_if_changed'] = "×× ×‘×¨×¦×•× ×š לשנות סיסמה, הזן ×›×ן ×ת הסיסמה החדשה"; +$lang['password_confirm_if_changed'] = "×תה צריך ל×שר ×ת הסיסמה רק ×× ×©×™× ×™×ª ×ותה בשדה הקוד×"; + +$lang['Avatar'] = 'דמות ×ישית'; +$lang['Avatar_explain'] = "מציג דמות ×ישית בפרטי המשתמש בכל הודעה. ניתן להציג תמונה ×חת כל פע×, והרוחב ×œ× ×™×”×™×” יותר גדול מ %d ×¤×™×§×¡×œ×™× ×•×”×’×•×‘×” ×œ× ×™×•×ª×¨ מ %d +×¤×™×§×¡×œ×™× ×•×’×•×“×œ התמונה ×œ× ×™×•×ª×¨ מ %dKB."; +$lang['Upload_Avatar_file'] = 'העלה סמל ×ישי מהמחשב שלך'; +$lang['Upload_Avatar_URL'] = "הצג דמות ×ישית מהכתובת הב××”"; +$lang['Upload_Avatar_URL_explain'] = "הזן ×ת הכתובת של הדמות ×”×ישית, ×”×™× ×ª×•×¦×’ ×›×ן."; +$lang['Pick_local_Avatar'] = "בחירת דמות ×ישית מהגלרייה"; +$lang['Link_remote_Avatar'] = "קישור לדמות ×ישית מחוץ ל×תר"; +$lang['Link_remote_Avatar_explain'] = "הכנס ×ת הקישור לדמות ×”×ישית ש×תה רוצה שתופיע."; +$lang['Avatar_URL'] = "כתובת הדמות ×”×ישית"; +$lang['Select_from_gallery'] = "בחירת דמות ×ישית מהגלריה"; +$lang['View_avatar_gallery'] = "הצג גלריה"; + +$lang['Select_avatar'] = "בחר דמות ×ישית"; +$lang['Return_profile'] = "בטל בחירת דמות ×ישית"; +$lang['Select_category'] = "בחר קטגוריה"; + +$lang['Delete_Image'] = "מחק דמות ×ישית"; +$lang['Current_Image'] = "דמות נוכחית"; + +$lang['Notify_on_privmsg'] = "הודע בעת מסר ×ישי חדש"; +$lang['Popup_on_privmsg'] = "הקפץ חלון ×›×שר יש מסר ×ישי חדש"; +$lang['Popup_on_privmsg_explain'] = "×™×©× × ×¡×’× ×•× ×•×ª שקיימת ×‘×”× ×”×פשרות לפתוח חלון בעת קבלת מסר ×ישי חדש"; +$lang['Hide_user'] = "הסתר ×ת שמך מרשימת הגולשי×"; + +$lang['Profile_updated'] = 'הכרטיס ×”×ישי שלך עודכן'; +$lang['Profile_updated_inactive'] = "הכרטיס ×”×ישי שלך עודכן בהצלחה, שינית ×¤×¨×˜×™× ×—×©×•×‘×™× ×•×—×™×•× ×™×™× ×‘×—×©×‘×•×Ÿ ולכן החשבון שלך ×יננו פעיל כרגע, ייתכן שנשלח ×ליך קוד +הפעלה לחשבון שב×מצעותו ×™×”×™×” ב×פשרותך להפעיל ×ת החשבון, ×× ×œ× × ×©×œ×— ×ליך קוד ההפעלה ××– כנר××” ש×תה צריך ×ישור ממנהל מערכת הפורומי×, ×›×שר ×”×•× ×™×שר ×ותו +תקבל הודעה שחשבונך ×ושר"; + +$lang['Password_mismatch'] = "הסיסמ×ות שהזנת ×ינן תו×מות."; +$lang['Current_password_mismatch'] = "הסיסמה שהקשת ××™× ×” תו×מת לזו שבמסד הנתוני×"; +$lang['Password_long'] = "הסיסמה חייבת להיות פחות מ- 32 תווי×."; +$lang['Username_taken'] = "×©× ×ž×©×ª×ž×© ×–×” תפוס. ×× × ×‘×—×¨ ×חד ×חר."; +$lang['Username_invalid'] = "×©× ×ž×©×ª×ž×© ×–×” מכיל ×ª×•×•×™× ×œ× ×—×•×§×™×™×. ×× × ×‘×—×¨ ×©× ×חר."; +$lang['Username_disallowed'] = "×©× ×ž×©×ª×ž×© ×–×” × ×סר לשימוש על ידי המנהל הר×שי. ×× × ×‘×—×¨ ×©× ×חר."; +$lang['Email_taken'] = "כתובת דו×ר ×לקטרוני ×–×ת כבר בשימוש. ×× × ×›×ª×•×‘ ×חרת."; +$lang['Email_banned'] = "כתובת דו×ר ×לקטרוני ×–×ת בוטלה לשימוש על ידי המנהל הר×שי."; +$lang['Email_invalid'] = "כתובת דו×ר ×לקטרוני ×–×ת בלתי חוקית. ×× × ×›×ª×•×‘ ×חרת."; +$lang['Signature_too_long'] = "חתימתך ×רוכה מדי. ×× × ×§×¦×¨ ×ותה."; +$lang['Fields_empty'] = "×תה חייב ×œ×ž×œ× ×ת השדות המסומנות ב *"; +$lang['Avatar_filetype'] = "הדמות ×”×ישית חייבת להיות בתבנית jpg, .gif. ×ו png."; +$lang['Avatar_filesize'] = "הדמות ×”×ישית חייבת להיות פחות מ %d kB"; // The avatar image file size must be less than 6 kB +$lang['Avatar_imagesize'] = "הדמות ×”×ישית חייבת להיות %d ×¤×™×§×¡×œ×™× ×¨×•×—×‘ על %d ×¤×™×§×¡×œ×™× ×’×•×‘×”"; + +$lang['Welcome_subject'] = "ברוך ×”×‘× ×œ×¤×•×¨×•×ž×™× ×©×œ %s"; // Welcome to my.com forums +$lang['New_account_subject'] = "חשבון משתמש חדש"; +$lang['Account_activated_subject'] = "חשבון הופעל"; + +$lang['Account_added'] = "תודה לך על הרישו×, חשבונך הופעל. ×תה יכול להכנס עכשיו ×¢× ×©×ž×š וסיסמתך"; +$lang['Account_inactive'] = "חשבונך נוצר. ×× × ×‘×“×•×§ ×ת חשבון הדו×ר ×”×לקטרוני שהקשת, ×œ×©× × ×©×œ×— המידע על ההפעלה של הפורומי×. לפני שתכנס תצטרך ל×שר על ידי +כניסה לקישור שבהודעת שתקבל"; +$lang['Account_inactive_admin'] = "חשבונך נוצר. הבקשה להפעלה נשלחה למנהל. ל×חר שמנהל המערכת ×™×שר ×ת חשבונך, תקבל הודעה בדו×ר ×”×לקטרוני ותוכל +להכנס למערכת הפורומי×"; +$lang['Account_active'] = "חשבונך הופעל. תודה שנרשמת"; +$lang['Account_active_admin'] = "חשבונך הופעל"; +$lang['Reactivate'] = "הפעל מחדש ×ת חשבונך!"; +$lang['COPPA'] = "חשבון המשתמש שלך נוצר בהצלחה ×בל עליך ל×שר ×ותו, ×¤×¨×˜×™× × ×•×¡×¤×™× × ×ž×¡×¨×• לתיבת הדו×ר ×”×לקטרוני שלך."; + +$lang['Registration'] = 'הסכמי השימוש במערכת הפורומי×'; +$lang['Reg_agreement'] = 'בזמן שמנהלי-העל ומנהלי ×”×¤×•×¨×•×ž×™× ×™× ×¡×• להסיר במהירות כל מיני הערות ×œ× ×¨×¦×•×™×•×ª ודעות פוגעות, עדיין ×פשר לר×ות ×ת ההודעה הפוגעת. +לכן עליך לדעת שכל ההודעות ×שר נכתבות ×‘×¤×•×¨×•× ×”× ×‘×חריות הכותב של ההודעה, ×œ× ×‘×חריות המנהל הר×שי, מנהלי ×”×¤×•×¨×•× ×•×ž× ×”×œ ×”×תר (חוץ מהודעות ×©×”× ×‘×¢×¦×ž× +כתבו) ולכן ×”× ×œ× × ×•×©××™× ×‘×חריות.

בלחיצה על ×ישור ×תה ×ž×¡×›×™× ×œ× ×œ×©×œ×•×— ×“×‘×¨×™× ×’×¡×™×, ×’×–×¢× ×™×™×, ×לימי×, פוגעי×, בלתי ×—×•×§×™×™× ×ו סוג ×חר של הערות שנויות +במחלוקת. ×× ×ª×¢×©×” כך תוביל ×ת עצמך לנידוי ×ž×”×¤×•×¨×•× (ותקבל על ×–×” הודעה). כתובת ×” IP של כל ההודעות נרשמת על מנת לעזור בלכפות ×ת תנ××™× ×לה. ×תה ×ž×¡×›×™× +×©×”×ž× ×”×œ×™× ×”×¨×שיי×, מנהל ×”×תר, ומנהלי ×”×¤×•×¨×•×ž×™× ×™×”×™×• בעלי זכות למחוק, לערוך, להעביר ×ו לסגור כל × ×•×©× ×‘×›×œ זמן שנר××” ×œ×”× ×ž×ª××™×. כמשתמש ×תה ×ž×¡×›×™× ×œ×›×š שכל +מידע ש×תה מזין ×™×וכסן בבסיס הנתוני×. ברור שמידע ×–×” ×œ× ×™×—×©×£ ×œ×©×•× ×¦×“ שלישי, מבלי הסכמתך. מנהל ×תר, ×”×ž× ×”×œ×™× ×”×¨××©×™×™× ×•×ž× ×”×œ×™ ×”×¤×•×¨×•×ž×™× ×œ× ×™×›×•×œ×™× ×œ×”×™×•×ª ×חר××™×™× +×œ×©×•× × ×¡×™×•×Ÿ פריצה שעלול להוביל לכך שמידע יחשף.

מערכת ×”×¤×•×¨×•× ×ž×©×ª×ž×©×ª בעוגיות על מנת ל×כסן מידע במחשבך ×”×ישי. עוגיות ×לו ×ינן מכילות ×ת המידע +ש×תה מקיש ×›×ן, ×”× ×ž×©×ž×©×•×ª רק כדי לשפר ×ת ×”×”× ××” שלך. כתובת הדו×ר ×”×לקטרוני שלך משומשת רק כדי ל×שר ×ת פרטי ההרשמה והסיסמה ( ובשביל לשלוח סיסמ×ות +חדשות ×× ×ª×©×›×— ×ת הנוכחית).

על ידי לחיצה על ההרשמה מתחת ×œ×”×¡×›× ×–×” ×תה ×ž×¡×›×™× ×œ×›×œ התנ××™× ×”×לה.'; + +$lang['Agree_under_13'] = '×× ×™ ×ž×¡×›×™× ×œ×ª× ××™× ×•×× ×™ מתחת לגיל 13'; +$lang['Agree_over_13'] = '×× ×™ ×ž×¡×›×™× ×œ×ª× ××™× ×•×× ×™ מעל ×ו בדיוק בן 13'; +$lang['Agree_not'] = "×× ×™ ×œ× ×ž×¡×›×™× ×œ×ª× ××™× ×©×œ מערכת הפורומי×"; + +$lang['Wrong_activation'] = "מפתח ההפעלה שהזנת ×ינו תו×× ×œ×–×” שבבסיס נתוני×. ×× × ×”×–×Ÿ ×ותו שוב."; +$lang['Send_password'] = "שלח לי סיסמה חדשה"; +$lang['Password_updated'] = "סיסמה חדשה נוצרה. ×× × ×‘×“×•×§ בתיבת הדו×ר ×”×לקטרוני שלך כדי לקבל הור×ות כיצד להשתמש בסיסמה וכיצד ל×שר ולהפעיל ×ותה"; +$lang['No_email_match'] = "כתובת הדו×ר ×”×לקטרוני שסיפקת ××™× ×” תו×מת לכתובת הדו×ר ×”×לקטרוני שצריכה להיות תו×מת ×œ×©× ×”×ž×©×ª×ž×© שמסרת"; +$lang['New_password_activation'] = "סיסמת הפעלה חדשה"; +$lang['Password_activated'] = "החשבון משתמש שלך הופעל מחדש, כדי להכנס למערכת ×”×¤×•×¨×•×ž×™× ×¢×œ×™×š להשתמש בסיסמה שסופקה לך בתיבת הדו×ר ×”×לקטרוני שלך"; + +$lang['Send_email_msg'] = 'שלח הודעה לדו×ר ×”×לקטרוני'; +$lang['No_user_specified'] = '×©× ×”×ž×©×ª×ž×© ×œ× ×¦×•×™×™×Ÿ'; +$lang['User_prevent_email'] = 'משתמש ×–×” ×ינו רוצה לקבל דו×ל. ×× × × ×¡×” לשלוח ×ליו מסר ×ישי.'; +$lang['User_not_exist'] = 'המשתמש ×ינו קיי×'; +$lang['CC_email'] = 'שלח עותק של הודעה זו ×ל עצמך'; +$lang['Email_message_desc'] = 'ההודעה נשלחה כתמליל פשוט, ×ל תכלול תגי HTML ×ו קוד BBCode בהודעה זו. הכתובת שתוצג שממנה נשלח הדו×ר ×”×לקטרוני מופיעה +כפי שהגדרת ×ותה.'; +$lang['Flood_email_limit'] = '×ינך יכול לשלוח דו×ל בזמן ×–×”, ×× × × ×¡×” מ×וחר יותר.'; + +$lang['Recipient'] = 'נמען'; +$lang['Email_sent'] = 'ההודעה נשלחה בהצלחה'; +$lang['Send_email'] = 'שלח דו×ל'; +$lang['Empty_subject_email'] = '×תה חייב לציין × ×•×©× ×¢×‘×•×¨ הודעה זו'; +$lang['Empty_message_email'] = '×תה חייב להקיש ×ת ההודעה שברצונך לשלוח'; + + +// +// Visual confirmation system strings +// +$lang['Confirm_code_wrong'] = 'קוד ×”×ישור שהכנסת ×ינו תקין'; +$lang['Too_many_registers'] = 'עברת ×ת מספר הניסיות המותר, ×× × × ×¡×” שוב מ×וחר יותר'; +$lang['Confirm_code_impaired'] = '×× ×תה ×œ× ×™×›×•×œ לר×ות ×ת הקוד המוצג ×× × ×¦×•×¨ קשר ×¢× %sהמנהל הר×שי%s לעזרה.'; +$lang['Confirm_code'] = 'קוד ×ישור'; +$lang['Confirm_code_explain'] = '×× × ×”×›× ×¡ ×ת הקוד בדיוק כפי ש×תה רו××” ×ותו. הקוד דורש ×ותיות גדולות וקטנות, וה×פס מכיל קו חוצה.'; + + + +// +// Memberslist +// +$lang['Select_sort_method'] = 'בחר סוג מיון'; +$lang['Sort'] = 'סדר'; +$lang['Sort_Top_Ten'] = 'עשרת ×”×©×•×œ×—×™× ×”×’×“×•×œ×™×'; +$lang['Sort_Joined'] = 'ת×ריך הצטרפות'; +$lang['Sort_Username'] = '×©× ×ž×©×ª×ž×©'; +$lang['Sort_Location'] = 'מיקו×'; +$lang['Sort_Posts'] = '×¡×›×•× ×”×•×“×¢×•×ª כולל'; +$lang['Sort_Email'] = 'כתובת דו×ר ×לקטרוני'; +$lang['Sort_Website'] = '×תר ×ישי'; +$lang['Sort_Ascending'] = 'סדר עולה'; +$lang['Sort_Descending'] = 'סדר יורד'; +$lang['Order'] = 'סדר'; + + +// +// Group control panel +// +$lang['Group_Control_Panel'] = 'לוח בקרה לקבוצות'; +$lang['Group_member_details'] = 'פרטי חברות בקבוצה'; +$lang['Group_member_join'] = 'הצטרף לקבוצה'; + +$lang['Group_Information'] = 'מידע קבוצה'; +$lang['Group_name'] = '×©× ×§×‘×•×¦×”'; +$lang['Group_description'] = 'תי×ור קבוצה'; +$lang['Group_membership'] = 'חברות בקבוצה'; +$lang['Group_Members'] = 'חברי קבוצה'; +$lang['Group_Moderator'] = 'מנהל קבוצה'; +$lang['Pending_members'] = '×—×‘×¨×™× × ×¡×™×•× ×™×™×'; + +$lang['Group_type'] = 'סוג קבוצה'; +$lang['Group_open'] = 'קבוצה פתוחה'; +$lang['Group_closed'] = 'קבוצה סגורה'; +$lang['Group_hidden'] = 'קבוצה מוסתרת'; + +$lang['Current_memberships'] = 'חברויות נוכחיות'; +$lang['Non_member_groups'] = 'קבוצות ×œ×œ× ×—×‘×¨×™×'; +$lang['Memberships_pending'] = 'חברויות נסיוניות'; + +$lang['No_groups_exist'] = '×ין קבוצות קיימות'; +$lang['Group_not_exist'] = 'קבוצת ×ž×©×ª×ž×©×™× ×–×• ××™× ×” קיימת'; + +$lang['Join_group'] = 'הצטרף לקבוצה'; +$lang['No_group_members'] = 'בקבוצה זו ×ין חברי×'; +$lang['Group_hidden_members'] = 'קבוצה זו מוסתרת, ×ינך יכול לר×ות ×ת ×”×¤×¨×˜×™× ×©×œ×”'; +$lang['No_pending_group_members'] = 'בקבוצה זו ×ין ×—×‘×¨×™× × ×¡×™×•× ×™×™×'; +$lang['Group_joined'] = 'נרשמת בהצלחה לקבוצה זו.
×תה תקבל הודעה ×›×שר רישומך ×™×ושר על ידי מנהל הקבוצה.'; +$lang['Group_request'] = 'בקשתך להצטרף לקבוצה זו נשלחה'; +$lang['Group_approved'] = 'בקשתך ×ושרה'; +$lang['Group_added'] = 'נוספת בהצלחה לקבוצת ×ž×©×ª×ž×©×™× ×–×•'; +$lang['Already_member_group'] = '×תה כבר חבר בקבוצה זו'; +$lang['User_is_member_group'] = 'משתמש ×–×” כבר חבר בקבוצה זו'; +$lang['Group_type_updated'] = 'סוג הקבוצה שונה בהצלחה'; + +$lang['Could_not_add_user'] = '××™ ×פשר לצרף משתמש ש×ינו קיי×'; +$lang['Could_not_anon_user'] = '×ינך יכול לצרף משתמש ×למוני לקבוצה'; + +$lang['Confirm_unsub'] = '×”×× ×תה בטוח שברצונך לבטל ×ת הרשמתך לקבוצה זו?'; +$lang['Confirm_unsub_pending'] = 'הרשמתך לקבוצה זו ××™× ×” ×ושרה עדיין. ×”×× ×תה בטוח ×›×™ ברצונך לבטל ×ת בקשתך להתקבל לקבוצה זו?'; + +$lang['Unsub_success'] = 'ביטלת ×ת הרשמתך לקבוצה זו בהצלחה.'; + +$lang['Approve_selected'] = '×שר נבחרי×'; +$lang['Deny_selected'] = 'דחה נבחרי×'; +$lang['Not_logged_in'] = '×תה חייב להכנס לקבוצה על מנת ×œ×”×¨×©× ×ליה.'; +$lang['Remove_selected'] = 'מחק נבחרי×'; +$lang['Add_member'] = 'הוסף חבר'; +$lang['Not_group_moderator'] = '×ינך יכול לנהל קבוצה זו ולכן ×ינך יכול לבצע פעולה זו.'; + +$lang['Login_to_join'] = 'כניסה ×ו הצטרפות ×ו ניהול חברי קבוצה'; +$lang['This_open_group'] = 'זוהי קבוצה פתוחה, לחץ כדי לבקש להצטרף'; +$lang['This_closed_group'] = 'זוהי קבוצה סגורה, צירוף של ×ž×©×ª×ž×©×™× × ×•×¡×¤×™× ×ינו מורשה'; +$lang['This_hidden_group'] = 'זוהי קבוצה מוסתרת, צירוף ×וטומטי של משתמש ×ינו מורשה'; +$lang['Member_this_group'] = 'הינך חבר בקבוצה'; +$lang['Pending_this_group'] = 'הינך בעל חברות נסיונית בקבוצה'; +$lang['Are_group_moderator'] = 'הינך מנהל הקבוצה'; +$lang['None'] = '×ין'; + +$lang['Subscribe'] = 'הירש×'; +$lang['Unsubscribe'] = 'בטל ×ת הרשמתך'; +$lang['View_Information'] = 'ר××” מידע'; + +// +// Search +// +$lang['Search_query'] = "חיפוש לפי מילת מפתח"; +$lang['Search_options'] = "×פשרויות חיפוש"; + +$lang['Search_keywords'] = "חיפוש מילות מפתח"; +$lang['Search_keywords_explain'] = '×תה יכול להשתמש ב- AND בין שתי מילות מפתח, על-מנת שהתוצ××” תכלול ×ת שתי מילות המפתח בתוצ×ות החיפוש.
×תה יכול להשתמש ב- Or בין שתי מילות מפתח, כדי שהתוצ××” תכלול ×חת ממילות המפתח, ×ו ×ת כולן.
×תה יכול להשתמש ב- Not בין שתי מילות +מפתח, ×¢"מ לציין ××™×–×” מילה כן תהיה בתוצ×ות החיפוש ו×יזו ל×.
×תה יכול להשתמש ב- * בתור תו משלי×.'; +$lang['Search_author'] = "חיפוש לפי ×©× ×ž×—×‘×¨ ההודעה"; +$lang['Search_author_explain'] = "השתמש ב * בתור תו משלי×"; + +$lang['Search_for_any'] = "חפש כל ×חד מהתנ××™× ×ו השתמש כפי שרשמת"; +$lang['Search_for_all'] = "חפש ×ת כל התנ××™×"; +$lang['Search_title_msg'] = "חפש בכותרת הודעה ותוכן הודעה"; +$lang['Search_msg_only'] = "חפש בתוכן הודעה בלבד"; + +$lang['Return_first'] = "חזור לר×שון"; // followed by xxx characters in a select box +$lang['characters_posts'] = "×ª×•×•×™× ×©×œ הודעה"; + +$lang['Search_previous'] = "חפש קוד×"; // followed by days, weeks, months, year, all in a select box + +$lang['Sort_by'] = "סדר לפי"; +$lang['Sort_Time'] = "זמן הודעה"; +$lang['Sort_Post_Subject'] = "× ×•×©× ×”×•×“×¢×”"; +$lang['Sort_Topic_Title'] = "כותרת נוש×"; +$lang['Sort_Author'] = "כותב"; +$lang['Sort_Forum'] = "פורו×"; + +$lang['Display_results'] = "הצג תוצ××” ×›"; +$lang['All_available'] = "הכל ×פשרי"; +$lang['No_searchable_forums'] = "×ין ב×פשרותך לחפש ב××£ ×חד ×ž×”×¤×•×¨×•×ž×™× ×‘×תר ×–×”"; + +$lang['No_search_match'] = "×œ× × ×ž×¦×ו תוצ×ות לחיפוש שביצעת"; +$lang['Found_search_match'] = "נמצ××” הודעה ×חת תו×מת לחיפוש שלך"; // eg. Search found 1 match +$lang['Found_search_matches'] = "נמצ×ו %d תוצ×ות תו×מות לחיפוש שלך"; // eg. Search found 24 matches + +$lang['Search_Flood_Error'] = '×ינך יכול לבצע חיפוש נוסף בזמן קצר כל-כך; ×× × × ×¡×” שנית בעוד זמן קצר.'; + +$lang['Close_window'] = "סגור חלון"; + + +// +// Auth related entries +// +// Note the %s will be replaced with one of the following 'user' arrays +$lang['Sorry_auth_announce'] = "סליחה ×בל רק %s יכול לשלוח הכרזות ×‘×¤×•×¨×•× ×–×”"; +$lang['Sorry_auth_sticky'] = "סליחה ×בל רק %s יכול לשלוח הודעות דביקות ×‘×¤×•×¨×•× ×–×”"; +$lang['Sorry_auth_read'] = "סליחה ×בל רק %s יכול ×œ×§×¨×•× ×”×•×“×¢×•×ª ×‘×¤×•×¨×•× ×–×”"; +$lang['Sorry_auth_post'] = "סליחה ×בל רק %s יכול לשלוח הודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Sorry_auth_reply'] = "סליחה ×בל רק %s יכול להגיב להודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Sorry_auth_edit'] = "סליחה ×בל רק %s יכול לערוך הודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Sorry_auth_delete'] = "סליחה ×בל רק %s יכול למחוק הודעות ×‘×¤×•×¨×•× ×–×”"; +$lang['Sorry_auth_vote'] = "סליחה ×בל רק %s יכול להצביע במש××œ×™× ×‘×¤×•×¨×•× ×–×”"; + +// These replace the %s in the above strings +$lang['Auth_Anonymous_Users'] = "×ž×©×ª×ž×©×™× ×למוניי×"; +$lang['Auth_Registered_Users'] = "×ž×©×ª×ž×©×™× ×¨×©×•×ž×™×"; +$lang['Auth_Users_granted_access'] = "×ž×©×ª×ž×©×™× ×‘×¢×œ×™ גישה מסויימת"; +$lang['Auth_Moderators'] = "מנהלי×"; +$lang['Auth_Administrators'] = "×ž× ×”×œ×™× ×¨×שיי×"; + +$lang['Not_Moderator'] = '×ינך המנהל של ×¤×•×¨×•× ×–×”'; +$lang['Not_Authorised'] = 'הגישה ×סורה'; + +$lang['You_been_banned'] = 'הושעית ×ž×¤×•×¨×•× ×–×”.
×× × ×¤× ×” למנהל הר×שי ×ו למנהל ×”×¤×•×¨×•× ×›×“×™ לקבל מידע נוסף.'; + + +// +// Viewonline +// +$lang['Reg_users_zero_online'] = '×ין ××£ חבר ×¨×©×•× ×•'; // There are 5 Registered and +$lang['Reg_users_online'] = 'יש %d ×—×‘×¨×™× ×¨×©×•×ž×™× ×•-'; // There ae 5 Registered and +$lang['Reg_user_online'] = 'יש חבר ×¨×©×•× ×חד ו-'; // There ae 5 Registered and +$lang['Hidden_users_zero_online'] = '×ין ×—×‘×¨×™× ×‘×œ×ª×™ נר××™×'; // Zero Hidden users online +$lang['Hidden_users_online'] = '%d ×—×‘×¨×™× ×‘×œ×ª×™ נר××™×'; // six Hidden users online +$lang['Hidden_user_online'] = 'חבר ×חד בלתי נר××”'; // six Hidden users online +$lang['Guest_users_online'] = 'יש %d ××•×¨×—×™× ×‘×¤×•×¨×•× ×©×ž×—×•×‘×¨×™× ×›×¨×’×¢'; // There are 10 Guest users online +$lang['Guest_users_zero_online'] = '×ין ××•×¨×—×™× ×‘×¤×•×¨×•× ×©×ž×—×•×‘×¨×™× ×›×¨×’×¢'; // There are 10 Guest users online +$lang['Guest_user_online'] = 'יש ×ורח ×חד ×‘×¤×•×¨×•× ×©×ž×—×•×‘×¨ כרגע'; // There is 1 Guest user online +$lang['No_users_browsing'] = '×ין ×ž×©×ª×ž×©×™× ×©×’×•×œ×©×™× ×›×¨×’×¢ בפורו×'; + +$lang['Online_explain'] = 'המידע מבוסס על פעילות ×”×ž×©×ª×ž×©×™× ×‘×ž×¢×¨×›×ª בחמשת הדקות ×”×חרונות'; + +$lang['Forum_Location'] = '×ž×™×§×•× ×¤×•×¨×•×'; +$lang['Last_updated'] = 'עודכן ל×חרונה'; + +$lang['Forum_index'] = 'בעמוד הר×שי'; +$lang['Logging_on'] = 'מתחבר'; +$lang['Posting_message'] = 'שולח הודעה'; +$lang['Searching_forums'] = 'מחפש בפורומי×'; +$lang['Viewing_profile'] = 'צופה בכרטיס ×”×ישי'; +$lang['Viewing_online'] = 'רו××” מי מחובר'; +$lang['Viewing_member_list'] = 'רו××” רשימת חברי×'; +$lang['Viewing_priv_msgs'] = 'רו××” ×ž×¡×¨×™× ×ישיי×'; +$lang['Viewing_FAQ'] = 'רו××” עמוד ש×לות נפוצות'; + + +// +// Moderator Control Panel +// +$lang['Mod_CP'] = 'לוח בקרה למנהלי×'; +$lang['Mod_CP_explain'] = 'בעזרת טופס ×–×” תוכל לבצע פעולות שונות כגון מחיקה, העברה, נעילה, שחרור נעילה ופיצול הודעות ×‘×¤×•×¨×•× ×–×”.'; + +$lang['Select'] = 'בחר'; +$lang['Delete'] = 'מחק'; +$lang['Move'] = 'העבר'; +$lang['Lock'] = 'נעל'; +$lang['Unlock'] = 'שחרר נעילה'; + +$lang['Topics_Removed'] = 'ההודעות שבחרת הוסרו בהצלחה ממסד הנתוני×.'; +$lang['Topics_Locked'] = 'ההודעות שנבחרו ננעלו'; +$lang['Topics_Moved'] = 'ההודעות שנבחרו הועברו ×œ×¤×•×¨×•× ×©×‘×—×¨×ª'; +$lang['Topics_Unlocked'] = 'ההודעות שנבחרו שוחררו מהנעילה'; +$lang['No_Topics_Moved'] = '××£ הודעה ×œ× ×”×•×¢×‘×¨×”'; + +$lang['Confirm_delete_topic'] = '×”×× ×תה בטוח שברצונך להסיר ×ת ההודעה שנבחרה?'; +$lang['Confirm_lock_topic'] = '×”×× ×תה בטוח שברצונך לנעול ×ת ההודעה שנבחרה?'; +$lang['Confirm_unlock_topic'] = '×”×× ×תה בטוח שברצונך לשחרר ×ת הנעילה של ההודעה שנבחרה?'; +$lang['Confirm_move_topic'] = '×”×× ×תה בטוח שברצונך להעביר ×ת ההודעה שנבחרה?'; + +$lang['Move_to_forum'] = 'העבר לפורו×'; +$lang['Leave_shadow_topic'] = 'הש×ר העתק של ההודעה ×‘×¤×•×¨×•× ×”×ž×§×•×¨×™.'; + +$lang['Split_Topic'] = 'לוח הבקרה לפיצול הודעות'; +$lang['Split_Topic_explain'] = 'בעזרת טופס ×–×” תוכל לחלק הודעה לשתי הודעות נפרדות. ו××£ ניתן להפריד בין ×”× ×•×©× ×œ×ª×’×•×‘×•×ª.'; +$lang['Split_title'] = '× ×•×©× ×”×”×•×“×¢×” החדשה'; +$lang['Split_forum'] = '×”×¤×•×¨×•× ×©×ליו תועבר ההודעה החדשה'; +$lang['Split_posts'] = 'חלק רק ×ת ההודעות שנבחרו'; +$lang['Split_after'] = 'חלק מההודעה שנבחרה ומטה'; +$lang['Topic_split'] = 'ההודעה שנבחרה פוצלה בהצלחה'; + +$lang['Too_many_error'] = 'בחרת יותר מדי הודעות. ×תה יכול לבחור רק הודעה ×חת לפיצול.'; + +$lang['None_selected'] = '×œ× ×‘×—×¨×ª הודעה כלשהי לביצוע פעולה זו. בבקשה חזור ×חורה ובחר לפחות הודעה ×חת.'; +$lang['New_forum'] = '×¤×•×¨×•× ×—×“×©'; + +$lang['This_posts_IP'] = 'IP עבור הודעה זו'; +$lang['Other_IP_this_user'] = 'כתובות IP ×חרות ×©×“×¨×›× ×ž×©×ª×ž×© ×–×” שלח הודעות'; +$lang['Users_this_IP'] = '×ž×©×ª×ž×©×™× ×©×©×œ×—×• הודעות דרך ×” IP'; +$lang['IP_info'] = 'מידע IP'; +$lang['Lookup_IP'] = '×ž×¦× ×›×ª×•×‘×ª IP'; + + +// +// Timezones ... for display on each page +// +$lang['All_times'] = 'כל ×”×–×ž× ×™× ×”× %s'; // eg. All times are GMT - 12 Hours (times from next block) + +$lang['-12'] = 'GMT - 12 שעות'; +$lang['-11'] = 'GMT - 11 שעות'; +$lang['-10'] = 'GMT - 10 שעות'; +$lang['-9'] = 'GMT - 9 שעות'; +$lang['-8'] = 'GMT - 8 שעות'; +$lang['-7'] = 'GMT - 7 שעות'; +$lang['-6'] = 'GMT - 6 שעות'; +$lang['-5'] = 'GMT - 5 שעות'; +$lang['-4'] = 'GMT - 4 שעות'; +$lang['-3.5'] = 'GMT - 3.5 שעות'; +$lang['-3'] = 'GMT - 3 שעות'; +$lang['-2'] = 'GMT - שעתיי×'; +$lang['-1'] = 'GMT - שעה'; +$lang['0'] = 'שעון בריטניה (GMT)'; +$lang['1'] = 'שעון ×ירופה (GMT + שעה)'; +$lang['2'] = 'שעון ישר×ל (GMT + שעתיי×)'; +$lang['3'] = 'GMT + 3 שעות'; +$lang['3.5'] = 'GMT + 3.5 שעות'; +$lang['4'] = 'GMT + 4 שעות'; +$lang['4.5'] = 'GMT + 4.5 שעות'; +$lang['5'] = 'GMT + 5 שעות'; +$lang['5.5'] = 'GMT + 5.5 שעות'; +$lang['6'] = 'GMT + 6 שעות'; +$lang['6.5'] = 'GMT + 6.5 שעות'; +$lang['7'] = 'GMT + 7 שעות'; +$lang['8'] = 'GMT + 8 שעות'; +$lang['9'] = 'GMT + 9 שעות'; +$lang['9.5'] = 'GMT + 9.5 שעות'; +$lang['10'] = 'GMT + 10 שעות'; +$lang['11'] = 'GMT + 11 שעות'; +$lang['12'] = 'GMT + 12 שעות'; +$lang['13'] = 'GMT + 13 שעות'; + +// These are displayed in the timezone select box +$lang['tz']['-12'] = 'GMT - 12 שעות'; +$lang['tz']['-11'] = 'GMT - 11 שעות'; +$lang['tz']['-10'] = 'GMT - 10 שעות'; +$lang['tz']['-9'] = 'GMT - 9 שעות'; +$lang['tz']['-8'] = 'GMT - 8 שעות'; +$lang['tz']['-7'] = 'GMT - 7 שעות'; +$lang['tz']['-6'] = 'GMT - 6 שעות'; +$lang['tz']['-5'] = 'GMT - 5 שעות'; +$lang['tz']['-4'] = 'GMT - 4 שעות'; +$lang['tz']['-3.5'] = 'GMT - 3.5 שעות'; +$lang['tz']['-3'] = 'GMT - 3 שעות'; +$lang['tz']['-2'] = 'GMT - שעתיי×'; +$lang['tz']['-1'] = 'GMT - שעה'; +$lang['tz']['0'] = 'GMT'; +$lang['tz']['1'] = 'GMT + שעה'; +$lang['tz']['2'] = 'שעון ישר×ל'; +$lang['tz']['3'] = 'GMT + 3 שעות'; +$lang['tz']['3.5'] = 'GMT + 3.5 שעות'; +$lang['tz']['4'] = 'GMT + 4 שעות'; +$lang['tz']['4.5'] = 'GMT + 4.5 שעות'; +$lang['tz']['5'] = 'GMT + 5 שעות'; +$lang['tz']['5.5'] = 'GMT + 5.5 שעות'; +$lang['tz']['6'] = 'GMT + 6 שעות'; +$lang['tz']['6.5'] = 'GMT + 6.5 שעות'; +$lang['tz']['7'] = 'GMT + 7 שעות'; +$lang['tz']['8'] = 'GMT + 8 שעות'; +$lang['tz']['9'] = 'GMT + 9 שעות'; +$lang['tz']['9.5'] = 'GMT + 9.5 שעות'; +$lang['tz']['10'] = 'GMT + 10 שעות'; +$lang['tz']['11'] = 'GMT + 11 שעות'; +$lang['tz']['12'] = 'GMT + 12 שעות'; +$lang['tz']['13'] = 'GMT + 13 שעות'; + +$lang['datetime']['Sunday'] = 'ר×שון'; +$lang['datetime']['Monday'] = 'שני'; +$lang['datetime']['Tuesday'] = 'שלישי'; +$lang['datetime']['Wednesday'] = 'רביעי'; +$lang['datetime']['Thursday'] = 'חמישי'; +$lang['datetime']['Friday'] = 'שישי'; +$lang['datetime']['Saturday'] = 'שבת'; +$lang['datetime']['Sun'] = "×'"; +$lang['datetime']['Mon'] = "ב'"; +$lang['datetime']['Tue'] = "×’'"; +$lang['datetime']['Wed'] = "ד'"; +$lang['datetime']['Thu'] = "×”'"; +$lang['datetime']['Fri'] = "ו'"; +$lang['datetime']['Sat'] = 'שבת'; +$lang['datetime']['January'] = 'ינו×ר'; +$lang['datetime']['February'] = 'פברו×ר'; +$lang['datetime']['March'] = 'מרץ'; +$lang['datetime']['April'] = '×פריל'; +$lang['datetime']['May'] = 'מ××™'; +$lang['datetime']['June'] = 'יוני'; +$lang['datetime']['July'] = 'יולי'; +$lang['datetime']['August'] = '×וגוסט'; +$lang['datetime']['September'] = 'ספטמבר'; +$lang['datetime']['October'] = '×וקטובר'; +$lang['datetime']['November'] = 'נובמבר'; +$lang['datetime']['December'] = 'דצמבר'; +$lang['datetime']['Jan'] = '01'; +$lang['datetime']['Feb'] = '02'; +$lang['datetime']['Mar'] = '03'; +$lang['datetime']['Apr'] = '04'; +$lang['datetime']['May'] = '05'; +$lang['datetime']['Jun'] = '06'; +$lang['datetime']['Jul'] = '07'; +$lang['datetime']['Aug'] = '08'; +$lang['datetime']['Sep'] = '09'; +$lang['datetime']['Oct'] = '10'; +$lang['datetime']['Nov'] = '11'; +$lang['datetime']['Dec'] = '12'; + +// +// Errors (not related to a +// specific failure on a page) +// +$lang['Information'] = 'מידע'; +$lang['Critical_Information'] = 'מידע גורלי'; + +$lang['General_Error'] = 'שגי××” כללית'; +$lang['Critical_Error'] = 'שגי××” חמורה'; +$lang['An_error_occured'] = 'התרחשה שגי××”'; +$lang['A_critical_error'] = 'התרחשה שגי××” חמורה'; + +$lang['Admin_reauthenticate'] = 'כדי לנהל ×ת ×”×¤×•×¨×•× ×תה צריך ל×מת ×ת זהותך שנית.'; + +$lang['Login_attempts_exceeded'] = 'עברת ×ת המספר המירבי של נסיונות ההתחברות, העומד על %s. ×ינך רש××™ להתחבר במשך %s הדקות הב×ות.'; +$lang['Please_remove_install_contrib'] = '×× × ×•×•×“× ×©×ž×—×§×ª ×ת התקיות /install ו- contrib/ '; + +$lang['Session_invalid'] = 'שגי××” בזיהוי. ×× × × ×¡×” לשלוח שוב.'; + + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_hungarian/index.htm b/includes/shared/phpbb2/language/lang_hungarian/index.htm new file mode 100644 index 00000000..8ffe29f8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_hungarian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_italian/lang_main.php b/includes/shared/phpbb2/language/lang_italian/lang_main.php index a639dbe0..eda4a400 100644 --- a/includes/shared/phpbb2/language/lang_italian/lang_main.php +++ b/includes/shared/phpbb2/language/lang_italian/lang_main.php @@ -88,6 +88,30 @@ $lang['Disabled'] = 'Disabilitato'; $lang['Error'] = 'Errore'; +// ------------------------------------------------- +$lang['Goto_page'] = 'Goto page'; + +$lang['Post_by_author'] = 'by'; +$lang['Posted_on_date'] = 'on'; +$lang['In'] = 'in'; + +$lang['Statistics'] = 'Statistics'; +$lang['Legend'] = 'Legend: '; +$lang['Posted_articles_zero_total'] = 'No post'; // Number of posts +$lang['Posted_articles_total'] = 'Total posts %d'; // Number of posts +$lang['Posted_article_total'] = 'Total posts %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'No member'; // # registered users +$lang['Registered_users_total'] = 'Total members %d'; // # registered users +$lang['Registered_user_total'] = 'Total members %d'; // # registered users +$lang['Newest_user'] = 'Our newest member %s%s%s'; // a href, username, /a + +$lang['Rules_moderate'] = '%sModerate this forum%s'; // %s replaced by a href links, do not remove! + +$lang['Quick_mod'] = 'Quick-mod tools:'; + +$lang['Search_forums'] = 'Search within'; +// ------------------------------------------------- + $lang['Next'] = 'Successivo'; $lang['Previous'] = 'Precedente'; $lang['Goto_page'] = 'Vai a'; diff --git a/includes/shared/phpbb2/language/lang_portuguese_brazil/index.htm b/includes/shared/phpbb2/language/lang_portuguese_brazil/index.htm new file mode 100644 index 00000000..90a3130b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_portuguese_brazil/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/admin_activate.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/admin_activate.tpl new file mode 100644 index 00000000..29a38499 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/admin_activate.tpl @@ -0,0 +1,9 @@ +Subject: [Punjabi] ਨਵਾਂ ਉਪਭੋਗੀ ਖਾਤਾ +Charset: utf-8 + +ਮਾਨਯੋਗ "{USERNAME}" ਜੀ, + +"{USERNAME}" ਦਾ ਪà©à¨°à¨¾à¨¨à¨¾ ਖਾਤਾ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਜਾਂ ਇਕ ਨਵਾਂ ਖਾਤਾ ਖੋਲਯਾ ਗਿਆ ਹੈ। ਜੇ ਤà©à¨¸à©€à¨‚ ਇਸ ਬਾਰੇ ਵਿਸਤਾਰ ਵਿੱਚ ਜਾਨਣਾ ਹੈ, ਅਤੇ ਇਸ ਖਾਤੇ ਨੂੰ ਫੇਰ ਤੋਂ ਚਾਲੂ ਕਰਨਾ ਹੈ, ਤਾਂ ਫਿਰ ਹੇਠ ਦਿੱਤੇ ਲਿੰਕ ਤੇ ਕੜਿੱਕ ਕਰੋ ਜੀ: + +{U_ACTIVATE} +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/admin_send_email.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/admin_send_email.tpl new file mode 100644 index 00000000..e4f12ce8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/admin_send_email.tpl @@ -0,0 +1,10 @@ +Charset: utf-8 + +ਹੇਠ ਲਿਖੀ ਈ-ਮੇਲ "{SITENAME}" ਦੇ ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਵਲੋਂ ਭੇਜੀ ਗਈ ਹੈ। ਜੇ ਇਹ ਸਨੇਹਾ ਰੱਦੀ ਹੈ, ਜਾਂ ਬਦਜ਼ਬਾਨੀ ਭਾਸ਼ਾ ਵਿੱਚ ਲਿਖਿਆ ਗਿਆ ਹੈ, ਤਾਂ ਤà©à¨¸à©€à¨‚ ਕà©à¨°à¨¿à¨ªà¨¾ ਕਰਕੇ ਇਸ ਅਖਾੜੇ ਦੇ ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨੂੰ ਇਸ ਪਤੇ ਤੇ ਸੂਚਨਾ ਦੇਵੋ: +{BOARD_EMAIL} + +ਜਾਣਕਾਰੀ ਲਈ ਪà©à¨°à©€ ਈ-ਮੇਲ, ਸਿਰਲੇਖ ਸਮੇਤ ਭੇਜੀ ਜਾਵੇ। + +ਹੇਠ ਲਿਖੀ ਸੂਚਨਾ ਤਹਾਨੂੰ ਭੇਜੀ ਗਈ ਹੈ: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +{MESSAGE} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/admin_welcome_activated.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/admin_welcome_activated.tpl new file mode 100644 index 00000000..de16c300 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/admin_welcome_activated.tpl @@ -0,0 +1,8 @@ +Subject: [Punjabi] ਖਾਤਾ ਚਾਲੂ +Charset: utf-8 + +ਮਾਨਯੋਗ "{USERNAME}" ਜੀ, + +ਜੀ ਆਇਆਂ ਨੂੰ ! + +"{SITENAME}" ਵਿਚ ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਹà©à¨£ ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਆਪਣੇ ਉਪਭੋਗੀ-ਨਾਂ ਅਤੇ ਗà©à¨ªà¨¤-ਕੋਡ ਦੀ ਲੋੜ ਪà¨à¨—ੀ। ਇਹਨਾਂ ਬਾਰੇ ਸਾਰੀ ਜਾਣਕਾਰੀ, ਤà©à¨¹à¨¾à¨¨à©‚à©° ਪਿਛਲੀ ਈ-ਮੇਲ ਵਿਚ ਭੇਜ ਦਿੱਤੀ ਗਈ ਸੀ। \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/admin_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/admin_welcome_inactive.tpl new file mode 100644 index 00000000..03d2f2b4 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/admin_welcome_inactive.tpl @@ -0,0 +1,19 @@ +Subject: [Punjabi] {SITENAME} ਅਖਰੇਹ ਵਲੋ ਤੋਹਨੋ ਜ਼ੀ ਆਯਾਨ ਣੋ +Charset: utf-8 + +{WELCOME_MSG} + +ਕà©à¨°à¨¿à¨ªà¨¾ ਕਰਕੇ ਇਸ ਈ-ਮੇਲ ਨੂੰ ਆਉਣ ਵਾਲੇ ਸਮੇਂ ਲਈ ਦਰਜ਼ ਕੀਤਾ ਜਾਵੇ। ਤà©à¨¹à¨¾à¨¡à©‡ ਖਾਤੇ ਬਾਰੇ ਜਾਣਕਾਰੀ: + +--------------------------------------------------- +ਉਪਭੋਗੀ-ਨਾਂ: {USERNAME} +ਗà©à¨ªà¨¤-ਕੋਡ: {PASSWORD} +--------------------------------------------------- + +ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਅਜੇ ਤਕ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ। ਖਾਤੇ ਨੂੰ ਵਰਤੋਂ ਵਿਚ ਲਿਆਉਣ ਤੋਂ ਪਹਿਲਾ, ਇਸ ਅਖਾੜੇ ਦੇ ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨੂੰ ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਚਾਲੂ ਕਰਨਾ ਪਵੇਗਾ। ਇਹ ਕੰਮ ਹੋਣ ਤੋਂ ਬਾਦ, ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਕ ਹੋਰ ਈ-ਮੇਲ ਭੇਜੀ ਜਾਵੇਗੀ। + +ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸà©à¨šà©‡à¨¤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕੀ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਯਾਦ ਰੱਖਿਓ। ਇਹ ਕੋਡ ਵਿਕਰਿਤਕ ਰੂਪ ਵਿਚ ਸਾਡੇ ਕੰਪਿਊਟਰੀ-ਅੰਕੜਿਆਂ ਦੇ ਅੰਦਰ ਦਰਜ਼ ਹੈ, ਅਤੇ ਇਸ ਕਰਕੇ ਅਸੀਂ ਉਹ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਨਹੀਂ ਨਿਕਾਲ ਸਕਦੇ। ਪਰ ਫੇਰ ਵੀ, ਜੇ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਭà©à©±à¨² ਜਾਂਦੇ ਹੋ ਤਾਂ à¨à¨¸à©‡ ਤਰਾਂ ਹੀ, ਇਕ ਨਵਾਂ ਕੋਡ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਬਣਾਇਆ ਜਾਵੇਗਾ। + +ਸਾਡੇ ਅਖਾੜੇ ਵਿਚ ਭਾਗ ਲੈਣ ਲਈ, ਅਤੇ ਇਕ ਮੈਂਬਰ ਵਾਂਗ ਦਰਜ਼ ਹੋਣ ਲਈ, ਅਸੀਂ ਤà©à¨¹à¨¾à¨¡à©‡ ਧੰਨਵਾਦੀ ਹਾਂ। + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/coppa_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/coppa_welcome_inactive.tpl new file mode 100644 index 00000000..53dce118 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/coppa_welcome_inactive.tpl @@ -0,0 +1,60 @@ +Subject: [Punjabi] {SITENAME} ਅਖਰੇਹ ਵਲੋ ਤੋਹਨੋ ਜ਼ੀ ਆਯਾਨ ਣੋ +Charset: utf-8 + +{WELCOME_MSG} + +COPPA ACT ਦੀ ਸੰਮਤੀ ਨਾਲ ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਅਜੇ ਤਕ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਗਿਆ। ਬੇਨਤੀ ਹੈ ਕੀ ਇਹ +ਸੂਚਨਾ ਆਪਣੇ ਕੋਲ ਕਾਗ਼ਜ਼ ਉੱਤੇ ਛਾਪੀ ਜਾਵੇ ਅਤੇ ਆਪਣੇ ਮਾਂ-ਪਿਉ ਜਾਂ ਸਰਪà©à¨°à¨¸à¨¤à¨¾à¨‚ ਦੇ ਉਹਦੇ ਉੱਤੇ, ਤਾਰੀਖ਼ +ਸਮੇਤ, ਦਸਤਖ਼ਤ ਕਰਵਾਠਜਾਣ। ਇਸ ਤੋਂ ਬਾਦ, ਇਹ ਈ-ਮੇਲ ਹੇਠ ਦਿੱਤੇ ਪਤੇ ਤੇ ਫੈਕਸ ਕੀਤੀ ਜਾਵੇ: + +{FAX_INFO} + +ਜਾਂ ਇਸ ਪਤੇ ਤੇ ਈ-ਮੇਲ ਦੇ ਰਾਹੀਂ ਭੇਜੀ ਜਾਵੇ: + +{MAIL_INFO} + +------------------------------ ਇੱਥੋਂ ਪਾੜੋ ------------------------------ +{SITENAME} ਵਿਚ ਭਾਗ ਲੈਣ ਦੀ ਆਗਿਆ + +ਉਪਭੋਗੀ-ਨਾਂ: {USERNAME} +ਗà©à¨ªà¨¤-ਕੋਡ: {PASSWORD} +ਈ-ਮੇਲ: {EMAIL_ADDRESS} + +ICQ ਨੰਬਰ: {ICQ} +AIM ਦਾ ਪਤਾ: {AIM} +MSN ਮੈੱਸਇਨਜੱਰ ਦਾ ਪਤਾ: {MSN} +Yahoo ਮੈੱਸਇਨਜੱਰ ਦਾ ਪਤਾ: {YIM} + +ਵੈਬ ਥਾਂ: {WEB_SITE} +ਸਥਾਨ / ਮà©à¨²à¨•: {FROM} + +ਕਾਰ ਵਿਹਾਰ: {OCC} +ਦਿਲਚਸਪੀਆਂ: {INTERESTS} + +ਮੇਰੇ ਬੱਚੇ ਵੱਲੋਂ ਭੇਜੀ ਗਈ ਸਾਰੀ ਜਾਣਕਾਰੀ ਮੈਂ ਪੜà©à¨¹ ਲਈ ਹੈ, ਅਤੇ ਇਸ ਦਸਤਾਵੇਜ਼ ਦੇ ਨਾਲ {SITENAME} ਨੂੰ +ਇਹ ਜਾਣਕਾਰੀ ਆਪਣੇ ਕੋਲ ਰਖਵਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਦਿੱਤੀ ਹੈ। +ਮੈਂ ਸਮà¨à¨¦à¨¾/ਸਮà¨à¨¦à©€ ਹਾਂ ਕੀ ਇਹ ਸਾਰੀ ਜਾਣਕਾਰੀ ਗà©à¨ªà¨¤-ਕੋਡ ਵਰਤਣ ਨਾਲ ਬਦਲੀ ਜਾ ਸਕਦੀ ਹੈ। + +ਮੈਂ ਸਮà¨à¨¦à¨¾/ਸਮà¨à¨¦à©€ ਹਾਂ ਕੀ ਮੇਰੇ ਕਹਿਣ ਤੇ, ਅਤੇ ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਇਹ ਸਾਰੀ +ਸੂਚਨਾ {SITENAME} ਤੋਂ ਰੱਦ ਹੋ ਸਕਦੀ ਹੈ। + +ਮਾਂ-ਪਿਉ ਜਾਂ ਸਰਪà©à¨°à¨¸à¨¤ + +(ਆਪਣੇ ਨਾਂ ਇਥੇ ਛਾਪੋ): _____________________ + +(ਦਸਤਖ਼ਤ ਕਰੋ): __________________________ + +ਤਾਰੀਖ਼: _________________________________ + +------------------------------ ਇੱਥੋਂ ਪਾੜੋ ------------------------------ + +ਉੱਤੇ ਦਿੱਤਾ ਫਾਰਮ, ਫੈਕਸ ਜਾਂ ਈ-ਮੇਲ ਦà©à¨†à¨°à¨¾ ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨੂੰ ਪà©à©±à¨œà¨£ ਤੋਂ ਬਾਦ, ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ। + +ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸà©à¨šà©‡à¨¤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕੀ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਯਾਦ ਰੱਖਿਓ। ਇਹ ਕੋਡ ਵਿਕਰਿਤਕ ਰੂਪ ਵਿਚ +ਸਾਡੇ ਕੰਪਿਊਟਰੀ-ਅੰਕੜਿਆਂ ਦੇ ਅੰਦਰ ਦਰਜ਼ ਹੈ, ਅਤੇ ਇਸ ਕਰਕੇ ਅਸੀਂ ਉਹ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਨਹੀਂ ਨਿਕਾਲ ਸਕਦੇ। +ਪਰ ਫੇਰ ਵੀ, ਜੇ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਭà©à©±à¨² ਜਾਂਦੇ ਹੋ ਤਾਂ à¨à¨¸à©‡ ਤਰਾਂ ਹੀ, ਇਕ ਨਵਾਂ ਕੋਡ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ +ਬਣਾਇਆ ਜਾਵੇਗਾ। + +ਸਾਡੇ ਅਖਾੜੇ ਵਿਚ ਭਾਗ ਲੈਣ ਲਈ, ਅਤੇ ਇਕ ਮੈਂਬਰ ਵਾਂਗ ਦਰਜ਼ ਹੋਣ ਲਈ, ਅਸੀਂ ਤà©à¨¹à¨¾à¨¡à©‡ ਧੰਨਵਾਦੀ ਹਾਂ। + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/group_added.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/group_added.tpl new file mode 100644 index 00000000..fa1aace4 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/group_added.tpl @@ -0,0 +1,12 @@ +Subject: [Punjabi] ਤà©à¨¸à©€à¨‚ ਇਸ ਉਪਭੋਗੀ-ਲੜੀ ਵਿਚ ਸ਼ਾਮਿਲ ਹੋ +Charset: utf-8 + +ਵਧਾਈ ਹੋਵੇ, + +ਤà©à¨¸à©€à¨‚ {SITENAME} ਦੀ "{GROUP_NAME}" ਲੜੀ ਵਿਚ ਸ਼ਾਮਿਲ ਹੋ। +ਇਹ ਕੰਮ ਲੜੀ-ਪà©à¨°à¨¬à©°à¨§à¨• ਜਾਂ ਅਖਾੜਾ-ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਦà©à¨†à¨°à¨¾ ਕੀਤਾ ਗਿਆ ਹੈ। ਵਧੇਰੀ ਸੂਚਨਾ ਲਈ ਉਹਨਾਂ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ। + +ਤà©à¨¸à©€à¨‚ ਆਪਣੀਆਂ ਲੜੀਆਂ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ ਇਥੇ ਜਾ ਸਕਦੇ ਹੋ: +{U_GROUPCP} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/group_approved.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/group_approved.tpl new file mode 100644 index 00000000..a495f0f2 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/group_approved.tpl @@ -0,0 +1,11 @@ +Subject: [Punjabi] ਤà©à¨¹à¨¾à¨¡à©€ ਬੇਨਤੀ ਸੰਪੂਰਨ ਹੋਈ +Charset: utf-8 + +ਵਧਾਈ ਹੋਵੇ, + +{SITENAME} ਦੀ "{GROUP_NAME}" ਲੜੀ ਵਿਚ ਸ਼ਾਮਿਲ ਹੋਣ ਲਈ ਤà©à¨¹à¨¾à¨¡à©€ ਬੇਨਤੀ ਸਵੀਕਾਰ ਕੀਤੀ ਗਈ ਹੈ। + +ਆਪਣੀਆਂ ਲੜੀਆਂ ਬਾਰੇ ਸੂਚਨਾ ਲਈ, ਹੇਠਲੇ ਲਿੰਕ ਤੇ ਕੜਿੱਕ ਕਰੋ ਜੀ : +{U_GROUPCP} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/group_request.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/group_request.tpl new file mode 100644 index 00000000..4174eeba --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/group_request.tpl @@ -0,0 +1,10 @@ +Subject: [Punjabi] ਤà©à¨¹à¨¾à¨¡à©€ ਲੜੀ ਵਿਚ ਸ਼ਾਮਿਲ ਹੋਣ ਲਈ ਬੇਨਤੀ +Charset: utf-8 + +ਮਾਨਯੋਗ {GROUP_MODERATOR} ਜੀ, + +ਇਕ ਉਪਭੋਗੀ ਨੇ {SITENAME} ਵਿਚ ਤà©à¨¹à¨¾à¨¡à©‡ ਦà©à¨†à¨°à¨¾ ਸੰਚਾਲਿਤ ਲੜੀ ਵਿਚ ਸ਼ਾਮਿਲ ਹੋਣ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਹੈ। +ਇਸ ਬੇਨਤੀ ਨੂੰ ਪà©à¨°à¨µà¨¾à¨¨à¨—à©€ ਦੇਣ ਲਈ, ਜਾਂ ਨਾਮਨਜ਼ੂਰ ਕਰਨ ਲਈ, ਇਸ ਲਿੰਕ ਉੱਤੇ ਕੜਿੱਕ ਕਰੋ ਜੀ: +{U_GROUPCP} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/index.htm b/includes/shared/phpbb2/language/lang_punjabi/email/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/privmsg_notify.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/privmsg_notify.tpl new file mode 100644 index 00000000..5cc4d6c4 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/privmsg_notify.tpl @@ -0,0 +1,11 @@ +Subject: [Punjabi] ਨਵਾਂ ਨਿਜੀ ਸਨੇਹਾ ਆਇਆ ਹੈ +Charset: utf-8 + +ਮਾਨਯੋਗ {USERNAME} ਜੀ, + +"{SITENAME}" ਵਿਚ ਤà©à¨¹à¨¾à¨¡à©‡ ਨਾਂ ਇਕ ਨਵਾਂ ਨਿਜੀ ਸਨੇਹਾ ਆਇਆ ਹੈ। ਅਤੇ ਤà©à¨¹à¨¾à¨¡à©€ ਮੰਗ ਸੀ ਕਿ ਅਜਿਹੇ ਸà©à¨¨à©‡à¨¹à¨¿à¨†à¨‚ ਦੇ ਆਉਣ ਤੇ, ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸੂਚਨਾ ਦਿੱਤੀ ਜਾਵੇ। ਇਸ ਸà©à¨¨à©‡à¨¹à©‡ ਨੂੰ ਪੜà©à¨¹à¨¨ ਲਈ, ਹੇਠ ਦਿੱਤੇ ਲਿੰਕ ਤੇ ਕੜਿੱਕ ਕਰੋ ਜੀ: +{U_INBOX} + +ਇਹ ਯਾਦ ਰੱਖਣਾ ਕਿ ਤà©à¨¸à©€à¨‚ ਹਮੇਸ਼ਾ ਆਪਣੀ ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਵਿਚ ਜਾ ਕੇ, ਆਪਣਾ ਚੌਗਿਰਦਾ ਸਵਾਰ ਸਕਦੇ ਹੋ। ਅਤੇ ਉਹਦੇ ਨਾਲ ਆਪ ਫ਼ੈਸਲਾ ਕਰ ਸਕਦੇ ਹੋ, ਕੀ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਨਵੇਂ ਸà©à¨¨à©‡à¨¹à¨¿à¨†à¨‚ ਬਾਰੇ ਸੂਚਨਾ ਦਿੱਤੀ ਜਾਵੇ ਜਾਂ ਨਹੀਂ। + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/profile_send_email.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/profile_send_email.tpl new file mode 100644 index 00000000..b499d7b9 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/profile_send_email.tpl @@ -0,0 +1,14 @@ +Charset: utf-8 + +ਮਾਨਯੋਗ {TO_USERNAME} ਜੀ, + +ਹੇਠ ਲਿਖੀ ਈ-ਮੇਲ "{SITENAME}" ਦੇ ਇਕ ਉਪਭੋਗੀ, ਨਾਂ "{FROM_USERNAME}" ਵਲੋਂ ਭੇਜੀ ਗਈ ਹੈ। +ਜੇ ਇਹ ਸਨੇਹਾ ਰੱਦੀ ਹੈ, ਜਾਂ ਬਦਜ਼ਬਾਨੀ ਭਾਸ਼ਾ ਵਿੱਚ ਲਿਖਿਆ ਗਿਆ ਹੈ, ਤਾਂ ਤà©à¨¸à©€à¨‚ ਕà©à¨°à¨¿à¨ªà¨¾ ਕਰਕੇ ਇਸ ਅਖਾੜੇ ਦੇ ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨੂੰ ਹੇਠ ਦਿੱਤੇ ਪਤੇ ਤੇ ਸੂਚਨਾ ਦੇਵੋ: +{BOARD_EMAIL} + +ਜਾਣਕਾਰੀ ਲਈ ਪà©à¨°à©€ ਈ-ਮੇਲ, ਸਿਰਲੇਖ ਸਮੇਤ ਭੇਜੀ ਜਾਵੇ। +ਇਹ ਵੀ ਯਾਦ ਰਹੇ ਕੀ ਇਸ ਈ-ਮੇਲ ਦਾ ਜਵਾਬੀ ਪਤਾ "{FROM_USERNAME}" ਦੇ ਨਾਂ ਤੇ ਦਰਜ ਹੈ। + +ਹੇਠ ਲਿਖੀ ਸੂਚਨਾ ਤਹਾਨੂੰ ਭੇਜੀ ਗਈ ਹੈ: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +{MESSAGE} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/topic_notify.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/topic_notify.tpl new file mode 100644 index 00000000..145aff0a --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/topic_notify.tpl @@ -0,0 +1,14 @@ +Subject: [Punjabi] ਵਿਸ਼ਾ ਜਵਾਬੀ ਸੂਚਨਾ - {TOPIC_TITLE} +Charset: utf-8 + +ਮਾਨਯੋਗ {USERNAME} ਜੀ, + +ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਹ ਈ-ਮੇਲ ਇਸ ਕਰਕੇ ਭੇਜੀ ਗਈ ਹੈ ਕਿਉਂਕਿ ਤà©à¨¸à©€à¨‚ {SITENAME} ਵਿਚਲੇ "{TOPIC_TITLE}" ਵਿਸ਼ੇ ਨੂੰ ਜਾਂਚ ਰਹੇ ਹੋ। ਤà©à¨¹à¨¾à¨¡à©‡ ਪਿਛਲੀ ਵਾਰੀ ਆਉਣ ਤੋਂ ਬਾਦ, ਇਸ ਵਿਸ਼ੇ ਤੇ ਇਕ ਨਵਾਂ ਜਵਾਬ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਜੇ ਤà©à¨¸à©€à¨‚ ਇਹ ਵਿਸ਼ਾ ਫੇਰ ਨਹੀਂ ਖੋਲà©à¨¹à¨¦à©‡ ਤਾਂ ਫਿਰ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਸ ਬਾਰੇ ਹੋਰ ਨਵਿਆਂ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜਿਆ ਜਾਣਗੀਆਂ। + +{U_TOPIC} + +ਜੇ ਤà©à¨¸à©€à¨‚ ਇਸ ਵਿਸ਼ੇ ਨੂੰ ਹà©à¨£ ਤੋਂ ਬਾਦ ਨਹੀਂ ਜਾਂਚਣਾ ਚਾਹà©à©°à¨¦à©‡ ਤਾਂ "ਵਿਸ਼ਾ ਜਾਂਚਣਾ ਬੰਦ ਕਰੋ" ਵਾਲੇ ਲਿੰਕ ਤੇ ਕੜਿੱਕ ਕਰੋ। ਇਹ ਲਿੰਕ ਉਤਲੇ ਵਿਸ਼ੇ ਦੇ ਅਖੀਰ ਵਿਚ ਮਿਲੇਗਾ। ਜਾਂ ਤà©à¨¸à©€à¨‚ ਹੇਠ ਦਿੱਤੇ ਲਿੰਕ ਤੇ ਵੀ ਕੜਿੱਕ ਕਰ ਸਕਦੇ ਹੋ: + +{U_STOP_WATCHING_TOPIC} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/user_activate.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/user_activate.tpl new file mode 100644 index 00000000..428bd837 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/user_activate.tpl @@ -0,0 +1,10 @@ +Subject: [Punjabi] ਆਪਣਾ ਖਾਤਾ ਚਾਲੂ ਕਰੋ +Charset: utf-8 + +ਮਾਨਯੋਗ "{USERNAME}" ਜੀ, + +ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ, "{SITENAME}" ਦੀ ਵੈਬ ਥਾਂ ਤੋਂ ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਬਦਲਨ ਕਾਰਨ ਸ਼ਾਇਦ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਖਾਤੇ ਨੂੰ ਫੇਰ ਤੋਂ ਚਾਲੂ ਕਰਨ ਲਈ ਹੇਠ ਦਿੱਤੇ ਲਿੰਕ ਤੇ ਕੜਿੱਕ ਕਰੋ ਜੀ : + +{U_ACTIVATE} + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/user_activate_passwd.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/user_activate_passwd.tpl new file mode 100644 index 00000000..6f26d3d7 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/user_activate_passwd.tpl @@ -0,0 +1,18 @@ +Subject: [Punjabi] ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਚਾਲੂ ਕਰਨ ਬਾਰੇ ਸੂਚਨਾ +Charset: utf-8 + +ਮਾਨਯੋਗ "{USERNAME}" ਜੀ, + +ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਹ ਈ-ਮੇਲ ਇਸ ਕਰਕੇ ਭੇਜੀ ਗਈ ਹੈ ਕਿਉਂਕਿ ਤà©à¨¸à©€à¨‚ (ਜਾਂ ਤà©à¨¹à¨¾à¨¡à©‡ ਨਾਂ ਤੇ ਕਿਸੇ ਹੋਰ ਨੇ) {SITENAME} ਵਿਚ ਇਕ ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਭੇਜਣ ਦੀ ਮੰਗ ਕੀਤੀ ਸੀ। ਜੇ ਤà©à¨¸à©€à¨‚ ਇਸ ਈ-ਮੇਲ ਲਈ ਬੇਨਤੀ ਨਹੀਂ ਸੀ ਕੀਤੀ, ਤਾਂ ਫਿਰ ਇਹਨੂੰ ਰੱਦੀ ਕਰ ਸਕਦੇ ਹੋ। ਜੇ ਇਹ ਸੂਚਨਾ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਦà©à¨¬à¨¾à¨°à¨¾ ਆਵੇ ਤਾਂ ਕà©à¨°à¨¿à¨ªà¨¾ ਕਰਕੇ ਅਖਾੜਾ-ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨੂੰ ਸà©à¨šà©‡à¨¤ ਕਰੋ। + +ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਵਰਤਣ ਲਈ, ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਹ ਚਾਲੂ ਕਰਨਾ ਪà¨à¨—ਾ। ਇਹ ਕਰਨ ਲਈ, ਹੇਠ ਦਿੱਤੇ ਲਿੰਕ ਤੇ ਕੜਿੱਕ ਕਰੋ। + +{U_ACTIVATE} + +ਜੇ ਤà©à¨¸à©€à¨‚ ਇਹ ਕਰਦੇ ਸਫ਼ਲ ਹà©à©°à¨¦à©‡ ਹੋ, ਤਾਂ ਹੇਠ ਦਿੱਤੇ ਗà©à¨ªà¨¤-ਕੋਡ ਦਾ ਇਸਤੇਮਾਲ ਕਰੋ: + +ਗà©à¨ªà¨¤-ਕੋਡ: {PASSWORD} + +ਇਹ ਕੋਡ ਤà©à¨¸à©€à¨‚ ਆਪ ਵੀ ਬਦਲ ਸਕਦੇ ਹੋ। ਇਹ ਕਰਨ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਵਾਲੇ ਪੰਨੇ ਵਿਚ ਜਾਣਾ ਪà¨à¨—ਾ। ਇਸ ਕੰਮ ਵਿਚ ਕੋਈ ਮà©à¨¶à¨•à¨² ਆਵੇ ਤਾਂ ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨਾਲ ਸੰਪਰਕ ਕਰੋ। + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/user_welcome.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/user_welcome.tpl new file mode 100644 index 00000000..c21049c0 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/user_welcome.tpl @@ -0,0 +1,17 @@ +Subject: [Punjabi] {SITENAME} ਆਖਰੇ ਵਲੋ ਤੋਹਨੋ ਜ਼ੀ ਆਯਾਨ ਣੋ +Charset: utf-8 + +{WELCOME_MSG} + +ਕà©à¨°à¨¿à¨ªà¨¾ ਕਰਕੇ ਇਸ ਈ-ਮੇਲ ਨੂੰ ਆਉਣ ਵਾਲੇ ਸਮੇਂ ਲਈ ਦਰਜ਼ ਕੀਤਾ ਜਾਵੇ। ਤà©à¨¹à¨¾à¨¡à©‡ ਖਾਤੇ ਬਾਰੇ ਜਾਣਕਾਰੀ: + +---------------------------- +ਉਪਭੋਗੀ-ਨਾਂ: {USERNAME} +ਗà©à¨ªà¨¤-ਕੋਡ: {PASSWORD} +---------------------------- + +ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸà©à¨šà©‡à¨¤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕੀ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਯਾਦ ਰੱਖਿਓ। ਇਹ ਕੋਡ ਵਿਕਰਿਤਕ ਰੂਪ ਵਿਚ ਸਾਡੇ ਕੰਪਿਊਟਰੀ-ਅੰਕੜਿਆਂ ਦੇ ਅੰਦਰ ਦਰਜ਼ ਹੈ, ਅਤੇ ਇਸ ਕਰਕੇ ਅਸੀਂ ਉਹ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਨਹੀਂ ਨਿਕਾਲ ਸਕਦੇ। ਪਰ ਫੇਰ ਵੀ, ਜੇ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਭà©à©±à¨² ਜਾਂਦੇ ਹੋ ਤਾਂ à¨à¨¸à©‡ ਤਰਾਂ ਹੀ, ਇਕ ਨਵਾਂ ਕੋਡ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਬਣਾਇਆ ਜਾਵੇਗਾ। + +ਸਾਡੇ ਅਖਾੜੇ ਵਿਚ ਭਾਗ ਲੈਣ ਲਈ, ਅਤੇ ਇਕ ਮੈਂਬਰ ਵਾਂਗ ਦਰਜ਼ ਹੋਣ ਲਈ, ਅਸੀਂ ਤà©à¨¹à¨¾à¨¡à©‡ ਧੰਨਵਾਦੀ ਹਾਂ। + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/email/user_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_punjabi/email/user_welcome_inactive.tpl new file mode 100644 index 00000000..5c77207f --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/email/user_welcome_inactive.tpl @@ -0,0 +1,21 @@ +Subject: [Punjabi] {SITENAME} ਅਖਰੇਹ ਵਲੋ ਤੋਹà©à¨…ਨੋ ਜ਼ੀ ਆਯਾਨ ਣੋ +Charset: utf-8 + +{WELCOME_MSG} + +ਕà©à¨°à¨¿à¨ªà¨¾ ਕਰਕੇ ਇਸ ਈ-ਮੇਲ ਨੂੰ ਆਉਣ ਵਾਲੇ ਸਮੇਂ ਲਈ ਦਰਜ਼ ਕੀਤਾ ਜਾਵੇ। ਤà©à¨¹à¨¾à¨¡à©‡ ਖਾਤੇ ਬਾਰੇ ਜਾਣਕਾਰੀ: + +---------------------------- +ਉਪਭੋਗੀ-ਨਾਂ: {USERNAME} +ਗà©à¨ªà¨¤-ਕੋਡ: {PASSWORD} +---------------------------- + +ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਅਜੇ ਤਕ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ। ਹੇਠ ਦਿੱਤੇ ਲਿੰਕ ਨੂੰ ਖੋਲà©à¨¹à¨£ ਤੋਂ ਬਿਨਾ, ਤà©à¨¸à©€à¨‚ ਇਸ ਖਾਤੇ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਸਕਦੇ। + +{U_ACTIVATE} + +ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸà©à¨šà©‡à¨¤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕੀ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਯਾਦ ਰੱਖਿਓ। ਇਹ ਕੋਡ ਵਿਕਰਿਤਕ ਰੂਪ ਵਿਚ ਸਾਡੇ ਕੰਪਿਊਟਰੀ-ਅੰਕੜਿਆਂ ਦੇ ਅੰਦਰ ਦਰਜ਼ ਹੈ, ਅਤੇ ਇਸ ਕਰਕੇ ਅਸੀਂ ਉਹ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਨਹੀਂ ਨਿਕਾਲ ਸਕਦੇ। ਪਰ ਫੇਰ ਵੀ, ਜੇ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਭà©à©±à¨² ਜਾਂਦੇ ਹੋ ਤਾਂ à¨à¨¸à©‡ ਤਰਾਂ ਹੀ, ਇਕ ਨਵਾਂ ਕੋਡ ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਬਣਾਇਆ ਜਾਵੇਗਾ। + +ਸਾਡੇ ਅਖਾੜੇ ਵਿਚ ਭਾਗ ਲੈਣ ਲਈ, ਅਤੇ ਇਕ ਮੈਂਬਰ ਵਾਂਗ ਦਰਜ਼ ਹੋਣ ਲਈ, ਅਸੀਂ ਤà©à¨¹à¨¾à¨¡à©‡ ਧੰਨਵਾਦੀ ਹਾਂ। + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/index.htm b/includes/shared/phpbb2/language/lang_punjabi/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb2/language/lang_punjabi/lang_admin.php b/includes/shared/phpbb2/language/lang_punjabi/lang_admin.php new file mode 100644 index 00000000..39d7049b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/lang_admin.php @@ -0,0 +1,782 @@ +Admin Index link in the left pane. To return to the index of your board, click the phpBB logo also in the left pane. The other links on the left hand side of this screen will allow you to control every aspect of your forum experience. Each screen will have instructions on how to use the tools.'; +//*--------------------------------- // +//*-- extr +//*-- $lang['Main_index'] = 'Forum Index'; +$lang['Main_index'] = 'ਅਖਾੜੇ ਦੀ ਵਿਸ਼ਾ-ਸੂਚੀ'; +//*--------------------------------- // +$lang['Forum_stats'] = 'ਅਖਾੜੇ ਦੇ ਅੰਕੜੋ'; +$lang['Admin_Index'] = 'ਅਖਾੜੇ-ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਦੀ ਵਿਸ਼ਾ-ਸੂਚੀ'; +$lang['Preview_forum'] = 'ਅਖਾੜੇ ਦਾ ਪੂਰਵ ਵੇਖੋ'; + +$lang['Click_return_admin_index'] = 'ਅਖਾੜੇ-ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਦੇ ਵਿਸ਼ਾ-ਸੂਚੀ ਨੂੰ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਦੱਬੋ'; + +$lang['Statistic'] = 'ਅੰਕੜੋ'; +$lang['Value'] = 'ਖ਼ਾਸੀਅਤ'; +$lang['Number_posts'] = 'ਕà©à©±à¨² ਲੇਖ'; +$lang['Posts_per_day'] = 'ਇੱਕ ਦਿਨ ਦੇ ਲੇਖ'; +$lang['Number_topics'] = 'ਕà©à©±à¨² ਵਿਸ਼ੇ'; +$lang['Topics_per_day'] = 'ਇੱਕ ਦਿਨ ਦੇ ਵਿਸ਼ੇ'; +$lang['Number_users'] = 'ਕà©à©±à¨² ਉਪਭੋਗੀ'; +$lang['Users_per_day'] = 'ਉਪਭੋਗੀ ਇੱਕ ਦਿਨ ਵਿੱਚ'; +$lang['Board_started'] = 'ਬੋਰਡ ਸ਼à©à¨°à©‚ ਕà¨à¨¤'; +$lang['Avatar_dir_size'] = 'Avatar directory size'; +$lang['Database_size'] = 'Database size'; +$lang['Gzip_compression'] ='Gzip compression'; +$lang['Not_available'] = 'ਪà©à¨°à¨¾à¨ªà¨¤ ਨਹੀਂ ਹੈ'; + +$lang['ON'] = 'ਚਾਲੋ ਕਰੋ'; // This is for GZip compression +$lang['OFF'] = 'ਬੰਦ ਕਰੋ'; + + +// +// DB Utils +// +$lang['Database_Utilities'] = 'Database Utilities'; + +$lang['Restore'] = 'ਤੰਦਰà©à¨¸à¨¤ ਕਰੋ'; +$lang['Backup'] = 'ਬੈਕਅਪ'; +$lang['Restore_explain'] = 'This will perform a full restore of all phpBB tables from a saved file. If your server supports it, you may upload a gzip-compressed text file and it will automatically be decompressed. WARNING: This will overwrite any existing data. The restore may take a long time to process, so please do not move from this page until it is complete.'; +$lang['Backup_explain'] = 'Here you can back up all your phpBB-related data. If you have any additional custom tables in the same database with phpBB that you would like to back up as well, please enter their names, separated by commas, in the Additional Tables textbox below. If your server supports it you may also gzip-compress the file to reduce its size before download.'; + +$lang['Backup_options'] = 'Backup options'; +$lang['Start_backup'] = 'ਬੈਕਅਪ ਸà©à¨°à©‚ ਕਰੌ'; +$lang['Full_backup'] = 'ਪੂਰੀ ਬੈਕਅਪ'; +$lang['Structure_backup'] = 'Structure-Only backup'; +$lang['Data_backup'] = 'Data only backup'; +$lang['Additional_tables'] = 'ਇਲਾਵਾ tables'; +$lang['Gzip_compress'] = 'Gzip compress file'; +$lang['Select_file'] = 'ਫਾਇਲ ਚà©à¨£à©‹'; +$lang['Start_Restore'] = 'ਪà©à¨¨à¨° ਨਿਰਮਾਣ ਸà©à¨°à©‚ ਕਰੋ'; + +$lang['Restore_success'] = 'The Database has been successfully restored.

Your board should be back to the state it was when the backup was made.'; +$lang['Backup_download'] = 'ਕਿਰਪਾ ਕਰਕੇ ਇੰਤਜਾਰ ਕਰੋ। ਆਪ ਜੀ ਦਾ download ਸà©à¨°à©‚ ਹੌਣ ਵਾਲਾ ਹੈ।'; +$lang['Backups_not_supported'] = 'Sorry, but database backups are not currently supported for your database system.'; + +$lang['Restore_Error_uploading'] = 'Error in uploading the backup file'; +$lang['Restore_Error_filename'] = 'Filename problem; please try an alternative file'; +$lang['Restore_Error_decompress'] = 'Cannot decompress a gzip file; please upload a plain text version'; +$lang['Restore_Error_no_file'] = 'ਕੋਈ ਫਾਇਲ ਨਹੀ ਲੋਡ ਹੋਇ'; + + +// +// Auth pages +// +$lang['Select_a_User'] = 'ਉਪਭੋਗੀ ਚà©à¨£à©‹'; +$lang['Select_a_Group'] = 'ਗਰà©à©±à¨ª ਚà©à¨£à©‹'; +$lang['Select_a_Forum'] = 'ਅਖਾੜਾ ਚà©à¨£à©‹'; +$lang['Auth_Control_User'] = 'ਉਪਭੋਗੀ ਪà©à¨°à¨¶à¨¾à¨¸à¨£ ਨਿਯੰਤà©à¨°à¨£'; +$lang['Auth_Control_Group'] = 'ਗਰà©à©±à¨ª ਪà©à¨°à¨¶à¨¾à¨¸à¨£ ਨਿਯੰਤà©à¨°à¨£'; +$lang['Auth_Control_Forum'] = 'ਅਖਾੜਾ ਪà©à¨°à¨¶à¨¾à¨¸à¨£ ਨਿਯੰਤà©à¨°à¨£'; +$lang['Look_up_User'] = 'ਉਪਭੋਗੀ ਨੂੰ ਲੱਭੋ'; +$lang['Look_up_Group'] = 'ਗਰà©à©±à¨ª ਨੂੰ ਲੱਭੋ'; +$lang['Look_up_Forum'] = 'ਅਖਾੜੇ ਨੂੰ ਲੱਭੋ'; + +$lang['Group_auth_explain'] = 'Here you can alter the permissions and moderator status assigned to each user group. Do not forget when changing group permissions that individual user permissions may still allow the user entry to forums, etc. You will be warned if this is the case.'; +$lang['User_auth_explain'] = 'Here you can alter the permissions and moderator status assigned to each individual user. Do not forget when changing user permissions that group permissions may still allow the user entry to forums, etc. You will be warned if this is the case.'; +$lang['Forum_auth_explain'] = 'Here you can alter the authorisation levels of each forum. You will have both a simple and advanced method for doing this, where advanced offers greater control of each forum operation. Remember that changing the permission level of forums will affect which users can carry out the various operations within them.'; + +$lang['Simple_mode'] = 'ਸਾਦਾ ਰੰਗ ਰੂਪ'; +$lang['Advanced_mode'] = 'ਤਰੱਕੀ ਵਾਲਾ ਰੰਗ ਰੂਪ'; +$lang['Moderator_status'] = 'ਸੰਚਾਲਕ ਦਾ ਦਰਜਾ'; + +$lang['Allowed_Access'] = 'ਪਹà©à©°à¨š ਦੀ ਆਗਿਆ'; +$lang['Disallowed_Access'] = 'ਪਹà©à©°à¨š ਦੀ ਨਹੀ ਆਗਿਆ'; +$lang['Is_Moderator'] = 'ਸੰਚਾਲਕ ਹੈ'; +$lang['Not_Moderator'] = 'ਸੰਚਾਲਕ ਨਹੀਂ ਹੈ'; + +$lang['Conflict_warning'] = 'Authorisation Conflict Warning'; +$lang['Conflict_access_userauth'] = 'This user still has access rights to this forum via group membership. You may want to alter the group permissions or remove this user the group to fully prevent them having access rights. The groups granting rights (and the forums involved) are noted below.'; +$lang['Conflict_mod_userauth'] = 'This user still has moderator rights to this forum via group membership. You may want to alter the group permissions or remove this user the group to fully prevent them having moderator rights. The groups granting rights (and the forums involved) are noted below.'; + +$lang['Conflict_access_groupauth'] = 'The following user (or users) still have access rights to this forum via their user permission settings. You may want to alter the user permissions to fully prevent them having access rights. The users granted rights (and the forums involved) are noted below.'; +$lang['Conflict_mod_groupauth'] = 'The following user (or users) still have moderator rights to this forum via their user permissions settings. You may want to alter the user permissions to fully prevent them having moderator rights. The users granted rights (and the forums involved) are noted below.'; + +$lang['Public'] = 'ਪà©à¨°à¨šà¨²à¨¿à¨¤'; +$lang['Private'] = 'ਨਿੱਜੀ'; +$lang['Registered'] = 'ਦਰਜ ਹੋà¨'; +$lang['Administrators'] = 'ਪà©à¨°à¨¬à©°à¨§à¨•'; +$lang['Hidden'] = 'ਲà©à¨•à¨¿à¨†'; + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! +$lang['Forum_ALL'] = 'ਸਾਰੇ'; +$lang['Forum_REG'] = 'REG'; +$lang['Forum_PRIVATE'] = 'ਨਿੱਜੀ'; +$lang['Forum_MOD'] = 'MOD'; +$lang['Forum_ADMIN'] = 'ਪà©à¨°à¨¬à©°à¨§à¨•'; + +$lang['View'] = 'ਵੇਖੋ'; +$lang['Read'] = 'ਪੜਨ'; +//*--------------------------------- // +//*-- extr +//*-- $lang['Post'] = 'Post'; +$lang['Post'] = 'ਲੇਖ'; +//*--------------------------------- // +$lang['Reply'] = 'ਜਵਾਬ'; +$lang['Edit'] = 'ਬਦਲੋ'; +$lang['Delete'] = 'ਰੱਦ'; +$lang['Sticky'] = 'ਚਿਪਕਵਾਂ'; +$lang['Announce'] = 'à¨à¨²à¨¾à¨¨ ਕਰੋ'; +$lang['Vote'] = 'ਵੋਟ'; +$lang['Pollcreate'] = 'ਚੋਣਾ ਸà©à¨°à©‚ ਕਰੌ'; + +//*--------------------------------- // +//*-- extr +//*-- $lang['Permissions'] = 'Permissions'; +$lang['Permissions'] = 'ਆਗਿਆਵਾ'; +//*--------------------------------- // +$lang['Simple_Permission'] = 'ਸਧਾਰਣ ਆਗਿਆਵਾ'; + +$lang['User_Level'] = 'User Level'; +$lang['Auth_User'] = 'ਉਪਭੋਗੀ'; +$lang['Auth_Admin'] = 'ਪà©à¨°à¨¬à©°à¨§à¨•'; +$lang['Group_memberships'] = 'ਉਪਭੋਗੀ ਦੇ ਗਰà©à©±à¨ª ਦੀ ਮੈਂਬਰਸਿਪ'; +$lang['Usergroup_members'] = 'ਇਸ ਵਰਗ ਵਿੱਚ ਇਹ ਮੈਂਬਰ ਹਨ'; + +$lang['Forum_auth_updated'] = 'Forum permissions updated'; +$lang['User_auth_updated'] = 'User permissions updated'; +$lang['Group_auth_updated'] = 'Group permissions updated'; + +$lang['Auth_updated'] = 'Permissions have been updated'; +$lang['Click_return_userauth'] = 'ਉਪਭੋਗੀ ਆਗਿਆਵਾ ਨੂੰ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਦੱਬੋ'; +$lang['Click_return_groupauth'] = 'ਗਰà©à©±à¨ª ਆਗਿਆਵਾ ਨੂੰ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; +$lang['Click_return_forumauth'] = 'ਅਖਾੜੇ ਦੀਆ ਆਗਿਆਵਾ ਨੂੰ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਦੱਬੋ'; + + +// +// Banning +// +$lang['Ban_control'] = 'ਪਾਬੰਦੀ ਨਿਯੰਤà©à¨°à¨£'; +$lang['Ban_explain'] = 'Here you can control the banning of users. You can achieve this by banning either or both of a specific user or an individual or range of IP addresses or hostnames. These methods prevent a user from even reaching the index page of your board. To prevent a user from registering under a different username you can also specify a banned email address. Please note that banning an email address alone will not prevent that user from being able to log on or post to your board. You should use one of the first two methods to achieve this.'; +$lang['Ban_explain_warn'] = 'Please note that entering a range of IP addresses results in all the addresses between the start and end being added to the banlist. Attempts will be made to minimise the number of addresses added to the database by introducing wildcards automatically where appropriate. If you really must enter a range, try to keep it small or better yet state specific addresses.'; + +$lang['Select_username'] = 'ਉਪਭੋਗੀ-ਨਾਂ ਚà©à¨£à©‹'; +$lang['Select_ip'] = 'ਆਈ-ਪੀ (IP) ਪਤਾ ਚà©à¨£à©‹'; +$lang['Select_email'] = 'ਈ-ਮੇਲ ਪਤਾ ਚà©à¨£à©‹'; + +$lang['Ban_username'] = 'ਇੱਕ ਜਾ ਵੱਧ ਉਪਭੋਗੀ ਤੇ ਪਾਬੰਦੀ ਲਗਾਊ'; +$lang['Ban_username_explain'] = 'You can ban multiple users in one go using the appropriate combination of mouse and keyboard for your computer and browser'; + +$lang['Ban_IP'] = 'ਇੱਕ ਜਾ ਵੱਧ ਆਈ-ਪੀ (IP) ਪਤਾ ਜਾ hostnames ਨੂੰ ਪਾਬੰਦੀ ਲਗਾਊ'; +$lang['IP_hostname'] = 'ਆਈ-ਪੀ (IP) ਪਤਾ ਜਾ hostnames'; +$lang['Ban_IP_explain'] = 'To specify several different IP addresses or hostnames separate them with commas. To specify a range of IP addresses, separate the start and end with a hyphen (-); to specify a wildcard, use an asterisk (*).'; + +$lang['Ban_email'] = 'ਇੱਕ ਜਾ ਵੱਧ ਈ-ਮੇਲ ਪਤੇ ਤੋ ਪਾਬੰਦੀ ਲਗਾਊ'; +$lang['Ban_email_explain'] = 'To specify more than one email address, separate them with commas. To specify a wildcard username, use * like *@hotmail.com'; + +$lang['Unban_username'] = 'ਇੱਕ ਜਾ ਵੱਧ ਉਪਭੋਗੀ ਤੇ ਪਾਬੰਦੀ ਹਟਾਊ'; +$lang['Unban_username_explain'] = 'You can unban multiple users in one go using the appropriate combination of mouse and keyboard for your computer and browser'; + +$lang['Unban_IP'] = 'ਇੱਕ ਜਾ ਵੱਧ ਆਈ-ਪੀ (IP) ਪਤੇ ਤੋ ਪਾਬੰਦੀ ਹਟਾਊ'; +$lang['Unban_IP_explain'] = 'You can unban multiple IP addresses in one go using the appropriate combination of mouse and keyboard for your computer and browser'; + +$lang['Unban_email'] = 'ਇੱਕ ਜਾ ਵੱਧ ਈ-ਮੇਲ ਪਤੇ ਤੇ ਪਾਬੰਦੀ ਹਟਾਊ'; +$lang['Unban_email_explain'] = 'You can unban multiple email addresses in one go using the appropriate combination of mouse and keyboard for your computer and browser'; + +$lang['No_banned_users'] = 'ਕਿਸੇ ਉਪਭੋਗੀ ਤੇ ਪਾਬੰਦੀ ਨਹੀ'; +$lang['No_banned_ip'] = 'ਕਿਸੇ ਆਈ-ਪੀ (IP) ਪਤੇ ਤੇ ਪਾਬੰਦੀ ਨਹੀ'; +$lang['No_banned_email'] = 'ਕਿਸੇ ਈ-ਮੇਲ ਪਤੇ ਤੇ ਪਾਬੰਦੀ ਨਹੀ'; + +$lang['Ban_update_sucessful'] = 'The banlist has been updated successfully'; +$lang['Click_return_banadmin'] = 'ਪਾਬੰਦੀ ਨਿਯੰਤà©à¨°à¨£ ਨੂੰ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਦੱਬੋ'; + + +// +// Configuration +// +$lang['General_Config'] = 'ਆਮ ਰੂਪ-ਰੇਖਾ'; +$lang['Config_explain'] = 'The form below will allow you to customize all the general board options. For User and Forum configurations use the related links on the left hand side.'; + +$lang['Click_return_config'] = 'ਆਮ ਰੂਪ-ਰੇਖਾ ਨੂੰ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਦੱਬੋ'; + +$lang['General_settings'] = 'General Board Settings'; +$lang['Server_name'] = 'Domain Name'; +$lang['Server_name_explain'] = 'The domain name from which this board runs'; +$lang['Script_path'] = 'Script path'; +$lang['Script_path_explain'] = 'The path where phpBB2 is located relative to the domain name'; +$lang['Server_port'] = 'Server Port'; +$lang['Server_port_explain'] = 'The port your server is running on, usually 80. Only change if different'; +$lang['Site_name'] = 'ਵੈਬ-ਸਾਈਟ ਦਾ ਨਾਂ'; +$lang['Site_desc'] = 'ਵੈਬ-ਸਾਈਟ ਦੀ ਕਿਸਮ'; +$lang['Board_disable'] = 'Disable board'; +$lang['Board_disable_explain'] = 'This will make the board unavailable to users. Administrators are able to access the Administration Panel while the board is disabled.'; +$lang['Acct_activation'] = 'Enable account activation'; +$lang['Acc_None'] = 'ਕੋਈ ਨਹੀ'; // These three entries are the type of activation +$lang['Acc_User'] = 'ਉਪਭੋਗੀ'; +$lang['Acc_Admin'] = 'ਪà©à¨°à¨¬à©°à¨§à¨•'; + +$lang['Abilities_settings'] = 'User and Forum Basic Settings'; +$lang['Max_poll_options'] = 'Max number of poll options'; +$lang['Flood_Interval'] = 'Flood Interval'; +$lang['Flood_Interval_explain'] = 'Number of seconds a user must wait between posts'; +$lang['Board_email_form'] = 'User email via board'; +$lang['Board_email_form_explain'] = 'Users send email to each other via this board'; +$lang['Topics_per_page'] = 'ਇੱਕ ਪੰਨੇ ਤੇ ਵਿਸ਼ੇ'; +$lang['Posts_per_page'] = 'ਇੱਕ ਪੰਨੇ ਤੇ ਲੇਖ'; +$lang['Hot_threshold'] = 'Posts for Popular Threshold'; +$lang['Default_style'] = 'Default Style'; +$lang['Override_style'] = 'Override user style'; +$lang['Override_style_explain'] = 'Replaces users style with the default'; +$lang['Default_language'] = 'ਗੈਰਹਾਜ਼ਰੀ ਬੋਲੀ'; +$lang['Date_format'] = 'ਤਾਰੀਖ਼ ਲਿਖਣ ਦਾ ਤਰੀਕਾ '; +$lang['System_timezone'] = 'ਕੰਪਿਊਟਿੰਗ ਦੇ ਇਲਾਕੇ ਦਾ ਸਮਾਂ'; +$lang['Enable_gzip'] = 'Enable GZip Compression'; +$lang['Enable_prune'] = 'Enable Forum Pruning'; +$lang['Allow_HTML'] = 'Allow HTML'; +$lang['Allow_BBCode'] = 'Allow BBCode'; +$lang['Allowed_tags'] = 'Allowed HTML tags'; +$lang['Allowed_tags_explain'] = 'Separate tags with commas'; +$lang['Allow_smilies'] = 'Allow Smilies'; +$lang['Smilies_path'] = 'Smilies Storage Path'; +$lang['Smilies_path_explain'] = 'Path under your phpBB root dir, e.g. images/smiles'; +$lang['Allow_sig'] = 'Allow Signatures'; +$lang['Max_sig_length'] = 'Maximum signature length'; +$lang['Max_sig_length_explain'] = 'Maximum number of characters in user signatures'; +$lang['Allow_name_change'] = 'Allow Username changes'; + +$lang['Avatar_settings'] = 'Avatar Settings'; +$lang['Allow_local'] = 'Enable gallery avatars'; +$lang['Allow_remote'] = 'Enable remote avatars'; +$lang['Allow_remote_explain'] = 'Avatars linked to from another website'; +$lang['Allow_upload'] = 'Enable avatar uploading'; +$lang['Max_filesize'] = 'Maximum Avatar File Size'; +$lang['Max_filesize_explain'] = 'For uploaded avatar files'; +$lang['Max_avatar_size'] = 'Maximum Avatar Dimensions'; +$lang['Max_avatar_size_explain'] = '(Height x Width in pixels)'; +$lang['Avatar_storage_path'] = 'Avatar Storage Path'; +$lang['Avatar_storage_path_explain'] = 'Path under your phpBB root dir, e.g. images/avatars'; +$lang['Avatar_gallery_path'] = 'Avatar Gallery Path'; +$lang['Avatar_gallery_path_explain'] = 'Path under your phpBB root dir for pre-loaded images, e.g. images/avatars/gallery'; + +$lang['COPPA_settings'] = 'COPPA Settings'; +$lang['COPPA_fax'] = 'COPPA Fax Number'; +$lang['COPPA_mail'] = 'COPPA Mailing Address'; +$lang['COPPA_mail_explain'] = 'This is the mailing address to which parents will send COPPA registration forms'; + +$lang['Email_settings'] = 'Email Settings'; +$lang['Admin_email'] = 'Admin Email Address'; +$lang['Email_sig'] = 'Email Signature'; +$lang['Email_sig_explain'] = 'This text will be attached to all emails the board sends'; +$lang['Use_SMTP'] = 'Use SMTP Server for email'; +$lang['Use_SMTP_explain'] = 'Say yes if you want or have to send email via a named server instead of the local mail function'; +$lang['SMTP_server'] = 'SMTP Server Address'; +$lang['SMTP_username'] = 'SMTP Username'; +$lang['SMTP_username_explain'] = 'Only enter a username if your SMTP server requires it'; +$lang['SMTP_password'] = 'SMTP Password'; +$lang['SMTP_password_explain'] = 'Only enter a password if your SMTP server requires it'; + +$lang['Disable_privmsg'] = 'Private Messaging'; +$lang['Inbox_limits'] = 'Max posts in Inbox'; +$lang['Sentbox_limits'] = 'Max posts in Sentbox'; +$lang['Savebox_limits'] = 'Max posts in Savebox'; + +$lang['Cookie_settings'] = 'Cookie settings'; +$lang['Cookie_settings_explain'] = 'These details define how cookies are sent to your users\' browsers. In most cases the default values for the cookie settings should be sufficient, but if you need to change them do so with care -- incorrect settings can prevent users from logging in'; +$lang['Cookie_domain'] = 'Cookie domain'; +$lang['Cookie_name'] = 'Cookie name'; +$lang['Cookie_path'] = 'Cookie path'; +$lang['Cookie_secure'] = 'Cookie secure'; +$lang['Cookie_secure_explain'] = 'If your server is running via SSL, set this to enabled, else leave as disabled'; +$lang['Session_length'] = 'Session length [ seconds ]'; + +// Visual Confirmation +$lang['Visual_confirm'] = 'Enable Visual Confirmation'; +$lang['Visual_confirm_explain'] = 'Requires users enter a code defined by an image when registering.'; + +// +// Forum Management +// +$lang['Forum_admin'] = 'Forum Administration'; +$lang['Forum_admin_explain'] = 'From this panel you can add, delete, edit, re-order and re-synchronise categories and forums'; +$lang['Edit_forum'] = 'ਅਖਾੜੇ ਨੂੰ ਬਦਲੋ'; +$lang['Create_forum'] = 'ਨਵਾਂ ਅਖਾੜਾ ਬਣੋ'; +$lang['Create_category'] = 'ਨਵਾਂ ਸ਼à©à¨°à©‡à¨£à©€ ਬਣੋ'; +$lang['Remove'] = 'Remove'; +$lang['Action'] = 'Action'; +$lang['Update_order'] = 'Update Order'; +$lang['Config_updated'] = 'Forum Configuration Updated Successfully'; +//*--------------------------------- // +//*-- extr +//*-- $lang['Edit'] = 'Edit'; +$lang['Edit'] = 'ਬਦਲੋ'; +//*-- $lang['Delete'] = 'Delete'; +$lang['Delete'] = 'ਰੱਦ'; +//*--------------------------------- // +$lang['Move_up'] = 'Move up'; +$lang['Move_down'] = 'Move down'; +$lang['Resync'] = 'Resync'; +$lang['No_mode'] = 'No mode was set'; +$lang['Forum_edit_delete_explain'] = 'The form below will allow you to customize all the general board options. For User and Forum configurations use the related links on the left hand side'; + +$lang['Move_contents'] = 'Move all contents'; +$lang['Forum_delete'] = 'ਅਖਾੜਾ ਰੱਦ ਕਰੋ'; +$lang['Forum_delete_explain'] = 'The form below will allow you to delete a forum (or category) and decide where you want to put all topics (or forums) it contained.'; + +$lang['Status_locked'] = 'ਬੰਦ'; +$lang['Status_unlocked'] = 'ਖà©à©±à¨²à¨¾'; +$lang['Forum_settings'] = 'General Forum Settings'; +$lang['Forum_name'] = 'ਅਖਾੜੇ ਦਾ ਨਾਂ'; +$lang['Forum_desc'] = 'Description'; +$lang['Forum_status'] = 'Forum status'; +$lang['Forum_pruning'] = 'Auto-pruning'; + +$lang['prune_freq'] = 'Check for topic age every'; +$lang['prune_days'] = 'Remove topics that have not been posted to in'; +$lang['Set_prune_data'] = 'You have turned on auto-prune for this forum but did not set a frequency or number of days to prune. Please go back and do so.'; + +$lang['Move_and_Delete'] = 'Move and Delete'; + +$lang['Delete_all_posts'] = 'ਸਾਰੇ ਲਿਖਿਆ ਨੂੰ ਰੱਦ ਕਰੋ'; +$lang['Nowhere_to_move'] = 'Nowhere to move to'; + +$lang['Edit_Category'] = 'ਸ਼à©à¨°à©‡à¨£à©€ ਨੂੰ ਬਦਲੋ'; +$lang['Edit_Category_explain'] = 'Use this form to modify a category\'s name.'; + +$lang['Forums_updated'] = 'Forum and Category information updated successfully'; + +$lang['Must_delete_forums'] = 'You need to delete all forums before you can delete this category'; + +$lang['Click_return_forumadmin'] = 'Click %sHere%s to return to Forum Administration'; + + +// +// Smiley Management +// +$lang['smiley_title'] = 'Smiles Editing Utility'; +$lang['smile_desc'] = 'From this page you can add, remove and edit the emoticons or smileys that your users can use in their posts and private messages.'; + +$lang['smiley_config'] = 'Smiley Configuration'; +$lang['smiley_code'] = 'ਸਮਾਈਲੀਜ਼ ਦਾ ਕੋਡ'; +$lang['smiley_url'] = 'Smiley Image File'; +$lang['smiley_emot'] = 'ਸਮਾਈਲੀਜ਼ ਦਾ ਜੌਸ਼'; +$lang['smile_add'] = 'Add a new Smiley'; +$lang['Smile'] = 'ਸਮਾਈਲੀਜ਼'; +$lang['Emotion'] = 'ਜੌਸ਼'; + +$lang['Select_pak'] = 'Select Pack (.pak) File'; +$lang['replace_existing'] = 'Replace Existing Smiley'; +$lang['keep_existing'] = 'Keep Existing Smiley'; +$lang['smiley_import_inst'] = 'You should unzip the smiley package and upload all files to the appropriate Smiley directory for your installation. Then select the correct information in this form to import the smiley pack.'; +$lang['smiley_import'] = 'Smiley Pack Import'; +$lang['choose_smile_pak'] = 'Choose a Smile Pack .pak file'; +$lang['import'] = 'Import Smileys'; +$lang['smile_conflicts'] = 'What should be done in case of conflicts'; +$lang['del_existing_smileys'] = 'Delete existing smileys before import'; +$lang['import_smile_pack'] = 'Import Smiley Pack'; +$lang['export_smile_pack'] = 'Create Smiley Pack'; +$lang['export_smiles'] = 'To create a smiley pack from your currently installed smileys, click %sHere%s to download the smiles.pak file. Name this file appropriately making sure to keep the .pak file extension. Then create a zip file containing all of your smiley images plus this .pak configuration file.'; + +$lang['smiley_add_success'] = 'The Smiley was successfully added'; +$lang['smiley_edit_success'] = 'The Smiley was successfully updated'; +$lang['smiley_import_success'] = 'The Smiley Pack was imported successfully!'; +$lang['smiley_del_success'] = 'The Smiley was successfully removed'; +$lang['Click_return_smileadmin'] = 'Click %sHere%s to return to Smiley Administration'; + + +// +// User Management +// +$lang['User_admin'] = 'User Administration'; +$lang['User_admin_explain'] = 'Here you can change your users\' information and certain options. To modify the users\' permissions, please use the user and group permissions system.'; + +//*--------------------------------- // +//*-- extr +//*-- $lang['Look_up_user'] = 'Look up user'; +$lang['Look_up_user'] = 'ਉਪਭੋਗੀ ਨੂੰ ਲੱਭੋ'; +//*--------------------------------- // + +$lang['Admin_user_fail'] = 'Couldn\'t update the user\'s profile.'; +$lang['Admin_user_updated'] = 'The user\'s profile was successfully updated.'; +$lang['Click_return_useradmin'] = 'Click %sHere%s to return to User Administration'; + +$lang['User_delete'] = 'Delete this user'; +$lang['User_delete_explain'] = 'Click here to delete this user; this cannot be undone.'; +$lang['User_deleted'] = 'User was successfully deleted.'; + +$lang['User_status'] = 'User is active'; +$lang['User_allowpm'] = 'Can send Private Messages'; +$lang['User_allowavatar'] = 'Can display avatar'; + +$lang['Admin_avatar_explain'] = 'Here you can see and delete the user\'s current avatar.'; + +$lang['User_special'] = 'Special admin-only fields'; +$lang['User_special_explain'] = 'These fields are not able to be modified by the users. Here you can set their status and other options that are not given to users.'; + + +// +// Group Management +// +$lang['Group_administration'] = 'Group Administration'; +$lang['Group_admin_explain'] = 'From this panel you can administer all your usergroups. You can delete, create and edit existing groups. You may choose moderators, toggle open/closed group status and set the group name and description'; +$lang['Error_updating_groups'] = 'There was an error while updating the groups'; +$lang['Updated_group'] = 'The group was successfully updated'; +$lang['Added_new_group'] = 'The new group was successfully created'; +$lang['Deleted_group'] = 'The group was successfully deleted'; +$lang['New_group'] = 'Create new group'; +$lang['Edit_group'] = 'Edit group'; +//*--------------------------------- // +//*-- extr +//*-- $lang['group_name'] = 'Group name'; +$lang['group_name'] = 'ਗਰà©à©±à¨ª ਦਾ ਨਾਂ'; +//*-- $lang['group_description'] = 'Group description'; +$lang['group_description'] = 'ਗਰà©à©±à¨ª ਦੀ ਕਿਸਮ'; +//*-- $lang['group_moderator'] = 'Group moderator'; +$lang['group_moderator'] = 'ਗਰà©à©±à¨ª ਦਾ ਸੰਚਾਲਕ'; +//*--------------------------------- // +$lang['group_status'] = 'Group status'; +//*--------------------------------- // +//*-- extr +//*-- $lang['group_open'] = 'Open group'; +$lang['group_open'] = 'ਗਰà©à©±à¨ª ਖà©à©±à¨²à¨¾ ਹੈ'; +//*-- $lang['group_closed'] = 'Closed group'; +$lang['group_closed'] = 'ਗਰà©à©±à¨ª ਬੰਦ ਹੈ'; +//*-- $lang['group_hidden'] = 'Hidden group'; +$lang['group_hidden'] = 'ਲà©à¨•à¨¿à¨† ਗਰà©à©±à¨ª'; +//*--------------------------------- // +$lang['group_delete'] = 'Delete group'; +$lang['group_delete_check'] = 'Delete this group'; +$lang['submit_group_changes'] = 'Submit Changes'; +$lang['reset_group_changes'] = 'Reset Changes'; +$lang['No_group_name'] = 'You must specify a name for this group'; +$lang['No_group_moderator'] = 'You must specify a moderator for this group'; +$lang['No_group_mode'] = 'You must specify a mode for this group, open or closed'; +$lang['No_group_action'] = 'No action was specified'; +$lang['delete_group_moderator'] = 'Delete the old group moderator?'; +$lang['delete_moderator_explain'] = 'If you\'re changing the group moderator, check this box to remove the old moderator from the group. Otherwise, do not check it, and the user will become a regular member of the group.'; +$lang['Click_return_groupsadmin'] = 'Click %sHere%s to return to Group Administration.'; +$lang['Select_group'] = 'ਗਰà©à©±à¨ª ਚà©à¨£à©‹'; +//*--------------------------------- // +//*-- extr +$lang['Look_up_group'] = 'ਗਰà©à©±à¨ª ਨੂੰ ਲੱਭੋ'; +//*--------------------------------- // + + +// +// Prune Administration +// +$lang['Forum_Prune'] = 'ਅਖਾੜੇ ਦੀ ਕਾਂਟ-ਛਾਂਟ'; +$lang['Forum_Prune_explain'] = 'This will delete any topic which has not been posted to within the number of days you select. If you do not enter a number then all topics will be deleted. It will not remove topics in which polls are still running nor will it remove announcements. You will need to remove those topics manually.'; +$lang['Do_Prune'] = 'ਕਾਂਟ-ਛਾਂਟ ਕਰੋ'; +$lang['All_Forums'] = 'ਕà©à©±à¨² ਅਖਾੜੇ'; +$lang['Prune_topics_not_posted'] = 'Prune topics with no replies in this many days'; +$lang['Topics_pruned'] = 'ਵਿਸ਼ੇ ਦੀ ਕਾਂਟ-ਛਾਂਟ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ'; +$lang['Posts_pruned'] = 'ਲੇਖ ਦੀ ਕਾਂਟ-ਛਾਂਟ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ'; +$lang['Prune_success'] = 'ਅਖਾੜੇ ਦੀ ਕਾਂਟ-ਛਾਂਟ ਸਫ਼ਲ ਹੈ'; + + +// +// Word censor +// +$lang['Words_title'] = 'Word Censoring'; +$lang['Words_explain'] = 'From this control panel you can add, edit, and remove words that will be automatically censored on your forums. In addition people will not be allowed to register with usernames containing these words. Wildcards (*) are accepted in the word field. For example, *test* will match detestable, test* would match testing, *test would match detest.'; +$lang['Word'] = 'ਸ਼ਬਦ'; +$lang['Edit_word_censor'] = 'Edit word censor'; +$lang['Replacement'] = 'Replacement'; +$lang['Add_new_word'] = 'Add new word'; +$lang['Update_word'] = 'Update word censor'; + +$lang['Must_enter_word'] = 'You must enter a word and its replacement'; +$lang['No_word_selected'] = 'No word selected for editing'; + +$lang['Word_updated'] = 'The selected word censor has been successfully updated'; +$lang['Word_added'] = 'The word censor has been successfully added'; +$lang['Word_removed'] = 'The selected word censor has been successfully removed'; + +$lang['Click_return_wordadmin'] = 'Click %sHere%s to return to Word Censor Administration'; + + +// +// Mass Email +// +$lang['Mass_email_explain'] = 'Here you can email a message to either all of your users or all users of a specific group. To do this, an email will be sent out to the administrative email address supplied, with a blind carbon copy sent to all recipients. If you are emailing a large group of people please be patient after submitting and do not stop the page halfway through. It is normal for a mass emailing to take a long time and you will be notified when the script has completed'; +$lang['Compose'] = 'ਸà©à¨¨à©‡à¨¹à¨¾ ਲਿਖੋ'; + +$lang['Recipients'] = 'ਸà©à¨†à¨—ਤ ਕਰਨ ਵਾਲੇ।'; +$lang['All_users'] = 'ਸਾਰੇ ਉਪਭੋਗੀ'; + +$lang['Email_successfull'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਸà©à¨¨à©‡à¨¹à¨¾ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ।'; +$lang['Click_return_massemail'] = 'Click %sHere%s to return to the Mass Email form'; + + +// +// Ranks admin +// +$lang['Ranks_title'] = 'Rank Administration'; +$lang['Ranks_explain'] = 'Using this form you can add, edit, view and delete ranks. You can also create custom ranks which can be applied to a user via the user management facility'; + +$lang['Add_new_rank'] = 'Add new rank'; + +$lang['Rank_title'] = 'Rank Title'; +$lang['Rank_special'] = 'Set as Special Rank'; +$lang['Rank_minimum'] = 'Minimum Posts'; +$lang['Rank_maximum'] = 'Maximum Posts'; +$lang['Rank_image'] = 'Rank Image (Relative to phpBB2 root path)'; +$lang['Rank_image_explain'] = 'Use this to define a small image associated with the rank'; + +$lang['Must_select_rank'] = 'You must select a rank'; +$lang['No_assigned_rank'] = 'No special rank assigned'; + +$lang['Rank_updated'] = 'The rank was successfully updated'; +$lang['Rank_added'] = 'The rank was successfully added'; +$lang['Rank_removed'] = 'The rank was successfully deleted'; +$lang['No_update_ranks'] = 'The rank was successfully deleted. However, user accounts using this rank were not updated. You will need to manually reset the rank on these accounts'; + +$lang['Click_return_rankadmin'] = 'Click %sHere%s to return to Rank Administration'; + + +// +// Disallow Username Admin +// +$lang['Disallow_control'] = 'Username Disallow Control'; +$lang['Disallow_explain'] = 'Here you can control usernames which will not be allowed to be used. Disallowed usernames are allowed to contain a wildcard character of *. Please note that you will not be allowed to specify any username that has already been registered. You must first delete that name then disallow it.'; + +$lang['Delete_disallow'] = 'ਰੱਦ'; +$lang['Delete_disallow_title'] = 'Remove a Disallowed Username'; +$lang['Delete_disallow_explain'] = 'You can remove a disallowed username by selecting the username from this list and clicking submit'; + +$lang['Add_disallow'] = 'ਜੋੜੋ'; +$lang['Add_disallow_title'] = 'Add a disallowed username'; +$lang['Add_disallow_explain'] = 'You can disallow a username using the wildcard character * to match any character'; + +$lang['No_disallowed'] = 'No Disallowed Usernames'; + +$lang['Disallowed_deleted'] = 'The disallowed username has been successfully removed'; +$lang['Disallow_successful'] = 'The disallowed username has been successfully added'; +$lang['Disallowed_already'] = 'The name you entered could not be disallowed. It either already exists in the list, exists in the word censor list, or a matching username is present.'; + +$lang['Click_return_disallowadmin'] = 'Click %sHere%s to return to Disallow Username Administration'; + + +// +// Styles Admin +// +$lang['Styles_admin'] = 'Styles Administration'; +$lang['Styles_explain'] = 'Using this facility you can add, remove and manage styles (templates and themes) available to your users'; +$lang['Styles_addnew_explain'] = 'The following list contains all the themes that are available for the templates you currently have. The items on this list have not yet been installed into the phpBB database. To install a theme, simply click the install link beside an entry.'; + +$lang['Select_template'] = 'Select a Template'; + +$lang['Style'] = 'Style'; +$lang['Template'] = 'Template'; +//*--------------------------------- // +//*-- extr +$lang['Install'] = 'ਸਥਾਪਣਾ'; +//*--------------------------------- // +$lang['Download'] = 'Download'; + +$lang['Edit_theme'] = 'Edit Theme'; +$lang['Edit_theme_explain'] = 'In the form below you can edit the settings for the selected theme'; + +$lang['Create_theme'] = 'Create Theme'; +$lang['Create_theme_explain'] = 'Use the form below to create a new theme for a selected template. When entering colours (for which you should use hexadecimal notation) you must not include the initial #, i.e.. CCCCCC is valid, #CCCCCC is not'; + +$lang['Export_themes'] = 'Export Themes'; +$lang['Export_explain'] = 'In this panel you will be able to export the theme data for a selected template. Select the template from the list below and the script will create the theme configuration file and attempt to save it to the selected template directory. If it cannot save the file itself it will give you the option to download it. In order for the script to save the file you must give write access to the webserver for the selected template dir. For more information on this see the phpBB 2 users guide.'; + +$lang['Theme_installed'] = 'The selected theme has been installed successfully'; +$lang['Style_removed'] = 'The selected style has been removed from the database. To fully remove this style from your system you must delete the appropriate style from your templates directory.'; +$lang['Theme_info_saved'] = 'The theme information for the selected template has been saved. You should now return the permissions on the theme_info.cfg (and if applicable the selected template directory) to read-only'; +$lang['Theme_updated'] = 'The selected theme has been updated. You should now export the new theme settings'; +$lang['Theme_created'] = 'Theme created. You should now export the theme to the theme configuration file for safe keeping or use elsewhere'; + +$lang['Confirm_delete_style'] = 'Are you sure you want to delete this style?'; + +$lang['Download_theme_cfg'] = 'The exporter could not write the theme information file. Click the button below to download this file with your browser. Once you have downloaded it you can transfer it to the directory containing the template files. You can then package the files for distribution or use elsewhere if you desire'; +$lang['No_themes'] = 'The template you selected has no themes attached to it. To create a new theme click the Create New link on the left hand panel'; +$lang['No_template_dir'] = 'Could not open the template directory. It may be unreadable by the webserver or may not exist'; +$lang['Cannot_remove_style'] = 'You cannot remove the style selected since it is currently the forum default. Please change the default style and try again.'; +$lang['Style_exists'] = 'The style name to selected already exists, please go back and choose a different name.'; + +$lang['Click_return_styleadmin'] = 'Click %sHere%s to return to Style Administration'; + +$lang['Theme_settings'] = 'Theme Settings'; +$lang['Theme_element'] = 'Theme Element'; +$lang['Simple_name'] = 'Simple Name'; +//*--------------------------------- // +//*-- extr +//*-- $lang['Value'] = 'Value'; +$lang['Value'] = 'ਖ਼ਾਸੀਅਤ'; +//*--------------------------------- // +$lang['Save_Settings'] = 'Save Settings'; + +$lang['Stylesheet'] = 'CSS Stylesheet'; +$lang['Background_image'] = 'Background Image'; +$lang['Background_color'] = 'Background Colour'; +$lang['Theme_name'] = 'Theme Name'; +$lang['Link_color'] = 'Link Colour'; +$lang['Text_color'] = 'Text Colour'; +$lang['VLink_color'] = 'Visited Link Colour'; +$lang['ALink_color'] = 'Active Link Colour'; +$lang['HLink_color'] = 'Hover Link Colour'; +$lang['Tr_color1'] = 'Table Row Colour 1'; +$lang['Tr_color2'] = 'Table Row Colour 2'; +$lang['Tr_color3'] = 'Table Row Colour 3'; +$lang['Tr_class1'] = 'Table Row Class 1'; +$lang['Tr_class2'] = 'Table Row Class 2'; +$lang['Tr_class3'] = 'Table Row Class 3'; +$lang['Th_color1'] = 'Table Header Colour 1'; +$lang['Th_color2'] = 'Table Header Colour 2'; +$lang['Th_color3'] = 'Table Header Colour 3'; +$lang['Th_class1'] = 'Table Header Class 1'; +$lang['Th_class2'] = 'Table Header Class 2'; +$lang['Th_class3'] = 'Table Header Class 3'; +$lang['Td_color1'] = 'Table Cell Colour 1'; +$lang['Td_color2'] = 'Table Cell Colour 2'; +$lang['Td_color3'] = 'Table Cell Colour 3'; +$lang['Td_class1'] = 'Table Cell Class 1'; +$lang['Td_class2'] = 'Table Cell Class 2'; +$lang['Td_class3'] = 'Table Cell Class 3'; +$lang['fontface1'] = 'Font Face 1'; +$lang['fontface2'] = 'Font Face 2'; +$lang['fontface3'] = 'Font Face 3'; +$lang['fontsize1'] = 'Font Size 1'; +$lang['fontsize2'] = 'Font Size 2'; +$lang['fontsize3'] = 'Font Size 3'; +$lang['fontcolor1'] = 'Font Colour 1'; +$lang['fontcolor2'] = 'Font Colour 2'; +$lang['fontcolor3'] = 'Font Colour 3'; +$lang['span_class1'] = 'Span Class 1'; +$lang['span_class2'] = 'Span Class 2'; +$lang['span_class3'] = 'Span Class 3'; +$lang['img_poll_size'] = 'Polling Image Size [px]'; +$lang['img_pm_size'] = 'Private Message Status size [px]'; + + +// +// Install Process +// +$lang['Welcome_install'] = 'Welcome to phpBB 2 Installation'; +$lang['Initial_config'] = 'Basic Configuration'; +$lang['DB_config'] = 'Database Configuration'; +$lang['Admin_config'] = 'Admin Configuration'; +$lang['continue_upgrade'] = 'Once you have downloaded your config file to your local machine you may\'Continue Upgrade\' button below to move forward with the upgrade process. Please wait to upload the config file until the upgrade process is complete.'; +$lang['upgrade_submit'] = 'Continue Upgrade'; + +$lang['Installer_Error'] = 'An error has occurred during installation'; +$lang['Previous_Install'] = 'A previous installation has been detected'; +$lang['Install_db_error'] = 'An error occurred trying to update the database'; + +$lang['Re_install'] = 'Your previous installation is still active.

If you would like to re-install phpBB 2 you should click the Yes button below. Please be aware that doing so will destroy all existing data and no backups will be made! The administrator username and password you have used to login in to the board will be re-created after the re-installation and no other settings will be retained.

Think carefully before pressing Yes!'; + +$lang['Inst_Step_0'] = 'Thank you for choosing phpBB 2. In order to complete this install please fill out the details requested below. Please note that the database you install into should already exist. If you are installing to a database that uses ODBC, e.g. MS Access you should first create a DSN for it before proceeding.'; + +$lang['Start_Install'] = 'ਸਥਾਪਣਾ ਸ਼à©à¨°à©‚ ਕਰੌ'; +$lang['Finish_Install'] = 'ਸਥਾਪਣਾ ਖ਼ਤਮ ਕਰੌ'; + +$lang['Default_lang'] = 'Default board language'; +$lang['DB_Host'] = 'Database Server Hostname / DSN'; +$lang['DB_Name'] = 'Your Database Name'; +$lang['DB_Username'] = 'Database Username'; +$lang['DB_Password'] = 'Database Password'; +$lang['Database'] = 'Your Database'; +$lang['Install_lang'] = 'Choose Language for Installation'; +$lang['dbms'] = 'Database Type'; +$lang['Table_Prefix'] = 'Prefix for tables in database'; +$lang['Admin_Username'] = 'ਪà©à¨°à¨¬à©°à¨§ ਉਪਭੋਗੀ-ਨਾਂ'; +$lang['Admin_Password'] = 'ਪà©à¨°à¨¬à©°à¨§ ਗà©à¨ªà¨¤-ਕੋਡ'; +$lang['Admin_Password_confirm'] = 'ਪà©à¨°à¨¬à©°à¨§ ਗà©à¨ªà¨¤-ਕੋਡ ਇਕ ਵਾਰ ਫਿਰ'; + +$lang['Inst_Step_2'] = 'Your admin username has been created. At this point your basic installation is complete. You will now be taken to a screen which will allow you to administer your new installation. Please be sure to check the General Configuration details and make any required changes. Thank you for choosing phpBB 2.'; + +$lang['Unwriteable_config'] = 'Your config file is un-writeable at present. A copy of the config file will be downloaded to your computer when you click the button below. You should upload this file to the same directory as phpBB 2. Once this is done you should log in using the administrator name and password you provided on the previous form and visit the admin control center (a link will appear at the bottom of each screen once logged in) to check the general configuration. Thank you for choosing phpBB 2.'; +$lang['Download_config'] = 'Download Config'; + +$lang['ftp_choose'] = 'Choose Download Method'; +$lang['ftp_option'] = '
Since FTP extensions are enabled in this version of PHP you may also be given the option of first trying to automatically FTP the config file into place.'; +$lang['ftp_instructs'] = 'You have chosen to FTP the file to the account containing phpBB 2 automatically. Please enter the information below to facilitate this process. Note that the FTP path should be the exact path via FTP to your phpBB2 installation as if you were FTPing to it using any normal client.'; +$lang['ftp_info'] = 'Enter Your FTP Information'; +$lang['Attempt_ftp'] = 'Attempt to FTP config file into place'; +$lang['Send_file'] = 'Just send the file to me and I\'ll FTP it manually'; +$lang['ftp_path'] = 'FTP path to phpBB 2'; +$lang['ftp_username'] = 'Your FTP Username'; +$lang['ftp_password'] = 'Your FTP Password'; +$lang['Transfer_config'] = 'Start Transfer'; +$lang['NoFTP_config'] = 'The attempt to FTP the config file into place failed. Please download the config file and FTP it into place manually.'; + +$lang['Install'] = 'Install'; +$lang['Upgrade'] = 'Upgrade'; + + +$lang['Install_Method'] = 'Choose your installation method'; + +$lang['Install_No_Ext'] = 'The PHP configuration on your server doesn\'t support the database type that you chose'; + +$lang['Install_No_PCRE'] = 'phpBB2 Requires the Perl-Compatible Regular Expressions Module for PHP which your PHP configuration doesn\'t appear to support!'; + +// +// That's all Folks! +// ------------------------------------------------- + +?> diff --git a/includes/shared/phpbb2/language/lang_punjabi/lang_bbcode.php b/includes/shared/phpbb2/language/lang_punjabi/lang_bbcode.php new file mode 100644 index 00000000..8ee19b04 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/lang_bbcode.php @@ -0,0 +1,75 @@ +
  • To make a piece of text bold enclose it in [b][/b], eg.

    [b]Hello[/b]

    will become Hello
  • For underlining use [u][/u], for example:

    [u]Good Morning[/u]

    becomes Good Morning
  • To italicise text use [i][/i], eg.

    This is [i]Great![/i]

    would give This is Great!
  • "); +$faq[] = array("How to change the text colour or size", "To alter the color or size of your text the following tags can be used. Keep in mind that how the output appears will depend on the viewers browser and system:
    • Changing the colour of text is achieved by wrapping it in [color=][/color]. You can specify either a recognised colour name (eg. red, blue, yellow, etc.) or the hexadecimal triplet alternative, eg. #FFFFFF, #000000. For example, to create red text you could use:

      [color=red]Hello![/color]

      or

      [color=#FF0000]Hello![/color]

      will both output Hello!
    • Changing the text size is achieved in a similar way using [size=][/size]. This tag is dependent on the template you are using but the recommended format is a numerical value representing the text size in pixels, starting at 1 (so tiny you will not see it) through to 29 (very large). For example:

      [size=9]SMALL[/size]

      will generally be SMALL

      whereas:

      [size=24]HUGE![/size]

      will be HUGE!
    "); +$faq[] = array("Can I combine formatting tags?", "Yes, of course you can; for example to get someones attention you may write:

    [size=18][color=red][b]LOOK AT ME![/b][/color][/size]

    this would output LOOK AT ME!

    We don't recommend you output lots of text that looks like this, though! Remember that it is up to you, the poster, to ensure that tags are closed correctly. For example, the following is incorrect:

    [b][u]This is wrong[/b][/u]"); + +$faq[] = array("--","Quoting and outputting fixed-width text"); +$faq[] = array("Quoting text in replies", "There are two ways you can quote text: with a reference or without.
    • When you utilise the Quote function to reply to a post on the board you should notice that the post text is added to the message window enclosed in a [quote=\"\"][/quote] block. This method allows you to quote with a reference to a person or whatever else you choose to put. For example, to quote a piece of text Mr. Blobby wrote, you would enter:

      [quote=\"Mr. Blobby\"]The text Mr. Blobby wrote would go here[/quote]

      The resulting output will automatically add: Mr. Blobby wrote: before the actual text. Remember that you must include the quotation marks \"\" around the name you are quoting -- they are not optional.
    • The second method allows you to blindly quote something. To utilise this enclose the text in [quote][/quote] tags. When you view the message it will simply show: Quote: before the text itself.
    "); +$faq[] = array("Outputting code or fixed width data", "If you want to output a piece of code or in fact anything that requires a fixed width with a Courier-type font, you should enclose the text in [code][/code] tags, eg.

    [code]echo \"This is some code\";[/code]

    All formatting used within [code][/code] tags is retained when you later view it."); + +$faq[] = array("--","Generating lists"); +$faq[] = array("Creating an Un-ordered list", "BBCode supports two types of lists, unordered and ordered. They are essentially the same as their HTML equivalents. An unordered list ouputs each item in your list sequentially one after the other indenting each with a bullet character. To create an unordered list you use [list][/list] and define each item within the list using [*]. For example, to list your favorite colours you could use:

    [list]
    [*]Red
    [*]Blue
    [*]Yellow
    [/list]

    This would generate the following list:
    • Red
    • Blue
    • Yellow
    "); +$faq[] = array("Creating an Ordered list", "The second type of list, an ordered list gives you control over what is output before each item. To create an ordered list you use [list=1][/list] to create a numbered list or alternatively [list=a][/list] for an alphabetical list. As with the unordered list items are specified using [*]. For example:

    [list=1]
    [*]Go to the shops
    [*]Buy a new computer
    [*]Swear at computer when it crashes
    [/list]

    will generate the following:
    1. Go to the shops
    2. Buy a new computer
    3. Swear at computer when it crashes
    Whereas for an alphabetical list you would use:

    [list=a]
    [*]The first possible answer
    [*]The second possible answer
    [*]The third possible answer
    [/list]

    giving
    1. The first possible answer
    2. The second possible answer
    3. The third possible answer
    "); + +$faq[] = array("--", "Creating Links"); +$faq[] = array("Linking to another site", "phpBB BBCode supports a number of ways of creating URIs, Uniform Resource Indicators better known as URLs.
    • The first of these uses the [url=][/url] tag; whatever you type after the = sign will cause the contents of that tag to act as a URL. For example, to link to phpBB.com you could use:

      [url=http://www.phpbb.com/]Visit phpBB![/url]

      This would generate the following link, Visit phpBB! You will notice the link opens in a new window so the user can continue browsing the forums if they wish.
    • If you want the URL itself displayed as the link you can do this by simply using:

      [url]http://www.phpbb.com/[/url]

      This would generate the following link: http://www.phpbb.com/
    • Additionally phpBB features something called Magic Linkswhich will turn any syntatically correct URL into a link without you needing to specify any tags or even the leading http://. For example typing www.phpbb.com into your message will automatically lead to www.phpbb.com being output when you view the message.
    • The same thing applies equally to email addresses; you can either specify an address explicitly, like:

      [email]no.one@domain.adr[/email]

      which will output no.one@domain.adr or you can just type no.one@domain.adr into your message and it will be automatically converted when you view.
    As with all the BBCode tags you can wrap URLs around any of the other tags such as [img][/img] (see next entry), [b][/b], etc. As with the formatting tags it is up to you to ensure the correct open and close order is following. For example:

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/url][/img]

    is not correct which may lead to your post being deleted so take care."); + +$faq[] = array("--", "Showing images in posts"); +$faq[] = array("Adding an image to a post", "phpBB BBCode incorporates a tag for including images in your posts. Two very important things to remember when using this tag are: many users do not appreciate lots of images being shown in posts and second, the image you display must already be available on the Internet (it cannot exist only on your computer, for example, unless you run a webserver!). There is currently no way of storing images locally with phpBB (all these issues are expected to be addressed in the next release of phpBB). To display an image, you must surround the URL pointing to the image with [img][/img] tags. For example:

    [img]http://www.phpbb.com/images/phplogo.gif[/img]

    As noted in the URL section above you can wrap an image in a [url][/url] tag if you wish, eg.

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/img][/url]

    would generate:

    \"\"
    "); + +$faq[] = array("--", "Other matters"); +$faq[] = array("Can I add my own tags?", "No, I am afraid not directly in phpBB 2.0. We are looking at offering customisable BBCode tags for the next major version."); + +// +// This ends the BBCode guide entries +// + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/lang_faq.php b/includes/shared/phpbb2/language/lang_punjabi/lang_faq.php new file mode 100644 index 00000000..608d3f73 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/lang_faq.php @@ -0,0 +1,106 @@ +Log me in automatically box when you log in, the board will only keep you logged in for a preset time. This prevents misuse of your account by anyone else. To stay logged in, check the box during login. This is not recommended if you access the board from a shared computer, e.g. library, internet cafe, university cluster, etc."); +$faq[] = array("How do I prevent my username from appearing in the online user listings?", "In your profile you will find an option Hide your online status; if you switch this on you'll only appear to board administrators or to yourself. You will be counted as a hidden user."); +$faq[] = array("I've lost my password!", "Don't panic! While your password cannot be retrieved it can be reset. To do this go to the login page and click I've forgotten my password. Follow the instructions and you should be back online in no time."); +$faq[] = array("I registered but cannot log in!", "First check that you are entering the correct username and password. If they are okay then one of two things may have happened: if COPPA support is enabled and you clicked the I am under 13 years old link while registering then you will have to follow the instructions you received. If this is not the case then maybe your account need activating. Some boards will require all new registrations be activated, either by yourself or by the administrator before you can log on. When you registered it would have told you whether activation was required. If you were sent an email then follow the instructions; if you did not receive the email then check that your email address is valid. One reason activation is used is to reduce the possibility of rogue users abusing the board anonymously. If you are sure the email address you used is valid then try contacting the board administrator."); +$faq[] = array("I registered in the past but cannot log in anymore!", "The most likely reasons for this are: you entered an incorrect username or password (check the email you were sent when you first registered) or the administrator has deleted your account for some reason. If it is the latter case then perhaps you did not post anything? It is usual for boards to periodically remove users who have not posted anything so as to reduce the size of the database. Try registering again and get involved in discussions."); + + +$faq[] = array("--","User Preferences and settings"); +$faq[] = array("How do I change my settings?", "All your settings (if you are registered) are stored in the database. To alter them click the Profile link (generally shown at the top of pages but this may not be the case). This will allow you to change all your settings."); +$faq[] = array("The times are not correct!", "The times are almost certainly correct; however, what you may be seeing are times displayed in a timezone different from the one you are in. If this is the case, you should change your profile setting for the timezone to match your particular area, e.g. London, Paris, New York, Sydney, etc. Please note that changing the timezone, like most settings, can only be done by registered users. So if you are not registered, this is a good time to do so, if you pardon the pun!"); +$faq[] = array("I changed the timezone and the time is still wrong!", "If you are sure you have set the timezone correctly and the time is still different, the most likely answer is daylight savings time (or summer time as it is known in the UK and other places). The board is not designed to handle the changeovers between standard and daylight time so during summer months the time may be an hour different from the real local time."); +$faq[] = array("My language is not in the list!", "The most likely reasons for this are either the administrator did not install your language or someone has not translated this board into your language. Try asking the board administrator if they can install the language pack you need or if it does not exist, please feel free to create a new translation. More information can be found at the phpBB Group website (see link at bottom of pages)"); +$faq[] = array("How do I show an image below my username?", "There may be two images below a username when viewing posts. The first is an image associated with your rank; generally these take the form of stars or blocks indicating how many posts you have made or your status on the forums. Below this may be a larger image known as an avatar; this is generally unique or personal to each user. It is up to the board administrator to enable avatars and they have a choice over the way in which avatars can be made available. If you are unable to use avatars then this is the decision of the board admin and you should ask them their reasons (we're sure they'll be good!)"); +$faq[] = array("How do I change my rank?", "In general you cannot directly change the wording of any rank (ranks appear below your username in topics and on your profile depending on the style used). Most boards use ranks to indicate the number of posts you have made and to identify certain users. For example, moderators and administrators may have a special rank. Please do not abuse the board by posting unnecessarily just to increase your rank -- you will probably find the moderator or administrator will simply lower your post count."); +$faq[] = array("When I click the email link for a user it asks me to log in.", "Sorry, but only registered users can send email to people via the built-in email form (if the admin has enabled this feature). This is to prevent malicious use of the email system by anonymous users."); + + +$faq[] = array("--","Posting Issues"); +$faq[] = array("How do I post a topic in a forum?", "Easy -- click the relevant button on either the forum or topic screens. You may need to register before you can post a message. The facilities available to you are listed at the bottom of the forum and topic screens (the You can post new topics, You can vote in polls, etc. list)"); +$faq[] = array("How do I edit or delete a post?", "Unless you are the board admin or forum moderator you can only edit or delete your own posts. You can edit a post (sometimes for only a limited time after it was made) by clicking the edit button for the relevant post. If someone has already replied to the post, you will find a small piece of text output below the post when you return to the topic that lists the number of times you edited it. This will only appear if no one has replied; it also will not appear if moderators or administrators edit the post (they should leave a message saying what they altered and why). Please note that normal users cannot delete a post once someone has replied."); +$faq[] = array("How do I add a signature to my post?", "To add a signature to a post you must first create one; this is done via your profile. Once created you can check the Add Signature box on the posting form to add your signature. You can also add a signature by default to all your posts by checking the appropriate radio box in your profile. You can still prevent a signature being added to individual posts by un-checking the add signature box on the posting form."); +$faq[] = array("How do I create a poll?", "Creating a poll is easy -- when you post a new topic (or edit the first post of a topic, if you have permission) you should see a Add Poll form below the main posting box. If you cannot see this then you probably do not have rights to create polls. You should enter a title for the poll and then at least two options -- to set an option type in the poll question and click the Add option button. You can also set a time limit for the poll, 0 being an infinite amount. There will be a limit to the number of options you can list, which is set by the board administrator"); +$faq[] = array("How do I edit or delete a poll?", "As with posts, polls can only be edited by the original poster, a moderator, or board administrator. To edit a poll, click the first post in the topic, which always has the poll associated with it. If no one has cast a vote then users can delete the poll or edit any poll option. However, if people have already placed votes only moderators or administrators can edit or delete it; this is to prevent people rigging polls by changing options mid-way through a poll"); +$faq[] = array("Why can't I access a forum?", "Some forums may be limited to certain users or groups. To view, read, post, etc. you may need special authorization which only the forum moderator and board administrator can grant, so you should contact them."); +$faq[] = array("Why can't I vote in polls?", "Only registered users can vote in polls so as to prevent spoofing of results. If you have registered and still cannot vote then you probably do not have appropriate access rights."); + + +$faq[] = array("--","Formatting and Topic Types"); +$faq[] = array("What is BBCode?", "BBCode is a special implementation of HTML. Whether you can use BBCode is determined by the administrator. You can also disable it on a per post basis from the posting form. BBCode itself is similar in style to HTML: tags are enclosed in square braces [ and ] rather than < and > and it offers greater control over what and how something is displayed. For more information on BBCode see the guide which can be accessed from the posting page."); +$faq[] = array("Can I use HTML?", "That depends on whether the administrator allows you to; they have complete control over it. If you are allowed to use it, you will probably find only certain tags work. This is a safety feature to prevent people from abusing the board by using tags which may destroy the layout or cause other problems. If HTML is enabled you can disable it on a per post basis from the posting form."); +$faq[] = array("What are Smileys?", "Smileys, or Emoticons, are small graphical images which can be used to express some feeling using a short code, e.g. :) means happy, :( means sad. The full list of emoticons can be seen via the posting form. Try not to overuse smileys, though, as they can quickly render a post unreadable and a moderator may decide to edit them out or remove the post altogether."); +$faq[] = array("Can I post Images?", "Images can indeed be shown in your posts. However, there is no facility at present for uploading images directly to this board. Therefore you must link to an image stored on a publicly accessible web server, e.g. http://www.some-unknown-place.net/my-picture.gif. You cannot link to pictures stored on your own PC (unless it is a publicly accessible server) nor to images stored behind authentication mechanisms such as Hotmail or Yahoo mailboxes, password-protected sites, etc. To display the image use either the BBCode [img] tag or appropriate HTML (if allowed)."); +$faq[] = array("What are Announcements?", "Announcements often contain important information and you should read them as soon as possible. Announcements appear at the top of every page in the forum to which they are posted. Whether or not you can post an announcement depends on the permissions required, which are set by the administrator."); +$faq[] = array("What are Sticky topics?", "Sticky topics appear below any announcements in viewforum and only on the first page. They are often quite important so you should read them where possible. As with announcements the board administrator determines what permissions are required to post sticky topics in each forum."); +$faq[] = array("What are Locked topics?", "Locked topics are set this way by either the forum moderator or board administrator. You cannot reply to locked topics and any poll contained inside is automatically ended. Topics may be locked for many reasons."); + + +$faq[] = array("--","User Levels and Groups"); +$faq[] = array("What are Administrators?", "Administrators are people assigned the highest level of control over the entire board. These people can control all facets of board operation which include setting permissions, banning users, creating usergroups or moderators, etc. They also have full moderator capabilities in all the forums."); +$faq[] = array("What are Moderators?", "Moderators are individuals (or groups of individuals) whose job it is to look after the running of the forums from day to day. They have the power to edit or delete posts and lock, unlock, move, delete and split topics in the forum they moderate. Generally moderators are there to prevent people going off-topic or posting abusive or offensive material."); +$faq[] = array("What are Usergroups?", "Usergroups are a way in which board administrators can group users. Each user can belong to several groups (this differs from most other boards) and each group can be assigned individual access rights. This makes it easy for administrators to set up several users as moderators of a forum, or to give them access to a private forum, etc."); +$faq[] = array("How do I join a Usergroup?", "To join a usergroup click the usergroup link on the page header (dependent on template design) and you can then view all usergroups. Not all groups are open access -- some are closed and some may even have hidden memberships. If the board is open then you can request to join it by clicking the appropriate button. The user group moderator will need to approve your request; they may ask why you want to join the group. Please do not pester a group moderator if they turn your request down -- they will have their reasons."); +$faq[] = array("How do I become a Usergroup Moderator?", "Usergroups are initially created by the board administrator who also assigns a board moderator. If you are interested in creating a usergroup then your first point of contact should be the administrator, so try dropping them a private message."); + + +$faq[] = array("--","Private Messaging"); +$faq[] = array("I cannot send private messages!", "There are three reasons for this; you are not registered and/or not logged on, the board administrator has disabled private messaging for the entire board, or the board administrator has prevented you individually from sending messages. If it is the latter case you should try asking the administrator why."); +$faq[] = array("I keep getting unwanted private messages!", "In the future we will be adding an ignore list to the private messaging system. For now, though, if you keep receiving unwanted private messages from someone, inform the board administrator -- they have the power to prevent a user from sending private messages at all."); +$faq[] = array("I have received a spamming or abusive email from someone on this board!", "We are sorry to hear that. The email form feature of this board includes safeguards to try to track users who send such posts. You should email the board administrator with a full copy of the email you received and it is very important this include the headers (these list details of the user that sent the email). They can then take action."); + +// +// These entries should remain in all languages and for all modifications +// +$faq[] = array("--","phpBB 2 Issues"); +$faq[] = array("Who wrote this bulletin board?", "This software (in its unmodified form) is produced, released and is copyrighted phpBB Group. It is made available under the GNU General Public License and may be freely distributed; see link for more details"); +$faq[] = array("Why isn't X feature available?", "This software was written by and licensed through phpBB Group. If you believe a feature needs to be added then please visit the phpbb.com website and see what the phpBB Group has to say. Please do not post feature requests to the board at phpbb.com, as the Group uses sourceforge to handle tasking of new features. Please read through the forums and see what, if any, our position may already be for features and then follow the procedure given there."); +$faq[] = array("Whom do I contact about abusive and/or legal matters related to this board?", "You should contact the administrator of this board. If you cannot find who that is, you should first contact one of the forum moderators and ask them who you should in turn contact. If still get no response you should contact the owner of the domain (do a whois lookup) or, if this is running on a free service (e.g. yahoo, free.fr, f2s.com, etc.), the management or abuse department of that service. Please note that phpBB Group has absolutely no control and cannot in any way be held liable over how, where or by whom this board is used. It is absolutely pointless contacting phpBB Group in relation to any legal (cease and desist, liable, defamatory comment, etc.) matter not directly related to the phpbb.com website or the discrete software of phpBB itself. If you do email phpBB Group about any third party use of this software then you should expect a terse response or no response at all."); + +// +// This ends the FAQ entries +// + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/lang_main.php b/includes/shared/phpbb2/language/lang_punjabi/lang_main.php new file mode 100644 index 00000000..11eca170 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/lang_main.php @@ -0,0 +1,1076 @@ + $lang['message'] = 'text'; +// +// You should also try to set a locale and a character encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +$lang['USER_LANG'] = 'pa'; +$lang['ENCODING'] = 'UTF-8'; +// This should be changed to the default date format for your language, php date() format +$lang['DIRECTION'] = 'ltr'; +//*--------------------------------- // +//*-- extr ? +$lang['LEFT'] = 'ਖੱਬੇ'; +$lang['RIGHT'] = 'ਸੱਜੇ'; +//*--------------------------------- // +$lang['DATE_FORMAT'] = 'D j M Y'; // This should be changed to the default date format for your language, php date() format + +// This is optional, if you would like a _SHORT_ message output +// along with our copyright message indicating you are the translator +// please add it here. +$lang['TRANSLATION_INFO'] = 'ਪੰਜਾਬੀ ਅਨà©à¨µà¨¾à¨¦ (C) 2004 ਦਾ ਪੀ ਸੀ ਆਰ ਸੀ (ਪੰਜਾਬੀ ਕੰਪਿਊਟਿੰਗ ਰਿਸੋਰਸ ਸੈਂਟਰ) ਗਰà©à©±à¨ª'; + +$lang['TRANSLATION'] = 'ਪੰਜਾਬੀ ਅਨà©à¨µà¨¾à¨¦ (C) 2004 ਦਾ ਪੀ ਸੀ ਆਰ ਸੀ (ਪੰਜਾਬੀ ਕੰਪਿਊਟਿੰਗ ਰਿਸੋਰਸ ਸੈਂਟਰ) ਗਰà©à©±à¨ª'; + +// +// Common, these terms are used +// extensively on several pages +// +$lang['Forum'] = 'ਅਖਾੜਾ'; +$lang['Category'] = 'ਸ਼à©à¨°à©‡à¨£à©€'; +$lang['Topic'] = 'ਵਿਸ਼ਾ'; +$lang['Topics'] = 'ਵਿਸ਼ੇ'; +$lang['Replies'] = 'ਜਵਾਬ'; +$lang['Views'] = 'à¨à¨¾à¨¤à©€à¨†à¨‚'; +$lang['Post'] = 'ਲੇਖ'; +$lang['Posts'] = 'ਲੇਖ'; +$lang['Posted'] = 'ਲਿਖਿਆ'; +$lang['Username'] = 'ਉਪਭੋਗੀ-ਨਾਂ'; +$lang['Password'] = 'ਗà©à¨ªà¨¤-ਕੋਡ'; +$lang['Email'] = 'ਈਮੇਲ'; +$lang['Poster'] = 'ਲੇਖਕ'; +$lang['Author'] = 'ਲੇਖਕ'; +$lang['Time'] = 'ਸਮਾਂ'; +$lang['Hours'] = 'ਘੰਟੇ'; +$lang['Message'] = 'ਸà©à¨¨à©‡à¨¹à¨¾'; + +$lang['1_Day'] = '1 ਦਿਨ'; +$lang['7_Days'] = '7 ਦਿਨ'; +$lang['2_Weeks'] = '2 ਹਫ਼ਤੇ'; +$lang['1_Month'] = '1 ਮਹੀਨਾ'; +$lang['3_Months'] = '3 ਮਹੀਨੇ'; +$lang['6_Months'] = '6 ਮਹੀਨੇ'; +$lang['1_Year'] = '1 ਸਾਲ'; + +$lang['Go'] = 'ਚਲੋ'; +$lang['Jump_to'] = 'ਇੱਥੇ'; +$lang['Submit'] = 'ਭੇਜੋ'; +$lang['Reset'] = 'ਨਵੇਂ ਸਿਰੋਂ'; +$lang['Cancel'] = 'ਰੱਦ ਕਰੋ'; +$lang['Preview'] = 'ਪੂਰਵ ਵੇਖਣ'; +$lang['Confirm'] = 'ਹਾਮੀ-ਭਰੋ'; +$lang['Spellcheck'] = 'ਸ਼ਬਦ-ਜੋੜ'; +$lang['Yes'] = 'ਹਾਂ'; +$lang['No'] = 'ਨਹੀਂ'; +$lang['Enabled'] = 'ਯੋਗਤਾ'; +$lang['Disabled'] = 'ਅਯੋਗਤਾ'; +$lang['Error'] = 'ਗ਼ਲਤੀ'; + +$lang['Next'] = 'ਅਗਲਾ'; +$lang['Previous'] = 'ਪਿਛਲਾ'; +$lang['Goto_page'] = 'ਪੰਨੇ ਤੇ ਜਾਵੋ'; +$lang['Joined'] = 'ਜà©à©œà¨¿à¨†'; +$lang['IP_Address'] = 'ਆਈ-ਪੀ (IP) ਪਤਾ'; + +$lang['Select_forum'] = 'ਅਖਾੜਾ ਚà©à¨£à©‹'; +$lang['View_latest_post'] = 'ਅੰਤਿਮ ਲੇਖ ਪੜੋ'; +$lang['View_newest_post'] = 'ਨਵਾਂ ਲੇਖ ਪੜà©à¨¹à©‹'; +$lang['Page_of'] = 'ਪੰਨਾ %d, ਕà©à©±à¨² %d'; // Replaces with: Page 1 of 2 for example + +$lang['ICQ'] = 'ICQ ਨੰਬਰ'; +$lang['AIM'] = 'AIM ਦਾ ਪਤਾ'; +$lang['MSNM'] = 'MSN ਮੈਸਿਨਜਰ'; +$lang['YIM'] = 'Yahoo ਮੈਸਿਨਜਰ'; + +$lang['Forum_Index'] = '%s ਅਖਾੜੇ ਦੀ ਵਿਸ਼ਾ-ਸੂਚੀ'; // eg. sitename Forum Index, %s can be removed if you prefer + +$lang['Post_new_topic'] = 'ਨਵਾਂ ਲੇਖ ਲਿਖੋ'; +$lang['Reply_to_topic'] = 'ਵਿਸ਼ੇ ਤੇ ਜਵਾਬ ਦੇਵੋ'; +$lang['Reply_with_quote'] = 'ਹਵਾਲੇ ਨਾਲ ਜਵਾਬ ਦੇਵੋ'; + +$lang['Click_return_topic'] = 'ਵਿਸ਼ੇ ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; //%s's here are for uris, do not remove! +$lang['Click_return_login'] = 'ਦà©à¨¬à¨¾à¨°à¨¾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; +$lang['Click_return_forum'] = 'ਅਖਾੜੇ ਵਿਚ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; +$lang['Click_view_message'] = 'ਆਪਣਾ ਲੇਖ ਪੜà©à¨¹à¨¨ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; +$lang['Click_return_modcp'] = 'ਸੰਚਾਲਨ-ਖੰਡ ਵਿਚ ਵਾਪਸ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; +$lang['Click_return_group'] = 'ਲਵੀ-ਸੂਚਨਾ ਵੇਖਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; + +$lang['Admin_panel'] = 'ਪà©à¨°à¨¬à©°à¨§-ਖੰਡ ਵਿਚ ਜਾਵੋ'; + +$lang['Board_disable'] = 'ਅਫ਼ਸੋਸ ਹੈ ਕਿ ਇਹ ਲੜੀ ਇਸ ਵਕਤ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। ਥੋੜੇ ਸਮੇਂ ਬਾਦ, ਦà©à¨¬à¨¾à¨°à¨¾ ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ।'; + +// +// Global Header strings +// +$lang['Registered_users'] = 'ਦਰਜ ਹੋਠਉਪਭੋਗੀ:'; +$lang['Browsing_forum'] = 'ਇਸ ਅਖਾੜੇ ਨੂੰ ਨਜ਼ਰ ਮਾਰਦੇ ਉਪਭੋਗੀ:'; +$lang['Online_users_zero_total'] = 'ਕà©à©±à¨² ਮਿਲਾ ਕੇ 0 ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹਨ। :: '; +$lang['Online_users_total'] = 'ਕà©à©±à¨² ਮਿਲਾ ਕੇ %d ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹਨ। :: '; +$lang['Online_user_total'] = 'ਕà©à©±à¨² ਮਿਲਾ ਕੇ %d ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹੈ। :: '; +$lang['Reg_users_zero_total'] = '0 ਦਰਜ ਕੀਤੇ ਉਪਭੋਗੀ, '; +$lang['Reg_users_total'] = '%d ਦਰਜ ਕੀਤੇ ਉਪਭੋਗੀ, '; +$lang['Reg_user_total'] = '%d ਦਰਜ ਕੀਤਾ ਉਪਭੋਗੀ, '; +$lang['Hidden_users_zero_total'] = '0 ਲà©à¨•à©‡ ਉਪਭੋਗੀ ਅਤੇ '; +$lang['Hidden_user_total'] = '%d ਲà©à¨•à¨¿à¨† ਉਪਭੋਗੀ ਅਤੇ '; +$lang['Hidden_users_total'] = '%d ਲà©à¨•à©‡ ਉਪਭੋਗੀ ਅਤੇ '; +$lang['Guest_users_zero_total'] = '0 ਮਹਿਮਾਨ'; +$lang['Guest_users_total'] = '%d ਮਹਿਮਾਨ'; +$lang['Guest_user_total'] = '%d ਮਹਿਮਾਨ'; +$lang['Record_online_users'] = 'ਸਭ ਤੋਂ ਜ਼ਿਆਦਾ ਓਨਲਾਈਨ ਉਪਭੋਗੀਆਂ ਦੀ ਗਿਣਤੀ %s ਹੈ, ਜਿਹੜੇ ਕੀ %s ਤਾਰੀਖ਼ ਨੂੰ ਓਨਲਾਈਨ ਸਨ।'; // first %s = number of users, second %s is the date. +$lang['Admin_online_color'] = '%sਪà©à¨°à¨¬à©°à¨§à¨•%s'; +$lang['Mod_online_color'] = '%sਸੰਚਾਲਕ%s'; + +$lang['You_last_visit'] = 'ਪਿਛਲੀ ਵਾਰ ਤà©à¨¸à©€à¨‚ %s ਆਠਸੀ'; // %s replaced by date/time +$lang['Current_time'] = 'ਹà©à¨£ ਦਾ ਟਾਈਮ %s'; // %s replaced by time +$lang['Search_new'] = 'ਨਵੇਂ ਲੇਖ ਪੜà©à¨¹à©‹'; +$lang['Search_your_posts'] = 'ਆਪਣੇ ਲੇਖ ਪੜà©à¨¹à©‹'; +$lang['Search_unanswered'] = 'ਜਵਾਬਾਂ ਤੋਂ ਬਿਨਾ ਲੇਖ ਪੜà©à¨¹à©‹'; + +$lang['Register'] = 'ਦਰਜ ਹੋਵੋ'; +$lang['Profile'] = 'ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨²'; +$lang['Edit_profile'] = 'ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਬਦਲੋ'; +$lang['Search'] = 'ਖੋਜ'; +$lang['Memberlist'] = 'ਉਪਭੋਗੀ-ਨਾਮਾਵਾਲੀ'; +$lang['FAQ'] = 'ਅਕਸਰ ਪà©à©±à¨›à©‡ ਜਾਂਦੇ ਪà©à¨°à¨¶à¨¨'; +$lang['BBCode_guide'] = 'BBCode ਗਾਈਡ'; +$lang['Usergroups'] = 'ਉਪਭੋਗੀ-ਲੜੀਆਂ'; +$lang['Last_Post'] = 'ਆਖਰੀ ਲੇਖ'; +$lang['Moderator'] = 'ਸੰਚਾਲਕ'; +$lang['Moderators'] = 'ਸੰਚਾਲਕ'; + + +// +// Stats block text +// +$lang['Posted_articles_zero_total'] = 'ਕà©à©±à¨² ਮਿਲਾ ਕੇ ਸਾਡੇ ਉਪਭੋਗੀਆਂ ਨੇ 0 ਲੇਖ ਲਿਖੇ ਹਨ'; // Number of posts +$lang['Posted_articles_total'] = 'ਕà©à©±à¨² ਮਿਲਾ ਕੇ ਸਾਡੇ ਉਪਭੋਗੀਆਂ ਨੇ %d ਲੇਖ ਲਿਖੇ ਹਨ'; // Number of posts +$lang['Posted_article_total'] = 'ਕà©à©±à¨² ਮਿਲਾ ਕੇ ਸਾਡੇ ਉਪਭੋਗੀਆਂ ਨੇ %d ਲੇਖ ਲਿਖਿਆ ਹੈ'; // Number of posts +$lang['Registered_users_zero_total'] = 'ਕà©à©±à¨² ਮਿਲਾ ਕੇ 0 ਦਰਜ ਹੋਠਉਪਭੋਗੀ'; // # registered users +$lang['Registered_users_total'] = 'ਇਸ ਅਖਾੜੇ ਵਿੱਚ %d ਦਰਜ ਹੋਠਉਪਭੋਗੀ ਹਨ।'; // # registered users +$lang['Registered_user_total'] = 'ਇਸ ਅਖਾੜੇ ਵਿੱਚ %d ਦਰਜ ਹੋ ਇਆ ਉਪਭੋਗੀ ਹੈ।'; // # registered users +$lang['Newest_user'] = 'ਸਬ ਤੋਂ ਨਵਾਂ ਦਰਜ ਹੋਠਉਪਭੋਗੀ %s%s%s ਹੈ'; // a href, username, /a +$lang['No_new_posts_last_visit'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਪਿਛਲੀ ਵਾਰ ਆਉਣ ਤੋਂ ਬਾਦ ਕੋਈ ਨਵਾਂ ਲੇਖ ਨਹੀਂ ਆਇਆ'; +$lang['No_new_posts'] = 'ਕੋਈ ਨਵਾਂ ਲੇਖ ਨਹੀਂ'; +$lang['New_posts'] = 'ਨਵੇਂ ਲੇਖ'; +$lang['New_post'] = 'ਨਵਾਂ ਲੇਖ'; +$lang['No_new_posts_hot'] = 'ਕੋਈ ਨਵਾਂ ਲੇਖ ਨਹੀਂ [ ਪà©à¨°à¨¸à¨¿à©±à¨§ ]'; +$lang['New_posts_hot'] = 'ਨਵੇਂ ਲੇਖ [ ਪà©à¨°à¨¸à¨¿à©±à¨§ ]'; +$lang['No_new_posts_locked'] = 'ਕੋਈ ਨਵਾਂ ਲੇਖ ਨਹੀਂ [ ਬੰਦ ]'; +$lang['New_posts_locked'] = 'ਨਵੇਂ ਲੇਖ [ ਬੰਦ ]'; +$lang['Forum_is_locked'] = 'ਅਖਾੜਾ ਬੰਦ ਹੈ'; + +// +// Login +// +$lang['Enter_password'] = 'ਅੰਦਰ ਆਉਣ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਉਪਭੋਗੀ-ਨਾਂ ਅਤੇ ਗà©à¨ªà¨¤-ਕੋਡ ਵਰਤੋ।'; +$lang['Login'] = 'ਅੰਦਰ ਆਓ'; +$lang['Logout'] = 'ਬਾਹਰ ਜਾਓ'; + +$lang['Forgotten_password'] = 'ਮੈਂ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਭà©à©±à¨² ਗਿਆ ਹਾਂ'; + +$lang['Log_me_in'] = 'ਮੈਨੂੰ ਹਰ ਵਾਰ ਆਪਣੇ ਆਪ ਅੰਦਰ ਆਉਣ ਦਵੋ'; + +$lang['Error_login'] = 'ਤà©à¨¸à©€à¨‚ ਇਕ ਗਲਤ ਜਾਂ ਨਾ-ਚਾਲੂ ਉਪਭੋਗੀ-ਨਾਂ, ਜਾਂ ਇਕ ਗਲਤ ਗà©à¨ªà¨¤-ਕੋਡ ਦੀ ਵਰਤੋ ਕੀਤੀ ਹੈ।'; + + +// +// Index page +// +$lang['Index'] = 'ਵਿਸ਼ਾ-ਸੂਚੀ'; +$lang['No_Posts'] = 'ਕੋਈ ਲੇਖ ਨਹੀਂ ਮੌਜੂਦ'; +$lang['No_forums'] = 'ਇਸ ਬੋਰਡ ਵਿੱਚ ਕੋਈ ਅਖਾੜੇ ਨਹੀਂ ਹਨ'; + +$lang['Private_Message'] = 'ਨਿੱਜੀ ਸਨੇਹਾ'; +$lang['Private_Messages'] = 'ਨਿੱਜੀ ਸਨੇਹੇ'; +$lang['Who_is_Online'] = 'ਕੋਣ ਹੈ ਓਨਲਾਈਨ'; + +$lang['Mark_all_forums'] = 'ਸਾਰੇ ਅਖਾੜਿਆਂ ਤੇ ਪੜੇ ਹੋਠਦਾ ਨਿਸ਼ਾਨ ਲਾਓ'; +$lang['Forums_marked_read'] = 'ਸਾਰੇ ਅਖਾੜਿਆਂ ਤੇ ਪੜੇ ਹੋਠਦਾ ਨਿਸ਼ਾਨ ਲਾ ਦਿੱਤਾ ਗਿਆ ਹੈ'; + + +// +// Viewforum +// +$lang['View_forum'] = 'ਅਖਾੜਾ ਵੇਖੋ'; + +$lang['Forum_not_exist'] = 'ਇਹ ਅਖਾੜਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।'; +$lang['Reached_on_error'] = 'ਤà©à¨¸à©€à¨‚ ਗਲਤੀ ਨਾਲ ਇਸ ਪੰਨੇ ਵਿੱਚ ਆਠਹੋ।'; + +$lang['Display_topics'] = 'ਪà©à¨°à¨¾à¨£à©‡ ਵਿਸ਼ੇ ਖੋਲà©à¨¹à©‹'; +$lang['All_Topics'] = 'ਸਾਰੇ ਵਿਸ਼ੇ'; + +$lang['Topic_Announcement'] = 'à¨à¨²à¨¾à¨¨:'; +$lang['Topic_Sticky'] = 'ਚਿਪਕਵਾਂ:'; +$lang['Topic_Moved'] = 'ਹਿਲਾਇਆ ਗਿਆ:'; +$lang['Topic_Poll'] = '[ ਚੋਣ ]'; + +$lang['Mark_all_topics'] = 'ਸਾਰੇ ਵਿਸ਼ਿਆਂ ਤੇ ਪੜੇ ਹੋਠਦਾ ਨਿਸ਼ਾਨ ਲਾਓ'; +$lang['Topics_marked_read'] = 'ਇਸ ਅਖਾੜੇ ਦੇ ਸਾਰੇ ਵਿਸ਼ਿਆਂ ਤੇ ਪੜੇ ਹੋਠਦਾ ਨਿਸ਼ਾਨ ਲਾ ਦਿੱਤਾ ਗਿਆ ਹੈ'; + +$lang['Rules_post_can'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਨਵੇਂ ਵਿਸ਼ੇ ਖੋਲ ਸਕਦੇ ਹੋ'; +$lang['Rules_post_cannot'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਨਵੇਂ ਵਿਸ਼ੇ ਨਹੀਂ ਖੋਲ ਸਕਦੇ'; +$lang['Rules_reply_can'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਵਿਸ਼ਿਆਂ ਤੇ ਜਵਾਬ ਦੇ ਸਕਦੇ ਹੋ'; +$lang['Rules_reply_cannot'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਵਿਸ਼ਿਆਂ ਤੇ ਜਵਾਬ ਨਹੀਂ ਦੇ ਸਕਦੇ'; +$lang['Rules_edit_can'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਆਪਣੇ ਲੇਖ ਬਦਲ ਸਕਦੇ ਹੋ'; +$lang['Rules_edit_cannot'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਆਪਣੇ ਲੇਖ ਨਹੀਂ ਬਦਲ ਸਕਦੇ'; +$lang['Rules_delete_can'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਆਪਣੇ ਲੇਖ ਰੱਦ ਕਰ ਸਕਦੇ ਹੋ'; +$lang['Rules_delete_cannot'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਆਪਣੇ ਲੇਖ ਨਹੀਂ ਰੱਦ ਕਰ ਸਕਦੇ'; +$lang['Rules_vote_can'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਵੋਟ ਪਾ ਸਕਦੇਹੋ'; +$lang['Rules_vote_cannot'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਵੋਟ ਨਹੀਂ ਪਾ ਸਕਦੇ'; +$lang['Rules_moderate'] = 'ਤà©à¨¸à©€à¨‚ %sਇਸ ਅਖਾੜੇ ਵਿੱਚ ਸੰਚਾਲਕ ਦਾ ਕੰਮ%s ਕਰ ਸਕਦੇ ਹੋ'; // %s replaced by a href links, do not remove! +$lang['No_topics_post_one'] = 'ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਕੋਈ ਲੇਖ ਨਹੀਂ ਹਨ।
    ਇਕ ਲੇਖ ਲਿਖਣ ਲਈ, ਨਵਾਂ ਵਿਸ਼ਾ ਖੋਲà©à¨¹à©‹ ਵਾਲੇ ਲਿੰਕ ਤੇ ਕੜਿੱਕ ਕਰੋ।'; + + +// +// Viewtopic +// +$lang['View_topic'] = 'ਵਿਸ਼ਾ ਵੇਖੋ'; + +$lang['Guest'] = 'ਮਹਿਮਾਨ'; +$lang['Post_subject'] = 'ਸਿਰਲੇਖ'; +$lang['View_next_topic'] = 'ਅਗਲਾ ਵਿਸ਼ਾ ਵੇਖੋ'; +$lang['View_previous_topic'] = 'ਪਿਛਲਾ ਵਿਸ਼ਾ ਵੇਖੋ'; +$lang['Submit_vote'] = 'ਵੋਟ ਪਾਓ'; +$lang['View_results'] = 'ਨਤੀਜੇ ਵੇਖੋ'; + +$lang['No_newer_topics'] = 'ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਕੋਈ ਨਵਾਂ ਵਿਸ਼ਾ ਨਹੀਂ ਹੈ'; +$lang['No_older_topics'] = 'ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਕੋਈ ਪà©à¨°à¨¾à¨£à¨¾ ਵਿਸ਼ਾ ਨਹੀਂ ਹੈ'; +$lang['Topic_post_not_exist'] = 'ਇਹ ਵਿਸ਼ਾ ਜਾਂ ਲੇਖ ਉਪਲਬਧ ਨਹੀਂ ਹੈ'; +$lang['No_posts_topic'] = 'ਇਸ ਵਿਸ਼ਾ ਵਿੱਚ ਕੋਈ ਲੇਖ ਨਹੀਂ ਹਨ'; + +$lang['Display_posts'] = 'ਪà©à¨°à¨¾à¨£à©‡ ਲੇਖ ਦੇਖੋ'; +$lang['All_Posts'] = 'ਸਾਰੇ ਲੇਖ'; +$lang['Newest_First'] = 'ਨਵੇਂ ਪਹਿਲਾਂ'; +$lang['Oldest_First'] = 'ਪà©à¨°à¨¾à¨£à©‡ ਪਹਿਲਾਂ'; + + +$lang['Back_to_top'] = 'ਉੱਤੇ ਜਾਓ'; + +$lang['Read_profile'] = 'ਉਪਭੋਗੀ ਦੀ ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਵੇਖੋ'; +$lang['Send_email'] = 'ਉਪਭੋਗੀ ਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ'; +$lang['Visit_website'] = 'ਲੇਖਕ ਦੀ ਵੈਬ-ਸਾਈਟ ਤੇ ਜਾਓ'; +$lang['ICQ_status'] = 'ICQ ਦਰਜਾ'; +$lang['Edit_delete_post'] = 'ਇਸ ਲੇਖ ਨੂੰ ਬਦਲੋ/ਰੱਦ ਕਰੋ'; +$lang['View_IP'] = 'ਲੇਖਕ ਦਾ ਆਈ-ਪੀ (IP) ਪਤਾ ਵੇਖੋ'; +//*--------------------------------- // +//*-- extr +//*-- en $lang['Delete_post'] = 'Delete this post'; +$lang['Delete_post'] = 'ਇਹ ਲੇਖ ਰੱਦ ਕਰੋ'; +//*-------------------------------- // + + +$lang['wrote'] = 'ਨੇ ਲਿਖਿਆ'; // proceeds the username and is followed by the quoted text +$lang['Quote'] = 'ਹਵਾਲਾ'; // comes before bbcode quote output. +$lang['Code'] = 'ਕੋਡ'; // comes before bbcode code output. + +$lang['Edited_time_total'] = 'ਅਖੀਰਲੀ ਵਾਰ %s ਨੇ %s ਨੂੰ ਬਦਲਿਆ; ਕà©à©±à¨² %d ਵਾਰ ਬਦਲਿਆ'; // Last edited by me on 12 Oct 2001; edited 1 time in total +$lang['Edited_times_total'] = 'ਅਖੀਰਲੀ ਵਾਰ %s ਨੇ %s ਨੂੰ ਬਦਲਿਆ; ਕà©à©±à¨² %d ਵਾਰ ਬਦਲਿਆ'; // Last edited by me on 12 Oct 2001; edited 2 times in total + +$lang['Lock_topic'] = 'ਇਹ ਵਿਸ਼ਾ ਬੰਦ ਕਰੋ'; +$lang['Unlock_topic'] = 'ਇਹ ਵਿਸ਼ਾ ਖੋਲà©à¨¹à©‹'; +$lang['Move_topic'] = 'ਇਸ ਵਿਸ਼ੇ ਨੂੰ ਹਿਲਾਓ'; +$lang['Delete_topic'] = 'ਇਸ ਵਿਸ਼ੇ ਨੂੰ ਰੱਦ ਕਰੋ'; +$lang['Split_topic'] = 'ਇਸ ਵਿਸ਼ੇ ਨੂੰ ਵੰਡੋ'; + +$lang['Stop_watching_topic'] = 'ਵਿਸ਼ਾ ਜਾਂਚਣਾ ਬੰਦ ਕਰੋ'; +$lang['Start_watching_topic'] = 'ਇਸ ਵਿਸ਼ੇ ਦੇ ਜਵਾਬਾਂ ਨੂੰ ਜਾਂਚੋ '; +$lang['No_longer_watching'] = 'ਤà©à¨¸à©€à¨‚ ਹà©à¨£ ਇਹ ਵਿਸ਼ਾ ਨਹੀਂ ਜਾਂਚ ਰਹੇ'; +$lang['You_are_watching'] = 'ਤà©à¨¸à©€à¨‚ ਹà©à¨£ ਇਹ ਵਿਸ਼ਾ ਜਾਂਚ ਰਹੇ ਹੋ'; +$lang['Total_votes'] = 'ਕà©à©±à¨² ਵੋਟਾਂ'; + + +// +// Posting/Replying (Not private messaging!) +// +$lang['Message_body'] = 'ਸਨੇਹਾ'; +$lang['Topic_review'] = 'ਵਿਸ਼ਾ'; + +$lang['No_post_mode'] = 'ਕਾਰਜ ਵਿਧੀ ਸਪਸ਼ਟ ਨਹੀਂ ਕੀਤੀ ਗਈ'; // If posting.php is called without a mode (newtopic/reply/delete/etc, shouldn't be shown normaly) + +$lang['Post_a_new_topic'] = 'ਨਵਾਂ ਵਿਸ਼ਾ ਖੋਲà©à¨¹à©‹'; +$lang['Post_a_reply'] = 'ਜਵਾਬ ਦੇਵੋ'; +$lang['Post_topic_as'] = 'ਵਿਸ਼ਾ ਇਸ ਤਰà©à¨¹à¨¾à¨‚ ਖੋਲà©à¨¹à©‹'; +$lang['Edit_Post'] = 'ਲੇਖ ਬਦਲੋ'; +$lang['Options'] = 'ਚੋਣਾਂ'; + +$lang['Post_Announcement'] = 'à¨à¨²à¨¾à¨¨'; +$lang['Post_Sticky'] = 'ਚਿਪਕਵਾਂ'; +$lang['Post_Normal'] = 'ਸਾਧਾਰਣ'; + +$lang['Confirm_delete'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਲੇਖ ਰੱਦ ਕਰਨਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; +$lang['Confirm_delete_poll'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਚੋਣ ਰੱਦ ਕਰਨਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; + +$lang['Flood_Error'] = 'ਤà©à¨¸à©€à¨‚ ਇਕ ਲੇਖ ਲਿਖਣ ਤੋਂ ਬਾਦ, ਇਹਨੀਂ ਜਲਦੀ ਦà©à¨¬à¨¾à¨°à¨¾ ਨਹੀਂ ਇਕ ਨਵਾਂ ਲੇਖ ਨਹੀਂ ਭੇਜ ਸਕਦੇ। ਕਿਰਪਾ ਕਰਕੇ ਥੋੜੀ ਦੇਰ ਬਾਦ ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ।'; +$lang['Empty_subject'] = 'ਇਕ ਨਵਾਂ ਵਿਸ਼ਾ ਖੋਲà©à¨¹à¨£ ਤੋਂ ਪਹਿਲਾ, ਇਕ ਸਿਰਲੇਖ ਦੇਣਾ ਜਰੂਰੀ ਹੈ'; +$lang['Empty_message'] = 'ਸਨੇਹਾ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾ, ਪੰਨੇ ਵਿੱਚ ਲੇਖ ਲਿਖਣਾ ਜਰੂਰੀ ਹੈ'; +$lang['Forum_locked'] = 'ਇਹ ਅਖਾੜਾ ਬੰਦ ਹੈ: ਤà©à¨¸à©€à¨‚ ਇੱਥੇ ਲੇਖ ਨਹੀਂ ਲਿਖ ਸਕਦੇ, ਤੇ ਨਾ ਹੀ ਜਵਾਬ ਦੇ ਸਕਦੇ ਹੋ ਜਾਂ ਵਿਸ਼ੇ ਬਦਲ ਸਕਦੇ।'; +$lang['Topic_locked'] = 'ਇਹ ਵਿਸ਼ਾ ਬੰਦ ਹੈ: ਤà©à¨¸à©€à¨‚ ਇੱਥੇ ਜਵਾਬ ਨਹੀਂ ਦੇ ਸਕਦੇ, ਤੇ ਨਾ ਹੀ ਲੇਖ ਬਦਲ ਸਕਦੇ।'; +$lang['No_post_id'] = 'ਬਦਲੀ ਕਰਨ ਲਈ, ਕੋਈ ਲੇਖ ਚà©à¨£à©‹à¥¤'; +$lang['No_topic_id'] = 'ਜਵਾਬ ਦੇਣ ਲਈ, ਕੋਈ ਵਿਸ਼ਾ ਚà©à¨£à©‹à¥¤'; +$lang['No_valid_mode'] = 'ਇੱਥੇ ਤà©à¨¸à©€à¨‚ ਕੇਵਲ ਨਵੇਂ ਲੇਖ ਲਿਖ ਸਕਦੇ, ਜਵਾਬ ਦੇ ਸਕਦੇ, ਜਾਂ ਹਵਾਲਾ ਦੇ ਸਕਦੇ ਹੋ। ਕਿਰਪਾ ਕਰਕੇ ਵਾਪਸ ਜਾਓ, ਅਤੇ ਦà©à¨¬à¨¾à¨°à¨¾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।'; +$lang['No_such_post'] = 'ਅਜਿਹਾ ਕੋਈ ਲੇਖ ਨਹੀਂ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਵਾਪਸ ਜਾਓ, ਅਤੇ ਦà©à¨¬à¨¾à¨°à¨¾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।'; +$lang['Edit_own_posts'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਤà©à¨¸à©€à¨‚ ਕੇਵਲ ਆਪਣੇ ਲੇਖ ਬਦਲ ਸਕਦੇ ਹੋ।'; +$lang['Delete_own_posts'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਤà©à¨¸à©€à¨‚ ਕੇਵਲ ਆਪਣੇ ਲੇਖ ਰੱਦ ਕਰ ਸਕਦੇ ਹੋ।'; +$lang['Cannot_delete_replied'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਅਜਿਹੇ ਲੇਖ ਜਿਨà©à¨¹à¨¾à¨‚ ਉੱਤੇ ਜਵਾਬ ਆਂ ਚà©à©±à¨•à©‡ ਹਨ, ਓਹ ਤà©à¨¸à©€à¨‚ ਨਹੀਂ ਰੱਦ ਕਰ ਸਕਦੇ।'; +$lang['Cannot_delete_poll'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਇਕ ਚਾਲੂ ਚੋਣ ਤà©à¨¸à©€à¨‚ ਨਹੀਂ ਰੱਦ ਕਰ ਸਕਦੇ।'; +$lang['Empty_poll_title'] = 'ਆਪਣੀ ਚੋਣ ਲਈ ਇਕ ਸਿਰਲੇਖ ਦੇਵੋ।'; +$lang['To_few_poll_options'] = 'ਇਕ ਚੋਣ ਬਣਾਉਣ ਲਈ, ਘੱਟ ਤੋਂ ਘੱਟ ਦੋ ਵਿਕਲਪ ਦੇਵੋ'; +$lang['To_many_poll_options'] = 'ਤà©à¨¸à©€à¨‚ ਇਸ ਚੋਣ ਦੇ ਹੱਦ ਤੋਂ ਵੱਧ ਵਿਕਲਪ ਦਿੱਤੇ ਹਨ।'; +$lang['Post_has_no_poll'] = 'ਇਸ ਲੇਖ ਵਿੱਚ ਕੋਈ ਚੋਣ ਨਹੀਂ ਹੈ।'; +$lang['Already_voted'] = 'ਤà©à¨¸à©€à¨‚ ਪਹਿਲਾ ਤੋਂ ਵੋਟ ਪਾ ਚà©à©±à¨•à©‡ ਹੋ।'; +$lang['No_vote_option'] = 'ਵੋਟ ਪੋਣ ਲੱਗਿਆ, ਇਕ ਵਿਕਲਪ ਚà©à¨£à©‹à¥¤'; + +$lang['Add_poll'] = 'ਇਕ ਚੋਣ ਨਾਲ ਜੋੜੋ'; +$lang['Add_poll_explain'] = 'ਜੇ ਤà©à¨¸à©€à¨‚ ਆਪਣੇ ਲੇਖ ਨਾਲ ਇਕ ਚੋਣ ਨਹੀਂ ਜੋੜਨਾ ਚਾਹà©à©°à¨¦à©‡ ਤਾਂ ਚੋਣ-ਖੇਤਰ ਖਾਲੀ ਰੈਣ ਦੇਵੋ।'; +$lang['Poll_question'] = 'ਚੋਣ ਸਵਾਲ'; +$lang['Poll_option'] = 'ਚੋਣ ਵਿਕਲਪ'; +$lang['Add_option'] = 'ਵਿਕਲਪ ਜੋੜੋ'; +$lang['Update'] = 'ਅਪਡੇਟ'; +//pa $lang['Delete'] = 'ਰੱਦ'; +$lang['Delete'] = 'ਰੱਦ ਕਰੋ'; +$lang['Poll_for'] = 'ਇੰਨੇ ਦਿਨਾ ਲਈ ਚਾਲੂ'; +$lang['Days'] = 'ਦਿਨ'; // This is used for the Run poll for ... Days + in admin_forums for pruning +$lang['Poll_for_explain'] = '[ 0 ਦੱਬੋ ਜਾਂ ਹਮੇਸ਼ਾ ਚਲਦੀ ਚੋਣ ਲਈ ਜਗਾ ਖਾਲੀ ਰੈਣ ਦੇਵੋ]'; +$lang['Delete_poll'] = 'ਚੋਣ ਰੱਦ ਕਰੋ'; + +$lang['Disable_HTML_post'] = 'ਇਸ ਲੇਖ ਵਿੱਚ HTML ਕੋਡ ਦਾ ਨਕਾਰ ਕਰੋ'; +$lang['Disable_BBCode_post'] = 'ਇਸ ਲੇਖ ਵਿੱਚ BBCode ਦਾ ਨਕਾਰ ਕਰੋ'; +$lang['Disable_Smilies_post'] = 'ਇਸ ਲੇਖ ਵਿੱਚ ਸਮਾਈਲੀਜ਼ ਦਾ ਨਕਾਰ ਕਰੋ'; + +$lang['HTML_is_ON'] = 'HTML ਚਾਲੂ ਹੈ'; +$lang['HTML_is_OFF'] = 'HTML ਬੰਦ ਹੈ'; +$lang['BBCode_is_ON'] = '%sBBCode%s ਚਾਲੂ ਹੈ'; // %s are replaced with URI pointing to FAQ +$lang['BBCode_is_OFF'] = '%sBBCode%s ਬੰਦ ਹੈ'; +$lang['Smilies_are_ON'] = 'ਸਮਾਈਲੀਜ਼ ਚਾਲੂ ਹਨ'; +$lang['Smilies_are_OFF'] = 'ਸਮਾਈਲੀਜ਼ ਬੰਦ ਹਨ'; + +$lang['Attach_signature'] = 'ਦਸਤਖ਼ਤ ਜੋੜੋ (ਦਸਤਖ਼ਤ ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਵਿੱਚ ਜਾ ਕੇ ਬਦਲੇ ਜਾ ਸਕਦੇ ਹਨ)'; +$lang['Notify'] = 'ਜਵਾਬ ਆਉਣ ਤੇ ਮੈਨੂੰ ਸà©à¨šà©‡à¨¤ ਕਰੋ'; +$lang['Delete_post'] = 'ਇਹ ਲੇਖ ਰੱਦ ਕਰੋ'; + +$lang['Stored'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਲੇਖ ਸਫ਼ਲਤਾ ਨਾਲ ਪਹà©à©°à¨š ਗਿਆ ਹੈ।'; +$lang['Deleted'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਲੇਖ ਸਫ਼ਲਤਾ ਨਾਲ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।'; +$lang['Poll_delete'] = 'ਤà©à¨¹à¨¾à¨¡à©€ ਚੋਣ ਸਫ਼ਲਤਾ ਨਾਲ ਰੱਦ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ।'; +$lang['Vote_cast'] = 'ਤà©à¨¹à¨¾à¨¡à©€ ਵੋਟ ਸਫ਼ਲਤਾ ਨਾਲ ਪਾਈ ਗਈ ਹੈ।'; +$lang['Topic_reply_notification'] = 'ਵਿਸ਼ਾ ਜਵਾਬੀ ਸੂਚਨਾ'; + +$lang['bbcode_b_help'] = 'ਉੱਘੜੇ ਅੱਖਰ: [b]ਅੱਖਰ[/b] (alt+b)'; +$lang['bbcode_i_help'] = 'ਇਟੈਲਿਕ ਅੱਖਰ: [i]ਅੱਖਰ[/i] (alt+i)'; +$lang['bbcode_u_help'] = 'ਹੇਠ-ਲਕੀਰ ਵਾਲੇ ਅੱਖਰ: [u]ਅੱਖਰ[/u] (alt+u)'; +$lang['bbcode_q_help'] = 'ਹਵਾਲੇ ਵਾਲੇ ਲੇਖ: [quote]ਲੇਖ[/quote] (alt+q)'; +$lang['bbcode_c_help'] = 'ਕੋਡ ਦਿਖਾਉਣਾ: [code]ਕੋਡ[/code] (alt+c)'; +$lang['bbcode_l_help'] = 'ਲਿਸਟ: [list]ਅੱਖਰ[/list] (alt+l)'; +$lang['bbcode_o_help'] = 'ਛਾਂਟੀ ਕੀਤੀ ਲਿਸਟ: [list=]ਅੱਖਰ[/list] (alt+o)'; +$lang['bbcode_p_help'] = 'ਤਸਵੀਰ ਜੋੜੋ: [img]http://image_url[/img] (alt+p)'; +$lang['bbcode_w_help'] = 'URL ਜੋੜੋ: [url]http://url[/url] ਜਾਂ [url=http://url]URL ਸੂਚਨਾ[/url] (alt+w)'; +$lang['bbcode_a_help'] = 'ਸਾਰੇ ਖà©à¨²à©‡ bbCode ਟੈਗ ਬੰਦ ਕਰੋ'; +$lang['bbcode_s_help'] = 'ਲਿੱਪੀ ਦਾ ਰੰਗ: [color=red]ਅੱਖਰ[/color] ਨà©à¨¸à©™à¨¾: ਤà©à¨¸à©€à¨‚ ਰੰਗ ਦੀ ਨਾਂ ਦੇ ਥਾਂ ਤੇ ਰੰਗੇ ਦੇ ਨੰਬਰ ਵੀ ਪਾ ਸਾਕਦੇ ਹੋ।'; +$lang['bbcode_f_help'] = 'ਲਿੱਪੀ ਦਾ ਆਕਾਰ: [size=x-small]ਛੋਟੇ ਅੱਖਰ[/size]'; + +$lang['Emoticons'] = 'ਸਮਾਈਲੀਜ਼'; +$lang['More_emoticons'] = 'ਹੋਰ ਸਮਾਈਲੀਜ਼ ਵੇਖੋ'; + +$lang['Font_color'] = 'ਲਿੱਪੀ ਦਾ ਰੰਗ'; +$lang['color_default'] = 'ਆਮ'; +$lang['color_dark_red'] = 'ਲਾਲ-ਸ਼ਾਹੀ'; +$lang['color_red'] = 'ਲਾਲ'; +$lang['color_orange'] = 'ਸੰਤਰੇ-ਰੰਗਾ'; +$lang['color_brown'] = 'ਭੂਰਾ'; +$lang['color_yellow'] = 'ਪੀਲਾ'; +$lang['color_green'] = 'ਹਰਾ'; +$lang['color_olive'] = 'ਜ਼ੈਤੂਨ-ਰੰਗਾ'; +$lang['color_cyan'] = 'ਅਕਾਸ਼-ਨੀਲਾ'; +$lang['color_blue'] = 'ਨੀਲਾ'; +$lang['color_dark_blue'] = 'ਨੀਲਾ-ਸ਼ਾਹੀ'; +$lang['color_indigo'] = 'ਇਨਡਿਗੋ'; +$lang['color_violet'] = 'ਜਾਮਣੀ'; +$lang['color_white'] = 'ਚਿੱਟਾ'; +$lang['color_black'] = 'ਕਾਲਾ'; + +$lang['Font_size'] = 'ਲਿੱਪੀ ਦਾ ਆਕਾਰ'; +//pn $lang['font_tiny'] = 'ਨੰਨਾ'; +$lang['font_tiny'] = 'ਬਰੀਕ'; +$lang['font_small'] = 'ਛੋਟਾ'; +$lang['font_normal'] = 'ਆਮ'; +$lang['font_large'] = 'ਵੱਡਾ'; +$lang['font_huge'] = 'ਮਹਾਨ'; + +$lang['Close_Tags'] = 'ਟੈਗ ਬੰਦ ਕਰੋ'; +$lang['Styles_tip'] = 'ਨà©à¨¸à©™à¨¾: ਸ਼ਬਦਾਂ ਦੇ ਰੂਪ ਅਸਾਨੀ ਨਾਲ ਬਦਲਣ ਲਈ ਓਹਨਾਂ ਨੂੰ ਚà©à¨£ ਲਵੋ, ਅਤੇ ਰੰਗ ਜਾਂ ਆਕਾਰ ਵਜੋਂ ਓਹਨਾਂ ਦਾ ਪਰਿਵਰਤਨ ਕਰੋ।'; + + +// +// Private Messaging +// +$lang['Private_Messaging'] = 'ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡'; + +$lang['Login_check_pm'] = 'ਆਪਣੇ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਪੜà©à¨¹à¨¨ ਲਈ ਅਖਾੜਾ ਵਿੱਚ ਉਪਭੋਗੀ-ਨਾਂ ਵਰਤ ਕੇ ਅੰਦਰ ਆਓ'; +$lang['New_pms'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ %d ਨਵੇਂ ਨਿਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਆਠਹਨ'; // You have 2 new messages +$lang['New_pm'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ %d ਨਵਾਂ ਨਿਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਆਇਆ ਹੈ'; // You have 1 new message +$lang['No_new_pm'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਕੋਈ ਨਵਾਂ ਨਿਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਨਹੀਂ ਆਇਆ'; +$lang['Unread_pms'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ %d ਸà©à¨¨à©‡à¨¹à©‡ ਅਜਿਹੇ ਹਨ, ਜਿਹੜੇ ਕੀ ਅਜੇ ਪੜà©à¨¹à©‡ ਨਹੀਂ ਗà¨'; +$lang['Unread_pm'] = 'ਤਹਾਡਾ %d ਸà©à¨¨à©‡à¨¹à¨¾ ਅਜਿਹਾ ਹੈ, ਜਿਹੜਾ ਕੀ ਅਜੇ ਪੜà©à¨¹à¨¿à¨† ਨਹੀਂ ਗਿਆ'; +$lang['No_unread_pm'] = 'ਤà©à¨¸à©€à¨‚ ਸਾਰੇ ਸà©à¨¨à©‡à¨¹à©‡ ਪੜà©à¨¹ ਚà©à©±à¨•à©‡ ਹੋ'; +$lang['You_new_pm'] = 'ਇਕ ਨਵਾਂ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਆਇਆ ਹੈ'; +$lang['You_new_pms'] = 'ਨਵੇਂ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਆਠਹਨ'; +$lang['You_no_new_pm'] = 'ਕੋਈ ਨਵੇਂ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਨਹੀਂ ਆà¨'; + +$lang['Unread_message'] = 'ਨਹੀਂ ਪੜà©à¨¹à¨¿à¨† ਹੋਇਆ ਸà©à¨¨à©‡à¨¹à¨¾à¨'; +$lang['Read_message'] = 'ਪੜà©à¨¹à¨¿à¨† ਹੋਇਆ ਸà©à¨¨à©‡à¨¹à¨¾'; + +$lang['Read_pm'] = 'ਨਿਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਪੜà©à¨¹à©‹'; +$lang['Post_new_pm'] = 'ਨਿਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਭੇਜੋ'; +$lang['Post_reply_pm'] = 'ਜਵਾਬ ਭੇਜੋ'; +$lang['Post_quote_pm'] = 'ਹਵਾਲੇ ਨਾਲ ਜਵਾਬ ਭੇਜੋ'; +$lang['Edit_pm'] = 'ਨਿਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਬਦਲੋ'; + +$lang['Inbox'] = 'ਅੰਦਰਲਾ ਬਕਸ'; +$lang['Outbox'] = 'ਬਾਹਰਲਾ ਬਕਸ'; +$lang['Savebox'] = 'ਬਚਾਠਸà©à¨¨à©‡à¨¹à©‡'; +$lang['Sentbox'] = 'ਭੇਜੇ ਸà©à¨¨à©‡à¨¹à©‡'; +$lang['Flag'] = 'à¨à©°à¨¡à¨¾'; +$lang['Subject'] = 'ਵਿਸ਼ਾ'; +$lang['From'] = 'ਵੱਲੋਂ'; +$lang['To'] = 'ਨੂੰ'; +$lang['Date'] = 'ਤਾਰੀਖ਼'; +$lang['Mark'] = 'ਨਿਸ਼ਾਨ'; +$lang['Sent'] = 'ਭੇਜਿਆ ਗਿਆ'; +$lang['Saved'] = 'ਬਚਾਇਆ ਗਿਆ'; +$lang['Delete_marked'] = 'ਨਿਸ਼ਾਨ ਵਾਲੇ ਰੱਦ ਕਰੋ'; +$lang['Delete_all'] = 'ਸਾਰੇ ਰੱਦ ਕਰੋ'; +$lang['Save_marked'] = 'ਨਿਸ਼ਾਨ ਵਾਲੇ ਬਚਾਓ'; +$lang['Save_message'] = 'ਸà©à¨¨à©‡à¨¹à¨¾ ਬਚਾਓ'; +$lang['Delete_message'] = 'ਸà©à¨¨à©‡à¨¹à¨¾ ਰੱਦ ਕਰੋ'; + +$lang['Display_messages'] = 'ਪà©à¨°à¨¾à¨£à©‡ ਸà©à¨¨à©‡à¨¹à©‡ ਦੇਖਾਵੋ:'; // Followed by number of days/weeks/months +$lang['All_Messages'] = 'ਸਾਰੇ ਸà©à¨¨à©‡à¨¹à©‡'; + +$lang['No_messages_folder'] = 'ਇਸ ਜਿਲਦ ਵਿੱਚ ਕੋਈ ਸà©à¨¨à©‡à¨¹à©‡ ਨਹੀਂ ਹਨ'; + +$lang['PM_disabled'] = 'ਇਸ ਅਖਾੜੇ ਵਿੱਚ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਭੇਜਣੇ ਮਨà©à¨¹à¨¾ ਹਨ।'; +$lang['Cannot_send_privmsg'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਪà©à¨°à¨¬à©°à¨§à¨• ਨੇ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਭੇਜਣ ਤੋਂ ਤà©à¨¹à¨¾à¨¡à©‡ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਈ ਹੈ।'; +$lang['No_to_user'] = 'ਜਿਸ ਉਪਭੋਗੀ ਨੂੰ ਇਹ ਸà©à¨¨à©‡à¨¹à¨¾ ਭੇਜਣਾ ਹੈ ਉਸ ਦਾ ਨਾਂ ਸਪਸ਼ਟ ਕਰੋ।'; +$lang['No_such_user'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਇਸ ਨਾਂ ਦਾ ਕੋਈ ਉਪਭੋਗੀ ਦਰਜ ਨਹੀਂ ਹੈ।'; + +$lang['Disable_HTML_pm'] = 'ਇਸ ਸà©à¨¨à©‡à¨¹à©‡ ਵਿੱਚ HTML ਕੋਡ ਦਾ ਨਕਾਰ ਕਰੋ'; +$lang['Disable_BBCode_pm'] = 'ਇਸ ਸà©à¨¨à©‡à¨¹à©‡ ਵਿੱਚ BBCode ਦਾ ਨਕਾਰ ਕਰੋ'; +$lang['Disable_Smilies_pm'] = 'ਇਸ ਸà©à¨¨à©‡à¨¹à©‡ ਵਿੱਚ ਸਮਾਈਲੀਜ਼ ਦਾ ਨਕਾਰ ਕਰੋ'; + +$lang['Message_sent'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਸà©à¨¨à©‡à¨¹à¨¾ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ।'; + +$lang['Click_return_inbox'] = 'ਅੰਦਰਲੇ ਬਕਸ ਵਿੱਚ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; +$lang['Click_return_index'] = 'ਵਿਸ਼ਾ-ਸੂਚੀ ਵਿੱਚ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; + +$lang['Send_a_new_message'] = 'ਇਕ ਨਵਾਂ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਭੇਜੋ'; +$lang['Send_a_reply'] = 'ਇਕ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਦਾ ਜਵਾਬ ਦੇਵੋ'; +$lang['Edit_message'] = 'ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਨੂੰ ਬਦਲੋ'; + +$lang['Notification_subject'] = 'ਨਵਾਂ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਆਇਆ ਹੈ!'; + +$lang['Find_username'] = 'ਉਪਭੋਗੀ ਦੀ ਖੋਜ ਕਰੋ'; +$lang['Find'] = 'ਲੱਭੋ'; +$lang['No_match'] = 'ਕੋਈ ਜੋੜ ਨਹੀਂ ਮਿਲਿਆ।'; + +$lang['No_post_id'] = 'ਕੋਈ ਲੇਖ ਆਈ.ਡੀ. ਨਹੀਂ ਸਪਸ਼ਟ ਕੀਤੀ ਗਈ'; +$lang['No_such_folder'] = 'ਅਜਿਹੀ ਕੋਈ ਜਿਲਦ ਮੌਜੂਦ ਨਹੀਂ ਹੈ'; +$lang['No_folder'] = 'ਕੋਈ ਜਿਲਦ ਸਪਸ਼ਟ ਨਹੀਂ ਕੀਤੀ ਗਈ'; + +$lang['Mark_all'] = 'ਸਾਰਿਆ ਤੇ ਨਿਸ਼ਾਨ ਲਾਓ'; +$lang['Unmark_all'] = 'ਸਾਰਿਆ ਤੋਂ ਨਿਸ਼ਾਨ ਹਟਾਓ'; + +$lang['Confirm_delete_pm'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਸà©à¨¨à©‡à¨¹à¨¾ ਰੱਦ ਕਰਨਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; +$lang['Confirm_delete_pms'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਸà©à¨¨à©‡à¨¹à©‡ ਰੱਦ ਕਰਨਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; + +$lang['Inbox_size'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਅੰਦਰਲਾ ਬਕਸ %d%% ਭਰਿਆ ਹੈ'; // eg. Your Inbox is 50% full +$lang['Sentbox_size'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਭੇਜੇ ਸà©à¨¨à©‡à¨¹à¨¿à¨† ਵਾਲਾ ਬਕਸ %d%% ਭਰਿਆ ਹੈ'; +$lang['Savebox_size'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਬਚਾਠਸà©à¨¨à©‡à¨¹à¨¿à¨† ਵਾਲਾ ਬਕਸ %d%% ਭਰਿਆ ਹੈ'; +$lang['Click_view_privmsg'] = 'ਅੰਦਰਲਾ ਬਕਸ ਵਿੱਚ ਜਾਣ ਲਈ %sਇੱਥੇ%s ਕੜਿੱਕ ਕਰੋ'; + + +// +// Profiles/Registration +// +$lang['Viewing_user_profile'] = 'ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² :: %s'; // %s is username +$lang['About_user'] = '%s ਬਾਰੇ ਜਾਣਕਾਰੀ'; // %s is username + +$lang['Preferences'] = 'ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ'; +$lang['Items_required'] = 'ਜੇ ਕà©à¨ ਹੋਰ ਨਹੀਂ ਦੱਸਿਆ ਗਿਆ ਤਾਂ * ਵਾਲੀ ਨਿਸ਼ਾਨੀ ਦਾ ਮਤਲਬ ਕੀ ਇਹ ਸੂਚਨਾ ਦੇਣੀ ਜ਼ਰੂਰੀ ਹੈ।'; +$lang['Registration_info'] = 'ਦਾਖਲਾ ਜਾਣਕਾਰੀ'; +$lang['Profile_info'] = 'ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਜਾਣਕਾਰੀ'; +$lang['Profile_info_warn'] = 'ਇਹ ਜਾਣਕਾਰੀ ਸਰਵ-ਪà©à¨°à¨šà¨²à¨¿à¨¤, ਯਾਨੀ ਸਾਰਿਆ ਲਈ ਉਪਲਬਧ ਹੋਵੇਗੀ'; +$lang['Avatar_panel'] = 'ਅਵਤਾਰ ਜ਼ਬਤ-ਖੰਡ'; +$lang['Avatar_gallery'] = 'ਅਵਤਾਰ ਗੈਲਰੀ'; + +$lang['Website'] = 'ਵੈਬ-ਸਾਈਟ'; +$lang['Location'] = 'ਸਥਾਨ'; +$lang['Contact'] = 'ਸੰਪਰਕ'; +$lang['Email_address'] = 'ਈ-ਮੇਲ ਪਤਾ'; +//*--------------------------------- // +//*-- extr +//*-- pu +$lang['Email'] = 'ਈ-ਮੇਲ'; +//*-------------------------------- // +$lang['Send_private_message'] = 'ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਭੇਜੋ'; +$lang['Hidden_email'] = '[ ਲà©à¨•à¨¿à¨† ਈ-ਮੇਲ ]'; +$lang['Search_user_posts'] = 'ਇਸ ਉਪਭੋਗੀ ਦੇ ਲੇਖ ਲੱਭੋ'; +$lang['Interests'] = 'ਦਿਲਚਸਪੀਆਂ'; +$lang['Occupation'] = 'ਕਾਰ ਵਿਹਾਰ'; +$lang['Poster_rank'] = 'ਦਰਜਾ'; + +$lang['Total_posts'] = 'ਕà©à©±à¨² ਲੇਖ'; +$lang['User_post_pct_stats'] = '%.2f%% ਸਾਰਿਆ ਵਿੱਚੋਂ'; // 1.25% of total +$lang['User_post_day_stats'] = '%.2f ਰà©à©›à¨¾à¨¨à¨¾ ਲੇਖ'; // 1.5 posts per day +//*-- +//*-- rename to Search_all_user_posts +//*-- +$lang['Search_user_posts'] = '%s ਦੇ ਸਾਰੇ ਲੇਖ ਲੱਭੋ'; // Find all posts by username + +$lang['No_user_id_specified'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਓਹ ਉਪਭੋਗੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।'; +$lang['Wrong_Profile'] = 'ਤà©à¨¸à©€à¨‚ ਹੋਰ ਉਪਭੋਗਿਆ ਦੀ ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਨਹੀਂ ਬਦਲ ਸਕਦੇ।'; +$lang['Only_one_avatar'] = 'ਕੇਵਲ ਇਕ ਅਵਤਾਰ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ'; +$lang['File_no_data'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਵਜੋਂ ਦਿੱਤੇ URL ਵਾਲੀ ਫਾਈਲ ਖਾਲੀ ਹੈ'; +$lang['No_connection_URL'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਵਜੋਂ ਦਿੱਤੇ URL ਨਾਲ ਸੰਪਰਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ'; +$lang['Incomplete_URL'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਵਜੋਂ ਦਿੱਤਾ URL ਅਧੂਰਾ ਹੈ'; +$lang['Wrong_remote_avatar_format'] = 'ਨਿਵੇਕਲੇ ਅਵਤਾਰ ਦਾ URL ਖਰਾਬ ਹੈ'; +$lang['No_send_account_inactive'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਤà©à¨¹à¨¾à¨¡à¨¾ ਗà©à¨ªà¨¤-ਕੋਡ ਨਹੀਂ ਕੱਢਿਆ ਜਾ ਸਕਦਾ, ਕਿਉਂਕਿ ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਅਜੇ ਚਾਲ਼ੂ ਨਹੀਂ ਕੀਤਾ ਗਿਆ। ਵਧੇਰੀ ਜਾਣਕਾਰੀ ਲਈ ਅਖਾੜਾ-ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।'; + +$lang['Always_smile'] = 'ਸਮਾਈਲੀਜ਼ ਹਮੇਸ਼ਾ ਚਾਲੂ ਰੈਣ'; +$lang['Always_html'] = 'HTML ਹਮੇਸ਼ਾ ਚਾਲੂ ਰਵੇ'; +$lang['Always_bbcode'] = 'BBCode ਹਮੇਸ਼ਾ ਚਾਲੂ ਰਵੇ'; +$lang['Always_add_sig'] = 'ਮੇਰੇ ਦਸਤਖ਼ਤ ਹਮੇਸ਼ਾ ਜੋੜੇ ਜਾਣ'; +$lang['Always_notify'] = 'ਮੈਨੂੰ ਹਮੇਸ਼ਾ ਨਵੇਂ ਜਵਾਬਾਂ ਬਾਰੇ ਸੂਚਨਾ ਦਿੱਤੀ ਜਾਵੇ'; +$lang['Always_notify_explain'] = 'ਜਦੋਂ ਕੋਈ ਅਜਿਹੇ ਵਿਸ਼ੇ ਅੰਦਰ ਜਿੱਥੇ ਤà©à¨¸à©€à¨‚ ਲੇਖ ਲਿਖਿਆ ਸੀ, ਇਕ ਨਵਾਂ ਜਵਾਬ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਈ-ਮੇਲ ਦà©à¨†à¨°à¨¾ ਸਚੇਤ ਕੀਤਾ ਜਾਵੇਗਾ।'; + +$lang['Board_style'] = 'ਅਖਾੜੇ ਦਾ ਆਕਾਰ'; +$lang['Board_lang'] = 'ਅਖਾੜੇ ਦੀ ਬੋਲੀ'; +$lang['No_themes'] = 'ਡਾਟਾਬੇਸ ਵਿਚ ਕੋਈ ਥੀਮ ਨਹੀਂ ਹੈ'; +$lang['Timezone'] = 'ਇਲਾਕੇ ਦਾ ਸਮਾਂ'; +$lang['Date_format'] = 'ਤਾਰੀਖ਼ ਲਿਖਣ ਦਾ ਤਰੀਕਾ'; +$lang['Date_format_explain'] = 'ਤਾਰੀਖ਼ ਲਿਖਣ ਦਾ ਤਿਰਕਾ PHP ਦੀ date() ਅਧਿਕਾਰ ਵਰਗਾ ਹ।'; +$lang['Signature'] = 'ਦਸਤਖ਼ਤ'; +$lang['Signature_explain'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਦਸਤਖ਼ਤ ਲੇਖ ਦੇ ਨਾਲ ਦਿਖਾਈ ਜਾਵੇਗੀ। %d ਅੱਖਰਾ ਤੋਂ ਜ਼ਿਆਦਾ ਨਹੀ ਲੋਖ ਸਕਦੀ।'; +$lang['Public_view_email'] = 'ਮੇਰੀ ਈ-ਮੇਲ ਸਾਰੇ ਦੇਖ ਸਕਦੇ ਹਨ'; + +$lang['Current_password'] = 'ਹà©à¨£ ਵਾਲਾ ਗà©à¨ªà¨¤-ਕੋਡ'; +$lang['New_password'] = 'ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ'; +$lang['Confirm_password'] = 'ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਇਕ ਵਾਰ ਫਿਰ'; +$lang['Confirm_password_explain'] = 'ਜੇ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਜਾ ਈ-ਮੇਲ ਦਾ ਪਤਾ ਬਦਾਲਨਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ ਉਸ ਲਈ ਤਹਾਨੂੰ ਹà©à¨£ ਵਾਲਾ ਗà©à¨ªà¨¤-ਕੋਡ ਲਿਖਣਾ ਪਾਵੇਗਾ।'; +$lang['password_if_changed'] = 'ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸਿਰਫ਼ ਆਪਣਾ ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਉਦੋ ਹੀ ਲਿਖਣਾ ਪਾਵੇਗਾ ਜੇਕਰ ਤà©à¨¸à©€à¨‚ ਬਾਦਲਾਨਾ ਚਾਹੋ।'; +$lang['password_confirm_if_changed'] = 'ਜੇਕਰ ਤà©à¨¸à©€à¨‚ ਆਪਣਾ ਗà©à¨ªà¨¤-ਕੋਡ ਬਾਦਲਾਨਾ ਹੋਵੇ ਇਕ ਵਾਰ ਹੋਰ ਆਪਣਾ ਨਵਾਂ ਇਕ ਵਾਰ ਫਿਰ ਲਿਖਾਣਾ ਪਾਵੇਗਾ।'; + +$lang['Avatar'] = 'ਅਵਤਾਰ'; +$lang['Avatar_explain'] = 'ਛੋਟੀ ਜਹੀ ਫੋਟੋ ਤà©à¨¹à¨¾à¨¡à©‡ ਲੇਖ ਦੇ ਨਾਲ ਦਿਖਾਈ ਜਾਵੇਗੀ। ਸਿਰਫ ਇਕੋ ਤਸਵੀਰ ਹੀ ਦਿਖਾਈ ਜਾਦੀ ਹੈ ਇਕ ਉਪਭੋਗੀ ਦੇ ਨਾਲ। ਤਸਵੀਰ ਦੀ ਚੋੜਾਈ %d pixels ਅਤੇ ਲੰਬਾਈ %d pixels ਤੋਂ ਵੱਡੀ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਫਾਇਲ ਦਾ ਨਾਪਾ %d KB ਤੋਂ ਵਧ ਨਹੀ ਹੋ ਸਕਦੀ।'; +$lang['Upload_Avatar_file'] = 'ਆਪਣੀ ਮਸ਼ੀਨ ਤੋਂ ਅਵਤਾਰ ਲੋਡ ਕਰੋ'; +$lang['Upload_Avatar_URL'] = 'ਕਿਸੇ URL ਤੋਂ ਅਵਤਾਰ ਲੋਡ ਕਰੋ'; +$lang['Upload_Avatar_URL_explain'] = 'ਉਸ ਸਥਾਨ ਦਾ URL ਲਿਖੋ ਜਿੱਥੇ ਅਵਤਾਰ ਲਈ ਤਸਵੀਰ ਪਈ ਹੈ, ਉਸਨੂੰ ਇੱਥੇ ਨਕਲ ਕਰ ਲਿਆ ਜਾਵੇਗਾ।'; +//*-- +//*-- Same as Select_from_gallery +//*-- +$lang['Pick_local_Avatar'] = 'ਗੈਲਰੀ ਵਿਚੋ ਅਵਤਾਰ ਚà©à¨£à©‹'; +$lang['Link_remote_Avatar'] = 'ਸਾਈਟ ਤੋਂ ਬਾਹਰ ਅਵਤਾਰ ਦੀ ਕੜੀ'; +$lang['Link_remote_Avatar_explain'] = 'ਅਵਤਾਰ ਲਈ ਉਸ ਤਸਵੀਰ ਦੀ ਸਥਿਤੀ ਦਾ URL ਲਿਖੋ, ਜਿਸ ਨਾਲ ਤà©à¨¸à©€à¨‚ ਕੜੀ ਬਣਾਉਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ'; +$lang['Avatar_URL'] = 'ਅਵਤਾਰ ਦੀ ਤਸਵੀਰ ਦਾ URL'; +//*-- +//*-- Same as Pick_local_Avatar +//*-- +$lang['Select_from_gallery'] = 'ਗੈਲਰੀ ਵਿਚੋ ਅਵਤਾਰ ਚà©à¨£à©‹'; +$lang['View_avatar_gallery'] = 'ਗੈਲਰੀ ਦਿਖਾਉ'; + +$lang['Select_avatar'] = 'ਅਵਤਾਰ ਚà©à¨£à©‹'; +$lang['Return_profile'] = 'ਅਵਤਾਰ ਨੂੰ ਰੱਦ ਕਰੋ'; +$lang['Select_category'] = 'ਸ਼ਰੇਣੀ ਚà©à¨£à©‹'; + +//*-- ? +$lang['Delete_Image'] = 'ਤਸਵੀਰ ਰੱਦ ਕਰੋ'; +//*-- ? +$lang['Current_Image'] = 'ਹà©à¨£ ਵਾਲੀ ਤਸਵੀਰ'; + +$lang['Notify_on_privmsg'] = 'ਨਵੇ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à¨¾ ਸà©à¨šà©‡à¨¤ ਕਰੋ।'; +$lang['Popup_on_privmsg'] = 'ਨਵਾਂ à¨à¨°à©Œà¨–ਾ ਖੋਲੋ ਨਿੱਜੀ ਸਨੇਹਾ ਆਈ ਤੋਂ'; +$lang['Popup_on_privmsg_explain'] = 'ਕà©à¨ ਨਮੂਨੈ ਸà©à¨šà©‡à¨¤ ਕਰਨ ਲਈ ਨਵਾਂ à¨à¨°à©Œà¨–ਾ ਖੋਲ ਦੇ ਹਨ ਨਵੀ ਨਿੱਜੀ ਸਨੇਹਾ ਆਈ ਤੋ'; +$lang['Hide_user'] = 'ਆਪਣਾ ਓਨਲਾਇਨ ਦਰਜਾ ਲà©à¨•à¨¾à¨“।'; + +$lang['Profile_updated'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਅਪਡੇਟ ਹੋ ਗਿਆ ਹ।'; +$lang['Profile_updated_inactive'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨² ਅਪਡੇਟ ਹੋ ਗਿਆ ਹ। ਪਰ ਤà©à¨¸à©€à¨‚ ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਬਾਦਲੀ ਹੈ ਇਸ ਲਈ ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਹà©à¨£ ਚਾਲੂ ਨਹੀ ਹੈ। ਆਪਣੀ ਈ-ਮੇਲ ਪੜੋ ਖਾਤਾ ਚਾਲੂ ਕਰਨ ਲਈ ਜਾਂ ਪà©à¨°à¨¶à¨¾à¨¸à¨• ਦੀ ਮਨਜੂਰ ਦੀ ਲੋੜ ਹੈ ਚਾਲੂ ਕਰਨ ਲਈ ਤਾਂ ਪà©à¨°à¨¶à¨¾à¨¸à¨• ਦੇ ਚਾਲੂ ਕਰਨ ਦਾ ਇੰਤਜ਼ਾਰ ਕਰੋ।'; + +$lang['Password_mismatch'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਗà©à¨ªà¨¤-ਕੋਡ ਇਕੌ ਜਾਹੇ ਨਹੀ ਸੀ।'; +$lang['Current_password_mismatch'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਹà©à¨£ ਵਾਲਾ ਗà©à¨ªà¨¤-ਕੋਡ ਪà©à¨°à¨¾à¨£à©‡ ਗà©à¨ªà¨¤-ਕੋਡ ਤੋ ਵੱਖਰਾ ਹੈ।'; +$lang['Password_long'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਗà©à¨ªà¨¤-ਕੋਡ 32 ਅੱਖਰਾਂ ਤੋ ਵੱਧ ਨਹੀ ਹੋਣਾ ਚਾਹਿਡਾ।'; +$lang['Too_many_registers'] = 'ਤà©à¨¸à©€à¨‚ ਬਹਤੇ ਵਾਰੀ ਹਜਾਇਸਰ ਕਰਨੇ ਦੀ ਕੋਸਸੀ ਕੀਤੀ ਹੈ ਇਸ ਲਈ ਥੋੜੀ ਦੇਰ ਠਹਰ ਕੇ ਕੋਸਸੀ ਕਰਨੀ'; +$lang['Username_taken'] = 'ਇਹ ਉਪਭੋਗੀ-ਨਾਂ ਕੋਈ ਹੋਰ ਵਾਰਤਾਦਾ ਹੈ।'; +//*--? à©ž or ਫ +$lang['Username_invalid'] = 'ਮਾਫ਼ ਕਰਨਾ ਤà©à¨¹à¨¾à¨¡à©‡ ਉਪਭੋਗੀ-ਨਾਂ ਵਿੱਚ ਗà©à¨²à¨¤ ਅੱਖਰ ਹਨ ਜਿਵੇ ਕੀ \' . ! @ + ...'; +//*--? à©ž or ਫ +$lang['Username_disallowed'] = 'ਮਾਫ਼ ਕਰਨਾ ਇਹ ਉਪਭੋਗੀ-ਨਾਂ ਤੇ ਪਾਬੰਦੀ ਹੈ।'; +//*--? à©ž or ਫ +$lang['Email_taken'] = 'ਮਾਫ਼ ਕਰਨਾ ਇਹ ਈ-ਮੇਲ ਕਿਸੇ ਹੋਰ ਦੇ ਨਾਮ ਹੇਠ ਦਰਜ ਕੀਤਾ ਹੋਇਆ ਹੈ।'; +//*--? à©ž or ਫ +$lang['Email_banned'] = 'ਮਾਫ਼ ਕਰਨਾ ਇਹ ਈ-ਮੇਲ ਪਤਾ ਤੇ ਪਾਬੰਦੀ ਹੈ।'; +//*--? à©ž or ਫ +$lang['Email_invalid'] = 'ਮਾਫ਼ ਕਰਨਾ ਤà©à¨¹à¨¾à¨¡à©‡ ਈ-ਮੇਲ ਵਿੱਚ ਗà©à¨²à¨¤ ਅੱਖਰ ਹਨ ਜਿਵੇ ਕੀ \' ! + ...'; +$lang['Signature_too_long'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਦਸਤਖ਼ਤ ਵਾਲਾ ਲੰਮਾ ਹੈ।'; +$lang['Fields_empty'] = 'ਸਾਰੀ ਜਾਣਕਾਰੀ ਭਾਰਨੀ ਜਰੂਰੀ ਹੈਂ।'; +$lang['Avatar_filetype'] = 'ਅਵਤਾਰ ਦੀ ਤਸਵੀਰ ਦੀ ਫਾਇਲ ਟਾਈਪ ਸਿਰਫ਼ .jpg, .gif or .png ਹੋ ਸਕਦਾ ਹੈ।'; +$lang['Avatar_filesize'] = 'ਅਵਤਾਰ ਦੀ ਤਸਵੀਰ ਦੀ ਫਾਇਲ ਦਾ ਨਾਪਾ %d KB ਤੋਂ ਵਧ ਨਹੀ ਹੋ ਸਕਦੀ।'; // The avatar image file size must be less than 6 KB +$lang['Avatar_imagesize'] = 'ਤਸਵੀਰ ਦੀ ਚੋੜਾਈ %d pixels ਅਤੇ ਲੰਬਾਈ %d pixels ਤੋਂ ਵੱਡੀ ਨਹੀਂ ਹੋ ਸਕਦੀ।'; + +$lang['Welcome_subject'] = '%s ਵੱਲੋ ਜੀ ਅਇਆ ਨੂੰ'; // from my.com forum welcome +$lang['New_account_subject'] = 'ਨਵੇ ਉਪਯੋਗਈ ਦਾ ਖਾਤਾ'; +$lang['Account_activated_subject'] = 'ਖਾਤਾ ਚਾਲੋ ਹੈ।'; + +$lang['Account_added'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਬਣ ਗਿਆ ਹੈ। ਤà©à¨¸à©€à¨‚ ਹà©à¨£ ਆਪਣੇ ਉਪਭੋਗੀ-ਨਾਂ ਤੇ ਗà©à¨ªà¨¤-ਕੋਡ ਨਾਲ ਅੰਦਰ ਆ ਸਕਦੇ ਹੋ। ਸ਼à©à¨•à¨°à©€à¨†à¥¤'; +$lang['Account_inactive'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਬਣ ਗਿਆ ਹੈ ਪਰ ਇਹ ਅਖਾੜਾ ਚਾਲੂ ਕਰਨ ਦੀ ਜਰੂਰਤ ਹੈ। ਚਾਲੂ ਕਰਨ ਵਾਲੀ ਚਾਬੀ ਤà©à¨¹à¨¾à¨¡à©‡ ਈ-ਮੇਲ ਨੂੰ ਭੇਜ ਦਿੱਤੀ ਗਈ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਈ-ਮੇਲ ਪਾੜੋ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ।'; +$lang['Account_inactive_admin'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਬਣ ਗਿਆ ਹੈ। ਪà©à¨°à¨¶à¨¾à¨¸à¨• ਦੇ ਮਨਜੂਰ ਕਰਨ ਤੇ ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਚਾਲੂ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਮਨਜੂਰ ਕਰਨ ਤੇ ਤਹਾਨੂੰ ਈ-ਮੇਲ ਭੇਜ ਦਿੱਤਾ ਜਾਵੇਗੀ।'; +$lang['Account_active'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਖਾਤਾ ਹà©à¨£ ਚਾਲੋ ਹੈ। ਸ਼à©à¨•à¨°à©€à¨†à¥¤'; +$lang['Account_active_admin'] = 'ਖਾਤਾ ਹà©à¨£ ਚਾਲੋ ਹੈ।'; +$lang['Reactivate'] = 'ਖਾਤਾ ਦà©à¨¬à¨¾à¨°à©‡ ਚਾਲੋ ਕਰੋ।'; +$lang['Already_activated'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਪਿਹਲਾ ਦਾ ਹੀ ਚਾਲੂ ਹੋ ਗਿਆ ਹੈ।'; +$lang['COPPA'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਬਣਾਇਆ ਗਇਆ ਹੈ ਪਰ ਹਲੇ ਮਨਜ਼ੂਰ ਨਹੀ ਕੀਤਾ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੀ ਈ-ਮੇਲ ਪੜ ਲਾਉ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ।'; + +$lang['Registration'] = 'ਦਾਖਲੇ ਦੀ ਇਕਰਾਰਨਾਮਾ ਸ਼ਰਤਾਂ'; +$lang['Reg_agreement'] = 'While the administrators and moderators of this forum will attempt to remove or edit any generally objectionable material as quickly as possible, it is impossible to review every message. Therefore you acknowledge that all posts made to these forums express the views and opinions of the author and not the administrators, moderators or webmaster (except for posts by these people) and hence will not be held liable.

    You agree not to post any abusive, obscene, vulgar, slanderous, hateful, threatening, sexually-oriented or any other material that may violate any applicable laws. Doing so may lead to you being immediately and permanently banned (and your service provider being informed). The IP address of all posts is recorded to aid in enforcing these conditions. You agree that the webmaster, administrator and moderators of this forum have the right to remove, edit, move or close any topic at any time should they see fit. As a user you agree to any information you have entered above being stored in a database. While this information will not be disclosed to any third party without your consent the webmaster, administrator and moderators cannot be held responsible for any hacking attempt that may lead to the data being compromised.

    This forum system uses cookies to store information on your local computer. These cookies do not contain any of the information you have entered above; they serve only to improve your viewing pleasure. The e-mail address is used only for confirming your registration details and password (and for sending new passwords should you forget your current one).

    By clicking Register below you agree to be bound by these conditions.'; + +$lang['Agree_under_13'] = 'ਮੈਨੂ ਇਹ ਸਾਰਾ ਮਜ਼ਬੂਰ ਹੈ ਅਤੇ ਮੇਰੀ ਉਮਰ 13 ਸਾਲ ਤੋਂ ਘੱਟ ਹਾ।'; +$lang['Agree_over_13'] = 'ਮੈਨੂ ਇਹ ਸਾਰਾ ਮਜ਼ਬੂਰ ਹੈ ਅਤੇ ਮੈਂ 13 ਸਾਲ ਦੀ ਉਮਰ ਜਾਂ ਵੱਡਾ ਹਾ।'; +$lang['Agree_not'] = 'ਮੈਨੂ ਇਹ ਨਹੀ ਮਜ਼ਬੂਰ ਹੈ।'; + +$lang['Wrong_activation'] = 'ਚਾਲੂ ਕਰਨ ਵਾਲੀ ਚਾਬੀ ਜਿਹੜੀ ਤà©à¨¸à©€à¨‚ ਦਿੱਤੀ ਹੈ ਉਹ ਸਾਡੇ ਰਿਕਾਰਡ ਨਾਲ ਨਹੀ ਮਿਲ ਰਿਹਾ ਹੈ।'; +$lang['Send_password'] = 'ਮੈਨੂ ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਭੇਜ ਦਿੳ।'; +$lang['Password_updated'] = 'ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਬਣ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਚਾਲੂ ਕਰਨ ਲਈ ਜਾਣਕਾਰੀ ਵਾਸਤੇ। ਆਪਣੀ ਈ-ਮੇਲ ਪਡੋ।'; +$lang['No_email_match'] = 'ਜਿਹੜਾ ਈ-ਮੇਲ ਪਤਾ ਤਸੀ ਦਿਤਾ ਹੈ ਉਹ ਉਪਭੋਗੀ-ਨਾਂ ਦੇ ਨਾਲ ਨਹੀ ਮਿਲਦਾ।'; +$lang['New_password_activation'] = 'ਨਵਾਂ ਗà©à¨ªà¨¤-ਕੋਡ ਚਾਲੂ ਹੈ।'; +$lang['Password_activated'] = 'ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਦà©à¨¬à¨¾à¨°à©‡ ਚਾਲੋ ਹੈ। ਅੰਦਰ ਆਉਣ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਈ-ਮੇਲ ਵਿੱਚ ਭੇਜਿਆ ਹੋਇ ਗà©à¨ªà¨¤-ਕੋਡ ਨੂੰ ਵਰਤੋ'; + +$lang['Send_email_msg'] = 'ਈ-ਮੇਲ ਸਨੇਹਾ ਭੇਜੋ।'; +$lang['No_user_specified'] = 'ਕੋਈ ਉਪਭੋਗੀ-ਨਾਂ ਨਹੀ ਦਿੱਤਾ ਗਿਆ।'; +$lang['User_prevent_email'] = 'ਇਹ ਉਪਭੋਗੀ ਕੋਈ ਈ-ਮੇਲ ਨਹੀ ਸà©à¨†à¨—ਤ ਕਰਨਾ ਚਾਹà©à¨¦à¨¾à¥¤ ਨਿੱਜੀ ਸà©à¨¨à©‡à¨¹à©‡ ਭੇਜਣੇ ਦੀ ਕੋਸੀਸ ਕਰਨਾ।'; +$lang['User_not_exist'] = 'ਇਹ ਉਪਭੋਗੀ-ਨਾਂ ਦਾ ਕੋਈ ਨਹੀ ਹੈ।'; +$lang['CC_email'] = 'ਇਹੀ ਸਾਨਦੇਸ਼ ਆਪਣੇ ਆਪ ਨੂੰ ਵੀ ਭੇਜੋ।'; +$lang['Email_message_desc'] = 'ਇਹ ਸà©à¨¨à©‡à¨¹à¨¾ ਪਲੇਨ ਟੈਕਸਟ ਦੇ ਰੂਪ ਵਿਚ ਭੇਜਿਆ ਜਾਵੇਗਾ, ਇਸ ਲਈ ਕੋਈ HTML ਜਾਂ BBCode ਸ਼ਾਮਲ ਨਾ ਕਰੋ। ਇਸ ਸà©à¨¨à©‡à¨¹à©‡ ਲਈ ਵਾਪਸੀ ਪਤਾ ਤà©à¨¹à¨¾à¨¡à©‡ ਈਮੇਲ ਪਤੇ ਤੇ ਭੇਜ ਦਿੱਤਾ ਜਾਵੇਗਾ।'; +$lang['Flood_email_limit'] = 'ਤà©à¨¸à©€à¨‚ ਹੋਰ ਈ-ਮੇਲ ਇਸ ਟਾਈਮ ਤੇ ਨਹੀ ਭੇਜ ਸਕਦੇ ਥੋੜੀ ਦੇਰ ਬਾਦ ਕੋਸੀਸ ਕਰਨਾ।'; +$lang['Recipient'] = 'ਸà©à¨†à¨—ਤ ਕਰਨ ਵਾਲਾ।'; +$lang['Email_sent'] = 'ਈ-ਮੇਲ ਭੇਜ ਦਿੱਤੀ ਗਈ ਹ।'; +$lang['Send_email'] = 'ਇਮੇਲ ਭੇਜੋ'; +$lang['Empty_subject_email'] = 'ਜ਼ੇ ਤà©à¨¸à©€à¨‚ ਈ-ਮੇਲ ਭੇਜਣੀ ਚਾਹà©à©°à¨¦à©‡ ਹੋ ਤਾਂ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਵਿਸ਼ਾ ਲਿਖਾਣਾ ਜਰੂਰੀ ਹੈ।'; +$lang['Empty_message_email'] = 'ਜ਼ੇ ਤà©à¨¸à©€à¨‚ ਈ-ਮੇਲ ਭੇਜਣੀ ਚਾਹà©à©°à¨¦à©‡ ਹੋ ਤਾਂ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਸਨੇਹਾ ਲਿਖਾਣਾ ਪਾਵੇਗਾ।'; + + +// +// Visual confirmation system strings +// +$lang['Confirm_code_wrong'] = 'ਤà©à¨¸à©€à¨‚ ਗਲਤ ਸਥਾਈਕਰਣ ਕੋਡ ਪਾਇਆ ਹੈ।'; +//*--------------------------------- // +//*-- extr +//*-- chang to $lang['Confirm_too_many_registers'] ? +$lang['Too_many_registers'] = 'ਤà©à¨¸à©€à¨‚ ਬਹਤੇ ਵਾਰੀ ਹਜਾਇਸਰ ਕਰਨੇ ਦੀ ਕੋਸਸੀ ਕੀਤੀ ਹੈ ਇਸ ਲਈ ਥੋੜੀ ਦੇਰ ਠਹਰ ਕੇ ਕੋਸਸੀ ਕਰਨੀ'; +//*--------------------------------- // +$lang['Confirm_code_impaired'] = 'ਜੇ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਘੱਟ ਦਿਖਦਾ ਹੈ ਜਾਂ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਕੋਡ ਨਹੀ ਦਿਖਾਈ ਦੇ ਰਿਹਾ ਕਿਰਪਾ ਕਰਕੇ ਪà©à¨°à¨¬à©°à¨§à¨• ਨਾਲ ਗੱਲ ਕਰੋ ਮਦਦ ਲਈ।'; +$lang['Confirm_code'] = 'ਸਥਾਈਕਰਣ ਕੋਡ'; +$lang['Confirm_code_explain'] = 'ਕੋਡ ਲਿਖੋ ਜਿਦਾ ਤà©à¨¸à©€à¨‚ ਦੇਖ ਰਹੋ ਹੋ। ਕੋਡ ਨਾਜ਼à©à¨• ਮਿਜ਼ਾਜ ਹੈ ਅਤੇ ਸਿਫ਼ਰ ਦੇ ਵਿੱਚ ਟੇਢੀ ਲਕੀਰ ਹੈ।'; + + +// +// Memberslist +// +$lang['Select_sort_method'] = 'ਚà©à¨£à©€ ਦਾ ਤਰੀਕਾ'; +$lang['Sort'] = 'ਛਾਂਟਣਾ'; +$lang['Sort_Top_Ten'] = 'ਪਿਹਲੇ ਦਸ ਲੇਖਕ'; +$lang['Sort_Joined'] = 'ਜà©à©œà¨¿à¨† ਤਾਰੀਖ਼'; +$lang['Sort_Username'] = 'ਉਪਭੋਗੀ-ਨਾਂ'; +$lang['Sort_Location'] = 'ਸਥਾਨ'; +$lang['Sort_Posts'] = 'ਕà©à©±à¨² ਲੇਖ'; +$lang['Sort_Email'] = 'ਈਮੇਲ'; +$lang['Sort_Website'] = 'ਵੈਬ-ਸਾਈਟ'; +$lang['Sort_Ascending'] = 'ਛੋਟੇ ਤੋ ਵਡਾ'; +$lang['Sort_Descending'] = 'ਵਡੇ ਤੋ ਛੋਟਾ'; +$lang['Order'] = 'ਪਦਵੀ'; + + +// +// Group control panel +// +$lang['Group_Control_Panel'] = 'ਗਰà©à©±à¨ª ਜ਼ਬਤ-ਖੰਡ'; +$lang['Group_member_details'] = 'ਗਰà©à©±à¨ª ਦੀ ਮੈਂਬਰਸਿਪ ਦੀ ਜਾਣਕਾਰੀ'; +$lang['Group_member_join'] = 'ਗਰà©à©±à¨ª ਵਿੱਚ ਹਾਜਿਰ ਹੋਵੋ'; + +$lang['Group_Information'] = 'ਗਰà©à©±à¨ª ਦੀ ਜਾਣਕਾਰੀ'; +$lang['Group_name'] = 'ਗਰà©à©±à¨ª ਦਾ ਨਾਂ'; +$lang['Group_description'] = 'ਗਰà©à©±à¨ª ਦੀ ਕਿਸਮ'; +$lang['Group_membership'] = 'ਗਰà©à©±à¨ª ਦੀ ਮੈਂਬਰਸਿਪ'; +$lang['Group_Members'] = 'ਗਰà©à©±à¨ª ਦੀ ਮੈਂਬਰ'; +$lang['Group_Moderator'] = 'ਗਰà©à©±à¨ª ਦਾ ਸੰਚਾਲਕ'; +$lang['Pending_members'] = 'ਅਨਿਸ਼ਿਚਤ ਮੈਂਬਰ'; + +$lang['Group_type'] = 'ਗਰà©à©±à¨ª ਦਾ ਨਮੂਨਾ'; +$lang['Group_open'] = 'ਗਰà©à©±à¨ª ਖà©à©±à¨²à¨¾ ਹੈ'; +$lang['Group_closed'] = 'ਗਰà©à©±à¨ª ਬੰਦ ਹੈ'; +$lang['Group_hidden'] = 'ਲà©à¨•à¨¿à¨† ਗਰà©à©±à¨ª'; + +$lang['Current_memberships'] = 'à¨à¨¸à©‡ ਵੇਲੇ ਦੀ ਮੈਂਬਰਸਿਪ'; +$lang['Non_member_groups'] = 'ਤà©à¨¸à©€à¨‚ ਇਹ ਗਰà©à©±à¨ªà¨¾ ਦੇ ਮੈਂਬਰ ਨਹੀ ਹੋ'; +//*-- ? +$lang['Memberships_pending'] = 'ਮੈਂਬਰਸਿਪ ਅਨਿਸ਼ਿਚਤ ਹੈ'; + +$lang['No_groups_exist'] = 'ਕੋਈ ਗਰà©à©±à¨ª ਨਹੀ ਹੈਗਾ।'; +//*-- ? +$lang['Group_not_exist'] = 'ਇਹ ਉਪਭੋਗੀਆਂ ਦਾ ਗਰà©à©±à¨ª ਨਹੀ ਹੈ।'; + +$lang['Join_group'] = 'ਗਰà©à©±à¨ª ਵਿੱਚ ਹਾਜਿਰ ਹੋਵੋ'; +$lang['No_group_members'] = 'ਇਸ ਗਰà©à©±à¨ª ਦਾ ਕੋਈ ਮੈਂਬਰ ਨਹੀਂ ਹੈ'; +$lang['Group_hidden_members'] = 'ਇਹ ਗਰà©à©±à¨ª ਲà©à¨•à¨¿à¨† ਹੋ ਇਆ ਹੈ; ਤà©à¨¸à©€à¨‚ ਮੈਂਬਰਾ ਦੀ ਨਾਂ ਨਾਹੀ ਵੇਖ ਸਕਦੇ।'; +//*-- ? +$lang['No_pending_group_members'] = 'ਇਹ ਗਰà©à©±à¨ª ਦਾ ਅਨਿਸ਼ਿਚਤ ਕੋਈ ਮੈਂਬਰਾ ਨਹੀ ਹੈ'; +$lang['Group_joined'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਮੰਗ ਇਸ ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਣਨ ਦੀ ਕੇਤੇ ਗਈ ਹੈ।
    ਗਰà©à©±à¨ª ਦਾ ਸੰਚਾਲਕ ਦੇ ਮਨਜੂਰ ਕਰਨ ਤੇ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਣਾਇਆ ਜਾਵੇਗਾ ਅਤੇ ਤਹਾਨੂੰ ਈ-ਮੇਲ ਭੇਜ ਦਿੱਤਾ ਜਾਵੇਗੀ।'; +$lang['Group_request'] = 'ਤà©à¨¹à¨¾à¨¡à©€ ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਣਨ ਦੀ ਮੰਗ ਕੇਤੇ ਗਈ ਹੈ।'; +$lang['Group_approved'] = 'ਤà©à¨¹à¨¾à¨¡à©€ ਮੈਂਬਰ ਬਣਨ ਦੀ ਮੰਗ ਮਨਜੂਰ ਹੋ ਗਈ ਹੈ।'; +//*-- +$lang['Group_added'] = 'ਤà©à¨¹à¨¾à¨¨à©‚à©° ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਣਾਇਆ ਗਿਆ ਹੈ।'; +//*-- ? +$lang['Already_member_group'] = 'ਤੇਸੀ ਤਾ ਪਿਹਲਾਂ ਹੀ ਮੈਂਬਰ ਹੈ ਇਹ ਗਰà©à©±à¨ª ਦੀ'; +//*-- ? +$lang['User_is_member_group'] = 'ਇਹ ਉਪਭੋਗੀ ਤਾ ਪਿਹਲਾਂ ਹੀ ਮੈਂਬਰ ਹੈ ਇਸ ਗਰà©à©±à¨ª ਦਾ'; +$lang['Group_type_updated'] = 'ਗਰà©à©±à¨ª ਦਾ ਨਮੂਨਾ ਅਪਡੇਟ ਹੋ ਗਿਆ ਹ।'; + +$lang['Could_not_add_user'] = 'ਇਹ ਉਪਭੋਗੀ-ਨਾਂ ਦਾ ਕੋਈ ਨਹੀ ਹੈ।'; +$lang['Could_not_anon_user'] = 'ਤà©à¨¸à©€à¨‚ ਇਹ ਗà©à¨®à¨¨à¨¾à¨®à©€ ਨੂੰ ਇਸ ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਨਹੀ ਥਾਣ ਸਕਦੇ।'; + +$lang['Confirm_unsub'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਣਨਾ ਨਾਹੀ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; +$lang['Confirm_unsub_pending'] = 'ਤà©à¨¹à¨¾à¨¡à©€ ਮੈਂਬਰਸਿਪ ਇਸ ਗਰà©à©±à¨ª ਦੀ ਹà©à¨£ ਅਨਿਸ਼ਿਚਤ ਹੈ; ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਣਨਾ ਨਾਹੀ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; + +$lang['Unsub_success'] = 'ਤà©à¨¹à¨¾à¨¡à©‡ ਇਸ ਗਰà©à©±à¨ª ਦੀ ਮੈਂਬਰਸਿਪ ਬੰਦ ਕਰ ਦਿੱਤੇ ਹੈ।'; + +$lang['Approve_selected'] = 'ਚà©à¨£à©‹ ਨੂੰ ਮਨਜ਼ੂਰ ਕਰੋ'; +$lang['Deny_selected'] = 'ਚà©à¨£à©‹ ਨੂੰ ਮਨਜ਼ੂਰ ਨਾ ਕਰੋ'; +$lang['Not_logged_in'] = 'ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਣਨੇ ਲਾਈ ਅੰਦਰ ਆਉਣ ਜਰੂਰੀ ਹੈ।'; +$lang['Remove_selected'] = 'ਚà©à¨£à©‹ ਨੂੰ ਰੱਦ ਕਰੋ'; +$lang['Add_member'] = 'ਮੈਥਰ ਬਣਾਊ'; +$lang['Not_group_moderator'] = 'ਤੇਸੀ ਗਰà©à©±à¨ª ਦਾ ਸੰਚਾਲਕ ਨਹੀ ਹੋ। ਇਸ ਕਾਰ ਕੇ ਤੇਸੀ ਕਾਰਵਾਈ ਨਹੀ ਕਾਰ ਸਕਦੇ।'; + +$lang['Login_to_join'] = 'ਅੰਦਰ ਆਓ, ਗਰà©à©±à¨ª ਦਾ ਮੈਂਬਰ ਬਾਣਨਾ ਜਾਂ ਪà©à¨°à©°à¨¬à¨§à¨• ਕਰਨਾ ਲਈ'; +$lang['This_open_group'] = 'ਇਹ ਗਰà©à©±à¨ª ਖà©à©±à¨²à¨¾ ਹੈ: ਇੱਥੇ ਕੜਿੱਕ ਕਰੋ ਮੈਂਬਰ ਬਣਨਾ ਲਾਈ'; +$lang['This_closed_group'] = 'ਇਹ ਗਰà©à©±à¨ª ਬੰਦ ਹੈ: ਹੋਰ ਮੈਂਬਰ ਮਨੰਜਰ ਨਹੀ ਕਾਰਨੇ'; +$lang['This_hidden_group'] = 'ਇਹ ਗਰà©à©±à¨ª ਲà©à¨•à¨¿à¨† ਹੋ ਇਆ ਹੈ: ਉਪਭੋਗੀ ਆਪਣੇ ਆਪ ਮੈਂਬਰ ਨਹੀਂ ਬਣ ਸਕਦੇ'; +$lang['Member_this_group'] = 'ਤੇਸੀ ਇਹ ਗਰà©à©±à¨ªà¨¾ ਦੀ ਮੈਂਬਰ ਹੋ'; +$lang['Pending_this_group'] = 'ਤà©à¨¹à¨¾à¨¡à©€ ਮੈਂਬਰਸਿਪ ਇਸ ਗਰà©à©±à¨ª ਦੀ ਅਨਿਸ਼ਿਚਤ ਹੈ'; +$lang['Are_group_moderator'] = 'ਤੇਸੀ ਇਸ ਗਰà©à©±à¨ª ਦੀ ਸੰਚਾਲਕ ਹੋ'; +$lang['None'] = 'ਕੋਈ ਨਹੀ'; + +$lang['Subscribe'] = 'ਵਚਨ ਕਰਨਾ'; +$lang['Unsubscribe'] = 'ਵਚਨ ਨਹੀ ਕਰਨਾ'; +$lang['View_Information'] = 'ਜਾਣਕਾਰੀ ਵੇਖੋ'; + + +// +// Search +// +$lang['Search_query'] = 'ਅਖਾੜੇ ਵਿੱਚ ਖੋਜੋ'; +$lang['Search_options'] = 'ਖੋਜ ਕਰਨੇ ਦੀ ਪਸੰਦ'; + +$lang['Search_keywords'] = 'ਜਰੂਰੀ ਸ਼ਾਬਦ ਲੱਭੋ'; +$lang['Search_keywords_explain'] = 'ਤà©à¨¸à©€à¨‚ AND ਦੀ ਵਰਤੋਂ ਉਹ ਸ਼ਬਦ ਦੱਸਣ ਲਈ ਜੋ ਨਤੀਜੇ ਵਿਚ ਜ਼ਰੂਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ, OR ਦੀ ਵਰਤੋਂ ਉਹ ਸ਼ਬਦ ਦੱਸਣ ਲਈ ਜੋ ਸ਼ਾਇਦ ਨਤੀਜੇ ਵਿਚ ਹੋਣ ਅਤੇ NOT ਦੀ ਵਰਤੋਂ ਉਹ ਸ਼ਬਦ ਦੱਸਣ ਲਈ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਨਤੀਜੇ ਵਿਚ ਨਹੀਂ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ। ਅੱਧੇ ਮਿਲਾਣ ਲਈ * ਦੀ ਵਰਤੋ ਕਿਸੇ ਵੀ ਅੱਖਰ ਲਈ ਕਰੋ।'; +$lang['Search_author'] = 'ਲੇਖਕ ਨੂੰ ਖੋਜੋ'; +$lang['Search_author_explain'] = 'ਅੱਧੇ ਮਿਲਾਣ ਲਈ * ਦੀ ਵਰਤੋ ਕਿਸੇ ਵੀ ਅੱਖਰ ਲਈ ਕਰੋ।'; + +$lang['Search_for_any'] = 'ਕੋਈ ਵੀ ਸ਼ਬਦ ਖੋਜ ਕਰੋ ਜਾਂ ਪਾਇਆ ਹੋਇਆਂ ਪà©à¨¶à¨¨ ਵਰਤੋ।'; +$lang['Search_for_all'] = 'ਸਾਰੇ ਸ਼ਬਦ ਖੋਜ ਕਰੋ।'; +$lang['Search_title_msg'] = 'ਲੇਖ ਜਾਂ ਵਿਸ਼ੇ ਦੇ ਵਿੱਚ ਖੋਜੋ'; +$lang['Search_msg_only'] = 'ਸਿਰਫ਼ ਲੇਖ ਦੇ ਵਿੱਚ ਖੋਜੋ'; + +$lang['Return_first'] = 'ਵਾਪਸ ਪਿਹਲੇ'; // followed by xxx characters in a select box +$lang['characters_posts'] = 'ਅੱਖਰ ਲੇਖ ਦੇ'; + +$lang['Search_previous'] = 'ਲੱਭੋ ਪਿਛਲੀ'; // followed by days, weeks, months, year, all in a select box + + +$lang['Sort_by'] = 'ਵੱਖ ਵੱਖ ਚà©à¨¨à¨£à¨¾'; +$lang['Sort_Time'] = 'ਲੇਖ ਦਾ ਸਮਾਂ'; +$lang['Sort_Post_Subject'] = 'ਲੇਖ ਦਾ ਵਿਸ਼ਾ'; +$lang['Sort_Topic_Title'] = 'ਲੇਖ ਦਾ ਸਿਰਲੇਖ'; +$lang['Sort_Author'] = 'ਲੇਖਕ'; +$lang['Sort_Forum'] = 'ਅਖਾੜਾ'; + +$lang['Display_results'] = 'ਨਤੀਜਾ ਵਿਖਾਉਣਾ ਇਸ ਤਰà©à¨°à¨¾à¨‚'; +$lang['All_available'] = 'ਸਾਰੇ ਪà©à¨°à¨¾à¨ªà¨¤'; +$lang['No_searchable_forums'] = 'ਤà©à¨¸à©€à¨‚ ਅਖਾੜੇ ਵਿੱਚ ਇਸ ਵੈਬ-ਥਾਂ ਤੇ ਖੇਜ ਨਹੀ ਕਾਰ ਸਕਦੇ।'; + +$lang['No_search_match'] = 'ਖੇਜ ਕਾਰਨ ਤੇ ਕੋਈ ਵੀ ਵਿਸ਼ਾ ਜਾਂ ਲੇਖ ਨਹੀ ਲੱਭਿਆਂ।'; +$lang['Found_search_match'] = 'ਖੋਜ ਕਾਰਨ ਨਾਲ %d ਜਵਾਬ ਲੱਡਿਆਂ'; // eg. Search found 1 match +$lang['Found_search_matches'] = 'ਖੋਜ ਕਾਰਨ ਨਾਲ %d ਜਵਾਬ ਲੱਡà¨'; // eg. Search found 24 matches + +$lang['Close_window'] = 'à¨à¨°à©Œà¨–ਾ ਬੰਦ ਕਰੋ।'; + + +// +// Auth related entries +// +// Note the %s will be replaced with one of the following 'user' arrays +$lang['Sorry_auth_announce'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s à¨à¨²à¨¾à¨¨ ਲੇਖ ਇਸ ਅਖਾੜੇ ਵਿਚ ਲਿਖ ਸਕਦੇ ਹੈ।'; +$lang['Sorry_auth_sticky'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s ਚਿਪਕਵਾਂ ਲੇਖ ਇਸ ਅਖਾੜੇ ਵਿਚ ਲਿਖ ਸਕਦੇ ਹੈ।'; +$lang['Sorry_auth_read'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s ਇਸ ਅਖਾੜੇ ਵਿਚ ਪੜà©à¨¹ ਸਕਦੇ ਹੈ।'; +$lang['Sorry_auth_post'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s ਲੇਖ ਇਸ ਅਖਾੜੇ ਵਿਚ ਲਿਖ ਸਕਦੇ ਹੈ।'; +$lang['Sorry_auth_reply'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s ਲੇਖ ਦਾ ਜਵਾਬ ਇਸ ਅਖਾੜੇ ਵਿਚ ਲਿਖ ਸਕਦੇ ਹੈ।'; +$lang['Sorry_auth_edit'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s ਇਸ ਅਖਾੜੇ ਵਿਚ ਲੇਖ ਬਦਲ ਸਕਦੇ ਹੈ।'; +$lang['Sorry_auth_delete'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s ਇਸ ਅਖਾੜੇ ਵਿਚ ਲੇਖ ਰੱਦ ਕਰ ਸਕਦੇ ਹੈ।'; +$lang['Sorry_auth_vote'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਸਿਰਫ਼ %s ਇਸ ਅਖਾੜੇ ਵਿਚ ਵੋਟ ਪਾ ਸਕਦੇ ਹੈ।'; + +// These replace the %s in the above strings +$lang['Auth_Anonymous_Users'] = 'ਬੇਨਾਮ ਉਪਭੋਗੀ'; +$lang['Auth_Registered_Users'] = 'ਦਰਜ ਹੋਠਉਪਭੋਗੀ'; +$lang['Auth_Users_granted_access'] = 'ਅਪਯੋਗਿਆ ਨੂੰ ਖ਼ਾਸ ਅਧਿਕਾਰ ਦਤੇ।'; +$lang['Auth_Moderators'] = 'ਸੰਚਾਲਕ'; +$lang['Auth_Administrators'] = 'ਪà©à¨°à¨¬à©°à¨§à¨•'; + +$lang['Not_Moderator'] = 'ਤਸੀ ਇਸ ਅਖਾੜੇ ਦੀ ਸੰਚਾਲਕ ਨਹੀ ਹੈ।'; +//*-- Authorized +$lang['Not_Authorised'] = 'ਅਖ਼ਿਤਆਰ ਨਹੀ'; +//*-- ਅਖਾੜਾ-ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਜਾਂ webmaset ਨੂੰ ਜਾਣਕਾਰੀ ਲਈ +$lang['You_been_banned'] = 'ਮà©à¨†à©ž ਕਰਨਾ, ਪਰ ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿਚ ਅੰਦਰ ਨਹੀ ਆ ਸਕਦੇ। ਕਿਰਪਾ ਕਰਕੇ ਵਧੇਰੀ ਜਾਣਕਾਰੀ ਲਈ ਅਖਾੜਾ-ਪà©à¨°à¨¬à©°à¨§à¨•à¨¾à¨‚ ਜਾਂ webmaset ਨਾਲ ਸੰਪਰਕ ਕਰੋ।'; + +// +// Viewonline +// +$lang['Reg_users_zero_online'] = 'ਇੱਥੇ 0 ਦਰਜ ਹੋਠਉਪਭੋਗੀ ਹਨ ਅਤੇ '; // There are 0 Registered and +$lang['Reg_users_online'] = 'ਇੱਥੇ %d ਦਰਜ ਹੋਠਉਪਭੋਗੀ ਹਨ ਅਤੇ '; // There are 5 Registered and +$lang['Reg_user_online'] = 'ਇੱਥੇ ਹà©à¨£ %d ਦਰਜ ਹੋਠਉਪਭੋਗੀ ਹੈ ਅਤੇ '; // There is 1 Registered and +$lang['Hidden_users_zero_online'] = '0 ਲà©à©±à¨•à©‡ ਹੋਠਦਰਜ ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹਨ'; // 0 Hidden users online +$lang['Hidden_users_online'] = '%d ਲà©à©±à¨•à©‡ ਹੋਠਦਰਜ ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹਨ'; // 6 Hidden users online +$lang['Hidden_user_online'] = '%d ਲà©à©±à¨•à©‡ ਹੋਠਦਰਜ ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹੈ'; // 6 Hidden users online +$lang['Guest_users_online'] = 'ਇੱਥੇ %d ਮਹਿਮਾਨ ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹਨ'; // There are 10 Guest users online +$lang['Guest_users_zero_online'] = 'ਇੱਥੇ 0 ਮਹਿਮਾਨ ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹੈ'; // There are 0 Guest users online +$lang['Guest_user_online'] = 'ਇੱਥੇ ਹà©à¨£ %d ਮਹਿਮਾਨ ਉਪਭੋਗੀ ਓਨਲਾਈਨ ਹੈ'; // There is 1 Guest user online +$lang['No_users_browsing'] = 'ਹà©à¨£à©‡ ਇੱਥੇ ਕੋਈ ਵੀ ਉਪਭੋਗੀ ਦੇਖ ਨਹੀ ਰਹੇ ਹਨ'; + +$lang['Online_explain'] = 'ਇਹ ਸਾਰੀ ਜਾਣਕਾਰੀ ਪਿਛਲੇ ਪੰਜ ਮਿੰਟਾਂ ਤੋ ਹੈ।'; + +$lang['Forum_Location'] = 'ਅਖਾੜਾ ਦਾ ਸਥਾਨ'; +//*--? +$lang['Last_updated'] = 'ਪਿਛਲੀ ਅਪਡੇਟ'; + +$lang['Forum_index'] = 'ਅਖਾੜਾ ਦਾ ਵਿਸ਼ਾ-ਸੂਚੀ'; +$lang['Logging_on'] = 'ਅੰਦਰ ਆਉਣ ਲਈ'; +$lang['Posting_message'] = 'ਨਵਾਂ ਲੇਖ ਲਿਖਣ ਲਈ'; +$lang['Searching_forums'] = 'ਅਖਾੜੇ ਵਿੱਚ ਖੋਜ ਕਰੋ'; +$lang['Viewing_profile'] = 'ਪà©à¨°à©‹à¨«à¨¾à¨ˆà¨²'; +$lang['Viewing_online'] = 'ਕੋਣ ਹੈ ਓਨਲਾਈਨ'; +$lang['Viewing_member_list'] = 'ਉਪਭੋਗੀ-ਨਾਮਾਵਾਲੀ'; +$lang['Viewing_priv_msgs'] = 'ਨਿੱਜੀ ਸਨੇਹੇ'; +$lang['Viewing_FAQ'] = 'ਅਕਸਰ ਪà©à©±à¨›à©‡ ਜਾਂਦੇ ਪà©à¨°à¨¶à¨¨'; + + +// +// Moderator Control Panel +// +$lang['Mod_CP'] = 'ਸੰਚਾਲਨ ਜ਼ਬਤ-ਖੰਡ'; +$lang['Mod_CP_explain'] = 'ਹੇਠਾਂ ਦਿੱਤੇ ਫਾਰਮ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਤà©à¨¸à©€à¨‚ ਇਸ ਅਖਾੜੇ ਵਿਚ ਇਕੱਠੇ ਸੰਚਾਲਨ ਕੰਮ ਕਰ ਸਕਦੇ ਹੋ। ਤà©à¨¸à©€à¨‚ ਕਿਨà©à¨¹à©‡ ਵੀ ਵਿਸ਼ਿਆਂ ਨੂੰ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ, ਹਟਾ ਸਕਦੇ ਹੋ ਜਾਂ ਇਹਨਾਂ ਦੀ ਸਥਿਤੀ ਬਦਲ ਸਕਦੇ ਹੋ।'; + +$lang['Select'] = 'ਚà©à¨£à¨¨à¨¾'; +//*--------------------------------- // +//*-- extr +//*-- +//pa $lang['Delete'] = 'ਰੱਦ'; +$lang['Delete'] = 'ਰੱਦ ਕਰੋ'; +//*--------------------------------- // +$lang['Move'] = 'ਬਦਲਣੀ'; +$lang['Lock'] = 'ਬੰਢ'; +$lang['Unlock'] = 'ਖà©à©±à¨²à¨¾'; + +$lang['Topics_Removed'] = 'ਚà©à¨£à©‹ ਹੋਠਵਿਸ਼ੇ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤੇ ਗਠਨੇ।'; +$lang['Topics_Locked'] = 'ਚà©à¨£à©‹ ਹੋਠਵਿਸ਼ੇ ਬੰਦ ਕਰ ਦਿੱਤੇ ਗਠਨੇ।'; +$lang['Topics_Moved'] = 'ਇਹ ਚà©à¨£à¨¾ ਵਿਸ਼ੇ ਹਿਲਾਇਆ ਗਿਆ ਹੈ।'; +$lang['Topics_Unlocked'] = 'ਇਹ ਚà©à¨£à¨¾ ਵਿਸ਼ੇ ਖà©à©±à¨²à¨¿à¨† ਗਿਆ ਹੈ।'; +$lang['No_Topics_Moved'] = 'ਕੋਈ ਵੀ ਵਿਸ਼ੇ ਹਿਲਾਇਆ ਨਹੀਂ ਹੈ।'; + +$lang['Confirm_delete_topic'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਚà©à¨£à©‹ ਵਿਸ਼ੇ ਨੂੰ ਰੱਦ ਕਰਨਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; +$lang['Confirm_lock_topic'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਚà©à¨£à©‹ ਵਿਸ਼ੇ ਨੂੰ ਬੰਦ ਕਰਨਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; +$lang['Confirm_unlock_topic'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਚà©à¨£à©‹ ਵਿਸ਼ੇ ਨੂੰ ਖà©à©±à¨²à¨¾à¨¨ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; +$lang['Confirm_move_topic'] = 'ਕੀ ਤà©à¨¸à©€à¨‚ ਵਾਕਈ ਹੀ ਇਹ ਚà©à¨£à©‹ ਵਿਸ਼ੇ ਨੂੰ ਹਿਲਾਓ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?'; + +$lang['Move_to_forum'] = 'ਅਖਾੜੇ ਨੂੰ ਚੱਲੋ'; +$lang['Leave_shadow_topic'] = 'ਇਸ ਵਿਸ਼ੇ ਦੀ ਇਕ ਕਾਪੀ ਪà©à¨°à¨¾à¨£à©‡ ਅਖਾੜੇ ਵਿੱਚ ਰੱਖੋ।'; + +$lang['Split_Topic'] = 'ਵਿਸ਼ੇ ਕੱਟਣੇ ਲਈ ਖੰਡ'; +$lang['Split_Topic_explain'] = 'ਹੇਠਾਂ ਦਿੱਤੇ ਫਾਰਮ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਤà©à¨¸à©€à¨‚ ਕਿਸੇ ਵਿਸ਼ੇ ਨੂੰ ਦੋ ਵਿਚ ਵੰਡ ਸਕਦੇ ਹੋ, ਜਾਂ ਤਾਂ ਇਕ-ਇਕ ਲੇਖ ਨੂੰ ਚà©à¨£ ਕੇ ਜਾਂ ਫੇਰ ਚà©à¨£à©‡ ਹੋਠਲੇਖਾਂ ਨੂੰ ਵੰਡ ਕੇ'; +$lang['Split_title'] = 'ਵਿਸ਼ੇ ਦਾ ਨਵੇਂ ਸਿਰਲੇਖ'; +$lang['Split_forum'] = 'ਨਵੇ ਵਿਸ਼ੇ ਲਈ ਅਖਾੜਾ'; +//*-- change ਕੱਟੋ to ਵਾਡ ? +$lang['Split_posts'] = 'ਚà©à¨£à©‡ ਹੋਠਲਿਖਿਆ ਨੂੰ ਕੱਟੋ'; +//*-- change ਕੱਟੋ to ਵਾਡ ? +$lang['Split_after'] = 'ਚà©à¨£à©‡ ਹੋਠਲੇਖ ਨੂੰ ਕੱਟੋ'; +//*-- change ਕੱਟੋ to ਵਾਡ ? +$lang['Topic_split'] = 'ਚà©à¨£à©‹ ਹੋਠਵਿਸ਼ੇ ਕੱਟਾ ਦਿੱਤੇ ਗਠਨੇ।'; + +$lang['Too_many_error'] = 'ਤà©à¨¸à©€à¨‚ ਬà©à¨¹à¨¤à©‡ ਲੇਖ ਚà©à¨£à©‡ ਹਨ। ਤà©à¨¸à©€à¨‚ ਸਿਰਫ਼ ਇਕੋ ਹੀ ਲੇਖ ਚà©à¨£ ਸਾਕਦੇ ਹੋ ਵਿਸ਼ੇ ਨੂੰ ਵਦੋਣ ਲਈ।'; + +//*-- Add "Please go back and select at least one." +$lang['None_selected'] = 'ਤà©à¨¸à©€à¨‚ ਕੋਈ ਲੇਖ ਨਹੀ ਚà©à¨£à©‹ ਇਹ ਕਾਰਵਾਈ ਕਰਨੀ ਲਈ।'; +$lang['New_forum'] = 'ਨਵਾਂ ਅਖਾੜਾ'; + +$lang['This_posts_IP'] = 'ਇਸ ਲੇਖ ਦਾ ਆਈ-ਪੀ (IP) ਪਤਾ'; +$lang['Other_IP_this_user'] = 'ਹੋਰ ਆਈ-ਪੀ (IP) ਪਤੇ ਜਿਸ ਤੋਂ ਇਸ ਉਪਭੋਗੀ ਨੇ ਲਿਖਿਆ ਹੈ'; +$lang['Users_this_IP'] = 'ਇਸ ਆਈ-ਪੀ (IP) ਪਤੇ ਤੋਂ ਲਿਖਣ ਵਾਲੇ ਉਪਭੋਗੀ'; +$lang['IP_info'] = 'ਆਈ-ਪੀ (IP) ਜਾਣਕਾਰੀ'; +$lang['Lookup_IP'] = 'ਆਈ-ਪੀ (IP) ਪਤੇ ਦੀ ਖੋਜ'; + +// +// Timezones ... for display on each page +// +$lang['All_times'] = 'ਸਾਰੇ ਟਾਈਮ %s ਦੇ ਮà©à¨¤à¨¾à¨¬à¨¿à¨• ਹਨ'; // eg. All times are GMT - 12 Hours (times from next block) + +$lang['-12'] = 'GMT - 12 ਘੰਟੇ'; +$lang['-11'] = 'GMT - 11 ਘੰਟੇ'; +$lang['-10'] = 'GMT - 10 ਘੰਟੇ'; +$lang['-9'] = 'GMT - 9 ਘੰਟੇ'; +$lang['-8'] = 'GMT - 8 ਘੰਟੇ'; +$lang['-7'] = 'GMT - 7 ਘੰਟੇ'; +$lang['-6'] = 'GMT - 6 ਘੰਟੇ'; +$lang['-5'] = 'GMT - 5 ਘੰਟੇ'; +$lang['-4'] = 'GMT - 4 ਘੰਟੇ'; +$lang['-3.5'] = 'GMT - 3.5 ਘੰਟੇ'; +$lang['-3'] = 'GMT - 3 ਘੰਟੇ'; +$lang['-2'] = 'GMT - 2 ਘੰਟੇ'; +$lang['-1'] = 'GMT - 1 ਘੰਟਾ'; +$lang['0'] = 'GMT ਘੰਟਾ'; +$lang['1'] = 'GMT + 1 ਘੰਟਾ'; +$lang['2'] = 'GMT + 2 ਘੰਟੇ'; +$lang['3'] = 'GMT + 3 ਘੰਟੇ'; +$lang['3.5'] = 'GMT + 3.5 ਘੰਟੇ'; +$lang['4'] = 'GMT + 4 ਘੰਟੇ'; +$lang['4.5'] = 'GMT + 4.5 ਘੰਟੇ'; +$lang['5'] = 'GMT + 5 ਘੰਟੇ'; +$lang['5.5'] = 'GMT + 5.5 ਘੰਟੇ'; +$lang['6'] = 'GMT + 6 ਘੰਟੇ'; +$lang['6.5'] = 'GMT + 6.5 ਘੰਟੇ'; +$lang['7'] = 'GMT + 7 ਘੰਟੇ'; +$lang['8'] = 'GMT + 8 ਘੰਟੇ'; +$lang['9'] = 'GMT + 9 ਘੰਟੇ'; +$lang['9.5'] = 'GMT + 9.5 ਘੰਟੇ'; +$lang['10'] = 'GMT + 10 ਘੰਟੇ'; +$lang['11'] = 'GMT + 11 ਘੰਟੇ'; +$lang['12'] = 'GMT + 12 ਘੰਟੇ'; +$lang['13'] = 'GMT + 13 ਘੰਟੇ'; + +// These are displayed in the timezone select box +$lang['tz']['-12'] = 'GMT - 12 ਘੰਟੇ'; +$lang['tz']['-11'] = 'GMT - 11 ਘੰਟੇ'; +$lang['tz']['-10'] = 'GMT - 10 ਘੰਟੇ'; +$lang['tz']['-9'] = 'GMT - 9 ਘੰਟੇ'; +$lang['tz']['-8'] = 'GMT - 8 ਘੰਟੇ'; +$lang['tz']['-7'] = 'GMT - 7 ਘੰਟੇ'; +$lang['tz']['-6'] = 'GMT - 6 ਘੰਟੇ'; +$lang['tz']['-5'] = 'GMT - 5 ਘੰਟੇ'; +$lang['tz']['-4'] = 'GMT - 4 ਘੰਟੇ'; +$lang['tz']['-3.5'] = 'GMT - 3.5 ਘੰਟੇ'; +$lang['tz']['-3'] = 'GMT - 3 ਘੰਟੇ'; +$lang['tz']['-2'] = 'GMT - 2 ਘੰਟੇ'; +$lang['tz']['-1'] = 'GMT - 1 ਘੰਟਾ'; +$lang['tz']['0'] = 'GMT ਘੰਟਾ'; +$lang['tz']['1'] = 'GMT + 1 ਘੰਟਾ'; +$lang['tz']['2'] = 'GMT + 2 ਘੰਟੇ'; +$lang['tz']['3'] = 'GMT + 3 ਘੰਟੇ'; +$lang['tz']['3.5'] = 'GMT + 3.5 ਘੰਟੇ'; +$lang['tz']['4'] = 'GMT + 4 ਘੰਟੇ'; +$lang['tz']['4.5'] = 'GMT + 4.5 ਘੰਟੇ'; +$lang['tz']['5'] = 'GMT + 5 ਘੰਟੇ'; +$lang['tz']['5.5'] = 'GMT + 5.5 ਘੰਟੇ'; +$lang['tz']['6'] = 'GMT + 6 ਘੰਟੇ'; +$lang['tz']['6.5'] = 'GMT + 6.5 ਘੰਟੇ'; +$lang['tz']['7'] = 'GMT + 7 ਘੰਟੇ'; +$lang['tz']['8'] = 'GMT + 8 ਘੰਟੇ'; +$lang['tz']['9'] = 'GMT + 9 ਘੰਟੇ'; +$lang['tz']['9.5'] = 'GMT + 9.5 ਘੰਟੇ'; +$lang['tz']['10'] = 'GMT + 10 ਘੰਟੇ'; +$lang['tz']['11'] = 'GMT + 11 ਘੰਟੇ'; +$lang['tz']['12'] = 'GMT + 12 ਘੰਟੇ'; +$lang['tz']['13'] = 'GMT + 13 ਘੰਟੇ'; + +//Addons by Harprit Singh +$lang['datetime']['am'] = 'ਸਵੇਰ'; +$lang['datetime']['pm'] = 'ਸ਼ਾਮ'; + +$lang['datetime']['Sunday'] = 'à¨à¨¤à¨µà¨¾à¨°'; +$lang['datetime']['Monday'] = 'ਸੋਮਵਾਰ'; +$lang['datetime']['Tuesday'] = 'ਮੰਗਲਵਾਰ'; +$lang['datetime']['Wednesday'] = 'ਬà©à©±à¨§à¨µà¨¾à¨°'; +$lang['datetime']['Thursday'] = 'ਵੀਰਵਾਰ'; +$lang['datetime']['Friday'] = 'ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°'; +$lang['datetime']['Saturday'] = 'ਸਨਿੱਚਰਵਾਰ'; +$lang['datetime']['Sun'] = 'à¨à¨¤à¨µà¨¾à¨°'; +$lang['datetime']['Mon'] = 'ਸੋਮਵਾਰ'; +$lang['datetime']['Tue'] = 'ਮੰਗਲਵਾਰ'; +$lang['datetime']['Wed'] = 'ਬà©à©±à¨§à¨µà¨¾à¨°'; +$lang['datetime']['Thu'] = 'ਵੀਰਵਾਰ'; +$lang['datetime']['Fri'] = 'ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°'; +$lang['datetime']['Sat'] = 'ਸਨਿੱਚਰਵਾਰ'; +$lang['datetime']['January'] = 'ਜਨਵਰੀ'; +$lang['datetime']['February'] = 'ਫ਼ਰਵਰੀ'; +$lang['datetime']['March'] = 'ਮਾਰਚ'; +$lang['datetime']['April'] = 'ਅਪà©à¨°à©ˆà¨²'; +$lang['datetime']['May'] = 'ਮਈ'; +$lang['datetime']['June'] = 'ਜੂਨ'; +$lang['datetime']['July'] = 'ਜà©à¨²à¨¾à¨ˆ'; +$lang['datetime']['August'] = 'ਆਗਸਤ'; +$lang['datetime']['September'] = 'ਸਤੰਬਰ'; +$lang['datetime']['October'] = 'ਅਕੂਤਬਰ'; +$lang['datetime']['November'] = 'ਨਵੰਬਰ'; +$lang['datetime']['December'] = 'ਦਸੰਬਰ'; +$lang['datetime']['Jan'] = 'ਜਨਵਰੀ'; +$lang['datetime']['Feb'] = 'ਫ਼ਰਵਰੀ'; +$lang['datetime']['Mar'] = 'ਮਾਰਚ'; +$lang['datetime']['Apr'] = 'ਅਪà©à¨°à©ˆà¨²'; +$lang['datetime']['May'] = 'ਮਈ'; +$lang['datetime']['Jun'] = 'ਜੂਨ'; +$lang['datetime']['Jul'] = 'ਜà©à¨²à¨¾à¨ˆ'; +$lang['datetime']['Aug'] = 'ਆਗਸਤ'; +$lang['datetime']['Sep'] = 'ਸਤੰਬਰ'; +$lang['datetime']['Oct'] = 'ਅਕੂਤਬਰ'; +$lang['datetime']['Nov'] = 'ਨਵੰਬਰ'; +$lang['datetime']['Dec'] = 'ਦਸੰਬਰ'; + +// +// Errors (not related to a +// specific failure on a page) +// +$lang['Information'] = 'ਸੂਚਨਾ'; +$lang['Critical_Information'] = 'ਜਰੂਰੀ ਸੂਚਨਾ'; + +$lang['General_Error'] = 'ਆਮ ਗਲਤੀ'; +$lang['Critical_Error'] = 'ਜਰੂਰੀ ਗਲਤੀ'; +$lang['An_error_occured'] = 'ਗਲਤੀ ਹੋ ਗਈ'; +$lang['A_critical_error'] = 'ਵੱਡੀ ਗਲਤੀ ਹੋ ਗਈ'; + +// +// That's all, Folks! +// ------------------------------------------------- + +?> diff --git a/includes/shared/phpbb2/language/lang_punjabi/search_stopwords.txt b/includes/shared/phpbb2/language/lang_punjabi/search_stopwords.txt new file mode 100644 index 00000000..00621bde --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/search_stopwords.txt @@ -0,0 +1,40 @@ +ਉਹ +ਉਥੇ +ਅਤੇ +ਅੰਤ +ਠ+ਇਸ +ਇਸੇ +ਇਹ +ਇਨà©à¨°à¨¾à¨‚ +ਹੈ +ਹੀ +ਹੋਠ+ਹਨ +ਹਰ +ਕੇ +ਕੋ +ਕਿ +ਕਿਸੇ +ਕਰਕੇ +ਗਿਆ +ਗਈ +ਗਠ+ਜਾ +ਜਿਸ +ਜਿਥੇ +ਜਿਵੇਂ +ਤੇ +ਤੋਂ +ਦੇ +ਦਾ +ਦੀ +ਨੂੰ +ਨਹੀਂ +ਨਾਲ +ਨਾਲੋਂ +ਪਰ +ਲਈ +ਵੀ +ਵਿਚ +ਵਿੰਚ \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_punjabi/search_synonyms.txt b/includes/shared/phpbb2/language/lang_punjabi/search_synonyms.txt new file mode 100644 index 00000000..efb76613 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_punjabi/search_synonyms.txt @@ -0,0 +1,11 @@ +0 ੦ +1 ੧ +2 ੨ +3 à©© +4 ੪ +5 à©« +6 ੬ +7 à©­ +8 à©® +9 ੯ +ਕਾਰ ਮੋਟਰਗੱਡੀ diff --git a/includes/shared/phpbb2/language/lang_romanian/lang_main.php b/includes/shared/phpbb2/language/lang_romanian/lang_main.php index c7a09f5b..9464eee9 100644 --- a/includes/shared/phpbb2/language/lang_romanian/lang_main.php +++ b/includes/shared/phpbb2/language/lang_romanian/lang_main.php @@ -38,6 +38,7 @@ // varies ... give it your best guess! // +$lang['USER_LANG'] = 'ro'; $lang['ENCODING'] = 'UTF-8'; $lang['DIRECTION'] = 'ltr'; $lang['LEFT'] = 'left'; @@ -51,6 +52,7 @@ $lang['TRANSLATION_INFO'] = 'Varianta în limba română: Romanian phpBB online community'; + // // Common, these terms are used // extensively on several pages @@ -95,6 +97,30 @@ $lang['Disabled'] = 'Dezactivat'; $lang['Error'] = 'Eroare'; +// ------------------------------------------------- +$lang['Goto_page'] = 'Goto page'; + +$lang['Post_by_author'] = 'by'; +$lang['Posted_on_date'] = 'on'; +$lang['In'] = 'in'; + +$lang['Statistics'] = 'Statistics'; +$lang['Legend'] = 'Legend: '; +$lang['Posted_articles_zero_total'] = 'No post'; // Number of posts +$lang['Posted_articles_total'] = 'Total posts %d'; // Number of posts +$lang['Posted_article_total'] = 'Total posts %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'No member'; // # registered users +$lang['Registered_users_total'] = 'Total members %d'; // # registered users +$lang['Registered_user_total'] = 'Total members %d'; // # registered users +$lang['Newest_user'] = 'Our newest member %s%s%s'; // a href, username, /a + +$lang['Rules_moderate'] = '%sModerate this forum%s'; // %s replaced by a href links, do not remove! + +$lang['Quick_mod'] = 'Quick-mod tools:'; + +$lang['Search_forums'] = 'Search within'; +// ------------------------------------------------- + $lang['Next'] = 'Următoare'; $lang['Previous'] = 'Anterioară'; $lang['Goto_page'] = 'Du-te la pagina'; @@ -1055,6 +1081,7 @@ $lang['Subforums'] = 'Subforumuri'; // End Simple Subforums MOD + // // That's all Folks! // ------------------------------------------------- diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_activate.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_activate.tpl new file mode 100644 index 00000000..d89b74b8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_activate.tpl @@ -0,0 +1,9 @@ +Subject: Cont de utilizator nou + +Buna, + +Contul "{USERNAME}" a fost deactivat sau creat. Ar trebui sa verificati detaliile acestui utilizator (daca este necesar) si sa-l activati folosind aceasta legatura: + +{U_ACTIVATE} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_send_email.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_send_email.tpl new file mode 100644 index 00000000..5c7872b0 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_send_email.tpl @@ -0,0 +1,12 @@ + + +Urmatorul mesaj v-a fost trimis de catre un administrator al "{SITENAME}". Daca acest mesaj este spam, contine comentarii abuzive sau are vreun continut ofensiv, va rugam sa contactati webmaster-ul forumului la urmatoarea adresa: + +{BOARD_EMAIL} + +Va rugam sa includeti acest email (mai ales header-ele). + +Urmeaza mesajul care va este adresat: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_welcome_activated.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_welcome_activated.tpl new file mode 100644 index 00000000..952fc29b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_welcome_activated.tpl @@ -0,0 +1,7 @@ +Subject: Contul activat + +Buna {USERNAME}, + +Contul dumneavoastra pe "{SITENAME}" a fost activat, puteti sa va autentificati folosind numele de utilizator si parola primite intr-un mesaj anterior. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_welcome_inactive.tpl new file mode 100644 index 00000000..501cd3ad --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/admin_welcome_inactive.tpl @@ -0,0 +1,18 @@ +Subject: Bine ati venit in forumurile {SITENAME} + +{WELCOME_MSG} + +Va rugam sa pastrati acest mesaj. Informatia pentru contul dumneavoastra urmeaza aici: + +-------------------------------------- +Nume utilizator : {USERNAME} +Parola : {PASSWORD} +-------------------------------------- + +Contul dumneavoastra este deocamdata inactiv. Va fi nevoie ca administratorul forumului sa vi-l activeze inainte sa va puteti autentifica. Veti primi un alt mesaj când se va intampla acest lucru. + +Incearcati sa nu va uitati parola deoarece aceasta a fost stocata codat in baza noastra de date si nu o putem recupera pentru dumneavoastra. Daca totusi o veti uita, veti putea cere o parola noua care va fi activata la fel cum a fost activat acest cont de utilizator. + +Va multumim pentru inregistrare. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/coppa_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/coppa_welcome_inactive.tpl new file mode 100644 index 00000000..48e6b9b8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/coppa_welcome_inactive.tpl @@ -0,0 +1,51 @@ +Subject: Bine ati venit in forumurile {SITENAME} + +{WELCOME_MSG} + +Conform actului COPPA contul dumneavoastra este deocamdata inactiv. + +Va rugam sa tipariti acest mesaj si sa cereti parintelui sau tutorelui dumneavoastra sa-l semneze si sa-l dateze. Apoi trimiteti-l prin fax catre: + +{FAX_INFO} + +sau trimiteti-l prin posta la: + +{MAIL_INFO} + +------------------------------ TAIE AICI ------------------------------ +Permisiune de participare la {SITENAME} + +Nume utilizator: {USERNAME} +Parola: {PASSWORD} +Email: {EMAIL_ADDRESS} + +Numar ICQ: {ICQ} +Adresa AIM: {AIM} +MSN Messenger: {MSN} +Yahoo Messenger: {YIM} +Pagina Web: {WEB_SITE} +De la: {FROM} +Ocupatie: {OCC} +Interese: {INTERESTS} + +AM REVAZUT INFORMATIILE OFERITE DE COPILUL MEU SI PRIN ACEASTA II PERMIT {SITENAME} SA STOCHEZE ACEASTA INFORMATIE. +SUNT DE ACORD CU FAPTUL CA ACEASTA INFORMATIE POATE FI SCHIMBATA ORICAND PRIN INTRODUCEREA UNEI PAROLE. +AM INTELES CA POT CERE CA ACEASTA INFORMATIE SA FIE STEARSA ORICAND DIN BAZA DE DATE A {SITENAME}. + +Parinte sau tutore +(numele): _____________________ + +(semnatura): __________________ + +Data: _______________ + +------------------------------ TAIE AICI ------------------------------ + + +Indata ce administratorul va primi formularul de mai sus prin fax sau posta, contul dumneavoastra va fi activat. + +Incercati sa nu va uitati parola deoarece aceasta a fost stocata codat in baza noastra de date si nu o putem recupera pentru dumneavoastra. Daca totusi o uitati, veti putea cere o parola noua care va fi activata la fel cum a fost activat acest cont de utilizator. + +Va multumim pentru inregistrare. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_added.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_added.tpl new file mode 100644 index 00000000..13718438 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_added.tpl @@ -0,0 +1,11 @@ +Subject: Ati fost adaugat la acest grup de utilizatori + +Felicitari, + +Ati fost adaugat la grupul de utilizatori "{GROUP_NAME}" pe {SITENAME}. +Aceasta operatiune a fost facuta de catre moderatorul grupului sau administratorul site-ului; va rugam sa-i contactati pentru mai multe informatii. + +Puteti sa vizualizati informatiile referitoare la grupuri aici: +{U_GROUPCP} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_approved.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_approved.tpl new file mode 100644 index 00000000..fff6cd5b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_approved.tpl @@ -0,0 +1,10 @@ +Subject: Cererea dumneavoastra de aderare a fost aprobata + +Felicitari, + +Cererea dumneavoastra de a va alatura grupului "{GROUP_NAME}" pe {SITENAME} a fost aprobata. +Folositi legatura de mai jos pentru a vedea informatiile referitoare la apartenenta la grupuri. + +{U_GROUPCP} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_request.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_request.tpl new file mode 100644 index 00000000..f84b3afd --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/group_request.tpl @@ -0,0 +1,10 @@ +Subject: O cerere pentru aderare la grupul dumneavoastra + +Draga {GROUP_MODERATOR}, + +Un utilizator a cerut sa se alature unui grup pe care il moderati pe {SITENAME}. +Pentru a aproba sau respinge cererea lui, va rugam sa vizitati urmatoarea legatura: + +{U_GROUPCP} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/index.htm b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/index.htm new file mode 100644 index 00000000..e86fec76 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/privmsg_notify.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/privmsg_notify.tpl new file mode 100644 index 00000000..fe5bbf04 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/privmsg_notify.tpl @@ -0,0 +1,11 @@ +Subject: Ati primit un nou mesaj privat + +Buna {USERNAME}, + +Ati primit un mesaj nou privat pe site-ul {SITENAME} si ati cerut sa fiti anuntat daca se intampla acest lucru. Puteti sa vedeti mesajul privat folosind urmatoarea legatura: + +{U_INBOX} + +Nu uitati ca puteti intotdeauna sa alegeti sa nu fiti anuntat de mesajele noi prin schimbarea setarii corespunzatoare din profilul dumneavoastra. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/profile_send_email.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/profile_send_email.tpl new file mode 100644 index 00000000..f43540dc --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/profile_send_email.tpl @@ -0,0 +1,13 @@ +Buna {TO_USERNAME}, + +Urmeaza un mesaj trimis de catre {FROM_USERNAME} prin intermediul contului dumneavoastra pe {SITENAME}. Daca acest mesaj este spam, contine comentarii abuzive sau are vreun continut ofensiv, va rugam sa contactati webmaster-ul forumului la urmatoarea adresa: + +{BOARD_EMAIL} + +Va rugam sa includeti acest email (mai ales header-ele). +Adresa de intoarcere pentru acest mesaj a fost setata catre {FROM_USERNAME}. + +Urmeaza mesajul care va este adresat: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/topic_notify.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/topic_notify.tpl new file mode 100644 index 00000000..e227905e --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/topic_notify.tpl @@ -0,0 +1,13 @@ +Subject: Notificare de raspuns la subiectul - {TOPIC_TITLE} + +Buna, + +Primiti acest mesaj deoarece urmariti subiectul "{TOPIC_TITLE}" pentru raspunsuri la {SITENAME}. Acest subiect a primit cel putin un raspuns de la ultima dumneavoastra vizita. Puteti sa vizualizati raspunsurile urmând legatura de mai jos. Nu va vom mai anunta de raspunsuri noi pâna nu vizitati subiectul. + +{U_TOPIC} + +Daca nu mai doriti sa urmariti acest subiect, puteti sa folositi legatura "Opreste urmarirea acestui subiect" care poate fi gasita in josul paginii sau folositi urmatoarea legatura: + +{U_STOP_WATCHING_TOPIC} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_activate.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_activate.tpl new file mode 100644 index 00000000..853c460c --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_activate.tpl @@ -0,0 +1,9 @@ +Subject: Reactivati-va contul + +Buna {USERNAME}, + +Contul dumneavoastra pe "{SITENAME}" a fost dezactivat, cel mai probabil datorita unor modificari facute profilului dumneavoastra. Pentru a va reactiva contul, va rugam sa folositi legatura de mai jos: + +{U_ACTIVATE} + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_activate_passwd.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_activate_passwd.tpl new file mode 100644 index 00000000..69a394bb --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_activate_passwd.tpl @@ -0,0 +1,17 @@ +Subject: Activarea parolei noi + +Buna {USERNAME} + +Ati primit acest mesaj deoarece dumneavoastra (sau cineva pretinzand a fi dumneavoastra) ati(a) cerut sa va fie trimisa o noua parola pentru contul dumneavoastra de pe {SITENAME}. Daca nu ati cerut acest lucru, atunci va rugam sa-l ignorati, iar daca îl primiti de mai multe ori va rugam sa contactati administratorul forumului. + +Pentru a va folosi noua parola trebuie s-o activati folosind legatura de mai jos: + +{U_ACTIVATE} + +Daca totul este în regula, veti putea sa va autentificati folosind urmatoarea parola: + +Parola: {PASSWORD} + +Evident, puteti schimba aceasta parola din pagina Profil. Daca întampinati dificultati, va rugam sa contactati administratorul forumului. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_welcome.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_welcome.tpl new file mode 100644 index 00000000..c96e8e51 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_welcome.tpl @@ -0,0 +1,16 @@ +Subject: Bine ati venit in forumurile {SITENAME} + +{WELCOME_MSG} + +Va rugam sa pastrati acest mesaj. Informatia pentru contul dumneavoastra urmeaza aici: + +-------------------------------------- +Nume utilizator : {USERNAME} +Parola : {PASSWORD} +-------------------------------------- + +Incercati sa nu va uitati parola deoarece aceasta a fost stocata codat in baza noastra de date si nu o putem recupera pentru dumneavoastra. Daca totusi o uitati, veti putea cere o parola noua care va fi activata la fel cum a fost activat acest cont de utilizator. + +Va multumim pentru inregistrare. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_welcome_inactive.tpl new file mode 100644 index 00000000..03b7b488 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/email/user_welcome_inactive.tpl @@ -0,0 +1,20 @@ +Subject: Bine ati venit in forumurile {SITENAME} + +{WELCOME_MSG} + +Va rugam sa pastrati acest mesaj. Informatia pentru contul dumneavoastra urmeaza aici: + +-------------------------------------- +Nume utilizator : {USERNAME} +Parola : {PASSWORD} +-------------------------------------- + +Contul dumneavoastra este deocamdata inactiv. Nu-l puteti folosi pana urmati legatura: + +{U_ACTIVATE} + +Incercati sa nu va uitati parola deoarece aceasta a fost stocata codat in baza noastra de date si nu o putem recupera pentru dumneavoastra. Daca totusi o uitati, veti putea cere o parola noua care va fi activata la fel cum a fost activat acest cont de utilizator. + +Va multumim pentru inregistrare. + +{EMAIL_SIG} diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/index.htm b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/index.htm index e86fec76..e0cc5f36 100644 --- a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/index.htm +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/index.htm @@ -3,8 +3,8 @@ - + - + diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/lang_bbcode.php b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/lang_bbcode.php new file mode 100644 index 00000000..00787ba6 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/lang_bbcode.php @@ -0,0 +1,80 @@ +
  • Pentru a face o bucata de text ingrosata (bold), includeti-o intre [b][/b] , spre exemplu

    [b]Salut[/b]

    va deveni Salut
  • Pentru subliniere folositi [u][/u], spre exemplu

    [u]Buna dimineata[/u]

    devine Buna dimineata
  • Pentru a scrie cu font cursiv (italic) folositi [i][/i] , spre exemplu

    [i]Super![/i]

    va deveni Super!
  • "); +$faq[] = array("Cum sa schimbati culoarea textului sau marimea", "Pentru a schimba culoarea sau marimea textului dumneavoastra puteti folosi mai multe balize. Tineti minte ca felul cum apare mesajul depinde de browser-ul si sistemul clientului :
    • Schimbarea culorii textului se face prin trecerea intre [color=][/color]. Puteti specifica fie o culoare cunoscuta, in limba engleza, (red pentru rosu), blue pentru albastru, yellow pentru galben) sau un triplet hexazecimal (#FFFFFF, #000000). Spre exemplu, pentru a scrie cu rosu veti folosi :

      [color=red]Salut![/color]

      sau

      [color=#FF0000]Salut![/color]

      Amblele vor avea ca rezultat Salut!
    • Schimbarea marimii textului este facuta in acelasi fel folosind [size=][/size]. Aceasta baliza depinde de sablonul pe care il folositi dar formatul recomandat este o valoare numerica reprezentand marimea textului in pixeli, pornind de la 1 (extrem de mic) si ajungand pana la 29 (foarte mare). Spre exemplu:

      [size=9]MIC[/size]

      in general va avea ca rezultat MIC

      in vreme ce

      [size=24]ENORM![/size]

      va fi ENORM!
    "); +$faq[] = array("Pot combina balizele (tag-urile) de formatare?", "Desigur. Spre exemplu, pentru a atrage atentia cuiva ati putea sa scrieti

    [size=18][color=red][b]PRIVESTE-MA![/b][/color][/size]

    si rezultatul va fi PRIVESTE-MA!

    Totusi, nu va recomandam sa scrieti prea mult text astfel ! Tineti minte ca depinde de dumneavoastra sa va asigurati ca balizele sunt inchise corect. Spre exemplu, urmatoarea secventa este incorecta:

    [b][u]Asa este gresit[/b][/u]"); + +$faq[] = array("--","Citate si text cu latime fixa"); +$faq[] = array("Citarea textului in raspunsuri", "Exista doua modalitati de a cita textul, cu referinta si fara.
    • Cand utilizati functia de raspuns inclusiv mesajul, ar trebui sa observati ca mesajul respectiv este adagat in fereastra de publicare inclus intr-un bloc [quote=\"\"][/quote]. Aceasta metoda va permite sa il citati cu referinta la o persoana sau orice altceva doriti sa scrieti ! Spre exemplu, pentru a cita o bucata de text scrisa de Dl. Ionescu ati scrie :

      [quote=\"Dl. Ionescu\"] Textul scris de Dl. Ionescu [/quote]

      Rezultatul va fi ca Dl. Ionescu a scris: va fi adaugat inainte de textul citat. Tine-ti minte ca trebuie sa includeti ghilimelele \"\" in jurul numelui pe care il citati. Acestea nu sunt optionale.
    • A doua metoda va permite sa citati fara un autor. Pentru a folosi acest lucru introduceti textul intre balizele [quote][/quote]. Cand il citati, mesajul va arata pur si simplu Citat: inainte de textul propriu-zis.
    "); +$faq[] = array("Generarea de cod sau de text cu marime fixa", "Daca doriti sa scrieti o bucata de cod sau - de fapt - orice altceva care are nevoie de o latime fixa, cum ar fi un font de tip Courier, ar trebui sa introduceti textul intre balize [code][/code] , spre exemplu:

    [code]echo \"O linie de cod\";[/code]

    Toate formatarile folosite intre balizele [code][/code] sunt retinute cand cititi mesajul."); + + +$faq[] = array("--","Generarea listelor"); +$faq[] = array("Crearea unei liste neordonate", "Codul BB include doua tipuri de liste, neordonate si ordonate. In mare sunt la fel cu echivalentele lor HTML. O lista neordonata scrie fiecare obiect din lista secvential adaugandu-le un alineat si un caracter bullet. Pentru a crea o lista neordonata folositi [list][/list] si definiti fiecare obiect din lista folosind [*]. Spre exemplu, pentru a va scrie culorile preferate ati putea folosi :

    [list]
    [*]rosu
    [*]albastru
    [*]galben
    [/list]

    Aceasta ar genera urmatoarea lista:
    • rosu
    • albastru
    • galben
    "); +$faq[] = array("Crearea unei liste ordonate", "Al doilea tip de lista, lista ordonata va ofera controlul asupra ceea ce este afisat inaintea fiecarui obiect. Pentru a crea o lista ordonata folositi [list=1][/list] pentru o lista numerica sau [list=a][/list] pentru o lista alfabetica. Ca si la listele neordonate, obiectele sunt indicate folosind [*]. Spre exemplu:

    [list=1]
    [*]Mergi la magazin
    [*]Cumpara un calculator
    [*]Tipa la el cand crapa
    [/list]

    va genera urmatoarele:
    1. Mergi la magazin
    2. Cumpara un calculator
    3. Tipa la el cand crapa
    pe cand pentru o lista alfabetica ati folosi :

    [list=a]
    [*]Primul raspuns
    [*]Al doilea raspuns
    [*]Al treilea raspuns
    [/list]

    avand ca rezultat:
    1. Primul raspuns
    2. Al doilea raspuns
    3. Al treilea raspuns
    "); + + +$faq[] = array("--", "Crearea legaturilor"); +$faq[] = array("Legaturi catre alte site-uri", "Codul BB ofera multe resurse de creare a legaturilor, cunoscute mai bine ca URL-uri.
    • Prima din acestea foloseste baliza [url=][/url], si orice veti scrie dupa semnul egal va determina continutul acelei balize sa se comporte ca un URL. Spre exemplu, o legatura catre phpBB ar fi:

      [url=http://www.phpbb.com/]Vizitati phpBB![/url]

      Rezultatul ar fi urmatorea legatura: Vizitati phpBB!. Veti observa ca legatura se va deschide intr-o fereastra noua pentru ca utilizatorul sa poata continua sa utilizeze forumul daca doreste.
    • Daca doriti sa fie afisat chiar URL-ul atunci puteti sa scrieti:

      [url]http://www.phpbb.com/[/url]

      Acesta va genera urmatoarea legatura: http://www.phpbb.com/
    • Alte facilitati phpBB includ si ceva numit legaturi magice, care va transforma un URL corect din punct de vedere sintactic intr-un URL fara ca dumneavoastra sa specificati vreo baliza sau sa incepeti cu http://. Spre exemplu, daca veti scrie www.phpbb.com aceasta va deveni direct http://www.phpbb.com/. Acelasi lucru se intampla si cu adresele de mail. Puteti folosi o adresa explicit spre exemplu:

      [email]cineva@domeniu.adr[/email]

      care va rezulta in cineva@domeniu.adr sau puteti sa scrieti direct cineva@domeniu.adr si mesajul dumneavoastra va fi automat convertit cand il veti vizualiza.
    La fel ca tag-urile codului BB puteti folosi pentru URL-uri orice tip de tag, ca si [img][/img] (cititi punctul urmator), [b][/b] etc. Ca si in cazul balizelor de formatare depinde de dumneavoastra sa va asigurati de ordinea corecta de deschidere si inchidere. Spre exemplu:

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/url][/img]

    nu este corect, lucru care ar putea duce la stergerea mesajului, asa ca aveti mare grija."); + + +$faq[] = array("--", "Afisarea imaginilor in mesaje"); +$faq[] = array("Adaugarea unei imagini in mesaj", "Codul BB include o baliza pentru includerea imaginilor in mesajele dumneavoastra. Doua lucruri foarte importante trebuie tinute minte: multi utilizatori nu apreciaza afisarea multor imagini intr-un mesaj si imaginea trebuie sa fie deja disponibila pe internet (nu poate exista doar pe calculatorul dumneavoastra, doar daca nu rulati un server de web). Nu exista in prezent nici o modalitate de stocare a imaginilor local cu phpBB (toate aceste probleme vor fi luate in discutie la urmatoarea versiune). Pentru a afisa o imagine trebuie sa inchideti URL-ul imaginii in balize [img][/img]. Spre exemplu:

    [img]http://www.phpbb.com/images/phplogo.gif[/img].

    Asa cum s-a vazut in sectiunea anterioara despre URL-uri, puteti include o imagine intr-o baliza [url][/url] daca doriti, spre exemplu :

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/img][/url]

    ar genera:

    \"\"
    "); + +$faq[] = array("--", "Diverse"); +$faq[] = array("Pot sa imi adaug propriile balize (tag-uri)?", "Nu, din nefericire; nu direct in phpBB 2.0 . Cautam modalitati de a oferi balize modificabile pentru urmatoarea versiune majora."); + +// +// This ends the codul BB guide entries +// + +?> diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/lang_faq.php b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/lang_faq.php new file mode 100644 index 00000000..98927e9a --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/lang_faq.php @@ -0,0 +1,107 @@ +Autentifica-ma automat la fiecare vizita, atunci cand va autentificati veti fi autentificat doar pentru o perioada prestabilita. Aceasta masura previne ca cineva sa se foloseasca de contul dumneavoastra. Pentru a ramane autentificat, bifati aceasta optiune la autentificare, dar acest lucru nu este recomandat daca accesati forumul de la un calculator utilizat de mai multe persoane, cum ar fi de la o biblioteca, cafenea internet, facultate etc"); +$faq[] = array("Cum fac sa nu imi apara numele de utilizator pe listele de utilizatori conectati?", "In profilul dumneavoastra veti gasi o optiune Ascundeti indicatorul de conectare, si daca veti seta aceasta optiune pe Da veti fi vizibil doar pentru administratori si pentru dumneavoastra. Veti fi numarat ca utilizator ascuns."); +$faq[] = array("Mi-am pierdut parola!", "Nu intrati in panica! Parola dumneavoastra nu poate fi refacuta, dar poate fi resetata. Pentru a realiza acest lucru, mergeti la pagina de autentificare si folositi legatura Mi-am uitat parola, urmati instructiunile si ar trebui sa puteti sa va autentificati in scurt timp."); +$faq[] = array("Sunt inregistrat dar nu ma pot autentifica!", "Mai intai verificati daca ati introdus numele de utilizator si parola corect. Daca sunt corecte, atunci fie, daca este activata optiunea COPPA si ati dat bifat Sunt de acord cu aceste conditii si declar ca am sub 13 ani la inregistrare, va trebui sa urmati instructiunile primite, fie contul dumneavoastra trebuie sa fie activat. Unele forumuri obliga ca toti utilizatori noi sa isi activeze conturile , fie catre dumneavoastra personal, fie de catre administrator inainte de a va puteti autentifica. Cand v-ati inregistrat ati fi aflat daca este necesara activarea. Daca ati primit un email atunci urmati instructiunile. Daca nu, sunteti sigur ca ati specificat corect adresa de mail ? Unul din motivele pentru care activarea este folosita este pentru a preveni abuzul de catre utilizatori pirat anonimi. Daca sunteti sigur ca adresa de mail folosita este corecta atunci incercati sa contactati administratorul."); +$faq[] = array("M-am inregistrat cu ceva timp in urma dar nu ma mai pot autentifica?!", "Cele mai probabile motive sunt: ati folosit un nume de utilizator inexistent sau o parola gresita (verificati-va email-ul pe care l-ati primit cand v-ati inregistrat) sau administratorul a sters contul dumneavoastra dintr-un motiv sau altul. Daca motivul este al doilea, atunci poate nu ati scris nici un mesaj ? Se obisnuieste ca forumurile sa excluda periodic utilizatorii care nu au scris nimic pentru a reduce marimea bazei de date. Incercati sa va inregistrati din nou si sa va implicati in discutii."); + + +$faq[] = array("--","Preferinte si setari"); +$faq[] = array("Cum imi schimb setarile?", "Toate setarile dumneavoastra (daca sunteti inregistrat) sunt stocate in baza de date. Pentru a le schimba folositi legatura Profil (in general afisata in partea superioara a paginilor dar nu intotdeauna). Acest lucru va va permite sa va schimbati toate setarile."); +$faq[] = array("Orele nu sunt corecte!", "Orele sunt aproape sigur corecte, dar ceea ce dumneavoastra s-ar putea sa vedeti ca toate orele afisate sunt intr-o zona cu fus orar diferit fata de cea in care sunteti. Daca este asa, ar trebui sa va schimbati setarea din profil pentru zona de fus orar in care sunteti, cum ar fi Bucuresti, Londra, Paris, etc. Va rugam, sa observati ca schimbarea zonei de fus orar, ca majoritatea setarilor, poate fi facuta doar de utilizatorii inregistrati. Deci daca nu sunteti inregistrat, acesta este un moment bun sa o faceti, daca imi permiteti jocul de cuvinte!"); +$faq[] = array("Am schimbat zona de fus orar si ora tot este gresita!", "Daca sunteti sigur ca ati setat zona de fus orar corect si ora inca este diferita, cel mai probabil raspuns este ora de vara. Programul nu a fost gandit sa se plieze dupa schimbarile facute intre ora standard si cea de vara asa ca in timpul lunilor de vara ora poate fi diferita cu 60 de minute fata de cea locala reala."); +$faq[] = array("Limba mea nu este in lista!", "Cele mai probabile motive sunt fie ca administratorul nu a instalat limba dumneavoastra sau ca cineva nu a tradus inca acest program in limba dumneavoastra. Incercati sa il intrebati pe administrator daca poate instala limba de care aveti nevoie si daca nu exista, atunci sunteti liber sa creati o noua traducere. Mai multe informatii pot si gasite pe site-ul grupului phpBB. Urmariti legatura din partea inferioara paginilor)"); +$faq[] = array("Cum pot afisa o imagine sub numele meu de utilizator?", "Pot fi doua imagini sub numele de utilizator cand vizualizati mesajele. Prima este o imagine asociata cu rangul dumneavoastra, in general acestea luand forma de stele sau blocuri indicand cate mesaje ati scris sau statutul dumneavoastra pe forumuri. Sub aceasta ar putea fi o imagine mai mare cunoscuta sub numele de avatar (imagine asociata). Aceasta este, in general, unica sau personala fiecarui utilizator. Administratorul decide daca sa activeze imaginile asociate si au posibilitatea de a alege modalitatea prin care imaginile asociate pot fi folosite. Daca nu puteti folosi imaginile asociate, atunci aceasta este decizia administratorului si ar trebui sa-l intrebati pe acesta despre motivele care au dus la aceasta decizie (suntem siguri ca vor fi intemeiate!)"); +$faq[] = array("Cum imi schimb rangul?", "In general nu puteti schimba direct rangurile (rangul apare direct sub numele dumneavoastra de utilizator, in mesaje si in profilul dumneavoastra, depinde de stilul folosit). Majoritatea forumurilor folosesc rangurile pentru a indica numarul de mesaje pe care le-ati scris si pentru a identifica anumiti utilizatori, cum ar fi moderatorii si administratorii. Va rugam, sa nu abuzati de forum scriind mesaje inutile doar pentru a va creste rangul, pentru ca probabil veti descoperi ca moderatorul sau administratorul va va scadea pur si simplu numarul de mesaje scrise."); +$faq[] = array("De ce cand folosesc legatura de email al unui utilizator imi cere sa ma autentific?", "Doar utilizatorii inregistrati pot trimite mesaje altor utilizatori prin formularul incorporat de mail (daca administratorul permite acest lucru). Acest lucru se intampla pentru a preveni folosirea malitioasa a sistemului de mesagerie de catre utilizatorii anonimi."); + + +$faq[] = array("--","Probleme de scriere/publicare a mesajelor"); +$faq[] = array("Cum deschid un subiect in forum?", "Simplu. Apasati pe butonul specific, fie din forum, fie pe ecranul cu subiecte. Este posibil sa fie nevoie sa va inregistrati inainte de a scrie un mesaj. Facilitatile care va sunt disponibile sunt trecute in partea de jos a ecranului (de genul Puteti crea un subiect nou in acest forum )"); +$faq[] = array("Cum pot modifica sau sterge un mesaj?", "In afara cazului in care sunteti administratorul forumului sau moderatorul, puteti modifica sau sterge doar mesajele dumneavoastra. Puteti modifica un mesaj (uneori doar pentru o scurta perioada dupa publicare) apasand butonul modifica pentru mesajul respectiv. Veti observa o mica sectiune de text sub mesaj cand reveniti la subiect. Aceasta arata de cate ori l-ati modificat. Aceasta va aparea doar daca nimeni nu v-a raspuns. De asemenea, nu va aparea daca moderatorii sau administratorii modifica mesajul (acestia ar trebui sa lase un mesaj in care sa spuna ce au modificat si de ce). Observati ca utilizatorii normali nu pot modifica un mesaj odata ce cineva a raspuns."); +$faq[] = array("Cum pot sa imi adaug semnatura la mesaj?", "Pentru a adauga o semnatura trebuie intai sa va creati una, lucru pe care il puteti face accesandu-va profilul. Odata ce semnatura este creata, puteti sa bifati optiunea Adauga semnatura de pe formularul de publicare pentru a va adauga semnatura. Puteti, de asemenea, sa va adaugati direct semnatura la toate mesajele bifand optiunea corespunzatoare din profil (puteti sa preveniti adaugarea semnaturii unor anumite mesaje daca stergeti bifa respectiva din formularul de publicare)"); +$faq[] = array("Cum pot crea un sondaj?", "Este usor sa creati un sondaj. Cand creati un subiect nou (sau modificati primul mesaj al unui subiect, daca aveti permisiunea), ar trebui sa vedeti o sectiune Adauga un chestionar sub zona principala de publicare (daca nu vedeti acest lucru probabil ca nu aveti privilegiile de acces necesare pentru a crea sondaje). Ar trebui sa introduceti un titlu pentru chestionar si cel putin doua optiuni (pentru a alege o optiune scrieti intrebarea sondajului si apasati pe butonul Adauga o optiune). Puteti sa schimbati si valabilitatea sondajului, unde perioada 0 inseamna un sondaj perpetuu. Va exista si o limita a numarului de optiuni pe care il puteti folosi, specificata de catre administrator."); +$faq[] = array("Cum modific sau sterg un sondaj?", "Ca si in cazul mesajelor, sondajele pot fi modificate doar de autor, de moderator sau de un administrator. Pentru a modifica un sondaj efectuati un click pe primul mesaj din cadrul subiectului (acesta este intotdeauna asociat cu sondajul). Daca nimeni nu a votat, atunci poate fi sters sau modificat, insa daca cineva a votat deja, doar moderatorul sau administratorul poate modifica sau sterge sondajul. Acest lucru previne sabotarea sondajelor sau schimbarea inoportuna a optiunilor."); +$faq[] = array("De ce nu pot sa accesez un forum?", "Unele forumuri pot fi limitate pentru anumiti utilizatori sau grupuri. Pentru a vedea, citi, publica, etc. este nevoie probabil de autorizatie speciala pe care o pot acorda doar moderatorul forumului si administratorul. Ar trebui sa luati legatura cu ei."); +$faq[] = array("De ce nu pot vota in sondaje?", "Doar utilizatorii inregistrati pot vota in sondaje (pentru a preveni falsificarea rezultatelor). Daca v-ati inregistrat si tot nu puteti vota atunci probabil ca nu aveti drepturile de acces necesare."); + + +$faq[] = array("--","Formatari si tipuri de mesaje"); +$faq[] = array("Ce este codul BB?", "Codul BB este o implementare speciala a HTML-ului. Posibilitatea de a folosi codul BB este data de decizia administratorului (puteti dezactiva acest cod de la mesaj la mesaj din formularul de publicare). Codul BB este similar ca stil cu HTML-ul, balizele (tag-urile) sunt inchise in paranteze patrate [ si ] mai degraba decat < si > si ofera un control mai bun asupra a ce si cum se afiseaza. Pentru mai multe informatii despre codul BB, consultati ghidul care poate fi accesat de pe pagina de publicare."); +$faq[] = array("Pot folosi HTML?", "Acest lucru depinde de administrator, care are control complet. Daca va este permis sa il folositi, probabil ca veti descoperi ca doar cateva balize functioneaza. Aceasta este o masura de securitate pentru a preintampina abuzurile care ar duce la distrugerea asezarii in pagina sau ar cauza alte probleme. Daca HTML este activat, il puteti dezactiva de la mesaj la mesaj din formularul de publicare."); +$faq[] = array("Ce sunt Zambetele?", "Zambetele sau iconitele emotive sunt imagini mici care pot fi folosite pentru a exprima anumite sentimente folosind un cod scurt. Spre exemplu :) inseamna vesel , :( inseamna trist. Lista completa poate fi vazuta in formularul de publicare. Incercati totusi sa nu ii folositi prea mult pentru ca pot face un mesaj ilizibil si un moderator se poate hotari sa ii scoata din mesaj sau sa stearga mesajul cu totul."); +$faq[] = array("Pot publica imagini?", "Imaginile pot fi afisate in mesajele dumneavoastra. Cu toate acestea, nu exista nici o posibilitate in acest forum pentru incarcarea imaginilor direct in forum. De aceea, trebuie sa scrieti o legatura catre o imagine stocata pe un server accesibil publicului, cum ar fi http://un.server.oarecare.ro/imaginea-mea.gif. Nu puteti sa faceti legatura cu imagini de pe calculatorul dumneavoastra (doar daca este un server), nici cu imagini stocate in spatele unui mecanism de autentificare, cum ar fi casutele de mail, site-uri protejate cu parola, etc. Pentru a afisa imaginea, folositi fie baliza codului BB [img] sau cod HTML (daca este permis)."); +$faq[] = array("Ce sunt anunturile?" ,"Anunturile deseori contin informatii importante si ar trebui sa le cititi cat de repede puteti. Anunturile apar in partea de sus a fiecarei pagini in forumul de care apartin. Daca puteti sau nu posta un anunt depinde de permisiunile necesare, care sunt stabilite de administrator."); +$faq[] = array("Ce sunt subiectele importante?", "Subiectele importante apar sub anunturi in forum si doar pe prima pagina. Deseori sunt destul de importante si ar trebui sa le cititi daca puteti. Ca si cu anunturile, administratorul alege ce permisiuni sunt necessre pentru pentru a le publica."); +$faq[] = array("Ce sunt subiectele blocate?", "Subiectele sunt blocate fie de catre moderator, fie de catre administrator. Nu puteti raspunde unui subiect blocat si orice chestionar continut este inchis automat. Subiectele pot fi inchise din mai multe motive."); + + +$faq[] = array("--","Nivelurile de utilizatori si grupuri"); +$faq[] = array("Cine sunt administratorii?", "Administratorii sunt cei care au cel mai mare nivel de control asupra intregului forum. Acesti utilizatori controleaza toate detaliile forumurilor, incluzand permisiunile de acces, excluderea utilizatorilor, crearea grupurilor si a moderatorilor, etc. De asemenea, au capacitatea de a modera toate formurile."); +$faq[] = array("Cine sunt moderatorii?", "Moderatorii sunt persoane (sau grupuri de persoane) a caror menire este sa aiba grija de forumuri in mod constant. Au permisiunea de a modifica sau sterge mesajele si de a bloca, debloca, muta, sterge si imparti subiectele de discutie in forumurile pe care le modereaza. In mod general, moderatorii exista pentru a avea grija ca utilizatorii sa nu scrie \"pe langa subiect\" si sa nu scrie materiale abuzive sau ofensatoare."); +$faq[] = array("Ce sunt grupurile de utilizatori?", "Grupurile de utilizatori sunt o modalitate de grupare a utilizatorilor. Fiecare utilizator poate apartine mai multor grupuri (acest lucru difera de majoritatea celorlalte programe) si fiecare grup are drepturi de acces individuale. Acest lucru usureaza munca administratorilor daca doresc ca mai multi utilizatori sa modereze un forum sau sa le ofere acces intr-un forum privat."); +$faq[] = array("Cum pot sa fac parte dintr-un grup de utilizatori?", "Pentru a intra intr-un grup folositi legatura de Grupuri de utilizatori din partea de sus a paginii (acest lucru poate fi diferit de la pagina la pagina). Nu toate grupurile sunt deschise, unele sunt inchise si altele pot fi chiar ascunse. Daca grupul o permite, puteti sa cereti sa fiti inscris apasand butonul respectiv. Moderatorul va trebui sa va aprobe cererea. Este posibil sa va intrebe care sunt motivele pentru care va doriti sa intrati in grup. Va rugam sa nu hartuiti un moderator de grup daca va respinge cererea pentru ca are motive intemeiate."); +$faq[] = array("Cum pot deveni moderatorul unui grup de utilizatori?", "Grupurile de utilizatori sunt create de catre administrator si in acel moment este numit un moderator. Daca doriti sa creati un grup de utilizatori atunci primul lucru pe care trebuie sa il faceti este sa luati legatura cu administratorul."); + + +$faq[] = array("--","Mesaje private"); +$faq[] = array("Nu pot trimite mesaje private!", "Exista trei posibile motive: nu sunteti inregistrat si/sau autentificat, administratorul nu a activat mesajele private pentru toti utilizatorii sau administratorul a restrictionat pentru dumneavoastra folosirea mesajelor private. In ultimul caz ar trebui sa il intrebati ce motive a avut."); +$faq[] = array("Tot primesc mesaje private nedorite!", "In viitor vom adauga o lista de persoane ale caror mesaje sa fie ignorate. Deocamdata daca primiti in continuare aceste mesaje anuntati administratorul, pentru ca el are posibilitatea de a opri un utilizator sa trimita mesaje private."); +$faq[] = array("Am primit spam-uri sau mesaje abuzive de la cineva din forum!", "Ne pare rau sa auzim acest lucru. Formularul pentru trimiterea unui mesaj include masuri de siguranta pentru a observa care utilizatori trimit astfel de mesaje. Ar trebui sa trimiteti administratorului o copie completa a mesajului primit, inclusiv antetul (acestea ofera detalii despre utilizatorul care a trimis mesajul). Astfel, el poate actiona."); + +// +// These entries should remain in all languages and for all modifications +// +$faq[] = array("--","Intrebari despre phpBB 2"); +$faq[] = array("Cine a scris acest program?", "Acest program (in forma nemodificata) este produs, lansat si aflat sub copyright-ul grupului phpBB. Este disponibil sub Licenta Generala Publica GNU si poate fi distribuit liber; folositi legatura catre grup mai multe detalii."); +$faq[] = array("De ce nu este facilitatea X disponibila?", "Acest program a fost scris si licentiat de catre grupul phpBB. In cazul in care considerati ca o facilitate trebuie sa fie adaugata, va rugam sa vizitati site-ul phpBB.com si sa vedeti ce are de spus grupul phpBB. Va rugam sa nu publicati cereri de facilitati pe forumurile de la phpbb.com, pentru ca grupul phpBB foloseste sourceforge pentru a delega sarcinile legate de noile facilitati. Va rugam sa treceti prin aceste forumuri si sa vedeti, daca exista, care este pozitia noastra legata de o facilitate si sa urmati procedura explicata acolo."); +$faq[] = array("Cu cine iau legatura pentru probleme legate de abuzuri si/sau juridice legate de acest program?", "Ar trebui sa luati legatura cu administratorul forumului. Daca nu puteti sa faceti acest lucru, ar trebui sa incercati cu unul din moderatorii de forumuri si sa ii intrebati cu cine ati putea lua legatura. Daca tot nu primiti raspuns, ar trebui sa luati legatura cu posesorul domeniului dumneavoastra (efectuati o interogare whois) sau, daca acesta este pe un domeniu gratuit (yahoo, free.fr, etc.), conducerea sau departamentul pentru abuzuri. Grupul phpBB nu are absolut nici un fel de control si nu poate fi tras la raspundere pentru cum, unde sau de catre cine este folosit acest program. Este inutil sa luati legatura cu grupul phpBB pentru orice fel de probleme juridice care nu sunt legate direct de pagina phpbb.com sau de program in sine. Daca trimiteti un mesaj catre grupul phpBB despre orice folosire a unui tert a acestui program, nu asteptati un raspuns pentru ca nu veti primi."); + +// +// This ends the FAQ entries +// + +?> diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/search_stopwords.txt b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/search_stopwords.txt new file mode 100644 index 00000000..bea6a715 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/search_stopwords.txt @@ -0,0 +1,141 @@ +un +despre +dupa +inainte +tot +toti +aproape +asemenea +una +si +raspuns +oricare +oricine +oricui +oriunde +sunt +este +ca +intreaba +intrebare +la +rau +fi +pentru +fiind +intre +mare +apropo +dar +de +poate +zi +ziua +zile +facut +fa +face +jos +fiecare +etc +altfel +departe +gaseste +pentru +ia +bun +are +avand +ea +aici +iei +lui +acum +eu +daca +in +doar +stie +sti +mare +mic +mult +poate +multe +nevoie +niciodata +nou +noutati +nu +not +nimic +de +frecvent +batran +pornit +oprit +odata +doar +oops +sau +altul +alta +afara +pagina +pune +intrebare +intrebari +intrebat +decat +recent +spus +vazut +spune +vede +trebui +trebuia +deci +cativa +ceva +candva +undeva +curand +adevarat +acela +acel +acesta +aceasta +acestia +lor +ei +atunci +acolo +prin +timp +spre +tot +sub +sus +utilizatori +versiune +foarte +via +vrea +vreau +fost +cale +noi +mers +ce +cand +unde +care +cine +larg +cu +fara +www +da +inca +tu +lol \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_romanian_no_diacritics/search_synonyms.txt b/includes/shared/phpbb2/language/lang_romanian_no_diacritics/search_synonyms.txt new file mode 100644 index 00000000..e69de29b diff --git a/includes/shared/phpbb2/language/lang_romanian_utf/index.htm b/includes/shared/phpbb2/language/lang_romanian_utf/index.htm new file mode 100644 index 00000000..13431230 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_utf/index.htm @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/includes/shared/phpbb2/language/lang_romanian_utf/lang_admin.php b/includes/shared/phpbb2/language/lang_romanian_utf/lang_admin.php new file mode 100644 index 00000000..a48df1be --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_utf/lang_admin.php @@ -0,0 +1,785 @@ +Pagina de start a administratorului din partea stângă. Pentru a reveni la pagina de start a forumului dumneavoastră, apăsaţi pe logo-ul phpBB-ului aflat, de asemenea, în partea stângă. Celelalte legături din partea stângă vă permit să controlaţi orice aspect al forumului, fiecare ecran va avea instrucţiuni care dau explicaţii despre cum se folosesc instrumentele.'; +$lang['Main_index'] = 'Pagina de start a forumului'; +$lang['Forum_stats'] = 'Statisticile forumului'; +$lang['Admin_Index'] = 'Pagina de start a administratorului'; +$lang['Preview_forum'] = 'Previzualizare forum'; + +$lang['Click_return_admin_index'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Pagina de start a administratorului'; + +$lang['Statistic'] = 'Statistica'; +$lang['Value'] = 'Valoarea'; +$lang['Number_posts'] = 'Numărul mesajelor scrise'; +$lang['Posts_per_day'] = 'Mesaje scrise pe zi'; +$lang['Number_topics'] = 'Numărul subiectelor'; +$lang['Topics_per_day'] = 'Subiecte pe zi'; +$lang['Number_users'] = 'Numărul utilizatorilor'; +$lang['Users_per_day'] = 'Utilizatori pe zi'; +$lang['Board_started'] = 'Data lansării forumului'; +$lang['Avatar_dir_size'] = 'Dimensiunea directorului cu imagini asociate (Avatar)'; +$lang['Database_size'] = 'Dimensiunea bazei de date'; +$lang['Gzip_compression'] ='Compresia Gzip'; +$lang['Not_available'] = 'Nu este disponibil(ă)'; + +$lang['ON'] = 'Activă'; // This is for GZip compression +$lang['OFF'] = 'Inactivă'; + + +// +// DB Utils +// +$lang['Database_Utilities'] = 'Instrumentele bazei de date'; + +$lang['Restore'] = 'Restaurare'; +$lang['Backup'] = 'Salvare (Backup)'; +$lang['Restore_explain'] = 'Aceasta va efectua o restaurare completă a tuturor tabelelor phpBB dintr-in fişier salvat. Dacă serverul dumneavoastră suportă, puteţi publica un fişier text compresat cu gzip şi aceasta va fi decomprimat automat. ATENŢIE: Această procedură va rescrie orice informaţie deja existentă. Procesul de restaurare poate dura un timp îndelungat; vă rugăm nu părăsiţi această pagină până când restaurarea nu se termină.'; +$lang['Backup_explain'] = 'Aici puteţi face copii de rezervă ale tuturor datelor ce ţin de phpBB. Dacă aveţi şi tabele adiţionale în aceeaşi bază de date cu phpBB-ul pe care doriţi să le păstraţi, vă rugăm să introduceţi numele lor separate prin virgulă în căsuţa Tabele Suplimentare de mai jos. Dacă serverul dumneavoastră suportă, puteţi comprima fişierul cu gzip pentru a reduce dimensiunea sa înainte de a efectua operaţiunea de descărcare.'; + +$lang['Backup_options'] = 'Opţiunile de salvare (backup)'; +$lang['Start_backup'] = 'Porneşte operaţiunea de salvare (backup)'; +$lang['Full_backup'] = 'Salvare (Backup) totală'; +$lang['Structure_backup'] = 'Salvează (copie de siguranţă) doar structura'; +$lang['Data_backup'] = 'Salvează (copie de siguranţă) doar datele'; +$lang['Additional_tables'] = 'Tabele suplimentare'; +$lang['Gzip_compress'] = 'Fişier comprimat cu Gzip'; +$lang['Select_file'] = 'Selectaţi un fişier'; +$lang['Start_Restore'] = 'Porneşte operaţiunea de restaurare'; + +$lang['Restore_success'] = 'Baza de date a fost restaurată cu succes.

    Forumul dumneavoastră ar trebui să revină la starea lui înainte ca salvarea să se fi realizat.'; +$lang['Backup_download'] = 'Operaţiunea de descărcare va începe în curând; vă rugăm să aşteptaţi până aceasta va începe'; +$lang['Backups_not_supported'] = 'Scuzaţi, dar efectuarea salvării (backup-ului) nu este în prezent realizabilă pentru sistemul dumneavoastră de baze de date'; + +$lang['Restore_Error_uploading'] = 'Eroare la publicarea fişierului de salvare (backup)'; +$lang['Restore_Error_filename'] = 'Problemă cu numele fişierului; vă rugăm, încercaţi cu un alt fişier'; +$lang['Restore_Error_decompress'] = 'Nu pot decomprima un fişier gzip; vă rugăm, publicaţi o versiune text întreg (plain text)'; +$lang['Restore_Error_no_file'] = 'Nici un fişier nu a fost publicat/încărcat'; + + +// +// Auth pages +// +$lang['Select_a_User'] = 'Selectaţi un utilizator'; +$lang['Select_a_Group'] = 'Selectaţi un grup'; +$lang['Select_a_Forum'] = 'Selectaţi un forum'; +$lang['Auth_Control_User'] = 'Controlul permisiunilor utilizatorului'; +$lang['Auth_Control_Group'] = 'Controlul permisiunilor grupului'; +$lang['Auth_Control_Forum'] = 'Controlul permisiunilor forumului'; +$lang['Look_up_User'] = 'Selectează utilizatorul'; +$lang['Look_up_Group'] = 'Selectează grupul'; +$lang['Look_up_Forum'] = 'Selectează forumul'; + +$lang['Group_auth_explain'] = 'Aici puteţi modifica permisiunile şi starea moderatorului asociat la fiecare grup de utilizatori. Nu uitaţi când schimbaţi permisiunile grupului că permisiunile individuale ale utilizatorului pot să permită accesul utilizatorului la forumuri, etc. Veţi fi atenţionat dacă va apărea această situaţie.'; +$lang['User_auth_explain'] = 'Aici puteţi modifica permisiunile şi starea moderatorului asociat la fiecare utilizator individual. Nu uitaţi când schimbaţi permisiunile utilizatorului că permisiunile individuale ale grupului pot să permită accesul utilizatorului la forumuri, etc. Veţi fi atenţionat dacă va apărea această situaţie.'; +$lang['Forum_auth_explain'] = 'Aici puteţi modifica nivelurile de autorizare ale fiecărui forum. Pentru a realiza acest lucru aveţi la dispoziţie atât o metodă simplă cât şi una avansată, metoda avansată oferind un control mai mare al fiecăriei operaţii din forum. Amintiţi-vă că schimbarea nivelului de permisiuni ale forumurilor va afecta modul de realizare(finalizare) al diverselor operaţiuni solicitate de către utilizatori.'; + +$lang['Simple_mode'] = 'Modul simplu'; +$lang['Advanced_mode'] = 'Modul avansat'; +$lang['Moderator_status'] = 'Starea moderatorului'; + +$lang['Allowed_Access'] = 'Acces permis'; +$lang['Disallowed_Access'] = 'Acces interzis'; +$lang['Is_Moderator'] = 'este moderator'; +$lang['Not_Moderator'] = 'nu este moderator'; + +$lang['Conflict_warning'] = 'Avertizare - Conflict de autorizare'; +$lang['Conflict_access_userauth'] = 'Acest utilizator are încă drepturi de acces la acest forum datorate apartenenţei acestuia la grup. Puteţi să modificaţi permisiunile grupului sau să înlăturaţi acest utilizator din grup pentru a nu mai avea depturi de acces. Grupurile care dau drepturi (şi forumurile implicate) sunt afişate mai jos.'; +$lang['Conflict_mod_userauth'] = 'Acest utilizator are încă drepturi de moderator la acest forum datorate apartenenţei acestuia la grup. Puteţi să modificaţi permisiunile grupului sau să înlăturaţi acest utilizator din grup pentru a nu mai avea depturi de moderator. Grupurile care dau drepturi (şi forumurile implicate) sunt afişate mai jos.'; + +$lang['Conflict_access_groupauth'] = 'Utilizatorul(i) următor(i) are(au) încă drepturi de acces la acest forum datorate setărilor lui(lor) de permisiuni. Puteţi să modificaţi permisiunile utilizatorului pentru a nu mai avea drepturi de acces. Utilizatorii care dau drepturi (şi forumurile implicate) sunt afişaţi mai jos.'; +$lang['Conflict_mod_groupauth'] = 'Utilizatorul(i) următor(i) are(au) încă drepturi de acces la acest forum datorate setărilor lui(lor) de permisiuni. Puteţi să modificaţi permisiunile utilizatorului pentru a nu mai avea drepturi de moderator. Utilizatorii care dau drepturi (şi forumurile implicate) sunt afişaţi mai jos.'; + +$lang['Public'] = 'Public'; +$lang['Private'] = 'Privat'; +$lang['Registered'] = 'Înregistrat'; +$lang['Administrators'] = 'Administratori'; +$lang['Hidden'] = 'Ascuns'; + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! +$lang['Forum_ALL'] = 'TOŢI'; +$lang['Forum_REG'] = 'ÎNREG'; +$lang['Forum_PRIVATE'] = 'PRIVAT'; +$lang['Forum_MOD'] = 'MOD'; +$lang['Forum_ADMIN'] = 'ADMIN'; + +$lang['View'] = 'Vizualizare'; +$lang['Read'] = 'Citire'; +$lang['Post'] = 'Scriere'; +$lang['Reply'] = 'Răspunde'; +$lang['Edit'] = 'Modifică'; +$lang['Delete'] = 'Şterge'; +$lang['Sticky'] = 'Important'; +$lang['Announce'] = 'Anunţ'; +$lang['Vote'] = 'Vot'; +$lang['Pollcreate'] = 'Creare sondaj'; + +$lang['Permissions'] = 'Permisiuni'; +$lang['Simple_Permission'] = 'Permisiune simplă'; + +$lang['User_Level'] = 'Nivelul utilizatorului'; +$lang['Auth_User'] = 'Utilizator'; +$lang['Auth_Admin'] = 'Administrator'; +$lang['Group_memberships'] = 'Membru al grupurilor'; +$lang['Usergroup_members'] = 'Acest grup conţine următorii membrii'; + +$lang['Forum_auth_updated'] = 'Permisiunile forumului au fost actualizate'; +$lang['User_auth_updated'] = 'Permisiunile utilizatorului au fost actualizate'; +$lang['Group_auth_updated'] = 'Permisiunile grupului au fost actualizate'; + +$lang['Auth_updated'] = 'Permisiunile au fost actualizate'; +$lang['Click_return_userauth'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Controlul permisiunilor utilizatorului'; +$lang['Click_return_groupauth'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Controlul permisiunilor grupului'; +$lang['Click_return_forumauth'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Controlul permisiunilor forumului'; + + +// +// Banning +// +$lang['Ban_control'] = 'Controlul interdicţiilor'; +$lang['Ban_explain'] = 'Aici puteţi să controlaţi interdicţiile utilizatorilor. Puteţi obţine acest lucru interzicând una sau mai multe din elementele caracteristice unui utilizator: denumire utilizator, mulţimea adreselor IP sau numele host-urilor. Aceste metode împiedică un utilizator să nu ajungă în pagina de început a forumului. Pentru a împiedica un utilizator să se înregistreze sub un alt nume de utilizator puteţi specifica o adresă de mail interzisă. Reţineţi că o singură adresă de mail interzisă nu-l va împiedeca pe utilizatorul în cauză să intre sau să scrie în forumul dumneavoastră; ar trebui să folosiţi prima din cele două metode.'; +$lang['Ban_explain_warn'] = 'Reţineţi că introducerea unei mulţimi de adrese IP înseamnă că toate adresele dintre începutul şi sfârşitul mulţimii au fost adăugate la lista interzisă. Pentru a reduce numărul de adrese adăugate la baza de date se pot folosi wildcard-urile unde este cazul. Dacă chiar trebuie să introduceţi o plajă de valori, încercaţi să o păstraţi cât mai mică sau mai bine reţineţi doar adresele specifice.'; + +$lang['Select_username'] = 'Selectaţi un nume de utilizator'; +$lang['Select_ip'] = 'Selectaţi un IP'; +$lang['Select_email'] = 'Selectaţi o adresă de email'; + +$lang['Ban_username'] = 'Interziceţi unul sau mai mulţi utilizatori'; +$lang['Ban_username_explain'] = 'Puteţi interzice mai mulţi utilizatori într-un singur pas folosind combinaţii potrivite ale mouse-ului (în browser) şi tastaturii calculatorului dumneavoastră'; + +$lang['Ban_IP'] = 'Interziceţi una sau mai multe adrese IP sau nume de host-uri'; +$lang['IP_hostname'] = 'Adrese IP sau nume de host-uri'; +$lang['Ban_IP_explain'] = 'Pentru a specifica mai multe IP-uri diferite sau nume de host-uri trebuie să le separaţi prin virgulă. Pentru a specifica o mulţime de adrese IP, separaţi începutul şi sfârşitul mulţimii cu o liniuţă de unire (-); ca să specificaţi caracterul wildcard folosiţi *'; + +$lang['Ban_email'] = 'Interziceţi una sau mai multe adrese de email'; +$lang['Ban_email_explain'] = 'Pentru a specifica mai multe adrese de email folosiţi separatorul virgulă. Ca să specificaţi un utilizator cu ajutorul wildcard-ului folosiţi *, de exemplu *@hotmail.com'; + +$lang['Unban_username'] = 'Deblocarea utilizatorilor'; +$lang['Unban_username_explain'] = 'Puteţi să deblocaţi mai mulţi utilizatori într-un singur pas folosind combinaţii potrivite ale mouse-ului (în browser) şi tastaturii calculatorului dumneavoastră'; + +$lang['Unban_IP'] = 'Deblocarea adreselor IP'; +$lang['Unban_IP_explain'] = 'Puteţi să deblocaţi mai multe adrese IP într-un singur pas folosind combinaţii potrivite ale mouse-ului (în browser) şi tastaturii calculatorului dumneavoastră'; + +$lang['Unban_email'] = 'Deblocarea adreselor email'; +$lang['Unban_email_explain'] = 'Puteţi să deblocaţi mai multe adrese email într-un singur pas folosind combinaţii potrivite ale mouse-ului (în browser) şi tastaturii calculatorului dumneavoastră'; + +$lang['No_banned_users'] = 'Nu este nici un utilizator interzis'; +$lang['No_banned_ip'] = 'Nu este nici o adresă IP interzisă'; +$lang['No_banned_email'] = 'Nu este nici o adresă de email interzisă'; + +$lang['Ban_update_sucessful'] = 'Lista restricţiilor a fost actualizată cu succes'; +$lang['Click_return_banadmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Control Restricţii'; + + +// +// Configuration +// +$lang['General_Config'] = 'Configurare generală'; +$lang['Config_explain'] = 'Formularul de mai jos vă permite să personalizaţi toate opţiunile generale ale forumului. Pentru configurarea utilizatorilor şi forumurilor folosiţi legăturile specifice aflate în partea stângă.'; + +$lang['Click_return_config'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Configurare generală'; + +$lang['General_settings'] = 'Setările generale ale forumului'; +$lang['Server_name'] = 'Numele domeniului'; +$lang['Server_name_explain'] = 'Numele domeniului acestui forum rulează din'; +$lang['Script_path'] = 'Calea script-ului'; +$lang['Script_path_explain'] = 'Calea unde phpBB2 este localizat relativ la numele domeniului'; +$lang['Server_port'] = 'Port-ul serverului'; +$lang['Server_port_explain'] = 'Port-ul pe care serverul dumneavoastră rulează este de obicei 80 (numai dacă nu a fost schimbat)'; +$lang['Site_name'] = 'Numele site-ului'; +$lang['Site_desc'] = 'Descrierea site-ului'; +$lang['Board_disable'] = 'Forum dezactivat'; +$lang['Board_disable_explain'] = 'Această acţiune va face forumul indisponibil utilizatorilor. Nu închideţi sesiunea curentă când dezactivaţi forumul, altfel nu veţi mai fi capabil să vă autentificaţi din nou!'; +$lang['Acct_activation'] = 'Validarea contului activată de'; +$lang['Acc_None'] = 'Nimeni'; // These three entries are the type of activation +$lang['Acc_User'] = 'Utilizator'; +$lang['Acc_Admin'] = 'Administrator'; + +$lang['Abilities_settings'] = 'Configurările de bază ale utilizatorilor şi forumurilor'; +$lang['Max_poll_options'] = 'Numărul maxim al opţiunilor chestionarului'; +$lang['Flood_Interval'] = 'Interval de flood'; +$lang['Flood_Interval_explain'] = 'Numărul de secunde pe care un utilzator trebuie să-l aştepte între publicări'; +$lang['Board_email_form'] = 'Trimite mesaj la utilizator via forum'; +$lang['Board_email_form_explain'] = 'Utilizatorii pot trimit mesaje unii la alţi prin acest forum'; +$lang['Topics_per_page'] = 'Subiecte pe pagină'; +$lang['Posts_per_page'] = 'Mesaje pe pagină'; +$lang['Hot_threshold'] = 'Mesaje pentru statutul popular'; +$lang['Default_style'] = 'Stilul standard'; +$lang['Override_style'] = 'Suprascrie stilul utilizatorului'; +$lang['Override_style_explain'] = 'Înlocuirea sitului utilizatorilor cu cel standard'; +$lang['Default_language'] = 'Limba standard'; +$lang['Date_format'] = 'Formatul datei'; +$lang['System_timezone'] = 'Timpul zonal al sistemului'; +$lang['Enable_gzip'] = 'Activare compresie GZip'; +$lang['Enable_prune'] = 'Activare curăţire forum'; +$lang['Allow_HTML'] = 'Permite HTML'; +$lang['Allow_BBCode'] = 'Permite cod BB'; +$lang['Allowed_tags'] = 'Permite balize (tag-uri) HTML'; +$lang['Allowed_tags_explain'] = 'Separă balizele (tag-urile) cu virgule'; +$lang['Allow_smilies'] = 'Permite zâmbete'; +$lang['Smilies_path'] = 'Calea unde se păstrează zâmbetele'; +$lang['Smilies_path_explain'] = 'Calea aflată în directorul dumneavoastră phpBB , de exemplu. imagini/zâmbete'; +$lang['Allow_sig'] = 'Permite semnături'; +$lang['Max_sig_length'] = 'Lungimea maximă a semnăturii'; +$lang['Max_sig_length_explain'] = 'Numărul maxim de caractere aflate în semnătura utilizatorului'; +$lang['Allow_name_change'] = 'Permite schimbarea numelui de utilizator'; + +$lang['Avatar_settings'] = 'Configurări pentru imagini asociate (Avatar)'; +$lang['Allow_local'] = 'Permite galerie de imagini asociate'; +$lang['Allow_remote'] = 'Permite imagini asociate la distanţă'; +$lang['Allow_remote_explain'] = 'Imaginile asociate sunt specificate cu o legătură la alt site web'; +$lang['Allow_upload'] = 'Permite încărcarea imaginii asociate'; +$lang['Max_filesize'] = 'Dimensiunea maximă a fişierului ce conţine imaginea asociată'; +$lang['Max_filesize_explain'] = 'Pentru fişierele ce conţin imaginile asociate încărcate'; +$lang['Max_avatar_size'] = 'Dimensiunea maximă a imaginii asociate'; +$lang['Max_avatar_size_explain'] = '(Înălţime x Lăţime în pixeli)'; +$lang['Avatar_storage_path'] = 'Calea de păstrare a imaginilor asociate'; +$lang['Avatar_storage_path_explain'] = 'Calea aflată în directorul dumneavoastră phpBB, de exemplu. imagini/avatar'; +$lang['Avatar_gallery_path'] = 'Calea de păstrare a galeriilor cu imagini asociate'; +$lang['Avatar_gallery_path_explain'] = 'Calea aflată în directorul dumneavoastră phpBB, de exemplu. imagini/avatar/galerie'; + +$lang['COPPA_settings'] = 'Configurările COPPA'; +$lang['COPPA_fax'] = 'Numărul de fax'; +$lang['COPPA_mail'] = 'Adresa poştală COPPA'; +$lang['COPPA_mail_explain'] = 'Aceasta este adresa poştală unde părinţii vor trimite formularele de înregistrare COPPA'; + +$lang['Email_settings'] = 'Configurările de email'; +$lang['Admin_email'] = 'Adresa de email a administratorului'; +$lang['Email_sig'] = 'Semnătura din email'; +$lang['Email_sig_explain'] = 'Acest text va fi ataşat la toate mesajele pe care forumul le trimite'; +$lang['Use_SMTP'] = 'Folosiţi serverul SMTP pentru email'; +$lang['Use_SMTP_explain'] = 'Specificaţi da dacă doriţi sau aveţi nevoie să trimiteţi mesaje printr-un alt server în loc să folosiţi funcţia locală de mesagerie'; +$lang['SMTP_server'] = 'Adresa serverului SMTP'; +$lang['SMTP_username'] = 'Numele de utilizator SMTP'; +$lang['SMTP_username_explain'] = 'Introduceţi numele de utilizator doar dacă serverul dumneavoastră SMTP necesită această specificare'; +$lang['SMTP_password'] = 'Parola SMTP'; +$lang['SMTP_password_explain'] = 'Introduceţi parola doar dacă serverul dumneavoastră SMTP necesită această specificare'; + +$lang['Disable_privmsg'] = 'Mesagerie privată'; +$lang['Inbox_limits'] = 'Numărul maxim al mesajelor în Cutia cu mesaje (Inbox)'; +$lang['Sentbox_limits'] = 'Numărul maxim al mesajelor în Cutia cu mesaje trimise (Sentbox)'; +$lang['Savebox_limits'] = 'Numărul maxim al mesajelor în Cutia cu mesaje salvate (Savebox)'; + +$lang['Cookie_settings'] = 'Configurările pentru cookie'; +$lang['Cookie_settings_explain'] = 'Aceste detalii definesc cum sunt cookie-urile trimise către browser-ele utilizatorilor. În cele mai multe cazuri valorile standard pentru setările cookie-urilor ar trebui să fie suficiente dar dacă trebuie să le schimbaţi aveţi mare grijă, setările incorecte pot împiedica utilizatorii să se autentifice'; +$lang['Cookie_domain'] = 'Domeniul pentru cookie'; +$lang['Cookie_name'] = 'Numele pentru cookie'; +$lang['Cookie_path'] = 'Calea pentru cookie'; +$lang['Cookie_secure'] = 'Securizare cookie'; +$lang['Cookie_secure_explain'] = 'Dacă serverul dumneavoastră rulează via SSL, selectaţi Activat altfel selectaţi Dezactivat'; +$lang['Session_length'] = 'Durata sesiunii [ secunde ]'; + + +// Visual Confirmation +$lang['Visual_confirm'] = 'Activează Confirmarea Vizuală'; +$lang['Visual_confirm_explain'] = 'Necesită introducerea unui cod vizual definit ca o imagine la înregistrare.'; + +// Autologin Keys - added 2.0.18 +$lang['Allow_autologin'] = 'Permite autentificări automate'; +$lang['Allow_autologin_explain'] = 'Determină dacă utilizatorii au voie să selecteze să fie autentificaţi automat când vizitează forumul.'; +$lang['Autologin_time'] = 'Expirarea cheii de autentificare automată.'; +$lang['Autologin_time_explain'] = 'Câte zile este validă o cheie de autentificare automată dacă utilizatorul nu vizitează forumul. Setează 0 pentru a dezactiva expirarea.'; + +// Intervalul limita pentru cautari - adaugat la 2.0.20 +$lang['Search_Flood_Interval'] = 'Intervalul limită pentru căutări'; +$lang['Search_Flood_Interval_explain'] = 'Numărul de secunde pe care un utilizator trebuie să-l aştepte între căutari'; + +// +// Forum Management +// +$lang['Forum_admin'] = 'Administrare forumuri'; +$lang['Forum_admin_explain'] = 'În această secţiune puteţi adăuga, şterge, modifica, reordona şi resincroniza categoriile şi forumurile.'; +$lang['Edit_forum'] = 'Modificare forum'; +$lang['Create_forum'] = 'Crează un forum nou'; +$lang['Create_category'] = 'Crează o categorie nouă'; +$lang['Remove'] = 'Şterge'; +$lang['Action'] = 'Acţiune'; +$lang['Update_order'] = 'Actualizează ordinea'; +$lang['Config_updated'] = 'Configurările la forum au fost actualizate cu succes'; +$lang['Edit'] = 'Modifică'; +$lang['Delete'] = 'Şterge'; +$lang['Move_up'] = 'Mută mai sus'; +$lang['Move_down'] = 'Mută mai jos'; +$lang['Resync'] = 'Resincronizare'; +$lang['No_mode'] = 'Nici un mod nu a fost specificat'; +$lang['Forum_edit_delete_explain'] = 'Formularul de mai jos vă permite să personalizaţi toate opţiunile generale ale forumului. Pentru configurarea utilizatorilor şi forumurilor folosiţi legăturile specifice aflate în partea stângă.'; + +$lang['Move_contents'] = 'Mută tot conţinutul'; +$lang['Forum_delete'] = 'Ştergere forum'; +$lang['Forum_delete_explain'] = 'Formularul de mai jos vă permite să ştergeţi un forum (sau o categorie) şi să decideţi unde doriţi să plasaţi toate subiectele (sau forumurile) pe care le conţine.'; + +$lang['Status_locked'] = 'Închis'; +$lang['Status_unlocked'] = 'Deschis'; +$lang['Forum_settings'] = 'Configurările generale ale forumului'; +$lang['Forum_name'] = 'Numele forumului'; +$lang['Forum_desc'] = 'Descriere'; +$lang['Forum_status'] = 'Starea forumului'; +$lang['Forum_pruning'] = 'Autocurăţare'; + +$lang['Forum_postcount'] = 'Count user\'s posts'; + +$lang['prune_freq'] = 'Verifică vârsta subiectelor la fiecare'; +$lang['prune_days'] = 'Şterge subiectele la care nu s-au scris răspunsuri de'; +$lang['Set_prune_data'] = 'Aţi selectat opţiunea autocurăţire pentru acest forum dar nu aţi specificat o frecvenţă sau un număr de zile al intervalului pentru acest proces. Vă rugăm reveniţi şi specificaţi aceste valori'; + +$lang['Move_and_Delete'] = 'Mută şi şterge'; + +$lang['Delete_all_posts'] = 'Şterge toate mesajele'; +$lang['Nowhere_to_move'] = 'Nu muta mesajele'; + +$lang['Edit_Category'] = 'Modificare categorie'; +$lang['Edit_Category_explain'] = 'Puteţi folosi acest forumlar pentru a modifica numele categoriilor.'; + +$lang['Forums_updated'] = 'Informaţiile despre forumuri şi categorii au fost actualizate cu succes'; + +$lang['Must_delete_forums'] = 'Trebuie să ştergeţi toate forumurile înainte ca să ştergeţi această categorie'; + +$lang['Click_return_forumadmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Administrare forumuri'; + + +// +// Smiley Management +// +$lang['smiley_title'] = 'Administrare zâmbete'; +$lang['smile_desc'] = 'Din această pagină puteţi adăuga, şterge şi modifica zâmbetele sau emoţiile asociate pe care utilizatorii dumneavoastră le pot folosi când scriu mesaje sau când trimit mesaje private.'; + +$lang['smiley_config'] = 'Configurare zâmbete'; +$lang['smiley_code'] = 'Cod zâmbet'; +$lang['smiley_url'] = 'Fişierul imagine al zâmbetului'; +$lang['smiley_emot'] = 'Emoţia asociată'; +$lang['smile_add'] = 'Adăugaţi un zâmbet nou'; +$lang['Smile'] = 'Zâmbet'; +$lang['Emotion'] = 'Emoţia asociată'; + +$lang['Select_pak'] = 'Selectaţi un fişier de tip Pack (.pak)'; +$lang['replace_existing'] = 'Înlocuiţi zâmbetele existente'; +$lang['keep_existing'] = 'Păstraţi zâmbetele existente'; +$lang['smiley_import_inst'] = 'Ar trebui să decomprimaţi pachetul cu iconiţe şi să încărcaţi toate fişierele în directorul cu zâmbete specificat la instalare. Apoi selectaţi informaţiile corecte în acest formular ca să importaţi pachetul cu zâmbete.'; +$lang['smiley_import'] = 'Importaţi zâmbetele'; +$lang['choose_smile_pak'] = 'Selectaţi un fişier pachet cu zâmbete de tip .pak'; +$lang['import'] = 'Importaţi zâmbete'; +$lang['smile_conflicts'] = 'Ce ar trebui să fie făcut în caz de conflicte'; +$lang['del_existing_smileys'] = 'Ştergeţi zâmbetele existente înainte de import'; +$lang['import_smile_pack'] = 'Importaţi pachetul cu zâmbete'; +$lang['export_smile_pack'] = 'Creaţi pachetul cu zâmbete'; +$lang['export_smiles'] = 'Ca să creaţi un pachet cu zâmbete din zâmbetele instalate, apăsaţi %saici%s ca să descărcaţi fişierul cu zâmbete .pak. Numiţi acest fişier cum doriţi dar asiguraţi-vă că aţi păstrat fişierului extensia .pak. Apoi creaţi un fieşier arhivat conţinând toate imaginile zâmbete ale dumneavoastră plus acest fişier .pak.'; + +$lang['smiley_add_success'] = 'Zâmbetul a fost adăugat cu succes'; +$lang['smiley_edit_success'] = 'Zâmbetul a fost actualizat cu succes'; +$lang['smiley_import_success'] = 'Pachetul cu zâmbete a fost importat cu succes!'; +$lang['smiley_del_success'] = 'Zâmbetul a fost şters cu succes'; +$lang['Click_return_smileadmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Administrare zâmbete'; + +$lang['Confirm_delete_smiley'] = 'Sunteţi sigur că doriţi să ştergeţi acest zâmbet ?'; + +// +// User Management +// +$lang['User_admin'] = 'Administrare utilizatori'; +$lang['User_admin_explain'] = 'Aici puteţi schimba informaţiile despre utilizatorii dumneavoastră şi opţiunile specifice. Ca să modificaţi drepturile utilizatorilor, folosiţi drepturile din sistem ale utilizatorilor şi grupurilor.'; + +$lang['Look_up_user'] = 'Selectează utilizatorul'; + +$lang['Admin_user_fail'] = 'Nu se poate actualiza profilul utilizatorului.'; +$lang['Admin_user_updated'] = 'Profilul utilizatorului a fost actualizat cu succes.'; +$lang['Click_return_useradmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Administrare utilizatori'; + +$lang['User_delete'] = 'Ştergeţi acest utilizator'; +$lang['User_delete_explain'] = 'Apăsaţi aici pentru a şterge acest utilizator, această operaţie este ireversibilă.'; +$lang['User_deleted'] = 'Utilizatorul a fost şters cu succes.'; + +$lang['User_status'] = 'Utilizatorul este activ'; +$lang['User_allowpm'] = 'Poate trimite mesaje private'; +$lang['User_allowavatar'] = 'Poate folosi imagini asociate'; + +$lang['Admin_avatar_explain'] = 'Aici puteţi vizualiza şi şterge imaginea asociată a utilizatorului.'; + +$lang['User_special'] = 'Câmpuri speciale doar pentru administrator'; +$lang['User_special_explain'] = 'Aceste câmpuri nu pot fi modificate de către utilizatori. Aici puteţi să specificaţi stadiul lor şi alte opţiuni care nu sunt oferite utilizatorilor.'; + + +// +// Group Management +// +$lang['Group_administration'] = 'Administrarea grupurilor'; +$lang['Group_admin_explain'] = 'Din această secţiune puteţi administra toate grupurile cu utilizatori ale dumneavoastră, puteţi şterge, crea şi modifica grupurile existente. Puteţi alege moderatorii, schimba în deschis/închis statutul grupului şi specifica numele şi descrierea grupului'; +$lang['Error_updating_groups'] = 'A fost o eroare în timpul actualizării grupurilor'; +$lang['Updated_group'] = 'Grupul a fost actualizat cu succes'; +$lang['Added_new_group'] = 'Noul grup a fost creat cu succes'; +$lang['Deleted_group'] = 'Grupul a fost şters cu succes'; +$lang['New_group'] = 'Crează un grup nou'; +$lang['Edit_group'] = 'Modifică grupul'; +$lang['group_name'] = 'Numele grupului'; +$lang['group_description'] = 'Descrierea grupului'; +$lang['group_moderator'] = 'Moderatorul grupului'; +$lang['group_status'] = 'Statutul grupului'; +$lang['group_open'] = 'Grup deschis'; +$lang['group_closed'] = 'Grup închis'; +$lang['group_hidden'] = 'Grup ascuns'; +$lang['group_delete'] = 'Şterg grupul'; +$lang['group_delete_check'] = 'Vreau să şterg acest grup'; +$lang['submit_group_changes'] = 'Efectuează modificările'; +$lang['reset_group_changes'] = 'Resetează modificările'; +$lang['No_group_name'] = 'Trebuie să specificaţi un nume pentru acest grup'; +$lang['No_group_moderator'] = 'Trebuie să specificaţi un moderator pentru acest grup'; +$lang['No_group_mode'] = 'Trebuie să specificaţi un mod (deschis/închis) pentru acest grup'; +$lang['No_group_action'] = 'Nici o acţiune nu a fost specificată'; +$lang['delete_group_moderator'] = 'Doriţi să ştergeţi moderatorul vechi al grupului?'; +$lang['delete_moderator_explain'] = 'Dacă schimbaţi moderatorul grupului, bifaţi această căsuţă ca să ştergeţi vechiul moderator al grupului din grup. Altfel, nu o bifaţi şi utilizatorul va deveni un membru normal al grupului.'; +$lang['Click_return_groupsadmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Administrarea grupurilor.'; +$lang['Select_group'] = 'Selectează un grup'; +$lang['Look_up_group'] = 'Selectează grupul'; + + +// +// Prune Administration +// +$lang['Forum_Prune'] = 'Curăţirea forumurilor'; +$lang['Forum_Prune_explain'] = 'Această acţiune va şterge orice subiect care nu a fost completat într-un număr de zile egal cu cel pe care l-aţi specificat. Dacă nu aţi introdus un număr atunci toate subiectele vor fi şterse. Nu vor fi şterse subiecte în care sondajele încă rulează şi nici anunţurile. Aceste subiecte trebuie să le ştergeţi manual.'; +$lang['Do_Prune'] = 'Efectuează curăţirea'; +$lang['All_Forums'] = 'Toate forumurile'; +$lang['Prune_topics_not_posted'] = 'Curăţirea subiectelor fără răspunsuri în multe zile'; +$lang['Topics_pruned'] = 'Subiecte curăţite'; +$lang['Posts_pruned'] = 'Mesaje curăţite'; +$lang['Prune_success'] = 'Curăţirea mesajelor s-a efectuat cu succes'; + + +// +// Word censor +// +$lang['Words_title'] = 'Administrarea cuvintelor cenzurate'; +$lang['Words_explain'] = 'Din această secţiune puteţi adăuga, modifica şi şterge cuvinte care vor fi automat cenzurate în forumurile dumneavoastră. În plus, persoanelor nu le va fi permis să se înregistreze cu nume de utilizator ce conţin aceste cuvinte. Wildcard-urile (*) sunt acceptate în câmpul pentru cuvinte, de exemplu *test* se va potrivi cu detestabil, test* se va potrivi cu testare, *test se va potrivi cu detest.'; +$lang['Word'] = 'Cuvânt'; +$lang['Edit_word_censor'] = 'Modific cuvântul cenzurat'; +$lang['Replacement'] = 'Înlocuire'; +$lang['Add_new_word'] = 'Adaugă un cuvânt nou'; +$lang['Update_word'] = 'Actualizează cuvântul cenzurat'; + +$lang['Must_enter_word'] = 'Trebuie să introduceţi un cuvânt şi înlocuirile acestuia'; +$lang['No_word_selected'] = 'Nici un cuvânt nu a fost selectat pentru modificare'; + +$lang['Word_updated'] = 'Cuvântul cenzurat selectat a fost actualizat cu succes'; +$lang['Word_added'] = 'Cuvântul cenzurat a fost adăugat cu succes'; +$lang['Word_removed'] = 'Cuvântul cenzurat selectat a fost şters cu succes'; + +$lang['Click_return_wordadmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Administrarea cuvintelor cenzurate'; + +$lang['Confirm_delete_word'] = 'Sunteţi sigur că doriţi să ştergeţi acest acest cuvânt cenzurat ?'; + + +// +// Mass Email +// +$lang['Mass_email_explain'] = 'Aici puteţi trimite un email la toţi utilizatorii dumneavoastră sau la utilizatorii dintr-un grup specific. Pentru a realiza acest lucru, un email va fi trimis la adresa de email a administratorulu cu toţi destinatarii specificaţi în câmpul BCC. Dacă trimiteţi email la un grup mare de oameni, vă rugăm să fiţi atent după trimitere şi nu vă opriţi la jumătatea paginii. Este normal ca pentru o corespondenţă masivă să fie nevoie de un timp mai lung astfel că veţi fi notificat când acţiunea s-a terminat'; +$lang['Compose'] = 'Compune'; + +$lang['Recipients'] = 'Destinatari'; +$lang['All_users'] = 'Toţi utilizatorii'; + +$lang['Email_successfull'] = 'Mesajul dumneavoastră a fost trimis'; +$lang['Click_return_massemail'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Corespondenţă masivă'; + + +// +// Ranks admin +// +$lang['Ranks_title'] = 'Administrarea rangurilor'; +$lang['Ranks_explain'] = 'Folosind acest formular puteţi adăuga, modifica, vizualiza şi şterge ranguri. De asemenea, puteţi crea ranguri personalizate care pot fi aplicate unui utilizator via facilităţii date de managementul utilizatorilor'; + +$lang['Add_new_rank'] = 'Adaugă un rang nou'; + +$lang['Rank_title'] = 'Titlul rangului'; +$lang['Rank_special'] = 'Setează ca rang special'; +$lang['Rank_minimum'] = 'Număr minim de mesaje'; +$lang['Rank_maximum'] = 'Număr maxim de mesaje'; +$lang['Rank_image'] = 'Imaginea rangului (relativ la calea phpBB2-ului)'; +$lang['Rank_image_explain'] = 'Aceasta este folosită pentru a defini o imagine mică asociată cu rangul'; + +$lang['Must_select_rank'] = 'Trebuie să selectaţi un rang'; +$lang['No_assigned_rank'] = 'Nici un rang special nu a fost repartizat'; + +$lang['Rank_updated'] = 'Rangul a fost actualizat cu succes'; +$lang['Rank_added'] = 'Rangul a fost adăugat cu succes'; +$lang['Rank_removed'] = 'Rangul a fost şters cu succes'; +$lang['No_update_ranks'] = 'Rangul a fost şters cu succes, conturile utilizatorilor care folosesc acest rang nu au fost actualizate. Trebuie să resetaţi manual rangul pentru aceste conturi'; + +$lang['Click_return_rankadmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Administrarea rangurilor'; + +$lang['Confirm_delete_rank'] = 'Sunteti sigur ca doriti sa stergeti acest rang ?'; + +// +// Disallow Username Admin +// +$lang['Disallow_control'] = 'Administrarea numelor de utilizator nepremise'; +$lang['Disallow_explain'] = 'Aici puteţi controla numele de utilizator care nu sunt permise să fie folosite. Numele de utilizator care nu sunt permise pot conţine caracterul *. Reţineţi că nu aveţi posibilitatea să specificaţi orice nume de utilizator care a fost deja înregistrat; trebuie mai întâi să ştergeţi acel nume şi apoi să-l interziceţi'; + +$lang['Delete_disallow'] = 'Şterge'; +$lang['Delete_disallow_title'] = 'Şterge un nume de utilizator nepermis'; +$lang['Delete_disallow_explain'] = 'Puteţi şterge un nume de utilizator nepermis selectând numele de utilizator din această listă şi apăsând butonul Şterge'; + +$lang['Add_disallow'] = 'Adaugă'; +$lang['Add_disallow_title'] = 'Adaugă un nume de utilizator nepermis'; +$lang['Add_disallow_explain'] = 'Puteţi interzice un nume de utilizator folosind caracterul wildcard * care se potriveşte la orice caracter'; + +$lang['No_disallowed'] = 'Nici un nume de utilizator nu a fost interzis'; + +$lang['Disallowed_deleted'] = 'Numele de utilizator nepermis a fost şters cu succes'; +$lang['Disallow_successful'] = 'Numele de utilizator nepermis a fost adăugat cu succes'; +$lang['Disallowed_already'] = 'Numele pe care l-aţi introdus nu poate fi interzis. Ori există deja în listă, există în lista cuvintelor cenzurate sau există un nume de utilizator similar'; + +$lang['Click_return_disallowadmin'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Administrarea numelor de utilizator nepremise'; + + +// +// Styles Admin +// +$lang['Styles_admin'] = 'Administrarea stilurilor'; +$lang['Styles_explain'] = 'Folosind această facilitate puteţi adăuga, şterge şi administra stilurile (şabloanele şi temele) disponibile utilizatorilor dumneavoastră'; +$lang['Styles_addnew_explain'] = 'Lista următoare conţine toate temele care sunt disponibile pentru şabloanele pe care le aveţi. Elementele din această listă nu au fost instalate în baza de date a phpBB-ului. Ca să instalaţi o temă apăsaţi pe legătura Instalează de lângă denumirea temei'; + +$lang['Select_template'] = 'Selectaţi un şablon'; + +$lang['Style'] = 'Stilul'; +$lang['Template'] = 'Şablonul'; +$lang['Install'] = 'Instalează'; +$lang['Download'] = 'Descarcă'; + +$lang['Edit_theme'] = 'Modifică tema'; +$lang['Edit_theme_explain'] = 'În formularul de mai jos puteţi modifica configurările pentru tema selectată'; + +$lang['Create_theme'] = 'Crează temă'; +$lang['Create_theme_explain'] = 'Folosiţi formularul de mai jos ca să creaţi o temă nouă pentru un şablon selectat. Când introduceţi culori (pentru care trebuie să folosiţi notaţie hexazecimală) nu trebuie să includeţi iniţiala #, de exemplu CCCCCC este validă, #CCCCCC nu este validă'; + +$lang['Export_themes'] = 'Exportă teme'; +$lang['Export_explain'] = 'În această secţiune puteţi exporta teme dintr-un şablon selectat. Selectaţi şablonul din lista de mai jos şi programul va crea un fişier de configurare a temei şi încercaţi să-l salvaţi în directorul şablonului selectat. Dacă fişierul nu poate fi salvat vi se va da posibilitatea să-l descărcaţi. Pentru ca programul să salveze fişierul trebuie să daţi drepturi de scriere pentru serverul web pe directorul şablonului selectat. Pentru mai multe informaţii consultaţi pagina 2 din ghidul utilizatorilor phpBB.'; + +$lang['Theme_installed'] = 'Tema selectată a fost instalată cu succes'; +$lang['Style_removed'] = 'Stilul selectat a fost şters din baza de date. Pentru a şterge definitiv acest stil din sistem, trebuie să-l ştergeţi din directorul dumneavoastră cu şabloane.'; +$lang['Theme_info_saved'] = 'Informaţiile temei pentru şablonul curent au fost salvate. Acum trebuie să specificaţi permisiunile în fişierul theme_info.cfg (şi dacă se poate directorul şablonului selectat) la acces doar de citire'; +$lang['Theme_updated'] = 'Tema selectată a fost actualizată. Acum ar trebui să exportaţi setările temei noi'; +$lang['Theme_created'] = 'Temă a fost creată. Acum ar trebui să exportaţi tema în fişierul de configurare al temei pentru păstrarea în siguranţă a acesteia sau s-o folosiţi altundeva'; + +$lang['Confirm_delete_style'] = 'Sunteţi sigur că doriţi să ştergeţi acest stil?'; + +$lang['Download_theme_cfg'] = 'Procedura de export nu poate scrie fişierul cu informaţiile temei. Apăsaţi butonul de mai jos ca să descărcaţi acest fişier. Odată ce l-aţi descărcat puteţi să-l transferaţi în directorul care conţine fişierele cu şabloane. Puteţi împacheta fişierele pentru distribuţie sau să le folosiţi unde doriţi'; +$lang['No_themes'] = 'Şablonul pe care l-aţi selectat nu are teme ataşate. Ca să creaţi o temă nouă apăsaţi legătura Crează temă din partea stângă'; +$lang['No_template_dir'] = 'Nu se poate deschide directorul cu şabloane. Acesta ori nu poate fi citit de către serverul web ori nu există'; +$lang['Cannot_remove_style'] = 'Nu puteţi şterge stilul selectat în timp ce este acesta este stilul standard pentru forum. Schimbaţi stilul standard şi încercaţi din nou.'; +$lang['Style_exists'] = 'Numele stilului pe care l-aţi selectat există deja, vă rugăm reveniţi şi alegeţi un nume diferit.'; + +$lang['Click_return_styleadmin'] = 'Apăsaţi %saici%s ca să reveniţi la secţiunea Administrarea stilurilor'; + +$lang['Theme_settings'] = 'Configurările temei'; +$lang['Theme_element'] = 'Elementul temei'; +$lang['Simple_name'] = 'Numele simplu'; +$lang['Value'] = 'Valoarea'; +$lang['Save_Settings'] = 'Salvează configurările'; + +$lang['Stylesheet'] = 'Stilul CSS'; +$lang['Stylesheet_explain'] = 'Numele fişierului pentru stilul CSS folosit în această temă.'; +$lang['Background_image'] = 'Imaginea fundalului'; +$lang['Background_color'] = 'Culoarea fundalului'; +$lang['Theme_name'] = 'Numele temei'; +$lang['Link_color'] = 'Culoarea legăturii'; +$lang['Text_color'] = 'Culoarea textului'; +$lang['VLink_color'] = 'Culoarea legăturii vizitate'; +$lang['ALink_color'] = 'Culoarea legăturii active'; +$lang['HLink_color'] = 'Culoarea legăturii acoperite'; +$lang['Tr_color1'] = 'Culoarea 1 a rândului din tabel'; +$lang['Tr_color2'] = 'Culoarea 2 a rândului din tabel'; +$lang['Tr_color3'] = 'Culoarea 3 a rândului din tabel'; +$lang['Tr_class1'] = 'Clasa 1 a rândului din tabel'; +$lang['Tr_class2'] = 'Clasa 2 a rândului din tabel'; +$lang['Tr_class3'] = 'Clasa 3 a rândului din tabel'; +$lang['Th_color1'] = 'Culoarea 1 a antetului din tabel'; +$lang['Th_color2'] = 'Culoarea 2 a antetului din tabel'; +$lang['Th_color3'] = 'Culoarea 3 a antetului din tabel'; +$lang['Th_class1'] = 'Clasa 1 a antetului din tabel'; +$lang['Th_class2'] = 'Clasa 2 a antetului din tabel'; +$lang['Th_class3'] = 'Clasa 3 a antetului din tabel'; +$lang['Td_color1'] = 'Culoarea 1 a celulei din tabel'; +$lang['Td_color2'] = 'Culoarea 2 a celulei din tabel'; +$lang['Td_color3'] = 'Culoarea 3 a celulei din tabel'; +$lang['Td_class1'] = 'Clasa 1 a celulei din tabel'; +$lang['Td_class2'] = 'Clasa 2 a celulei din tabel'; +$lang['Td_class3'] = 'Clasa 3 a celulei din tabel'; +$lang['fontface1'] = 'Fontul de faţă 1'; +$lang['fontface2'] = 'Fontul de faţă 2'; +$lang['fontface3'] = 'Fontul de faţă 3'; +$lang['fontsize1'] = 'Dimensiunea 1 a fontului'; +$lang['fontsize2'] = 'Dimensiunea 2 a fontului'; +$lang['fontsize3'] = 'Dimensiunea 3 a fontului'; +$lang['fontcolor1'] = 'Culoarea 1 a fontului'; +$lang['fontcolor2'] = 'Culoarea 2 a fontului'; +$lang['fontcolor3'] = 'Culoarea 3 a fontului'; +$lang['span_class1'] = 'Clasa 1 a separatorului'; +$lang['span_class2'] = 'Clasa 2 a separatorului'; +$lang['span_class3'] = 'Clasa 3 a separatorului'; +$lang['img_poll_size'] = 'Dimensiunea imaginii sondajului [px]'; +$lang['img_pm_size'] = 'Dimensiunea statutului de mesaj privat [px]'; + + +// +// Install Process +// +$lang['Welcome_install'] = 'Bine aţi venit la procedura de instalare a forumului phpBB2'; +$lang['Initial_config'] = 'Configuraţia de bază'; +$lang['DB_config'] = 'Configuraţia bazei de date'; +$lang['Admin_config'] = 'Configuraţia administratorului'; +$lang['continue_upgrade'] = 'Odată ce aţi descărcat fişierul dumneavoastră de configurare pe calculatorul local puteţi folosi butonul Continuă actualizarea de mai jos ca să treceţi la următorul pas din actualizare. Vă rugăm aşteptaţi să se încarce fişierul de configurare până ce actualizarea este completă.'; +$lang['upgrade_submit'] = 'Continuă actualizarea'; + +$lang['Installer_Error'] = 'O eroare a apărut în timpul instalării'; +$lang['Previous_Install'] = 'O instalare anterioară a fost detectată'; +$lang['Install_db_error'] = 'O eroare a apărut în timpul actualizării bazei de date'; + +$lang['Re_install'] = 'Instalarea anterioară este încă activă.

    Dacă doriţi să reinstalaţi phpBB2-ul ar trebui să apăsaţi pe butonul Da de mai jos. Vă rugăm să aveţi grijă ca să nu distrugeţi toate datele existente, nici o copie de siguranţă nu va fi făcută! Numele de utilizator şi parola administratorului pe care le-aţi folosit să vă autentificaţi în forum vor fi recreate după reinstalare, nici o altă setare nu va fi păstrată.

    Gândiţi-vă atent înainte de a apăsa butonul Porneşte instalarea!'; + +$lang['Inst_Step_0'] = 'Vă mulţumim că aţi ales phpBB2. Pentru a completa această instalare vă rugăm să completaţi detaliile de mai jos. Reţineţi că baza de date pe care o folosiţi trebuie să existe deja. Dacă instalaţi într-o bază de date care foloseşte ODBC, de exemplu MS Access ar trebui mai întâi să creaţi un DSN pentru aceasta înainte de a continua.'; + +$lang['Start_Install'] = 'Porneşte instalarea'; +$lang['Finish_Install'] = 'Termină instalarea'; + +$lang['Default_lang'] = 'Limba standard pentru forum'; +$lang['DB_Host'] = 'Numele serverului gazdă pentru baza de date / DSN'; +$lang['DB_Name'] = 'Numele bazei dumneavoastră de date'; +$lang['DB_Username'] = 'Numele de utilizator al bazei de date'; +$lang['DB_Password'] = 'Parola de utilizator al bazei de date'; +$lang['Database'] = 'Baza dumneavoastră de date'; +$lang['Install_lang'] = 'Alegeţi limba pentru instalare'; +$lang['dbms'] = 'Tipul bazei de date'; +$lang['Table_Prefix'] = 'Prefixul pentru tabelele din baza de date'; +$lang['Admin_Username'] = 'Numele de utilizator al administratorului'; +$lang['Admin_Password'] = 'Parola administratorului'; +$lang['Admin_Password_confirm'] = 'Parola administratorului [ Confirmaţi ]'; + +$lang['Inst_Step_2'] = 'Numele de utilizator pentru administrator a fost creat. Acum instalarea de bază este completă. Va apărea un ecran care vă va permite să administraţi noua dumneavoastră instalare. Asiguraţi-vă că aţi verificat detaliile secţiunii Configurare generală şi aţi efectuat orice schimbare necesară. Vă mulţumim că aţi ales phpBB2.'; + +$lang['Unwriteable_config'] = 'Fişierul dumneavoastră de configurare în acest moment este protejat la scriere. O copie a fişierului de configurare va fi descărcată când apăsaţi butonul de mai jos. At trebui să încărcaţi acest fişier în acelaşi director ca şi phpBB2. Odată ce această operaţiune este terminată ar trebui să vă autentificaţi folosind numele de utilizator şi parola administratorului pe care le-aţi specificat în formularul anterior şi să vizitaţi centrul de control al administratorului (o legătură va apărea la capătul fiecărei pagini odată ce v-aţi autentificat) ca să verificaţi configuraţia generală. Vă mulţumim că aţi ales phpBB2.'; +$lang['Download_config'] = 'Descarcă fişierul de configurare'; + +$lang['ftp_choose'] = 'Alegeţi metoda de descărcare'; +$lang['ftp_option'] = '
    Întrucât extensiile FTP sunt activate în această versiune a PHP-ului, aveţi posibilitatea de a încerca să plasaţi prin ftp fişierul de configurare la locul lui.'; +$lang['ftp_instructs'] = 'Aţi ales să transmiteţi fişierul automat prin ftp în contul care conţine phpBB2-ul. Vă rugăm introduceţi informaţiile cerute mai jos ca să facilitaţi aceast proces. Calea unde este situat FTP-ul trebuie să fie calea exactă via ftp la instalarea phpBB2-ului dumneavoastră ca şi cum aţi transmite folosind un client normal de ftp.'; +$lang['ftp_info'] = 'Introduceţi informaţiile dumneavoastră despre FTP'; +$lang['Attempt_ftp'] = 'Încercare de a transfera la locul specificat fişierul de configurare prin ftp'; +$lang['Send_file'] = 'Trimite doar fişierul la mine şi eu voi îl voi trimite manual prin ftp'; +$lang['ftp_path'] = 'Calea FTP la phpBB2'; +$lang['ftp_username'] = 'Numele dumneavoastră de utilizator pentru FTP'; +$lang['ftp_password'] = 'Parola dumneavoastră de utilizator pentru FTP'; +$lang['Transfer_config'] = 'Porneşte transferul'; +$lang['NoFTP_config'] = 'Încercarea de a transfera la locul specificat fişierul de configurare prin ftp a eşuat. Vă rugăm să descărcaţi fişierul de configurare şi să-l transmiteţi manual prin ftp la locul specificat.'; + +$lang['Install'] = 'Instalează'; +$lang['Upgrade'] = 'Actualizează'; + + +$lang['Install_Method'] = 'Alegeţi metoda de instalare'; + +$lang['Install_No_Ext'] = 'Configurarea php-ului pe serverul dumneavoastră nu suportă tipul de bază de date pe care l-aţi ales'; + +$lang['Install_No_PCRE'] = 'phpBB2 necesită modulul de expresii regulate compatibil Perl pentru php pe care configuraţia dumneavoastră de php se pare că nu-l suportă!'; + +// +// Version Check +// +$lang['Version_up_to_date'] = 'Forumul dumneavoastră foloseşte ultima versiune phpBB. Nu sunt actualizări disponibile pentru versiunea dumneavoastră.'; +$lang['Version_not_up_to_date'] = 'Forumul dumneavoastră pare să nu fie actualizat. Noile versiuni sunt disponibile la adresa http://www.phpbb.com/downloads.php.'; +$lang['Latest_version_info'] = 'Cea mai nouă versiune este phpBB %s.'; +$lang['Current_version_info'] = 'Folosiţi phpBB %s.'; +$lang['Connect_socket_error'] = 'Nu am putut deschide conexiunea cu serverul phpBB, eroarea raportată este:
    %s'; +$lang['Socket_functions_disabled'] = 'Nu am putut folosi funcţiile socket.'; +$lang['Mailing_list_subscribe_reminder'] = 'Pentru cele mai noi informaţii despre phpBB, vă puteţi înscrie la serviciul de ştiri.'; +$lang['Version_information'] = 'Informaţii despre versiuni'; + +// +// Login attempts configuration +// +$lang['Max_login_attempts'] = 'Permite încercări de autentificare'; +$lang['Max_login_attempts_explain'] = 'Numărul de încercări de autentificare permise.'; +$lang['Login_reset_time'] = 'Timpul necesar reautentificării'; +$lang['Login_reset_time_explain'] = 'Numărul de minute pe care un user trebuie să-l aştepte pentru a i se permite să se autentifice din nou, după depăşirea numărului de încercări de autentificare permise.'; + +// Start add - Bin Mod +$lang['Bin_forum'] = 'Bin forum'; +$lang['Bin_forum_explain'] = 'Fill with the forum ID where topics moved to bin, a value of 0 will disable this feature. You should edit this forum permissions to allow or not view/post/reply... by users or forbid access to this forum.'; +// End add - Bin Mod + +$lang['Draft_allow']='Allow users to make their posts a draft'; + +// +// That's all Folks! +// ------------------------------------------------- + +?> diff --git a/includes/shared/phpbb2/language/lang_romanian_utf/lang_main.php b/includes/shared/phpbb2/language/lang_romanian_utf/lang_main.php new file mode 100644 index 00000000..dd771667 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_romanian_utf/lang_main.php @@ -0,0 +1,1062 @@ + $lang['message'] = 'text'; +// +// You should also try to set a locale and a character encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +$lang['ENCODING'] = 'UTF-8'; +$lang['DIRECTION'] = 'ltr'; +$lang['LEFT'] = 'left'; +$lang['RIGHT'] = 'right'; +$lang['DATE_FORMAT'] = 'd/M/Y'; // This should be changed to the default date format for your language, php date() format + + +// This is optional, if you would like a _SHORT_ message output +// along with our copyright message indicating you are the translator +// please add it here. + +$lang['TRANSLATION_INFO'] = 'Varianta în limba română: Romanian phpBB online community'; + +// +// Common, these terms are used +// extensively on several pages +// +$lang['Forum'] = 'Forum'; +$lang['Category'] = 'Categorie'; +$lang['Topic'] = 'Subiect'; +$lang['Topics'] = 'Subiecte'; +$lang['Replies'] = 'Răspunsuri'; +$lang['Views'] = 'Vizualizări'; +$lang['Post'] = 'Mesaj'; +$lang['Posts'] = 'Mesaje'; +$lang['Posted'] = 'Trimis'; +$lang['Username'] = 'Utilizator'; +$lang['Password'] = 'Parola'; +$lang['Email'] = 'Email'; +$lang['Poster'] = 'Autor'; +$lang['Author'] = 'Autor'; +$lang['Time'] = 'Timp'; +$lang['Hours'] = 'Ore'; +$lang['Message'] = 'Mesaj'; + +$lang['1_Day'] = '1 Zi'; +$lang['7_Days'] = '7 Zile'; +$lang['2_Weeks'] = '2 Săptămâni'; +$lang['1_Month'] = '1 Lună'; +$lang['3_Months'] = '3 Luni'; +$lang['6_Months'] = '6 Luni'; +$lang['1_Year'] = '1 An'; + +$lang['Go'] = 'Du-te'; +$lang['Jump_to'] = 'Mergi direct la'; +$lang['Submit'] = 'Trimite'; +$lang['Reset'] = 'Resetează'; +$lang['Cancel'] = 'Renunţă'; +$lang['Preview'] = 'Previzualizează'; +$lang['Confirm'] = 'Confirmare'; +$lang['Spellcheck'] = 'Verifică'; +$lang['Yes'] = 'Da'; +$lang['No'] = 'Nu'; +$lang['Enabled'] = 'Activat'; +$lang['Disabled'] = 'Dezactivat'; +$lang['Error'] = 'Eroare'; + +$lang['Next'] = 'Următoare'; +$lang['Previous'] = 'Anterioară'; +$lang['Goto_page'] = 'Du-te la pagina'; +$lang['Joined'] = 'Data înscrierii'; +$lang['IP_Address'] = 'Adresa IP'; + +$lang['Select_forum'] = 'Alegeţi un forum'; +$lang['View_latest_post'] = 'Vizualizarea ultimului mesaj'; +$lang['View_newest_post'] = 'Vizualizarea celui cel mai nou mesaj'; +$lang['Page_of'] = 'Pagina %d din %d'; // Replaces with: Page 1 of 2 for example + +$lang['ICQ'] = 'Numărul ICQ'; +$lang['AIM'] = 'Adresa AIM'; +$lang['MSNM'] = 'Codul MSN Messenger'; +$lang['YIM'] = 'Codul Yahoo Messenger'; + +$lang['Forum_Index'] = 'Pagina de start a forumului %s'; // eg. sitename Forum Index, %s can be removed if you prefer + +$lang['Post_new_topic'] = 'Crează un subiect nou'; +$lang['Reply_to_topic'] = 'Răspunde la subiect'; +$lang['Reply_with_quote'] = 'Răspunde cu citat (quote)'; + +$lang['Click_return_topic'] = 'Apăsaţi %saici%s pentru a reveni la subiect'; // %s's here are for uris, do not remove! +$lang['Click_return_login'] = 'Apăsaţi %saici%s pentru a încerca din nou'; +$lang['Click_return_forum'] = 'Apăsaţi %saici%s pentru a reveni la forum'; +$lang['Click_view_message'] = 'Apăsaţi %saici%s pentru a vizualiza mesajul'; +$lang['Click_return_modcp'] = 'Apăsaţi %saici%s pentru a reveni la secţiunea Panoul de Control al Moderatorului'; +$lang['Click_return_group'] = 'Apăsaţi %saici%s pentru a reveni la informaţiile grupului'; + +$lang['Admin_panel'] = 'Panoul Administratorului'; + +$lang['Board_disable'] = 'Ne pare rău dar această facilitate nu este momentan disponibilă; vă rugăm încercaţi mai târziu'; +$lang['Please_remove_install_contrib'] = 'Te rog asigură-te că ambele directoare install/ şi contrib/ sunt şterse.'; + +// +// Global Header strings +// +$lang['Registered_users'] = 'Utilizatori înregistraţi:'; +$lang['Browsing_forum'] = 'Utilizatori ce navighează în acest forum:'; +$lang['Online_users_zero_total'] = 'În total aici sunt 0 utilizatori conectaţi : '; +$lang['Online_users_total'] = 'În total aici sunt %d utilizatori conectaţi : '; +$lang['Online_user_total'] = 'În total aici este %d utilizator conectat : '; +$lang['Reg_users_zero_total'] = '0 Înregistraţi, '; +$lang['Reg_users_total'] = '%d Înregistraţi, '; +$lang['Reg_user_total'] = '%d Înregistrat, '; +$lang['Hidden_users_zero_total'] = '0 Ascunşi şi '; +$lang['Hidden_user_total'] = '%d Ascuns şi '; +$lang['Hidden_users_total'] = '%d Ascunşi şi '; +$lang['Guest_users_zero_total'] = '0 Vizitatori'; +$lang['Guest_users_total'] = '%d Vizitatori'; +$lang['Guest_user_total'] = '%d Vizitator'; +$lang['Record_online_users'] = 'Cei mai mulţi utilizatori conectaţi au fost %s la data de %s'; // first %s = number of users, second %s is the date. + +$lang['Admin_online_color'] = '%sAdministrator%s'; +$lang['Mod_online_color'] = '%sModerator%s'; + +$lang['You_last_visit'] = 'Ultima vizită a fost %s'; // %s replaced by date/time +$lang['Current_time'] = 'Acum este: %s'; // %s replaced by time + +$lang['Search_new'] = 'Mesajele scrise de la ultima vizită'; +$lang['Search_your_posts'] = 'Mesajele proprii'; +$lang['Search_unanswered'] = 'Mesajele la care nu s-a răspuns'; + +$lang['Register'] = 'Înregistrare'; +$lang['Profile'] = 'Profil'; +$lang['Edit_profile'] = 'Editare profil'; +$lang['Search'] = 'Căutare'; +$lang['Memberlist'] = 'Membri'; +$lang['FAQ'] = 'FAQ'; +$lang['BBCode_guide'] = 'Ghid pentru codul BB'; +$lang['Usergroups'] = 'Grupuri'; +$lang['Last_Post'] = 'Ultimul mesaj'; +$lang['Moderator'] = 'Moderator'; +$lang['Moderators'] = 'Moderatori'; + + +// +// Stats block text +// +$lang['Posted_articles_zero_total'] = 'Utilizatorii noştri au scris un număr de 0 articole'; // Number of posts +$lang['Posted_articles_total'] = 'Utilizatorii noştri au scris un număr de %d articole'; // Number of posts +$lang['Posted_article_total'] = 'Utilizatorii noştri au scris un număr de %d articol'; // Number of posts +$lang['Registered_users_zero_total'] = 'Avem 0 utilizatori înregistraţi'; // # registered users +$lang['Registered_users_total'] = 'Avem %d utilizatori înregistraţi'; // # registered users +$lang['Registered_user_total'] = 'Avem %d utilizator înregistrat'; // # registered users +$lang['Newest_user'] = 'Cel mai nou utilizator înregistrat este: %s%s%s'; // a href, username, /a + +$lang['No_new_posts_last_visit'] = 'Nu sunt mesaje noi de la ultima ta vizita'; +$lang['No_new_posts'] = 'Nu sunt mesaje noi'; +$lang['New_posts'] = 'Mesaje noi'; +$lang['New_post'] = 'Mesaj nou'; +$lang['No_new_posts_hot'] = 'Nu sunt mesaje noi [ Popular ]'; +$lang['New_posts_hot'] = 'Mesaje noi [ Popular ]'; +$lang['No_new_posts_locked'] = 'Nu sunt mesaje noi [ Închis ]'; +$lang['New_posts_locked'] = 'Mesaje noi [ Închis ]'; +$lang['Forum_is_locked'] = 'Forumul este închis'; + + +// +// Login +// +$lang['Enter_password'] = 'Vă rugăm introduceţi un nume de utilizator şi o parolă pentru a va autentifica'; +$lang['Login'] = 'Autentificare'; +$lang['Logout'] = 'Ieşire'; + +$lang['Forgotten_password'] = 'Mi-am uitat parola'; + +$lang['Log_me_in'] = 'Autentifică-mă automat la fiecare vizită'; + +$lang['Error_login'] = 'Aţi introdus un nume de utilizator incorect sau inactiv sau o parolă greşită'; + + +// +// Index page +// +$lang['Index'] = 'Pagina de start'; +$lang['No_Posts'] = 'Nici un mesaj'; +$lang['No_forums'] = 'Nu există forumuri'; + +$lang['Private_Message'] = 'Mesaj privat'; +$lang['Private_Messages'] = 'Mesaje private'; +$lang['Who_is_Online'] = 'Cine este conectat'; + +$lang['Mark_all_forums'] = 'Marchează toate forumurile ca fiind citite'; +$lang['Forums_marked_read'] = 'Toate forumurile au fost marcate ca fiind citite'; + + +// +// Viewforum +// +$lang['View_forum'] = 'Vezi forum'; + +$lang['Forum_not_exist'] = 'Forumul selectat nu există'; +$lang['Reached_on_error'] = 'Aţi găsit această pagină datorită unei erori'; + +$lang['Display_topics'] = 'Afişează subiectul pentru previzualizare'; +$lang['All_Topics'] = 'Toate subiectele'; + +$lang['Topic_Announcement'] = 'Anunţ:'; +$lang['Topic_Sticky'] = 'Important:'; +$lang['Topic_Moved'] = 'Mutat:'; +$lang['Topic_Poll'] = '[ Chestionar ]'; + +$lang['Mark_all_topics'] = 'Marchează toate subiectele ca fiind citite'; +$lang['Topics_marked_read'] = 'Toate subiectele au fost marcate ca fiind citite'; + +$lang['Rules_post_can'] = 'Puteţi crea un subiect nou în acest forum'; +$lang['Rules_post_cannot'] = 'Nu puteţi crea un subiect nou în acest forum'; +$lang['Rules_reply_can'] = 'Puteţi răspunde la subiectele acestui forum'; +$lang['Rules_reply_cannot'] = 'Nu puteţi răspunde în subiectele acestui forum'; +$lang['Rules_edit_can'] = 'Puteţi modifica mesajele proprii din acest forum'; +$lang['Rules_edit_cannot'] = 'Nu puteţi modifica mesajele proprii din acest forum'; +$lang['Rules_delete_can'] = 'Puteţi şterge mesajele proprii din acest forum'; +$lang['Rules_delete_cannot'] = 'Nu puteţi şterge mesajele proprii din acest forum'; +$lang['Rules_vote_can'] = 'Puteţi vota în chestionarele din acest forum'; +$lang['Rules_vote_cannot'] = 'Nu puteţi vota în chestionarele din acest forum'; +$lang['Rules_moderate'] = 'Puteţi %smodera acest forum%s'; // %s replaced by a href links, do not remove! + +$lang['No_topics_post_one'] = '
    Nu este nici un mesaj în acest forum

    Apăsaţi pe butonul Subiect nou din această pagină pentru a scrie un mesaj'; + + +// +// Viewtopic +// +$lang['View_topic'] = 'Vizualizare subiect'; + +$lang['Guest'] = 'Vizitator'; +$lang['Post_subject'] = 'Titlul subiectului'; +$lang['View_next_topic'] = 'Subiectul următor'; +$lang['View_previous_topic'] = 'Subiectul anterior'; +$lang['Submit_vote'] = 'Trimite votul'; +$lang['View_results'] = 'Vizualizare rezultate'; + +$lang['No_newer_topics'] = 'Nu sunt subiecte noi în acest forum'; +$lang['No_older_topics'] = 'Nu sunt subiecte vechi în acest forum'; +$lang['Topic_post_not_exist'] = 'Nu există subiectul sau mesajul cerut'; +$lang['No_posts_topic'] = 'Nu există mesaje în acest subiect'; + +$lang['Display_posts'] = 'Afişează mesajele pentru a le previzualiza'; +$lang['All_Posts'] = 'Toate mesajele'; +$lang['Newest_First'] = 'Primele, cele mai noi mesaje'; +$lang['Oldest_First'] = 'Primele, cele mai vechi mesaje'; + +$lang['Back_to_top'] = 'Sus'; + +$lang['Read_profile'] = 'Vezi profilul utilizatorului'; +$lang['Visit_website'] = 'Vizitează site-ul autorului'; +$lang['ICQ_status'] = 'Statutul ICQ'; +$lang['Edit_delete_post'] = 'Modifică/Şterge acest mesaj'; +$lang['View_IP'] = 'IP-ul autorului'; +$lang['Delete_post'] = 'Şterge acest mesaj'; + +$lang['wrote'] = 'a scris'; // proceeds the username and is followed by the quoted text +$lang['Quote'] = 'Citat'; // comes before bbcode quote output. +$lang['Code'] = 'Cod'; // comes before bbcode code output. + +$lang['Edited_time_total'] = 'Ultima modificare efectuată de către %s la %s, modificat de %d dată în total'; // Last edited by me on 12 Oct 2001, edited 1 time in total +$lang['Edited_times_total'] = 'Ultima modificare efectuată %s la %s, modificat de %d ori în total'; // Last edited by me on 12 Oct 2001, edited 2 times in total + +$lang['Lock_topic'] = 'Închide acest subiect'; +$lang['Unlock_topic'] = 'Deschide acest subiect'; +$lang['Move_topic'] = 'Mută acest subiect'; +$lang['Delete_topic'] = 'Şterge acest subiect'; +$lang['Split_topic'] = 'Desparte acest subiect'; + +$lang['Stop_watching_topic'] = 'Opreşte urmărirea acestui subiect'; +$lang['Start_watching_topic'] = 'Marchează acest subiect pentru urmărirea răspunsurilor'; +$lang['No_longer_watching'] = 'Aţi oprit urmărirea acestui subiect'; +$lang['You_are_watching'] = 'Acest subiect este marcat pentru urmărire'; + +$lang['Total_votes'] = 'Voturi totale'; + +// +// Posting/Replying (Not private messaging!) +// +$lang['Message_body'] = 'Corpul mesajului'; +$lang['Topic_review'] = 'Previzualizare revizie'; + +$lang['No_post_mode'] = 'Nu a fost specificat modul de trimitere a mesajului'; // If posting.php is called without a mode (newtopic/reply/delete/etc, shouldn't be shown normaly) + +$lang['Post_a_new_topic'] = 'Crează un nou subiect'; +$lang['Post_a_reply'] = 'Răspunde'; +$lang['Post_topic_as'] = 'Crează un mesaj la'; +$lang['Edit_Post'] = 'Modifică'; +$lang['Options'] = 'Opţiuni'; + +$lang['Post_Announcement'] = 'Anunţ'; +$lang['Post_Sticky'] = 'Important'; +$lang['Post_Normal'] = 'Normal'; + +$lang['Confirm_delete'] = 'Sunteţi sigur că vreţi să ştergeţi acest mesaj?'; +$lang['Confirm_delete_poll'] = 'Sunteţi sigur că vreţi să ştergeţi acest chestionar?'; + +$lang['Flood_Error'] = 'Nu puteţi să trimiteţi un mesaj nou la un interval atât de scurt dupa anteriorul; vă rugăm, încercaţi mai târziu.'; +$lang['Empty_subject'] = 'Trebuie specificat titlul'; +$lang['Empty_message'] = 'Trebuie sa scrieţi un mesaj'; +$lang['Forum_locked'] = 'Acest forum este închis, nu se pot scrie, crea, răspunde sau modifica subiecte'; +$lang['Topic_locked'] = 'Acest subiect este închis, nu se pot crea sau răspunde la mesaje'; +$lang['No_post_id'] = 'Trebuie sa selectaţi un mesaj pentru modificare'; +$lang['No_topic_id'] = 'Trebuie sa selectaţi un mesaj pentru a da un răspuns la'; +$lang['No_valid_mode'] = 'Puteţi doar să adăugaţi, să modificaţi, să citaţi sau să răspundeţi la mesaje; reveniţi şi încercaţi din nou'; +$lang['No_such_post'] = 'Aici nu este nici un mesaj, reveniţi şi încercaţi din nou'; +$lang['Edit_own_posts'] = 'Scuze dar puteţi modifica doar mesajele dumneavoastră'; +$lang['Delete_own_posts'] = 'Scuze dar puteţi şterge doar mesajele dumneavoastră'; +$lang['Cannot_delete_replied'] = 'Scuze dar nu puteţi şterge mesaje la care s-a răspuns deja'; +$lang['Cannot_delete_poll'] = 'Scuze dar nu puteţi şterge un chestionar aflat în derulare'; +$lang['Empty_poll_title'] = 'Trebuie să introduceţi un titlu pentru chestionar'; +$lang['To_few_poll_options'] = 'Trebuie să introduceţi cel puţin două opţiuni de vot în chestionar'; +$lang['To_many_poll_options'] = 'Aţi încercat să introduceţi prea multe opţiuni de vot în chestionar'; +$lang['Post_has_no_poll'] = 'Acest mesaj nu are chestionar'; +$lang['Already_voted'] = 'Aţi votat deja în acest chestionar'; +$lang['No_vote_option'] = 'Trebuie să specificaţi o opţiune la votare'; + +$lang['Add_poll'] = 'Adaugă un chestionar'; +$lang['Add_poll_explain'] = 'Dacă nu vreţi să adăugaţi un chestionar la mesajul dumneavoastră, lăsaţi câmpurile necompletate'; +$lang['Poll_question'] = 'Chestionar'; +$lang['Poll_option'] = 'Opţiunile chestionarului'; +$lang['Add_option'] = 'Adaugă o opţiune'; +$lang['Update'] = 'Actualizează'; +$lang['Delete'] = 'Şterge'; +$lang['Poll_for'] = 'Rulează chestionarul pentru'; +$lang['Days'] = 'Zile'; // This is used for the Run poll for ... Days + in admin_forums for pruning +$lang['Poll_for_explain'] = '[ Introduceţi 0 sau lăsaţi necompletat pentru un chestionar nelimitat în timp ]'; +$lang['Delete_poll'] = 'Şterge chestionarul'; + +$lang['Disable_HTML_post'] = 'Dezactivează codul HTML în acest mesaj'; +$lang['Disable_BBCode_post'] = 'Dezactivează codul BBCode în acest mesaj'; +$lang['Disable_Smilies_post'] = 'Dezactivează zâmbetele în acest mesaj'; + +$lang['HTML_is_ON'] = 'Codul HTML este Activat'; +$lang['HTML_is_OFF'] = 'Codul HTML este Dezactivat'; +$lang['BBCode_is_ON'] = '%sCodulBB%s este Activat'; // %s are replaced with URI pointing to FAQ +$lang['BBCode_is_OFF'] = '%sCodul%s este Dezactivat'; +$lang['Smilies_are_ON'] = 'Zâmbetele sunt Activate'; +$lang['Smilies_are_OFF'] = 'Zâmbetele sunt Dezactivate'; + +$lang['Attach_signature'] = 'Adaugă semnătura (semnătura poate fi schimbată din Profil)'; +$lang['Notify'] = 'Anunţa-mă când apare un răspuns'; + +$lang['Stored'] = 'Mesajul a fost introdus cu succes'; +$lang['Deleted'] = 'Mesajul a fost şters cu succes'; +$lang['Poll_delete'] = 'Chestionarul a fost şters cu succes'; +$lang['Vote_cast'] = 'Votul a fost acceptat'; + +$lang['Topic_reply_notification'] = 'Anunţ de răspuns la mesaj'; + +$lang['bbcode_b_help'] = "Text îngroşat (bold): [b]text[/b] (alt+b)"; +$lang['bbcode_i_help'] = "Text înclinat (italic): [i]text[/i] (alt+i)"; +$lang['bbcode_u_help'] = "Text subliniat: [u]text[/u] (alt+u)"; +$lang['bbcode_q_help'] = "Text citat: [quote]text[/quote] (alt+q)"; +$lang['bbcode_c_help'] = "Cod sursă: [code]cod sursa[/code] (alt+c)"; +$lang['bbcode_l_help'] = "Listă: [list]text[/list] (alt+l)"; +$lang['bbcode_o_help'] = "Listă ordonată: [list=]text[/list] (alt+o)"; +$lang['bbcode_p_help'] = "Inserează imagine: [img]http://image_url[/img] (alt+p)"; +$lang['bbcode_w_help'] = "Inserează URL: [url]http://url[/url] sau [url=http://url]URL text[/url] (alt+w)"; +$lang['bbcode_a_help'] = "Închide toate tag-urile de cod BB deschise"; +$lang['bbcode_s_help'] = "Culoare text: [color=red]text[/color] Sfat: poţi folosi şi color=#FF0000"; +$lang['bbcode_f_help'] = "Mărime font: [size=x-small]text mărunt[/size]"; + +$lang['Emoticons'] = 'Iconiţe emotive'; +$lang['More_emoticons'] = 'Alte iconiţe emotive'; + +$lang['Font_color'] = "Culoare text"; +$lang['color_default'] = "Implicită"; +$lang['color_dark_red'] = "Roşu închis"; +$lang['color_red'] = "Roşu"; +$lang['color_orange'] = "Oranj"; +$lang['color_brown'] = "Maro"; +$lang['color_yellow'] = "Galben"; +$lang['color_green'] = "Verde"; +$lang['color_olive'] = "Măsliniu"; +$lang['color_cyan'] = "Cyan"; +$lang['color_blue'] = "Albastru"; +$lang['color_dark_blue'] = "Albastru închis"; +$lang['color_indigo'] = "Indigo"; +$lang['color_violet'] = "Violet"; +$lang['color_white'] = "Alb"; +$lang['color_black'] = "Negru"; + +$lang['Font_size'] = "Mărime text"; +$lang['font_tiny'] = "Măruntă"; +$lang['font_small'] = "Mică"; +$lang['font_normal'] = "Normală"; +$lang['font_large'] = "Mare"; +$lang['font_huge'] = "Imensă"; + +$lang['Close_Tags'] = 'Închide tag-uri'; +$lang['Styles_tip'] = 'Sfat: Stilurile pot fi aplicate imediat textului selectat'; + + +// +// Private Messaging +// +$lang['Private_Messaging'] = 'Mesagerie privată'; + +$lang['Login_check_pm'] = 'Mesaje private'; +$lang['New_pms'] = 'Aveţi %d mesaje noi'; // You have 2 new messages +$lang['New_pm'] = 'Aveţi %d mesaj nou'; // You have 1 new message +$lang['No_new_pm'] = 'Nu aveţi mesaje noi'; +$lang['Unread_pms'] = 'Aveţi %d mesaje necitite'; +$lang['Unread_pm'] = 'Aveţi %d mesaj necitit'; +$lang['No_unread_pm'] = 'Nu aveţi mesaje necitite'; +$lang['You_new_pm'] = 'Un mesaj nou privat aşteaptă în cutia cu mesaje'; +$lang['You_new_pms'] = 'Mai multe mesaje noi aşteaptă în cutia cu mesaje'; +$lang['You_no_new_pm'] = 'Nu sunt mesaje noi în aşteptare în cutia cu mesaje'; + +$lang['Unread_message'] = 'Mesaj necitit'; +$lang['Read_message'] = 'Mesaj citit'; + +$lang['Read_pm'] = 'Mesaj citit'; +$lang['Post_new_pm'] = 'Scrie mesaj'; +$lang['Post_reply_pm'] = 'Retrimite mesajul'; +$lang['Post_quote_pm'] = 'Comentează mesajul'; +$lang['Edit_pm'] = 'Modifică mesajul'; + +$lang['Inbox'] = 'Cutia cu mesaje'; +$lang['Outbox'] = 'Cutia cu mesaje în curs de trimitere'; +$lang['Savebox'] = 'Cutia cu mesaje salvate'; +$lang['Sentbox'] = 'Cutia cu mesaje trimise'; +$lang['Flag'] = 'Marcaj'; +$lang['Subject'] = 'Subiect'; +$lang['From'] = 'De la'; +$lang['To'] = 'Către'; +$lang['Date'] = 'Data'; +$lang['Mark'] = 'Marcat'; +$lang['Sent'] = 'Trimis'; +$lang['Saved'] = 'Salvat'; +$lang['Delete_marked'] = 'Şterge mesajele marcate'; +$lang['Delete_all'] = 'Şterge toate mesajele'; +$lang['Save_marked'] = 'Salvează mesajele marcate'; +$lang['Save_message'] = 'Salvează mesajul'; +$lang['Delete_message'] = 'Şterge mesajul'; + +$lang['Display_messages'] = 'Afişează mesajele din urmă'; // Followed by number of days/weeks/months +$lang['All_Messages'] = 'Toate mesajele'; + +$lang['No_messages_folder'] = 'Nu aveţi mesaje noi în acestă cutie pentru mesaje'; + +$lang['PM_disabled'] = 'Mesajele private au fost dezactivate de pe acest panou'; +$lang['Cannot_send_privmsg'] = 'Scuze dar administratorul vă împiedică în trimiterea mesajelor private'; +$lang['No_to_user'] = 'Trebuie specificat un nume de utilizator pentru a putea trimite mesajul'; +$lang['No_such_user'] = 'Scuze dar acest utilizator nu există'; + +$lang['Disable_HTML_pm'] = "Deactivează codul HTML în acest mesaj"; +$lang['Disable_BBCode_pm'] = "Deactivează codul BB în acest mesaj"; +$lang['Disable_Smilies_pm'] = "Deactivează zâmbetele în acest mesaj"; + +$lang['Message_sent'] = 'Mesajul a fost trimis'; + +$lang['Click_return_inbox'] = "Apăsaţi %saici%s pentru a reveni la cutia cu mesaje"; +$lang['Click_return_index'] = "Apăsaţi %saici%s pentru a reveni la Pagina de start a forumului"; + +$lang['Send_a_new_message'] = "Trimite un nou mesaj privat"; +$lang['Send_a_reply'] = "Răspunde la un mesaj privat"; +$lang['Edit_message'] = "Modifică un mesaj privat"; + +$lang['Notification_subject'] = 'Un nou mesaj privat a sosit'; + +$lang['Find_username'] = "Caută un utilizator"; +$lang['Find'] = "Caută"; +$lang['No_match'] = "Nu a fost găsit nici un utilizator"; + +$lang['No_post_id'] = "ID-ul mesajului nu a fost specificat"; +$lang['No_such_folder'] = "Directorul specificat nu există"; +$lang['No_folder'] = "Nu a fost specificat directorul"; + +$lang['Mark_all'] = "Marchează toate"; +$lang['Unmark_all'] = "Demarchează toate"; + +$lang['Confirm_delete_pm'] = "Sunteţi sigur că vreţi să ştergeţi acest mesaj?"; +$lang['Confirm_delete_pms'] = "Sunteţi sigur că vreţi să ştergeţi aceste mesaje?"; + +$lang['Inbox_size'] = "Cutia dumneavoastră cu mesaje este %d%% plină"; // eg. Your Inbox is 50% full +$lang['Sentbox_size'] = "Cutia dumneavoastră cu mesaje trimise este %d%% plină"; +$lang['Savebox_size'] = "Cutia dumneavoastră cu mesaje salvate este %d%% plină"; + +$lang['Click_view_privmsg'] = "Apăsaţi %saici%s pentru a ajunge la cutia dumneavoastră cu mesaje"; + + +// +// Profiles/Registration +// +$lang['Viewing_user_profile'] = 'Vezi profilul : %s'; // %s is username +$lang['About_user'] = 'Totul despre %s'; // %s is username + +$lang['Preferences'] = 'Preferinţe'; +$lang['Items_required'] = 'Ce este marcat cu * este obligatoriu'; +$lang['Registration_info'] = 'Informaţii de înregistrare'; +$lang['Profile_info'] = 'Informaţii despre profil'; +$lang['Profile_info_warn'] = 'Aceste informaţii vor fi făcute publice'; +$lang['Avatar_panel'] = 'Panoul de control al imaginilor asociate'; +$lang['Avatar_gallery'] = 'Galeria de imagini'; + +$lang['Website'] = 'Site Web'; +$lang['Location'] = 'Locaţie'; +$lang['Contact'] = 'Contact'; +$lang['Email_address'] = 'Adresa de email'; +$lang['Send_private_message'] = 'Trimite mesaj privat'; +$lang['Hidden_email'] = '[ Ascuns ]'; +$lang['Interests'] = 'Interese'; +$lang['Occupation'] = 'Ocupaţia'; +$lang['Poster_rank'] = 'Rangul utilizatorului'; + +$lang['Total_posts'] = 'Numărul total de mesaje'; +$lang['User_post_pct_stats'] = '%.2f%% din total'; // 1.25% of total +$lang['User_post_day_stats'] = '%.2f mesaje pe zi'; // 1.5 posts per day +$lang['Search_user_posts'] = 'Caută toate mesajele lui %s'; // Find all posts by username + +$lang['No_user_id_specified'] = 'Scuze dar acest utilizator nu există'; +$lang['Wrong_Profile'] = 'Nu puteţi modifica un profil dacă nu este propriul dumneavoastră profil.'; + +$lang['Only_one_avatar'] = 'Se poate specifica doar un tip de imagine asociată'; +$lang['File_no_data'] = 'Fişierul specificat de URL-ul dumneavoastră nu conţine informaţii'; +$lang['No_connection_URL'] = 'Conexiunea nu poate fi facută la URL-ul specificat'; +$lang['Incomplete_URL'] = 'URL-ul introdus este incomplet'; +$lang['Wrong_remote_avatar_format'] = 'URL-ul către imaginea asociată nu este valid'; +$lang['No_send_account_inactive'] = 'Scuze, dar parola dumneavoastră nu mai poate fi folosită deoarece contul este inactiv. Te rog contacteaza administratorul forumului pentru mai multe informatii'; + +$lang['Always_smile'] = 'Folosesc întotdeauna zâmbete'; +$lang['Always_html'] = 'Folosesc întotdeauna cod HTML'; +$lang['Always_bbcode'] = 'Folosesc întotdeauna cod BB'; +$lang['Always_add_sig'] = 'Adaugă întotdeauna semnătura mea la mesaje'; +$lang['Always_notify'] = 'Anunţă-mă întotdeauna de răspunsuri la mesajele mele'; +$lang['Always_notify_explain'] = 'Trimite-mi un email când cineva răspunde la mesajele mele. Opţiunea poate fi schimbată la fiecare mesaj nou.'; + +$lang['Board_style'] = 'Stilul interfeţei'; +$lang['Board_lang'] = 'Limba interfeţei'; +$lang['No_themes'] = 'Nici o temă în baza de date'; +$lang['Timezone'] = 'Timpul zonal'; +$lang['Date_format'] = 'Formatul datei'; +$lang['Date_format_explain'] = 'Sintaxa utilizată este identică cu cea folosită de funcţia PHP date()'; +$lang['Signature'] = 'Semnătura'; +$lang['Signature_explain'] = 'Acesta este un bloc de text care poate fi adăugat mesajelor scrise de dumneavoastră. Limita este de %d caractere'; +$lang['Public_view_email'] = 'Afişează întotdeauna adresa mea de email'; + +$lang['Current_password'] = 'Parola curentă'; +$lang['New_password'] = 'Parola nouă'; +$lang['Confirm_password'] = 'Confirmaţi parola'; +$lang['Confirm_password_explain'] = 'Trebuie să confirmaţi parola curentă dacă vreţi să o schimbaţi sau vreţi să aveţi altă adresă de email'; +$lang['password_if_changed'] = 'Este necesar să specificaţi parola dacă vreţi să o schimbaţi'; +$lang['password_confirm_if_changed'] = 'Este necesar să confirmaţi parola dacă aţi schimbat-o anterior'; + +$lang['Avatar'] = 'Imagine asociată (Avatar)'; +$lang['Avatar_explain'] = 'Afişează o imagine micuţa sub detaliile dumneavoastră din mesaje. Doar o imagine poate fi afişată în acelaşi timp, mărimea ei nu poate fi mai mare de %d pixeli ca înalţime şi %d ca lăţime şi mărimea fişierului poate fi cel mult de %dko.'; +$lang['Upload_Avatar_file'] = 'Încărcaţi de pe calculatorul dumneavoastră imaginea asociată'; +$lang['Upload_Avatar_URL'] = 'Încărcaţi cu un URL imaginea asociată'; +$lang['Upload_Avatar_URL_explain'] = 'Introduceţi URL-ul locului unde este imaginea asociatăr pentru a fi copiată pe acest site.'; +$lang['Pick_local_Avatar'] = 'Alegeţi o imagine asociată din galerie'; +$lang['Link_remote_Avatar'] = 'Legătura spre un alt site ce conţine imagini asociate'; +$lang['Link_remote_Avatar_explain'] = 'Introduceţi URL-ul locului unde este imaginea asociată pentru a face o legătură la ea.'; +$lang['Avatar_URL'] = 'URL-ul imaginii asociate'; +$lang['Select_from_gallery'] = 'Alegeţi o imagine asociată din galerie'; +$lang['View_avatar_gallery'] = 'Arată galeria de imagini asociate'; + +$lang['Select_avatar'] = 'Alegeţi o imagine asociată'; +$lang['Return_profile'] = 'Renunţaţi la imaginea asociată'; +$lang['Select_category'] = 'Alegeţi o categorie'; + +$lang['Delete_Image'] = 'Ştergeţi imaginea'; +$lang['Current_Image'] = 'Imaginea curentă'; + +$lang['Notify_on_privmsg'] = 'Atenţionează-mă când primesc un mesaj privat nou'; +$lang['Popup_on_privmsg'] = 'Deschide o fereastră când primesc un mesaj privat nou'; +$lang['Popup_on_privmsg_explain'] = 'Unele şabloane pot deschide o fereastră nouă pentru a vă informa de faptul că aţi primit un mesaj privat nou'; +$lang['Hide_user'] = 'Ascundeţi indicatorul de conectare'; + +$lang['Profile_updated'] = 'Profilul dumneavoastră a fost actualizat'; +$lang['Profile_updated_inactive'] = 'Profilul dumneavoastră a fost actualizat, dar deoarece au fost modificate detalii importante contul este momentan inactiv. Verificaţi-vă email-ul pentru a afla cum iţi va fi reactivat contul sau dacă este necesară intervenţia administratorului aşteptaţi până ce acesta vă va reactiva contul.'; + +$lang['Password_mismatch'] = 'Parolele introduse nu sunt valide'; +$lang['Current_password_mismatch'] = 'Parola furnizata de dumneavoastră nu este gasită în baza de date'; +$lang['Password_long'] = 'Parola nu trebuie să depăşească 32 de caractere'; +$lang['Username_taken'] = 'Scuze, dar numele de utilizator introdus, există deja'; +$lang['Username_invalid'] = 'Scuze, dar numele de utilizator introdus conţine caractere greşite, ca de exemplu: \''; +$lang['Username_disallowed'] = 'Scuze, dar acest nume de utilizator a fost interzis'; +$lang['Email_taken'] = 'Scuze, dar adresa de email introdusă este deja folosită de un alt utilizator'; +$lang['Email_banned'] = 'Scuze, dar această adresă de email a fost interzisă'; +$lang['Email_invalid'] = 'Scuze, dar această adresă de email nu este corectă'; +$lang['Signature_too_long'] = 'Semnătura dumneavoastră este prea lungă'; +$lang['Fields_empty'] = 'Trebuie să completaţi câmpurile obligatorii'; +$lang['Avatar_filetype'] = 'Imaginile asociate trebuie să fie de tipul: .jpg, .gif sau .png'; +$lang['Avatar_filesize'] = 'Imaginile asociate trebuie să fie mai mici de: %d kB'; // The avatar image file size must be less than 6 kB +$lang['Avatar_imagesize'] = 'Imaginile asociate trebuie să fie mai mici de %d pixeli pe lăţime şi %d pixeli pe înălţime'; + +$lang['Welcome_subject'] = 'Bine aţi venit pe forumul %s '; // Welcome to my.com forums +$lang['New_account_subject'] = 'Cont nou de utilizator'; +$lang['Account_activated_subject'] = 'Contul a fost activat'; + +$lang['Account_added'] = 'Vă mulţumim pentru înregistrare, contul a fost creat. Puteţi să vă autentificaţi cu numele de utilizator şi parola'; +$lang['Account_inactive'] = 'Contul a fost creat. Acest forum necesită activarea contului, o cheie de activare a fost trimisa pe adresa de email furnizata de dumneavoastră. Vă rugăm să vă verificaţi căsuţa de email pentru mai multe informaţii.'; +$lang['Account_inactive_admin'] = 'Contul a fost creat. Acest forum necesită activarea contului de către administrator. Veţi fi informat prin email când contul va fi activat.'; +$lang['Account_active'] = 'Contul a fost activat. Multumim pentru inregistrare.'; +$lang['Account_active_admin'] = 'Contul a fost activat'; +$lang['Reactivate'] = 'Reactivaţi-vă contul!'; +$lang['Already_activated'] = 'Contul a fost deja activat'; +$lang['COPPA'] = 'Contul a fost creat dar trebuie sa fie aprobat, verificaţi-vă, vă rugăm, casuţa de email.'; + +$lang['Registration'] = 'Termenii acordului de înregistrare'; +$lang['Reg_agreement'] = 'Întotdeauna administratorii şi moderatorii acestui forum vor încerca să îndepărteze sau să modifice orice material deranjant cât mai repede posibil; este imposibil să parcurgă fiecare mesaj în parte. Din acest motiv trebuie să ştiţi că toate mesajele exprimă punctul de vedere şi opiniile autorilor şi nu ale administratorilor, +moderatorilor sau a web master-ului (excepţie făcând mesajele scrise chiar de către ei) şi de aceea ei nu pot fi făcuţi responsabili.

    Trebuie să fiţi de acord să nu publicaţi mesaje cu conţinut abuziv, obscen, vulgar, calomnios, de ură, ameninţător, sexual sau orice alt material ce poate viola legile aflate în vigoare. Dacă publicaţi astfel de materiale puteţi fi imediat şi pentru totdeauna îndepărtat din forum (şi firma care vă oferă accesul la Internet va fi anunţată). Adresele IP ale tuturor mesajelor trimise sunt stocate pentru a fi de ajutor în rezolvarea unor astfel de încălcări ale regulilor. Trebuie să fiţi de acord că webmaster-ul, administratorul şi moderatorii acestui forum au dreptul de a şterge, modifica sau închide orice subiect, oricând cred ei că acest lucru se impune. Ca utilizator, trebuie să fiţi de acord că orice informaţie introdusă de dumneavoastră să fie stocată în baza de date. Aceste informaţii nu vor fi arătate unei terţe persoane fără consimţământul webmaster-ului, administratorului şi moderatorilor care nu pot fi facuţi responsabili de atacurile de furt sau de vandalism care pot să ducă la compromiterea datelor.

    Acest forum utilizează fişierele tip cookie pentru a stoca informaţiile pe calculatorul dumneavoastră. Aceste fişiere cookie nu conţin informaţii despre alte aplicaţii ci ele sunt folosite doar pentru uşurarea navigării pe forum. Adresele de email sunt utilizate doar pentru confirmarea înregistrării dumneavoastră ca utilizator şi pentru parolă (şi pentru trimiterea unei noi parole dacă aţi uitat-o pe cea curentă).

    Prin apăsarea pe butonul de înregistrare se consideră că sunteţi de acord cu aceste condiţii.'; + +$lang['Agree_under_13'] = 'Sunt de acord cu aceste condiţii şi declar că am sub 13 ani'; +$lang['Agree_over_13'] = 'Sunt de acord cu aceste condiţii şi declar că am peste 13 ani'; +$lang['Agree_not'] = 'Nu sunt de acord cu aceste condiţii'; + +$lang['Wrong_activation'] = 'Cheia de activare furnizată nu se regăseşte în baza de date'; +$lang['Send_password'] = 'Trimiteţi-mi o parolă nouă'; +$lang['Password_updated'] = 'O parola nouă a fost creată, vă rugăm verificaţi-vă căsuţa de email pentru informaţiile de activare'; +$lang['No_email_match'] = 'Adresa de email furnizată nu corespunde celei asociate acestui utilizator'; +$lang['New_password_activation'] = 'Activarea parolei noi'; +$lang['Password_activated'] = 'Contul dumneavoastră a fost reactivat. La autentificare utilizaţi parola trimisă în la adresa de email primită'; + +$lang['Send_email_msg'] = "Trimite un email"; +$lang['No_user_specified'] = "Nu a fost specificat utilizatorul"; +$lang['User_prevent_email'] = "Acest utilizator nu doreşte să primeasca mesaje. Încearcaţi să-i trimiteţi un mesaj privat"; +$lang['User_not_exist'] = "Acest utilizator nu există"; +$lang['CC_email'] = "Trimiteţi-vă o copie"; +$lang['Email_message_desc'] = "Acest mesaj va fi trimis în mod text, nu include cod HTML sau cod BB. Adresa de întoarcere pentru acest mesaj va fi setată către adresa dumneavoastră de email."; +$lang['Flood_email_limit'] = "Nu puteţi trimite înca un email în acest moment, încearcaţi mai târziu."; +$lang['Recipient'] = "Recipient"; +$lang['Email_sent'] = "Mesajul a fost trimis"; +$lang['Send_email'] = "Trimite un mesaj"; +$lang['Empty_subject_email'] = "Trebuie specificat un subiect pentru mesaj"; +$lang['Empty_message_email'] = "Trebuie introdus conţinut în mesaj"; + + +// +// Visual confirmation system strings +// +$lang['Confirm_code_wrong'] = 'Codul de confirmare pe care l-aţ introdus este incorect'; +$lang['Too_many_registers'] = 'Aţi depăşit numărul de înregistrări setat pentru această sesiune. Vă rugăm încercaţi mai tarziu.'; +$lang['Confirm_code_impaired'] = 'Dacă nu puteţi citi codul sau acesta este neinteligibil, vă rugăm contactaţi %sAdministrator%s pentru ajutor .'; +$lang['Confirm_code'] = 'Cod de confirmare'; +$lang['Confirm_code_explain'] = 'Introduceţi codul exact cum îl vedeţi. Codul este case sensitive şi zero este tăiat de o linie diagonală.'; + +// +// Memberslist +// +$lang['Select_sort_method'] = 'Selectaţi metoda de sortare'; +$lang['Sort'] = 'Sortează'; +$lang['Sort_Top_Ten'] = 'Top 10 utilizatori'; +$lang['Sort_Joined'] = 'Data înregistrării'; +$lang['Sort_Username'] = 'Nume utilizator'; +$lang['Sort_Location'] = 'Locaţia'; +$lang['Sort_Posts'] = 'Număr total de mesaje'; +$lang['Sort_Email'] = 'Email'; +$lang['Sort_Website'] = 'Site Web'; +$lang['Sort_Ascending'] = 'Ascendent'; +$lang['Sort_Descending'] = 'Descendent'; +$lang['Order'] = 'Ordine'; + + +// +// Group control panel +// +$lang['Group_Control_Panel'] = 'Panoul de control al grupurilor'; +$lang['Group_member_details'] = 'Detalii despre membrii grupului'; +$lang['Group_member_join'] = 'Aderaţi la un grup'; + +$lang['Group_Information'] = 'Informaţii despre grup'; +$lang['Group_name'] = 'Numele grupului'; +$lang['Group_description'] = 'Descrierea grupului'; +$lang['Group_membership'] = 'Membrii grupului'; +$lang['Group_Members'] = 'Membrii grupului'; +$lang['Group_Moderator'] = 'Moderatorul grupului'; +$lang['Pending_members'] = 'Membri în aşteptare'; + +$lang['Group_type'] = 'Tipul grupului'; +$lang['Group_open'] = 'Grup deschis'; +$lang['Group_closed'] = 'Grup închis'; +$lang['Group_hidden'] = 'Grup ascuns'; + +$lang['Current_memberships'] = 'Grupurile din care fac parte'; +$lang['Non_member_groups'] = 'Grupurile din care nu fac parte'; +$lang['Memberships_pending'] = 'Membri în aşteptare'; + +$lang['No_groups_exist'] = 'Nu există grupuri'; +$lang['Group_not_exist'] = 'Acest grup de utilizatori nu există'; + +$lang['Join_group'] = 'Aderă la grup'; +$lang['No_group_members'] = 'Acest grup nu are membri'; +$lang['Group_hidden_members'] = 'Acest grup este ascuns, nu-i puteţi vedea membrii'; +$lang['No_pending_group_members'] = 'Acest grup nu are membri în aşteptare'; +$lang['Group_joined'] = 'Înscrierea la acest grup a fost facută cu succes.
    Veţi fi anunţat când cererea dumneavoastră va fi aprobată de moderatorul grupului'; +$lang['Group_request'] = 'A fost depusă o cerere de aderare la grupul dumneavoastră'; +$lang['Group_approved'] = 'Cererea dumneavoastră de aderare la grup a fost aprobată'; +$lang['Group_added'] = 'Aţi fost acceptat la acest grup de utilizatori'; +$lang['Already_member_group'] = 'Sunteţi deja membru al acestui grup'; +$lang['User_is_member_group'] = 'Utilizatorul este deja membru al acestui grup'; +$lang['Group_type_updated'] = 'Modificarea tipului de grup s-a realizat cu succes'; + +$lang['Could_not_add_user'] = 'Utilizatorul selectat nu există'; +$lang['Could_not_anon_user'] = 'Un Anonim nu poate fi facut membru de grup'; + +$lang['Confirm_unsub'] = 'Sunteţi sigur că vreţi să părăsiţi acest grup?'; +$lang['Confirm_unsub_pending'] = 'Cererea dumneavoastră de aderare la acest grup nu a fost înca aprobată, sunteţi sigur că vreţi să-l părăsiţi?'; + +$lang['Unsub_success'] = 'Dorinţa dumneavoastră de părăsire a grupului a fost îndeplinită.'; + +$lang['Approve_selected'] = 'Aprobă selecţiile'; +$lang['Deny_selected'] = 'Respinge selecţiile'; +$lang['Not_logged_in'] = 'Trebuie să fiţi autentificat pentru a adera la grup.'; +$lang['Remove_selected'] = 'Şterge selecţiile'; +$lang['Add_member'] = 'Adaugă membru'; +$lang['Not_group_moderator'] = 'Nu sunteţi moderator în acest grup; prin urmare nu puteţi efectua aceste acţiuni.'; + +$lang['Login_to_join'] = 'Autentificaţi-vă pentru a adera la grup sau pentru a organiza membrii'; +$lang['This_open_group'] = 'Acesta este un grup deschis, apăsaţi aici pentru a deveni membru'; +$lang['This_closed_group'] = 'Acesta este un grup închis, nu mai acceptă noi membri'; +$lang['This_hidden_group'] = 'Acesta este un grup ascuns, cererile de aderare automate nu sunt acceptate'; +$lang['Member_this_group'] = 'Sunteţi membru al acestui grup'; +$lang['Pending_this_group'] = 'Cererea de membru al acestui grup este în aşteptare'; +$lang['Are_group_moderator'] = 'Sunteţi moderatorul grupului'; +$lang['None'] = 'Nici unul'; + +$lang['Subscribe'] = "Înscriere"; +$lang['Unsubscribe'] = "Părăsire"; +$lang['View_Information'] = "Vizualizare informaţii"; + +// +// Search +// +$lang['Search_query'] = 'Interogare de căutare'; +$lang['Search_options'] = 'Opţiuni de căutare'; + +$lang['Search_keywords'] = 'Caută după cuvintele cheie'; +$lang['Search_keywords_explain'] = 'Puteţi folosi AND pentru a defini cuvintele ce trebuie să fie în rezultate, OR pentru a defini cuvintele care pot sa fie în rezultat, şi NOT pentru a defini cuvintele care nu trebuie să fie în rezultate. Se poate utiliza * pentru părţi de cuvinte.'; +$lang['Search_author'] = 'Caută după autor'; +$lang['Search_author_explain'] = 'Utilizaţi * pentru parţi de cuvinte'; + +$lang['Search_for_any'] = "Caută dupa oricare dintre termeni sau utilizează o interogare ca intrare"; +$lang['Search_for_all'] = "Caută dupa toţi termenii"; +$lang['Search_title_msg'] = "Caută în titlul subiectelor şi în textele mesajelor"; +$lang['Search_msg_only'] = "Caută doar în textele mesajelor"; + +$lang['Return_first'] = 'Întoarce primele'; // followed by xxx characters in a select box +$lang['characters_posts'] = 'de caractere ale mesajelor'; + +$lang['Search_previous'] = 'Caută în urmă'; // followed by days, weeks, months, year, all in a select box + +$lang['Sort_by'] = 'Sortează după'; +$lang['Sort_Time'] = 'Data mesajului'; +$lang['Sort_Post_Subject'] = 'Subiectul mesajului'; +$lang['Sort_Topic_Title'] = 'Titlul subiectului'; +$lang['Sort_Author'] = 'Autor'; +$lang['Sort_Forum'] = 'Forum'; + +$lang['Display_results'] = 'Afişează rezultatele ca'; +$lang['All_available'] = 'Disponibile toate'; +$lang['No_searchable_forums'] = 'nu aveţi drepturi de căutare în nici un forum de pe acest site'; + +$lang['No_search_match'] = 'Nici un subiect sau mesaj nu îndeplineşte criteriul introdus la căutare'; +$lang['Found_search_match'] = 'Căutarea a gasit %d rezultat'; // eg. Search found 1 match +$lang['Found_search_matches'] = 'Căutarea a gasit %d rezultate'; // eg. Search found 24 matches +$lang['Search_Flood_Error'] = 'Nu poţi face altă căutare atât de recentă faţă de ultima; te rog încearcă din nou în câteva clipe.'; + +$lang['Close_window'] = 'Închide fereastra'; + + +// +// Auth related entries +// +// Note the %s will be replaced with one of the following 'user' arrays +$lang['Sorry_auth_announce'] = 'Ne pare rău dar doar cei care sunt %s pot pune anunţuri în acest forum'; +$lang['Sorry_auth_sticky'] = 'Ne pare rău dar doar cei care sunt %s pot pune mesaje importante în acest forum'; +$lang['Sorry_auth_read'] = 'Ne pare rău dar doar cei care sunt %s pot citi subiectele din acest forum'; +$lang['Sorry_auth_post'] = 'Ne pare rău dar doar cei care sunt %s pot scrie subiecte în acest forum'; +$lang['Sorry_auth_reply'] = 'Ne pare rău dar doar cei care sunt %s pot răspunde în acest forum'; +$lang['Sorry_auth_edit'] = 'Ne pare rău dar doar cei care sunt %s pot modifica un mesaj în acest forum'; +$lang['Sorry_auth_delete'] = 'Ne pare rău dar doar cei care sunt %s pot sterge un mesaj din acest forum'; +$lang['Sorry_auth_vote'] = 'Ne pare rău dar doar cei care sunt %s pot vota în chestionarele din acest forum'; + +// These replace the %s in the above strings +$lang['Auth_Anonymous_Users'] = 'utilizator anonim'; +$lang['Auth_Registered_Users'] = 'utilizator înregistrat'; +$lang['Auth_Users_granted_access'] = 'utilizatori cu drepturi speciale de acces'; +$lang['Auth_Moderators'] = 'moderatori'; +$lang['Auth_Administrators'] = 'administratori'; + +$lang['Not_Moderator'] = 'Dumneavoastră nu sunteţi moderator în acest forum'; +$lang['Not_Authorised'] = 'Nu sunteţi autorizat'; + +$lang['You_been_banned'] = 'Accesul dumneavoastră în acest forum este blocat
    Vă rugăm să contactaÅ£i webmaster-ul sau administratorul pentru mai multe informaÅ£ii'; + + +// +// Viewonline +// +$lang['Reg_users_zero_online'] = 'Sunt 0 utilizatori înregistraÅ£i ÅŸi '; // There ae 5 Registered and +$lang['Reg_users_online'] = 'Sunt %d utilizatori înregistraÅ£i ÅŸi '; // There ae 5 Registered and +$lang['Reg_user_online'] = 'Este %d utilizator înregistrat ÅŸi '; // There ae 5 Registered and +$lang['Hidden_users_zero_online'] = '0 utilizatori ascunÅŸi conectaÅ£i'; // 6 Hidden users online +$lang['Hidden_users_online'] = '%d utilizatori ascunÅŸi conectaÅ£i'; // 6 Hidden users online +$lang['Hidden_user_online'] = '%d utilizator ascuns conectat'; // 6 Hidden users online +$lang['Guest_users_online'] = 'Sunt %d utilizatori vizitatori conectaÅ£i'; // There are 10 Guest users online +$lang['Guest_users_zero_online'] = 'Sunt 0 utilizatori vizitatori conectaÅ£i'; // There are 10 Guest users online +$lang['Guest_user_online'] = 'Este %d utilizator vizitator conectat'; // There is 1 Guest user online +$lang['No_users_browsing'] = 'Nici un utilizator nu navighează acum în acest forum'; + +$lang['Online_explain'] = 'Aceste date se bazează pe utilizatorii activi de peste 5 minute'; + +$lang['Forum_Location'] = 'Unde se găseÅŸte'; +$lang['Last_updated'] = 'Conectat la'; + +$lang['Forum_index'] = 'Pagina de start a forumului'; +$lang['Logging_on'] = 'Autentificare'; +$lang['Posting_message'] = 'Scrie un mesaj'; +$lang['Searching_forums'] = 'Caută în forumuri'; +$lang['Viewing_profile'] = 'Vezi profilul'; +$lang['Viewing_online'] = 'Vezi cine este conectat'; +$lang['Viewing_member_list'] = 'Vezi lista cu membri'; +$lang['Viewing_priv_msgs'] = 'Vezi mesajele private'; +$lang['Viewing_FAQ'] = 'Vezi lista cu întrebari frecvente'; + + +// +// Moderator Control Panel +// +$lang['Mod_CP'] = 'Panoul de control al moderatorului'; +$lang['Mod_CP_explain'] = 'Utilizând formularul de mai jos puteÅ£i efectua operaÅ£ii de moderare masivă în forum. PuteÅ£i închide, deschide, muta sau ÅŸterge orice număr de subiecte.'; + +$lang['Select'] = 'Selectează'; +$lang['Delete'] = 'Åžterge'; +$lang['Move'] = 'Mută'; +$lang['Lock'] = 'ÃŽnchide'; +$lang['Unlock'] = 'Deschide'; + +$lang['Topics_Removed'] = 'Subiectele selectate au fost cu succes ÅŸterse din baza de date.'; +$lang['Topics_Locked'] = 'Subiectele selectate au fost închise'; +$lang['Topics_Moved'] = 'Subiectele selectate au fost mutate'; +$lang['Topics_Unlocked'] = 'Subiectele selectate au fost deschise'; +$lang['No_Topics_Moved'] = 'Nici un subiect nu a fost mutat'; + +$lang['Confirm_delete_topic'] = "SunteÅ£i sigur că vreÅ£i să ÅŸtergeÅ£i subiectul/subiectele selectate?"; +$lang['Confirm_lock_topic'] = "SunteÅ£i sigur că vreÅ£i să închideÅ£i subiectul/subiectele selectate?"; +$lang['Confirm_unlock_topic'] = "SunteÅ£i sigur că vreÅ£i să deschideÅ£i subiectul/subiectele selectate?"; +$lang['Confirm_move_topic'] = "SunteÅ£i sigur că vreÅ£i să mutaÅ£i subiectul/subiectele selectate?"; + +$lang['Move_to_forum'] = 'Mută forumul'; +$lang['Leave_shadow_topic'] = 'Pastrează o umbră a subiectului în vechiul forum.'; + +$lang['Split_Topic'] = 'Panoul de control a împărÅ£irii subiectelor'; +$lang['Split_Topic_explain'] = 'Utilizând formularul de mai jos puteÅ£i împărÅ£i un subiect în două, pe rând sau începand de la cel deja selectat'; +$lang['Split_title'] = 'Titlul noului subiect'; +$lang['Split_forum'] = 'Forumul pentru noul subiect'; +$lang['Split_posts'] = 'ÃŽmparte mesajele selectate'; +$lang['Split_after'] = 'ÃŽmparte mesajul selectat'; +$lang['Topic_split'] = 'Subiectul selectat a fost împărÅ£it cu succes'; + +$lang['Too_many_error'] = 'AÅ£i selectat prea multe mesaje. PuteÅ£i să selectaÅ£i doar un mesaj la care să împărÅ£iÅ£i subiectul!'; + +$lang['None_selected'] = 'Nu aÅ£i selectat nici un subiect pentru a efectua aceasta operaÅ£ie. Vă rugăm întoarceÅ£i-vă ÅŸi selectaÅ£i cel puÅ£in un subiect.'; +$lang['New_forum'] = 'Forum nou'; + +$lang['This_posts_IP'] = 'IP-ul mesajului'; +$lang['Other_IP_this_user'] = 'Alte adrese IP de la care acest utilizator a trimis mesaje'; +$lang['Users_this_IP'] = 'Utilizatori care au trimis mesaje de la acest IP'; +$lang['IP_info'] = 'InformaÅ£ii IP'; +$lang['Lookup_IP'] = 'Vizualizare IP'; + + +// +// Timezones ... for display on each page +// +$lang['All_times'] = 'Ora este %s'; // eg. All times are GMT - 12 Hours (times from next block) + +$lang['-12'] = 'GMT - 12 ore'; +$lang['-11'] = 'GMT - 11 ore'; +$lang['-10'] = 'GMT - 10 ore'; +$lang['-9'] = 'GMT - 9 ore'; +$lang['-8'] = 'GMT - 8 ore'; +$lang['-7'] = 'GMT - 7 ore'; +$lang['-6'] = 'GMT - 6 ore'; +$lang['-5'] = 'GMT - 5 ore'; +$lang['-4'] = 'GMT - 4 ore'; +$lang['-3.5'] = 'GMT - 3.5 ore'; +$lang['-3'] = 'GMT - 3 ore'; +$lang['-2'] = 'GMT - 2 ore'; +$lang['-1'] = 'GMT - 1 ora'; +$lang['0'] = 'GMT'; +$lang['1'] = 'GMT + 1 ora'; +$lang['2'] = 'GMT + 2 ore'; +$lang['3'] = 'GMT + 3 ore'; +$lang['3.5'] = 'GMT + 3.5 ore'; +$lang['4'] = 'GMT + 4 ore'; +$lang['4.5'] = 'GMT + 4.5 ore'; +$lang['5'] = 'GMT + 5 ore'; +$lang['5.5'] = 'GMT + 5.5 ore'; +$lang['6'] = 'GMT + 6 ore'; +$lang['6.5'] = 'GMT + 6.5 ore'; +$lang['7'] = 'GMT + 7 ore'; +$lang['8'] = 'GMT + 8 ore'; +$lang['9'] = 'GMT + 9 ore'; +$lang['9.5'] = 'GMT + 9.5 ore'; +$lang['10'] = 'GMT + 10 ore'; +$lang['11'] = 'GMT + 11 ore'; +$lang['12'] = 'GMT + 12 ore'; +$lang['13'] = 'GMT + 13 ore'; + +// These are displayed in the timezone select box +$lang['tz']['-12'] = 'GMT - 12 ore'; +$lang['tz']['-11'] = 'GMT - 11 ore'; +$lang['tz']['-10'] = 'GMT - 10 ore'; +$lang['tz']['-9'] = 'GMT - 9 ore'; +$lang['tz']['-8'] = 'GMT - 8 ore'; +$lang['tz']['-7'] = 'GMT - 7 ore'; +$lang['tz']['-6'] = 'GMT - 6 ore'; +$lang['tz']['-5'] = 'GMT - 5 ore'; +$lang['tz']['-4'] = 'GMT - 4 ore'; +$lang['tz']['-3.5'] = 'GMT - 3.5 ore'; +$lang['tz']['-3'] = 'GMT - 3 ore'; +$lang['tz']['-2'] = 'GMT - 2 ore'; +$lang['tz']['-1'] = 'GMT - 1 ora'; +$lang['tz']['0'] = 'GMT'; +$lang['tz']['1'] = 'GMT + 1 ora'; +$lang['tz']['2'] = 'GMT + 2 ore'; +$lang['tz']['3'] = 'GMT + 3 ore'; +$lang['tz']['3.5'] = 'GMT + 3.5 ore'; +$lang['tz']['4'] = 'GMT + 4 ore'; +$lang['tz']['4.5'] = 'GMT + 4.5 ore'; +$lang['tz']['5'] = 'GMT + 5 ore'; +$lang['tz']['5.5'] = 'GMT + 5.5 ore'; +$lang['tz']['6'] = 'GMT + 6 ore'; +$lang['tz']['6.5'] = 'GMT + 6.5 ore'; +$lang['tz']['7'] = 'GMT + 7 ore'; +$lang['tz']['8'] = 'GMT + 8 ore'; +$lang['tz']['9'] = 'GMT + 9 ore'; +$lang['tz']['9.5'] = 'GMT + 9.5 ore'; +$lang['tz']['10'] = 'GMT + 10 ore'; +$lang['tz']['11'] = 'GMT + 11 ore'; +$lang['tz']['12'] = 'GMT + 12 ore'; +$lang['tz']['13'] = 'GMT + 13 ore'; + +$lang['datetime']['Sunday'] = 'Duminică'; +$lang['datetime']['Monday'] = 'Luni'; +$lang['datetime']['Tuesday'] = 'MarÅ£i'; +$lang['datetime']['Wednesday'] = 'Miercuri'; +$lang['datetime']['Thursday'] = 'Joi'; +$lang['datetime']['Friday'] = 'Vineri'; +$lang['datetime']['Saturday'] = 'Sâmbătă'; +$lang['datetime']['Sun'] = 'Dum'; +$lang['datetime']['Mon'] = 'Lun'; +$lang['datetime']['Tue'] = 'Mar'; +$lang['datetime']['Wed'] = 'Mie'; +$lang['datetime']['Thu'] = 'Joi'; +$lang['datetime']['Fri'] = 'Vin'; +$lang['datetime']['Sat'] = 'Sâm'; +$lang['datetime']['January'] = 'Ianuarie'; +$lang['datetime']['February'] = 'Februarie'; +$lang['datetime']['March'] = 'Martie'; +$lang['datetime']['April'] = 'Aprilie'; +$lang['datetime']['May'] = 'Mai'; +$lang['datetime']['June'] = 'Iunie'; +$lang['datetime']['July'] = 'Iulie'; +$lang['datetime']['August'] = 'August'; +$lang['datetime']['September'] = 'Septembrie'; +$lang['datetime']['October'] = 'Octobrie'; +$lang['datetime']['November'] = 'Noiembrie'; +$lang['datetime']['December'] = 'Decembrie'; +$lang['datetime']['Jan'] = 'Ian'; +$lang['datetime']['Feb'] = 'Feb'; +$lang['datetime']['Mar'] = 'Mar'; +$lang['datetime']['Apr'] = 'Apr'; +$lang['datetime']['May'] = 'Mai'; +$lang['datetime']['Jun'] = 'Iun'; +$lang['datetime']['Jul'] = 'Iul'; +$lang['datetime']['Aug'] = 'Aug'; +$lang['datetime']['Sep'] = 'Sep'; +$lang['datetime']['Oct'] = 'Oct'; +$lang['datetime']['Nov'] = 'Noi'; +$lang['datetime']['Dec'] = 'Dec'; + +// Begin Simple Subforums MOD +$lang['Subforums'] = 'Subforumuri'; +// End Simple Subforums MO + +// +// Errors (not related to a +// specific failure on a page) +// +$lang['Information'] = 'InformaÅ£ii'; +$lang['Critical_Information'] = 'InformaÅ£ii primejdioase'; + +$lang['General_Error'] = 'Eroare generală'; +$lang['Critical_Error'] = 'Eroare primejdioasă'; +$lang['An_error_occured'] = 'A apărut o eroare'; +$lang['A_critical_error'] = 'A apărut o eroare primejdioasă'; + +$lang['Admin_reauthenticate'] = 'Pentru a administra forumul trebuie să vă autentificaÅ£i din nou.'; + +// Start add - Bin Mod +$lang['Move_bin'] = 'Move this topic to bin'; +$lang['Topics_Moved_bin'] = 'The selected topics have been moved to bin.'; +$lang['Bin_disabled'] = 'Bin has been disabled'; +$lang['Bin_recycle'] = 'Recycle'; +// End add - Bin Mod + +$lang['Draft_posting']="Fă acest mesaj draft"; +$lang['Draft_on']="Mesaj ÃŽn ConstrucÅ£ie !"; +$lang['Drafted_posts']="Draft-urile tale"; + +//====================================================================== | +//==== Start Advanced BBCode Box MOD =================================== | +//==== v5.1.0 ========================================================== | +//==== +$lang['BBCode_box_hidden'] = 'Ascuns'; +$lang['BBcode_box_view'] = 'Click să vezi conÅ£inutul'; +$lang['BBcode_box_hide'] = 'Click să acunzi conÅ£inutul'; +$lang['bbcode_help']['GVideo'] = 'GVideo: [GVideo]GVideo URL[/GVideo]'; +$lang['GVideo_link'] = 'Link'; +$lang['bbcode_help']['youtube'] = 'YouTube: [youtube]YouTube URL[/youtube]'; +$lang['youtube_link'] = 'Link'; +//==== +//==== End Advanced BBCode Box MOD ==================================== | +//===================================================================== | + +// Begin Simple Subforums MOD +$lang['Subforums'] = 'Subforumuri'; +// End Simple Subforums MOD + +// +// That's all Folks! +// ------------------------------------------------- + +?> diff --git a/includes/shared/phpbb2/language/lang_russian/index.htm b/includes/shared/phpbb2/language/lang_russian/index.htm new file mode 100644 index 00000000..90a3130b --- /dev/null +++ b/includes/shared/phpbb2/language/lang_russian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_russian/lang_admin.php b/includes/shared/phpbb2/language/lang_russian/lang_admin.php new file mode 100644 index 00000000..7e795f8e --- /dev/null +++ b/includes/shared/phpbb2/language/lang_russian/lang_admin.php @@ -0,0 +1,720 @@ +ï»¿Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница в левой панели. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° на ÑпиÑок форумов щёлкните по логотипу phpBB также в левой панели. ОÑтальные ÑÑылки в левой чаÑти Ñтого Ñкрана позволÑÑ‚ вам управлÑÑ‚ÑŒ вÑеми аÑпектами ваших форумов, на каждом Ñкране будут даны инÑтрукции по иÑпользованию.'; +$lang['Main_index'] = 'СпиÑок форумов'; +$lang['Forum_stats'] = 'СтатиÑтика Форумов'; +$lang['Admin_Index'] = 'Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница'; +$lang['Preview_forum'] = 'Предварительный проÑмотр форума'; + +$lang['Click_return_admin_index'] = '%sВернутьÑÑ Ð½Ð° главную Ñтраницу админиÑтраторÑкого раздела%s'; + +$lang['Statistic'] = 'СтатиÑтика'; +$lang['Value'] = 'Значение'; +$lang['Number_posts'] = 'Кол-во Ñообщений'; +$lang['Posts_per_day'] = 'Сообщений в день'; +$lang['Number_topics'] = 'Кол-во тем'; +$lang['Topics_per_day'] = 'Тем в день'; +$lang['Number_users'] = 'Кол-во пользователей'; +$lang['Users_per_day'] = 'Пользователей в день'; +$lang['Board_started'] = 'Дата запуÑка'; +$lang['Avatar_dir_size'] = 'Размер директории Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð°Ð¼Ð¸'; +$lang['Database_size'] = 'Объём БД'; +$lang['Gzip_compression'] ='Ñжатие Gzip'; +$lang['Not_available'] = 'ÐедоÑтупно'; + +$lang['ON'] = 'ВКЛ'; // This is for GZip compression +$lang['OFF'] = 'ВЫКЛ'; + + +// +// DB Utils +// +$lang['Database_Utilities'] = 'Управление БД'; + +$lang['Restore'] = 'ВоÑÑтановить'; +$lang['Backup'] = 'Резервное копирование'; +$lang['Restore_explain'] = 'Будет проведено полное воÑÑтановление вÑех таблиц phpBB из файла. ЕÑли ваш Ñервер поддерживает такую возможноÑÑ‚ÑŒ, вы можете закачать файл, Ñжатый gzip\'ом, и он будет автоматичеÑки раÑпакован. Ð’ÐИМÐÐИЕ Ð’Ñе ÑущеÑтвующие данные будут утерÑны. ВоÑÑтановление может занÑÑ‚ÑŒ много времени, не уходите Ñ Ñтой Ñтраницы до Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа.'; +$lang['Backup_explain'] = 'Ð’Ñ‹ можете Ñохранить вÑе ÑвÑзанные Ñ phpBB данные. ЕÑли в БД Ð´Ð»Ñ phpBB еÑÑ‚ÑŒ другие таблицы, которые вы тоже хотели бы Ñохранить, пожалуйÑта, введите их названиÑ, разделённые запÑтыми, в поле "Дополнительные таблицы" чуть ниже. ЕÑли ваш Ñервер поддерживает такую возможноÑÑ‚ÑŒ, вы можете также перед Ñкачиванием Ñжать файл gzip\'ом Ð´Ð»Ñ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ размера.'; + +$lang['Backup_options'] = 'ÐаÑтройки резервного копированиÑ'; +$lang['Start_backup'] = 'Ðачать копирование'; +$lang['Full_backup'] = 'ÐŸÐ¾Ð»Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ'; +$lang['Structure_backup'] = 'Копировать только Ñтруктуру'; +$lang['Data_backup'] = 'Копировать только данные'; +$lang['Additional_tables'] = 'Дополнительные таблицы'; +$lang['Gzip_compress'] = 'Сжать файл gzip\'ом'; +$lang['Select_file'] = 'Выберите файл'; +$lang['Start_Restore'] = 'Ðачать воÑÑтановление'; + +$lang['Restore_success'] = 'БД была уÑпешно воÑÑтановлена.

    Ваши форумы должны были вернутьÑÑ Ð² то же ÑоÑтоÑние, в котором они были на момент резервного копированиÑ.'; +$lang['Backup_download'] = 'Скачивание Ñкоро начнётÑÑ, пожалуйÑта, подождите.'; +$lang['Backups_not_supported'] = 'Извините, резервное копирование Ð´Ð»Ñ Ð¸Ñпользуемой вами СУБД не поддерживаетÑÑ.'; + +$lang['Restore_Error_uploading'] = 'Ошибка в закачке файла'; +$lang['Restore_Error_filename'] = 'Проблема Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ файла, пожалуйÑта, попробуйте другой файл'; +$lang['Restore_Error_decompress'] = 'Ðе могу раÑпаковать Ñжатый gzip\'ом файл, пожалуйÑта, закачайте раÑпакованную верÑию'; +$lang['Restore_Error_no_file'] = 'Файл не был закачан'; + + +// +// Auth pages +// +$lang['Select_a_User'] = 'Выберите пользователÑ'; +$lang['Select_a_Group'] = 'Выберите группу'; +$lang['Select_a_Forum'] = 'Выберите форум'; +$lang['Auth_Control_User'] = 'Права пользователей'; +$lang['Auth_Control_Group'] = 'Права групп'; +$lang['Auth_Control_Forum'] = 'ДоÑтуп к форумам'; +$lang['Look_up_User'] = 'Выбрать пользователÑ'; +$lang['Look_up_Group'] = 'Выбрать группу'; +$lang['Look_up_Forum'] = 'Выбрать форум'; + +$lang['Group_auth_explain'] = 'ЗдеÑÑŒ вы можете изменить права доÑтупа и ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ группы пользователей. Ðе забывайте при изменении прав доÑтупа Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿, что права доÑтупа Ð´Ð»Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ñ… пользователей могут давать пользователю воможноÑÑ‚ÑŒ входа в форумы и Ñ‚.п. Ð’Ñ‹ будете предупреждены в Ñтом Ñлучае.'; +$lang['User_auth_explain'] = 'ЗдеÑÑŒ вы можете изменить права доÑтупа и ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° Ð´Ð»Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ñ… пользователей. Ðе забывайте при изменении прав пользователÑ, что права доÑтупа Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ могут давать пользователю возможноÑÑ‚ÑŒ входа в форумы и Ñ‚.п. Ð’Ñ‹ будете предупреждены в Ñтом Ñлучае.'; +$lang['Forum_auth_explain'] = 'ЗдеÑÑŒ вы можете регулировать доÑтуп к каждому форуму. У Ð²Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ обычный и продвинутый режим Ð´Ð»Ñ Ñтого, продвинутый даёт больше возможноÑтей Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ. Помните, что изменение прав доÑтупа к форуму повлиÑет на то, какие пользователи Ñмогут Ñовершать в нём различные дейÑтвиÑ'; + +$lang['Simple_mode'] = 'ПроÑтой режим'; +$lang['Advanced_mode'] = 'Продвинутый режим'; +$lang['Moderator_status'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð°'; + +$lang['Allowed_Access'] = 'ДоÑтуп открыт'; +$lang['Disallowed_Access'] = 'ДоÑтуп закрыт'; +$lang['Is_Moderator'] = 'Модератор'; +$lang['Not_Moderator'] = 'Ðе модератор'; + +$lang['Conflict_warning'] = 'Предупреждение о конфликте прав'; +$lang['Conflict_access_userauth'] = 'У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (пользователей) вÑÑ‘ ещё еÑÑ‚ÑŒ права доÑтупа к Ñтому форуму, ÑвÑзанные Ñ Ñ‡Ð»ÐµÐ½Ñтвом в группе. Вам, возможно, надо изменить права доÑтупа Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿ или иÑключить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· группы Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы полноÑтью закрыть ему права доÑтупа. Группы, дающие такие права, перечиÑлены ниже.'; +$lang['Conflict_mod_userauth'] = 'У данного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð²ÑÑ‘ ещё еÑÑ‚ÑŒ право Ð¼Ð¾Ð´ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого форума, ÑвÑзанное Ñ ÐµÐ³Ð¾ членÑтвом в группе. Вам, возможно, надо изменить права доÑтупа Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿ или иÑключить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· группы Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы полноÑтью закрыть ему право модерации. Группы, дающие Ñто право, перечиÑлены ниже.'; + +$lang['Conflict_access_groupauth'] = 'У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (пользователей) вÑÑ‘ ещё еÑÑ‚ÑŒ права доÑтупа к Ñтому форуму из-за уÑтановок их личных прав. Вам, возможно, надо изменить их права Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы полноÑтью закрыть им доÑтуп. Пользователи, имеющие такие права, перечиÑлены ниже.'; +$lang['Conflict_mod_groupauth'] = 'У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (пользователей) вÑÑ‘ ещё еÑÑ‚ÑŒ право Ð¼Ð¾Ð´ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого форума из-за уÑтановок их личных прав. Вам, возможно, надо изменить их права Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы полноÑтью закрыть им возможноÑÑ‚ÑŒ модерированиÑ. Пользователи, имеющие такие права, перечиÑлены ниже.'; + +$lang['Public'] = 'Публичный'; +$lang['Private'] = 'Приватный'; +$lang['Registered'] = 'ЗарегиÑтрированный'; +$lang['Administrators'] = 'ÐдминиÑтраторы'; +$lang['Hidden'] = 'СпрÑтанный'; + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! +$lang['Forum_ALL'] = 'Ð’Ñе'; +$lang['Forum_REG'] = 'РегиÑÑ‚Ñ€.'; +$lang['Forum_PRIVATE'] = 'Приватный'; +$lang['Forum_MOD'] = 'Модератор'; +$lang['Forum_ADMIN'] = 'Ðдмин'; + +$lang['View'] = 'Смотреть'; +$lang['Read'] = 'Читать'; +$lang['Post'] = 'Создавать темы'; +$lang['Reply'] = 'Отвечать'; +$lang['Edit'] = 'Редактировать'; +$lang['Delete'] = 'УдалÑÑ‚ÑŒ'; +$lang['Sticky'] = 'ПрилеплÑÑ‚ÑŒ темы'; +$lang['Announce'] = 'Создавать ОбъÑвлениÑ'; +$lang['Vote'] = 'ГолоÑовать'; +$lang['Pollcreate'] = 'Создавать опроÑÑ‹'; + +$lang['Permissions'] = 'Права доÑтупа'; +$lang['Simple_Permission'] = 'ПроÑтое право доÑтупа'; + +$lang['User_Level'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ'; +$lang['Auth_User'] = 'Пользователь'; +$lang['Auth_Admin'] = 'ÐдминиÑтратор'; +$lang['Group_memberships'] = 'ЧленÑтво в группах'; +$lang['Usergroup_members'] = 'Ð’ Ñтой группе ÑоÑтоÑÑ‚'; + +$lang['Forum_auth_updated'] = 'Права доÑтупа к форуму изменены'; +$lang['User_auth_updated'] = 'Права Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ‹'; +$lang['Group_auth_updated'] = 'Права группы изменены'; + +$lang['Auth_updated'] = 'Права доÑтупа изменены'; +$lang['Click_return_userauth'] = '%sВернутьÑÑ Ðº управлению правами пользователей%s'; +$lang['Click_return_groupauth'] = '%sВернутьÑÑ Ðº управлению правами групп%s'; +$lang['Click_return_forumauth'] = '%sВернутьÑÑ Ðº управлению доÑтупом к форумам%s'; + + +// +// Banning +// +$lang['Ban_control'] = 'Чёрные ÑпиÑки'; +$lang['Ban_explain'] = 'ЗдеÑÑŒ вы можете закрывать пользователÑм любой доÑтуп к форумам. Ð’Ñ‹ можете внеÑти в чёрный ÑпиÑок конкретного пользователÑ, а также один ил неÑколько IP адреÑов или имён Ñерверов. Этот метод не даÑÑ‚ пользователю увидеть даже ÑпиÑок форумов. Чтобы запретить региÑтрацию под другим именем, вы можете также внеÑти в чёрный ÑпиÑок Ð°Ð´Ñ€ÐµÑ e-mail. Учтите, запрещение только e-mail адреÑа не закроет пользователю возможноÑÑ‚ÑŒ заходить на форум и пиÑать ÑообщениÑ. Ð”Ð»Ñ Ñтого вам придётÑÑ Ð²Ð¾ÑпользоватьÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из первых двух методов.'; +$lang['Ban_explain_warn'] = 'Учтите, что ввод диапазона IP адреÑов приведёт к добавлению вÑех адреÑов между первым и поÑледним в «Ñ‡Ñ‘рный ÑпиÑок». Будут проделаны попытки уменьшить Ñто количеÑтво вводом шаблонов, где Ñто возможно. ЕÑли вам дейÑтвительно надо ввеÑти диапазон адреÑов, поÑтарайтеÑÑŒ Ñделать его поменьше или, что ещё лучше, вводите отдельные адреÑа.'; + +$lang['Select_username'] = 'Выберите пользователÑ'; +$lang['Select_ip'] = 'Выберите IP адреÑ'; +$lang['Select_email'] = 'Выберите Ð°Ð´Ñ€ÐµÑ e-mail'; + +$lang['Ban_username'] = 'Закрытие доÑтупа отдельным пользователÑм'; +$lang['Ban_username_explain'] = 'Ð’Ñ‹ можете закрыть доÑтуп неÑкольким пользователÑм за один раз, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщую Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ компьютера и браузера комбинацию клавиатуры и мыши.'; + +$lang['Ban_IP'] = 'Закрыть доÑтуп Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ или неÑкольких адреÑов IP или хоÑтов'; +$lang['IP_hostname'] = 'ÐдреÑа IP или хоÑÑ‚Ñ‹'; +$lang['Ban_IP_explain'] = 'Чтобы указать неÑколько разных адреÑов или хоÑтов, разделите их запÑтыми. Чтобы указать поÑледовательноÑÑ‚ÑŒ адреÑов IP разделите начало и конец дефиÑом (-), чтобы указать шаблон иÑпользуйте *'; + +$lang['Ban_email'] = 'Запретить e-mail адреÑа'; +$lang['Ban_email_explain'] = 'Чтобы запретить неÑколько e-mail адреÑов, разделите их запÑтыми. Чтобы указать шаблон, иÑпользуйте *, например *@mail.ru'; + +$lang['Unban_username'] = 'Вновь открыть доÑтуп пользователÑм'; +$lang['Unban_username_explain'] = 'Ð’Ñ‹ можете вновь открыть доÑтуп неÑкольким пользователÑм за один раз, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщую Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ компьютера и браузера комбинацию клавиатуры и мыши.'; + +$lang['Unban_IP'] = 'Вновь открыть доÑтуп Ñ Ð°Ð´Ñ€ÐµÑов IP'; +$lang['Unban_IP_explain'] = 'Ð’Ñ‹ можете вновь разрешить доÑтуп Ñ Ð½ÐµÑкольких адреÑов IP за один раз, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщую Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ компьютера и браузера комбинацию клавиатуры и мыши.'; + +$lang['Unban_email'] = 'Вновь разрешить адреÑа e-mail'; +$lang['Unban_email_explain'] = 'Ð’Ñ‹ можете вновь разрешить неÑколько адреÑов e-mail за один раз, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщую Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ компьютера и браузера комбинацию клавиатуры и мыши.'; + +$lang['No_banned_users'] = 'Чёрный ÑпиÑок пользователей пуÑÑ‚'; +$lang['No_banned_ip'] = 'Чёрный ÑпиÑок адреÑов IP пуÑÑ‚'; +$lang['No_banned_email'] = 'Чёрный ÑпиÑок адреÑов e-mail пуÑÑ‚'; + +$lang['Ban_update_sucessful'] = 'Чёрный ÑпиÑок был уÑпешно обновлён'; +$lang['Click_return_banadmin'] = '%sВернутьÑÑ Ðº чёрным ÑпиÑкам%s'; + + +// +// Configuration +// +$lang['General_Config'] = 'Общие наÑтройки'; +$lang['Config_explain'] = 'Эта форма позволит вам изменить общие наÑтройки форумов. Ð”Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми и отдельными форумами иÑпользуйте ÑоответÑтвующие ÑÑылки Ñлева.'; + +$lang['Click_return_config'] = '%sВернутьÑÑ Ðº общим наÑтройкам%s'; + +$lang['General_settings'] = 'Общие наÑтройки форумов'; +$lang['Server_name'] = 'Ð˜Ð¼Ñ Ñервера'; +$lang['Server_name_explain'] = 'Ð˜Ð¼Ñ Ñервера, на котором запущены Ñти форумы'; +$lang['Script_path'] = 'Путь к форумам'; +$lang['Script_path_explain'] = 'Путь к каталогу, Ñодержащему phpBB, отноÑительно ÐºÐ¾Ñ€Ð½Ñ Ñайта'; +$lang['Server_port'] = 'Порт веб-Ñервера'; +$lang['Server_port_explain'] = 'Порт, на котором запущен ваш веб-Ñервер (обычно 80, изменÑйте только еÑли Ñервер работает на другом порту)'; +$lang['Site_name'] = 'Ðазвание Ñайта'; +$lang['Site_desc'] = 'ОпиÑание Ñайта'; +$lang['Board_disable'] = 'Отключить форумы'; +$lang['Board_disable_explain'] = 'Форумы Ñтанут недоÑтупными пользователÑм. Ðе выходите поÑле Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð², Ñнова войти вы не Ñможете!'; +$lang['Acct_activation'] = 'Включить активизацию учётных запиÑей'; +$lang['Acc_None'] = 'Ðет'; // These three entries are the type of activation +$lang['Acc_User'] = 'Пользователем'; +$lang['Acc_Admin'] = 'ÐдминиÑтратором'; + +$lang['Abilities_settings'] = 'Общие наÑтройки форумов и пользователей'; +$lang['Max_poll_options'] = 'МакÑ. кол-во вариантов ответа в опроÑе'; +$lang['Flood_Interval'] = 'Задержка «Ñ„луда»'; +$lang['Flood_Interval_explain'] = 'Ð’Ñ€ÐµÐ¼Ñ (в Ñекундах), которое должно пройти между Ð´Ð²ÑƒÐ¼Ñ ÑообщениÑми пользователÑ.'; +$lang['Board_email_form'] = 'РаÑÑылка e-mail Ñообщений через форумы'; +$lang['Board_email_form_explain'] = 'Пользователи Ñмогут поÑылать друг другу e-mail через форумы'; +$lang['Topics_per_page'] = 'Тем на Ñтраницу'; +$lang['Posts_per_page'] = 'Сообщений на Ñтраницу'; +$lang['Hot_threshold'] = 'Сообщений в «Ð¿Ð¾Ð¿ÑƒÐ»Ñрной» теме'; +$lang['Default_style'] = 'Стиль по умолчанию'; +$lang['Override_style'] = 'ЗаменÑÑ‚ÑŒ Ñтиль пользователÑ'; +$lang['Override_style_explain'] = 'ЗаменÑÑ‚ÑŒ выбранный пользователем Ñтиль на Ñтиль по умолчанию'; +$lang['Default_language'] = 'Язык по умолчанию'; +$lang['Date_format'] = 'Формат даты'; +$lang['System_timezone'] = 'ЧаÑовой поÑÑ'; +$lang['Enable_gzip'] = 'Включить Ñжатие GZip'; +$lang['Enable_prune'] = 'Включить чиÑтку форумов'; +$lang['Allow_HTML'] = 'Разрешить HTML'; +$lang['Allow_BBCode'] = 'Разрешить BBCode'; +$lang['Allowed_tags'] = 'Разрешённые теги HTML'; +$lang['Allowed_tags_explain'] = 'СпиÑок разрешенных тегов, разделённый запÑтыми'; +$lang['Allow_smilies'] = 'Разрешить Ñмайлики'; +$lang['Smilies_path'] = 'Путь к Ñмайликам'; +$lang['Smilies_path_explain'] = 'Каталог ниже ÐºÐ¾Ñ€Ð½Ñ phpBB, например images/smilies'; +$lang['Allow_sig'] = 'Разрешить подпиÑи'; +$lang['Max_sig_length'] = 'МакÑ. длина подпиÑи'; +$lang['Max_sig_length_explain'] = 'МакÑимальное кол-во Ñимволов в подпиÑи пользователÑ'; +$lang['Allow_name_change'] = 'Разрешить Ñмену имени пользователÑ'; + +$lang['Avatar_settings'] = 'ÐаÑтройки аватар'; +$lang['Allow_local'] = 'Разрешить аватар из галереи'; +$lang['Allow_remote'] = 'Разрешить удаленных аватар'; +$lang['Allow_remote_explain'] = 'СÑылка на аватару, находÑщуюÑÑ Ð½Ð° другом Ñайте'; +$lang['Allow_upload'] = 'Разрешить закачку аватар'; +$lang['Max_filesize'] = 'МакÑ. размер файла аватары'; +$lang['Max_filesize_explain'] = 'Ð”Ð»Ñ Ð·Ð°ÐºÐ°Ñ‡Ð°Ð½Ð½Ñ‹Ñ… файлов'; +$lang['Max_avatar_size'] = 'МакÑ. размер изображениÑ'; +$lang['Max_avatar_size_explain'] = '(выÑота x ширина в пикÑелÑÑ…)'; +$lang['Avatar_storage_path'] = 'Путь к аватарам'; +$lang['Avatar_storage_path_explain'] = 'Каталог ниже ÐºÐ¾Ñ€Ð½Ñ phpBB, например images/avatars'; +$lang['Avatar_gallery_path'] = 'Путь к галерее аватар'; +$lang['Avatar_gallery_path_explain'] = 'Каталог ниже ÐºÐ¾Ñ€Ð½Ñ phpBB Ð´Ð»Ñ Ð³Ð¾Ñ‚Ð¾Ð²Ñ‹Ñ… картинок, например images/avatars/gallery'; + +$lang['COPPA_settings'] = 'COPPA Settings'; +$lang['COPPA_fax'] = 'COPPA Fax Number'; +$lang['COPPA_mail'] = 'COPPA Mailing Address'; +$lang['COPPA_mail_explain'] = 'This is the mailing address where parents will send COPPA registration forms'; + +$lang['Email_settings'] = 'ÐаÑтройки e-mail'; +$lang['Admin_email'] = 'ÐÐ´Ñ€ÐµÑ e-mail админиÑтратора'; +$lang['Email_sig'] = 'ПодпиÑÑŒ в ÑообщениÑÑ… e-mail'; +$lang['Email_sig_explain'] = 'Этот текÑÑ‚ будет подÑтавлÑÑ‚ÑŒÑÑ Ð²Ð¾ вÑе пиÑьма, раÑÑылаемые из форумов'; +$lang['Use_SMTP'] = 'ИÑпользовать Ñервер SMTP Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ почты'; +$lang['Use_SMTP_explain'] = 'Отметьте, еÑли вы хотите/вынуждены отÑылать почту через Ñервер SMTP, а не локальную почтовую Ñлужбу'; +$lang['SMTP_server'] = 'ÐÐ´Ñ€ÐµÑ Ñервера SMTP'; +$lang['SMTP_username'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ SMTP'; +$lang['SMTP_username_explain'] = 'Ðе указывайте Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐµÑли оно не требуетÑÑ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð²Ð°ÑˆÐ¸Ð¼ Ñервером SMTP'; +$lang['SMTP_password'] = 'Пароль Ð´Ð»Ñ SMTP'; +$lang['SMTP_password_explain'] = 'Ðе указывайте пароль еÑли он не требуетÑÑ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð²Ð°ÑˆÐ¸Ð¼ Ñервером SMTP'; + +$lang['Disable_privmsg'] = 'Личные ÑообщениÑ'; +$lang['Inbox_limits'] = 'МакÑ. чиÑло Ñообщений в папке «Ð’ходÑщие»'; +$lang['Sentbox_limits'] = 'МакÑ. чиÑло Ñообщений в папке «ÐžÑ‚правленные»'; +$lang['Savebox_limits'] = 'МакÑ. чиÑло Ñообщений в папке «Ð¡Ð¾Ñ…ранённые»'; + +$lang['Cookie_settings'] = 'ÐаÑтройки куков'; +$lang['Cookie_settings_explain'] = 'Ð’Ñ‹ можете изменить параметры куков (cookies), отправлÑемых пользователÑм. Ð’ большинÑтве Ñлучаев подходÑÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию. ЕÑли вам требуетÑÑ Ð¸Ñ… изменить, Ñоблюдайте оÑторожноÑÑ‚ÑŒ: неверные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ помешать пользователÑм входить в ÑиÑтему.'; +$lang['Cookie_domain'] = 'Домен куки'; +$lang['Cookie_name'] = 'Ð˜Ð¼Ñ ÐºÑƒÐºÐ¸'; +$lang['Cookie_path'] = 'Путь куки'; +$lang['Cookie_secure'] = 'БезопаÑные куки [ https ]'; +$lang['Cookie_secure_explain'] = 'ЕÑли ваш Ñервер работает через SSL, то включите Ñту уÑтановку, в противном Ñлучае оÑтавьте выключенной.'; +$lang['Session_length'] = 'Длина ÑеÑÑии [ в Ñекундах ]'; + + +// +// Forum Management +// +$lang['Forum_admin'] = 'Управление форумами'; +$lang['Forum_admin_explain'] = 'ЗдеÑÑŒ вы можете Ñоздавать, удалÑÑ‚ÑŒ и изменÑÑ‚ÑŒ порÑдок вывода категорий и форумов'; +$lang['Edit_forum'] = 'Изменить форум'; +$lang['Create_forum'] = 'Создать новый форум'; +$lang['Create_category'] = 'Создать новую категорию'; +$lang['Remove'] = 'Удалить'; +$lang['Action'] = 'ДейÑтвие'; +$lang['Update_order'] = 'Изменить порÑдок'; +$lang['Config_updated'] = 'ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð² уÑпешно изменена'; +$lang['Edit'] = 'Изменить'; +$lang['Delete'] = 'Удалить'; +$lang['Move_up'] = 'Сдвинуть вверх'; +$lang['Move_down'] = 'Сдвинуть вниз'; +$lang['Resync'] = 'СинхронизациÑ'; +$lang['No_mode'] = 'Ðе было задано дейÑтвие'; +$lang['Forum_edit_delete_explain'] = 'ЗдеÑÑŒ вы можете изменить название и опиÑание форума, закрыть его (или вновь открыть) и наÑтроить автоматичеÑкую чиÑтку. Ð”Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ доÑтупа к форуму воÑпользуйтеÑÑŒ ÑоответÑтвующей ÑÑылкой в левой чаÑти.'; + +$lang['Move_contents'] = 'ПеренеÑти вÑÑ‘ Ñодержимое'; +$lang['Forum_delete'] = 'Удалить форум'; +$lang['Forum_delete_explain'] = 'ЗдеÑÑŒ вы Ñможете удалить форум (или категорию) и решить, куда перенеÑти вÑе темы (или форумы), которые там ÑодержалиÑÑŒ.'; + +$lang['Status_locked'] = 'Закрыт'; +$lang['Status_unlocked'] = 'Открыт'; +$lang['Forum_settings'] = 'Общие параметры форума'; +$lang['Forum_name'] = 'Ðазвание форума'; +$lang['Forum_desc'] = 'ОпиÑание'; +$lang['Forum_status'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ„Ð¾Ñ€ÑƒÐ¼Ð°'; +$lang['Forum_pruning'] = 'ÐвтоматичеÑÐºÐ°Ñ Ñ‡Ð¸Ñтка'; + +$lang['prune_freq'] = 'ПроверÑÑ‚ÑŒ возраÑÑ‚ темы каждые'; +$lang['prune_days'] = 'УдалÑÑ‚ÑŒ темы, в которых не было Ñообщений поÑледние'; +$lang['Set_prune_data'] = 'Ð’Ñ‹ выбрали Ð´Ð»Ñ Ñтого форума автоматичеÑкую чиÑтку, но не указали чаÑтоту, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ его требуетÑÑ Ñ‡Ð¸Ñтить. ПожалуйÑта, вернитеÑÑŒ и укажите её.'; + +$lang['Move_and_Delete'] = 'ПеренеÑти и удалить'; + +$lang['Delete_all_posts'] = 'Удалить вÑе темы'; +$lang['Nowhere_to_move'] = 'Ðекуда переноÑить'; + +$lang['Edit_Category'] = 'Изменить категорию'; +$lang['Edit_Category_explain'] = 'ИÑпользуйте Ñту форму, чтобы изменить название категории'; + +$lang['Forums_updated'] = 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ форумах и категориÑÑ… уÑпешно изменена'; + +$lang['Must_delete_forums'] = 'Ð’Ñ‹ должны удалить вÑе форумы, прежде чем Ñможете удалить Ñту категорию'; + +$lang['Click_return_forumadmin'] = '%sВернутьÑÑ Ðº управлению форумами%s'; + + +// +// Smiley Management +// +$lang['smiley_title'] = 'Утилита Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñмайликов'; +$lang['smile_desc'] = 'ЗдеÑÑŒ вы можете редактировать ÑпиÑок Ñмайликов'; + +$lang['smiley_config'] = 'Управление Ñмайликами'; +$lang['smiley_code'] = 'Код Ñмайлика'; +$lang['smiley_url'] = 'Файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ Ñмайлика'; +$lang['smiley_emot'] = 'Ð­Ð¼Ð¾Ñ†Ð¸Ñ Ñмайлика'; +$lang['smile_add'] = 'Добавить новый Ñмайлик'; +$lang['Smile'] = 'Смайлик'; +$lang['Emotion'] = 'ЭмоциÑ'; + +$lang['Select_pak'] = 'Выберите файл Ñ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ (.pak)'; +$lang['replace_existing'] = 'Заменить ÑущеÑтвующий Ñмайлик'; +$lang['keep_existing'] = 'Сохранить ÑущеÑтвующий Ñмайлик'; +$lang['smiley_import_inst'] = 'Ð’Ñ‹ должны раÑпаковать набор Ñмайликов и закачать вÑе файлы в подходÑщую Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ уÑтановки директорию. Потом выберите в Ñтой форме нужную информацию Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° набора Ñмайликов.'; +$lang['smiley_import'] = 'Импорт набора Ñмайликов'; +$lang['choose_smile_pak'] = 'Выберите файл .pak Ñ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼'; +$lang['import'] = 'Импортировать Ñмайлики'; +$lang['smile_conflicts'] = 'Что делать в Ñлучае конфликта'; +$lang['del_existing_smileys'] = 'Удалить перед импортом ÑущеÑтвующие Ñмайлики'; +$lang['import_smile_pack'] = 'Импортировать набор Ñмайликов'; +$lang['export_smile_pack'] = 'Создать набор Ñмайликов'; +$lang['export_smiles'] = 'Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° Ñмайликов из Ñмайликов, уÑтановленных в данный момент, %sÑкачайте файл smiles.pak%s. Переименуйте его как вам нужно, Ñохранив при Ñтом раÑширение .pak, затем Ñоздайте файл zip, Ñодержащий вÑе Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñмайликов, а также Ñтот файл.'; + +$lang['smiley_add_success'] = 'Смайлик был уÑпешно добавлен'; +$lang['smiley_edit_success'] = 'Смайлик был уÑпешно изменён'; +$lang['smiley_import_success'] = 'Ðабор Ñмайликов был уÑпешно импортирован'; +$lang['smiley_del_success'] = 'Смайлик был уÑпешно удалён'; +$lang['Click_return_smileadmin'] = '%sВернутьÑÑ Ðº ÑпиÑку Ñмайликов%s'; + + +// +// User Management +// +$lang['User_admin'] = 'Управление пользователÑми'; +$lang['User_admin_explain'] = 'ЗдеÑÑŒ вы можете изменить информацию о пользователе. Чтобы изменить права доÑтупа иÑпользуйте панель ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ доÑтупа'; + +$lang['Look_up_user'] = 'Выбрать пользователÑ'; + +$lang['Admin_user_fail'] = 'Ðе могу изменить профиль пользователÑ'; +$lang['Admin_user_updated'] = 'Профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ñ‹Ð» уÑпешно изменён'; +$lang['Click_return_useradmin'] = '%sВернутьÑÑ Ðº управлению пользователÑми%s'; + +$lang['User_delete'] = 'Удалить Ñтого пользователÑ'; +$lang['User_delete_explain'] = 'Щелкните здеÑÑŒ Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñтого пользователÑ. Операцию Ð½ÐµÐ»ÑŒÐ·Ñ Ð±ÑƒÐ´ÐµÑ‚ отменить.'; +$lang['User_deleted'] = 'Пользователь был уÑпешно удалён.'; + +$lang['User_status'] = 'Пользователь активен'; +$lang['User_allowpm'] = 'Может поÑылать личные ÑообщениÑ'; +$lang['User_allowavatar'] = 'Может показывать аватару'; + +$lang['Admin_avatar_explain'] = 'ЗдеÑÑŒ вы можете проÑмотреть и удалить текущую аватару пользователÑ'; + +$lang['User_special'] = 'ÐŸÐ¾Ð»Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð°'; +$lang['User_special_explain'] = 'Эти Ð¿Ð¾Ð»Ñ Ñами пользователи редактировать не могут. ЗдеÑÑŒ вы можете уÑтановить их ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸ Ñделать прочие недоÑтупные им наÑтройки.'; + + +// +// Group Management +// +$lang['Group_administration'] = 'Управление группами'; +$lang['Group_admin_explain'] = 'ЗдеÑÑŒ вы можете управлÑÑ‚ÑŒ вÑеми вашими группами: Ñто включает удаление, добавление и изменение групп. Ð’Ñ‹ можете назначать модераторов, изменÑÑ‚ÑŒ открытый/закрытый ÑÑ‚Ð°Ñ‚ÑƒÑ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ и уÑтанавливать её название и опиÑание.'; +$lang['Error_updating_groups'] = 'Ошибка при изменении группы.'; +$lang['Updated_group'] = 'Группа была уÑпешно изменена'; +$lang['Added_new_group'] = 'Группа была уÑпешно Ñоздана'; +$lang['Deleted_group'] = 'Группа была уÑпешно удалена'; +$lang['New_group'] = 'Создать новую группу'; +$lang['Edit_group'] = 'Изменить группу'; +$lang['group_name'] = 'Ðазвание группы'; +$lang['group_description'] = 'ОпиÑание группы'; +$lang['group_moderator'] = 'Модератор группы'; +$lang['group_status'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹'; +$lang['group_open'] = 'Группа Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ членÑтвом'; +$lang['group_closed'] = 'Группа Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ членÑтвом'; +$lang['group_hidden'] = 'Ð¡ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°'; +$lang['group_delete'] = 'Удалить группу.'; +$lang['group_delete_check'] = 'Удалить Ñту группу'; +$lang['submit_group_changes'] = 'Сохранить изменениÑ'; +$lang['reset_group_changes'] = 'Отменить изменениÑ'; +$lang['No_group_name'] = 'Ð’Ñ‹ должны указать название группы'; +$lang['No_group_moderator'] = 'Ð’Ñ‹ должны выбрать модератора группы'; +$lang['No_group_mode'] = 'Ð’Ñ‹ должны выбрать режим группы: открытый или закрытый'; +$lang['No_group_action'] = 'Ðе было выбрано дейÑтвие'; +$lang['delete_group_moderator'] = 'Удалить Ñтарого модератора?'; +$lang['delete_moderator_explain'] = 'ЕÑли вы менÑете модератора группы и поÑтавите здеÑÑŒ галочку, то предыдущий модератор будет иÑключён из группы. ЕÑли вы её не поÑтавите, то он Ñтанет обычным членом группы.'; +$lang['Click_return_groupsadmin'] = '%sВернутьÑÑ Ðº управлению группами%s'; +$lang['Select_group'] = 'Выберите группу'; +$lang['Look_up_group'] = 'Выбрать группу'; + + +// +// Prune Administration +// +$lang['Forum_Prune'] = 'ЧиÑтка форумов'; +$lang['Forum_Prune_explain'] = 'Будут удалены темы, в которых не было новых Ñообщений за выбранное чиÑло дней. ЕÑли вы не введёте чиÑло, то будут удалены вÑе темы. Ðе будут удалены темы, в которых продолжаютÑÑ Ð¾Ð¿Ñ€Ð¾ÑÑ‹, а также объÑвлениÑ. Вам придётÑÑ ÑƒÐ´Ð°Ð»ÑÑ‚ÑŒ такие темы вручную.'; +$lang['Do_Prune'] = 'ПровеÑти чиÑтку'; +$lang['All_Forums'] = 'Ð’Ñе форумы'; +$lang['Prune_topics_not_posted'] = 'УдалÑÑ‚ÑŒ темы, в которых не было ответов за данное кол-во дней'; +$lang['Topics_pruned'] = 'Тем вычищено'; +$lang['Posts_pruned'] = 'Сообщений вычищено'; +$lang['Prune_success'] = 'Форум уÑпешно почищен'; + + +// +// Word censor +// +$lang['Words_title'] = 'Ðвтоцензор'; +$lang['Words_explain'] = 'ЗдеÑÑŒ вы можете добавить, изменить или удалить Ñлова, которые будут автоматичеÑки подвергатьÑÑ Ñ†ÐµÐ½Ð·ÑƒÑ€Ðµ на ваших форумах. Кроме того, пользователи не Ñмогут зарегиÑтрироватьÑÑ Ð¿Ð¾Ð´ именами, Ñодержащими Ñти Ñлова. Ð’ ÑпиÑке Ñлов могут иÑпользоватьÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ‹ (*), Ñ‚.е. к \'*теÑÑ‚*\' подойдёт \'протеÑтировать\', к \'теÑÑ‚*\' — \'теÑтирование\', к \'*теÑÑ‚\' — \'протеÑÑ‚\'.
    (Примечание переводчика) Рекомендую пользоватьÑÑ Ñтой фичей очень аккуратно: например, некие очевидные замены буду неадекватно реагировать на Ñлова \'потребитель\', \'употреблÑÑ‚ÑŒ\' и Ñ‚.п.'; +$lang['Word'] = 'Слово'; +$lang['Edit_word_censor'] = 'Изменить автоцензор'; +$lang['Replacement'] = 'Замена'; +$lang['Add_new_word'] = 'Добавить новое Ñлово'; +$lang['Update_word'] = 'Обновить автоцензор'; + +$lang['Must_enter_word'] = 'Ð’Ñ‹ должны ввеÑти Ñлово и его замену'; +$lang['No_word_selected'] = 'Ðе выбрано Ñлово Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ'; + +$lang['Word_updated'] = 'Выбранный автоцензор был уÑпешно изменён'; +$lang['Word_added'] = 'Ðвтоцензор был уÑпешно добавлен'; +$lang['Word_removed'] = 'Выбранный автоцензор был уÑпешно удалён'; + +$lang['Click_return_wordadmin'] = '%sВернутьÑÑ Ðº управлению автоцензором%s'; + + +// +// Mass Email +// +$lang['Mass_email_explain'] = 'Ð’Ñ‹ можете разоÑлать e-mail Ñообщение либо вÑем вашим пользователÑм, либо пользователÑм, входÑщим в определённую группу. Сообщение будет отправлено на админиÑтративный адреÑ, Ñ BCC: вÑем получателÑм. ЕÑли вы отправлÑете пиÑьмо большой группе людей, то будьте терпеливы: не оÑтанавливайте загрузку Ñтраницы поÑле Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸. МаÑÑÐ¾Ð²Ð°Ñ Ñ€Ð°ÑÑылка может занÑÑ‚ÑŒ много времени, вы увидите Ñообщение, когда выполнение завершитÑÑ.'; +$lang['Compose'] = 'ТекÑÑ‚ ÑообщениÑ'; + +$lang['Recipients'] = 'Получатели'; +$lang['All_users'] = 'Ð’Ñе пользователи'; + +$lang['Email_successfull'] = 'Ваше Ñообщение было отправлено'; +$lang['Click_return_massemail'] = '%sВернутьÑÑ Ðº маÑÑовой раÑÑылке%s'; + + +// +// Ranks admin +// +$lang['Ranks_title'] = 'Управление званиÑми'; +$lang['Ranks_explain'] = 'ЗдеÑÑŒ вы можете добавлÑÑ‚ÑŒ, редактировать, проÑматривать и удалÑÑ‚ÑŒ званиÑ. Ð’Ñ‹ также можете Ñоздавать Ñпециальные званиÑ, которые могут затем быть приÑвоены пользователÑм на Ñтранице ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми.'; + +$lang['Add_new_rank'] = 'Ðовое звание'; + +$lang['Rank_title'] = 'Звание'; +$lang['Rank_special'] = 'Специальное звание'; +$lang['Rank_minimum'] = 'Минимум Ñообщений'; +$lang['Rank_maximum'] = 'МакÑимум Ñообщений'; +$lang['Rank_image'] = 'Картинка к званию (отноÑительно ÐºÐ¾Ñ€Ð½Ñ phpBB2)'; +$lang['Rank_image_explain'] = 'ЗдеÑÑŒ вы можете приÑвоить вÑем имеющим такое звание Ñпециальное изображение. Ð’Ñ‹ можете указать либо отноÑительный, либо абÑолютный путь к изображению'; + +$lang['Must_select_rank'] = 'Извините, вы не выбрали звание. ВернитеÑÑŒ и попробуйте ещё раз.'; +$lang['No_assigned_rank'] = 'Специального Ð·Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ приÑвоено'; + +$lang['Rank_updated'] = 'Звание было уÑпешно изменено'; +$lang['Rank_added'] = 'Звание было уÑпешно добавлено'; +$lang['Rank_removed'] = 'Звание было уÑпешно удалено'; +$lang['No_update_ranks'] = 'Звание было уÑпешно удалено. Тем не менее, Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ пользователÑÑ…, у которых было Ñто звание, не была изменена. Вам придётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñту информацию вручную.'; + +$lang['Click_return_rankadmin'] = '%sВернутьÑÑ Ðº управлению званиÑми%s'; + + +// +// Disallow Username Admin +// +$lang['Disallow_control'] = 'Запрещённые имена пользователÑ'; +$lang['Disallow_explain'] = 'ЗдеÑÑŒ вы можете задать имена, которые будут запрещены к иÑпользованию. Запрещённые имена могут Ñодержать шаблон '*'. Учтите: вы не Ñможете запретить имÑ, еÑли уже ÑущеÑтвует пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем. Вам придётÑÑ Ñначала удалить пользователÑ, а уже потом запретить имÑ.'; + +$lang['Delete_disallow'] = 'Удалить'; +$lang['Delete_disallow_title'] = 'Удалить запрещённое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ'; +$lang['Delete_disallow_explain'] = 'Ð’Ñ‹ можете убрать запрещённое имÑ, выбрав его из ÑпиÑка и нажав кнопку «Ñохранить»'; + +$lang['Add_disallow'] = 'Добавить'; +$lang['Add_disallow_title'] = 'Добавить запрещённое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ'; +$lang['Add_disallow_explain'] = 'Ð’Ñ‹ можете запретить Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÑˆÐ°Ð±Ð»Ð¾Ð½ \'*\', который подходит к любому Ñимволу'; + +$lang['No_disallowed'] = 'Ðет запрещённых имён'; + +$lang['Disallowed_deleted'] = 'Запрещённое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ñ‹Ð»Ð¾ уÑпешно удалено'; +$lang['Disallow_successful'] = 'Запрещённое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ñ‹Ð»Ð¾ уÑпешно добавлено'; +$lang['Disallowed_already'] = 'ИмÑ, которое вы пытаетеÑÑŒ запретить, либо уже запрещено, либо еÑÑ‚ÑŒ в ÑпиÑке нецензурных Ñлов, либо ÑущеÑтвует пользователь Ñ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим именем'; + +$lang['Click_return_disallowadmin'] = '%sВернутьÑÑ Ðº управлению запрещёнными именами%s'; + + +// +// Styles Admin +// +$lang['Styles_admin'] = 'Управление ÑтилÑми'; +$lang['Styles_explain'] = 'ЗдеÑÑŒ вы можете добавлÑÑ‚ÑŒ, удалÑÑ‚ÑŒ и изменÑÑ‚ÑŒ Ñтили (шаблоны и цветовые Ñхемы), доÑтупные вашим пользователÑм.'; +$lang['Styles_addnew_explain'] = 'Этот ÑпиÑок Ñодержит вÑе цветовые Ñхемы, подходÑщие к имеющимÑÑ Ñƒ Ð²Ð°Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼. Элементы Ñтого ÑпиÑка ÐЕ БЫЛИ пока уÑтановлены в базу phpBB. Ð”Ð»Ñ ÑƒÑтановки Ñхемы проÑто нажмите «Ð£Ñтановить» Ñ€Ñдом Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ Ñлементом'; + +$lang['Select_template'] = 'Выберите шаблон'; + +$lang['Style'] = 'Стиль'; +$lang['Template'] = 'Шаблон'; +$lang['Install'] = 'УÑтановить'; +$lang['Download'] = 'Скачать'; + +$lang['Edit_theme'] = 'Изменить цветовую Ñхему'; +$lang['Edit_theme_explain'] = 'ЗдеÑÑŒ вы можете изменить наÑтройки выбранной цветовой Ñхемы.'; + +$lang['Create_theme'] = 'Создать цветовую Ñхему'; +$lang['Create_theme_explain'] = 'ЗдеÑÑŒ вы можете Ñоздать новую цветовую Ñхему Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ шаблона. При указании кодов цветов не включайте знак \'#\', Ñ‚.е.: CCCCCC подходит, #CCCCCC - нет.'; + +$lang['Export_themes'] = 'ЭкÑпорт цветовых Ñхем'; +$lang['Export_explain'] = 'ЗдеÑÑŒ вы Ñможете ÑкÑпортировать цветовую Ñхему Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ шаблона. Выберите шаблон из ÑпиÑка, и программа попытаетÑÑ Ñоздать файл Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸ÐµÐ¹ Ñхемы и запиÑать его в каталог Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ шаблоном. ЕÑли файл не удаÑÑ‚ÑÑ Ð·Ð°Ð¿Ð¸Ñать, то у Ð²Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ возможноÑÑ‚ÑŒ Ñкачать его. Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы программа могла запиÑать файл, вам надо дать Ñерверу права на запиÑÑŒ в каталог Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ шаблоном. За дополнительной информацией обратитеÑÑŒ к руководÑтву Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ phpBB.'; + +$lang['Theme_installed'] = 'Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñхема была уÑпешно уÑтановлена'; +$lang['Style_removed'] = 'Стиль был удалён из базы. Ð”Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑÑ‚Ð¸Ð»Ñ Ñ Ð²Ð°ÑˆÐµÐ¹ ÑиÑтемы удалите ÑоответÑтвующий каталог из каталога Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸.'; +$lang['Theme_info_saved'] = 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ цветовой Ñхеме Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ шаблона была Ñохранена. Ð’Ñ‹ должны вернуть права ТОЛЬКО ДЛЯ ЧТЕÐИЯ на файл theme_info.cfg и/или каталог Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ шаблоном.'; +$lang['Theme_updated'] = 'Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ñ‚ÐµÐ¼Ð° была изменена. Ðе забудьте ÑкÑпортировать её наÑтройки в файл наÑтроек цветовой Ñхемы!'; +$lang['Theme_created'] = 'Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñхема Ñоздана. Ðе забудьте ÑкÑпортировать её наÑтройки в файл наÑтроек цветовой Ñхемы!'; + +$lang['Confirm_delete_style'] = 'Ð’Ñ‹ уверены, что хотите удалить Ñтот Ñтиль?'; + +$lang['Download_theme_cfg'] = 'Программа не Ñмогла запиÑать файл Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹ о цветовой Ñхеме. Ðажмите на кнопку, чтобы Ñкачать Ñтот файл через браузер. ПоÑле того, как вы его Ñкачаете, вы Ñможете запиÑать его в каталог Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸ и, еÑли захотите, подготовить ваши шаблоны к раÑпроÑтранению.'; +$lang['No_themes'] = 'К выбранному шаблону не приÑоединено ни одной цветовой Ñхемы. Щёлкните по ÑÑылке Ñлева, чтобы Ñоздать Ñхему.'; +$lang['No_template_dir'] = 'Ðе могу открыть каталог Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸, он либо закрыт на чтение Ð´Ð»Ñ Ñервера, либо не ÑущеÑтвует.'; +$lang['Cannot_remove_style'] = 'Выбранный вами Ñтиль ÑвлÑетÑÑ Ñтилем по умолчанию Ð´Ð»Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð² и не может быть удалён. Измените Ñтиль по умолчанию и попробуйте ещё раз.'; +$lang['Style_exists'] = 'Выбранное Ð¸Ð¼Ñ ÑÑ‚Ð¸Ð»Ñ ÑƒÐ¶Ðµ ÑущеÑтвует, вернитеÑÑŒ назад и выберите другое имÑ.'; + +$lang['Click_return_styleadmin'] = '%sВернутьÑÑ Ðº управлению ÑтилÑми%s'; + +$lang['Theme_settings'] = 'ÐаÑтройки цветовой Ñхемы'; +$lang['Theme_element'] = 'Элемент цветовой Ñхемы'; +$lang['Simple_name'] = 'ИмÑ'; +$lang['Value'] = 'Значение'; +$lang['Save_Settings'] = 'Сохранить наÑтройки'; + +$lang['Stylesheet'] = 'Файл Ñтилей CSS'; +$lang['Background_image'] = 'Фоновое изображение'; +$lang['Background_color'] = 'Цвет фона'; +$lang['Theme_name'] = 'Ðазвание цветовой Ñхемы'; +$lang['Link_color'] = 'Цвет ÑÑылок'; +$lang['Text_color'] = 'Цвет текÑта'; +$lang['VLink_color'] = 'Цвет поÑещённых ÑÑылок'; +$lang['ALink_color'] = 'Цвет активных ÑÑылок'; +$lang['HLink_color'] = 'Цвет ÑÑылок под курÑором'; +$lang['Tr_color1'] = 'Цвет Ñтроки таблицы 1'; +$lang['Tr_color2'] = 'Цвет Ñтроки таблицы 2'; +$lang['Tr_color3'] = 'Цвет Ñтроки таблицы 3'; +$lang['Tr_class1'] = 'КлаÑÑ Ñтроки таблицы 1'; +$lang['Tr_class2'] = 'КлаÑÑ Ñтроки таблицы 2'; +$lang['Tr_class3'] = 'КлаÑÑ Ñтроки таблицы 3'; +$lang['Th_color1'] = 'Цвет шапки таблицы 1'; +$lang['Th_color2'] = 'Цвет шапки таблицы 2'; +$lang['Th_color3'] = 'Цвет шапки таблицы 3'; +$lang['Th_class1'] = 'КлаÑÑ ÑˆÐ°Ð¿ÐºÐ¸ таблицы 1'; +$lang['Th_class2'] = 'КлаÑÑ ÑˆÐ°Ð¿ÐºÐ¸ таблицы 2'; +$lang['Th_class3'] = 'КлаÑÑ ÑˆÐ°Ð¿ÐºÐ¸ таблицы 3'; +$lang['Td_color1'] = 'Цвет Ñчейки таблицы 1'; +$lang['Td_color2'] = 'Цвет Ñчейки таблицы 2'; +$lang['Td_color3'] = 'Цвет Ñчейки таблицы 3'; +$lang['Td_class1'] = 'КлаÑÑ Ñчейки таблицы 1'; +$lang['Td_class2'] = 'КлаÑÑ Ñчейки таблицы 2'; +$lang['Td_class3'] = 'КлаÑÑ Ñчейки таблицы 3'; +$lang['fontface1'] = 'Шрифт 1'; +$lang['fontface2'] = 'Шрифт 2'; +$lang['fontface3'] = 'Шрифт 3'; +$lang['fontsize1'] = 'Размер шрифта 1'; +$lang['fontsize2'] = 'Размер шрифта 2'; +$lang['fontsize3'] = 'Размер шрифта 3'; +$lang['fontcolor1'] = 'Цвет шрифта 1'; +$lang['fontcolor2'] = 'Цвет шрифта 2'; +$lang['fontcolor3'] = 'Цвет шрифта 3'; +$lang['span_class1'] = 'КлаÑÑ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ 1'; +$lang['span_class2'] = 'КлаÑÑ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ 2'; +$lang['span_class3'] = 'КлаÑÑ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ 3'; +$lang['img_poll_size'] = 'Polling Image Size [px]'; +$lang['img_pm_size'] = 'Private Message Status size [px]'; + + +// +// Install Process +// +$lang['Welcome_install'] = 'Добро пожаловать в уÑтановку phpBB 2!'; +$lang['Initial_config'] = 'ОÑновные наÑтройки'; +$lang['DB_config'] = 'ÐаÑтройки базы данных'; +$lang['Admin_config'] = 'ÐаÑтройки админа'; +$lang['continue_upgrade'] = 'Как только вы Ñкачаете файл наÑтроек на ваш компьютер, вы можете нажать кнопку «ÐŸÑ€Ð¾Ð´Ð¾Ð»Ð¶Ð¸Ñ‚ÑŒ обновление» Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа. ПожалуйÑта, не закачивайте файл наÑтроек на Ñервер до Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа обновлениÑ.'; +$lang['upgrade_submit'] = 'Продолжить обновление'; + +$lang['Installer_Error'] = 'Ð’ процеÑÑе уÑтановки возникла ошибка'; +$lang['Previous_Install'] = 'Была обнаружена Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ ÑƒÑтановка'; +$lang['Install_db_error'] = 'При попытке обновить базу данных возникла ошибка'; + +$lang['Re_install'] = 'ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ ÑƒÑтановка вÑÑ‘ ещё активна.

    ЕÑли вы хотите уÑтановить phpBB 2 заново, вы должны нажать кнопку «Ð”а» внизу. Учтите, что при Ñтом будут уничтожены вÑе имеющиеÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ, никаких копий Ñделано не будет! Ранее иÑпользовавшиеÑÑ Ð¸Ð¼Ñ Ð¸ пароль админиÑтратора будут вновь Ñозданы поÑле переуÑтановки, оÑтальные наÑтройки будут потерÑны.

    Как Ñледует подумайте, прежде чем нажимать «Ð”а»!'; + +$lang['Inst_Step_0'] = 'СпаÑибо вам за выбор phpBB 2. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ ÑƒÑтановки укажите, пожалуйÑта, требуемые ÑведениÑ. Учтите, что база данных, в которую вы уÑтанавливаете phpBB 2, уже должна ÑущеÑтвовать. ЕÑли вы уÑтанавливаете в БД, иÑпользующую ODBC (например, MS Access), вам надо Ñначала Ñоздать Ð´Ð»Ñ Ð½ÐµÑ‘ DSN.'; + +$lang['Start_Install'] = 'Ðачать уÑтановку'; +$lang['Finish_Install'] = 'Закончить уÑтановку'; + +$lang['Default_lang'] = 'Язык по умолчанию'; +$lang['DB_Host'] = 'Ð˜Ð¼Ñ Ñервера БД / DSN'; +$lang['DB_Name'] = 'Ðазвание базы данных'; +$lang['DB_Username'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð‘Ð”'; +$lang['DB_Password'] = 'Пароль к БД'; +$lang['Database'] = 'База данных'; +$lang['Install_lang'] = 'Выберите Ñзык Ð´Ð»Ñ ÑƒÑтановки'; +$lang['dbms'] = 'Тип базы данных'; +$lang['Table_Prefix'] = 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ† в базе данных'; +$lang['Admin_Username'] = 'Ð˜Ð¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора'; +$lang['Admin_Password'] = 'Пароль админиÑтратора'; +$lang['Admin_Password_confirm'] = 'Пароль админиÑтратора [ повторите ]'; + +$lang['Inst_Step_2'] = 'Была Ñоздана ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ админиÑтратора. ОÑÐ½Ð¾Ð²Ð½Ð°Ñ ÑƒÑтановка на Ñтом закончена. Теперь вы будете переправлены на Ñтраницу, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ вы Ñможете наÑтроить новую уÑтановку. ОбÑзательно проверьте раздел ОÑновных наÑтроек и внеÑите необходимые изменениÑ. СпаÑибо вам за выбор phpBB 2.'; + +$lang['Unwriteable_config'] = 'ЗапиÑÑŒ в файл наÑтроек невозможна. Ð’Ñ‹ Ñможете Ñкачать копию файла, еÑли нажмёте ÑоответÑтвующую кнопку. Вам надо будет закачать Ñтот файл в каталог, в который вы уÑтановили phpBB 2. Как только Ñто будет Ñделано, вы Ñможете войти в ÑиÑтему, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñ€Ð°Ð½ÐµÐµ введённые Ð¸Ð¼Ñ Ð¸ пароль админиÑтратора, и перейти в админиÑтраторÑкий раздел (ÑÑылка будет внизу каждой Ñтраницы), чтобы проверить оÑновные наÑтройки. СпаÑибо вам за выбор phpBB 2.'; +$lang['Download_config'] = 'Скачать файл наÑтроек'; + +$lang['ftp_choose'] = 'Выберите метод ÑкачиваниÑ'; +$lang['ftp_option'] = '
    Ð’ Ñтой верÑии PHP включены возможноÑти FTP, вы можете попробовать Ñначала автоматичеÑки закачать файл наÑтроек по FTP в нужный каталог.'; +$lang['ftp_instructs'] = 'Ð’Ñ‹ решили закачать файл наÑтроек по FTP в каталог, Ñодержащий phpBB 2. ПожалуйÑта, укажите информацию, требуемую Ð´Ð»Ñ Ð¾ÑущеÑÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ Ñтого процеÑÑа. Учтите, что путь FTP должен быть полным путём к вашей уÑтановке phpBB 2, как еÑли бы вы пользовалиÑÑŒ обычным клиентом FTP.'; +$lang['ftp_info'] = 'Укажите наÑтройки FTP'; +$lang['Attempt_ftp'] = 'Попробовать закачать файл наÑтроек по FTP'; +$lang['Send_file'] = 'ПроÑто приÑлать файл, Ñ Ð·Ð°ÐºÐ°Ñ‡Ð°ÑŽ его вручную'; +$lang['ftp_path'] = 'Путь FTP к каталогу phpBB 2'; +$lang['ftp_username'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ FTP'; +$lang['ftp_password'] = 'Пароль Ð´Ð»Ñ FTP'; +$lang['Transfer_config'] = 'Ðачать закачку'; +$lang['NoFTP_config'] = 'Попытка закачать файл наÑтроек по FTP завершилаÑÑŒ неудачей. ПожалуйÑта, Ñкачайте файл наÑтроек и помеÑтите его в нужный каталог вручную.'; + +$lang['Install'] = 'УÑтановка'; +$lang['Upgrade'] = 'Обновление'; + + +$lang['Install_Method'] = 'Выберите метод уÑтановки'; + +$lang['Install_No_Ext'] = 'ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ PHP на вашем Ñервере не поддерживает выбранную вами СУБД'; + +$lang['Install_No_PCRE'] = 'Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ phpBB2 требуетÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ Перл-ÑовмеÑтимых регулÑрных выражений, который, видимо, отключен в вашей конфигурации PHP!'; + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_russian/lang_bbcode.php b/includes/shared/phpbb2/language/lang_russian/lang_bbcode.php new file mode 100644 index 00000000..ce57584f --- /dev/null +++ b/includes/shared/phpbb2/language/lang_russian/lang_bbcode.php @@ -0,0 +1,58 @@ +
  • ×òîáû ñäåëàòü òåêñò æèðíûì, çàêëþ÷èòå åãî â [b][/b], íàïðèìåð

    [b]Ïðèâåò[/b]

    ñòàíåò Ïðèâåò
  • Äëÿ ïîä÷¸ðêèâàíèÿ èñïîëüçóéòå [u][/u], íàïðèìåð:

    [u]Äîáðîå óòðî[/u]

    ñòàíåò Äîáðîå óòðî
  • Êóðñèâ äåëàåòñÿ òåãàìè [i][/i], íàïðèìåð:

    Ýòî [i]êðóòî![/i]

    âûäàñò Ýòî êðóòî!
  • "); +$faq[] = array("Êàê èçìåíèòü öâåò èëè ðàçìåð òåêñòà", "Äëÿ èçìåíåíèÿ öâåòà èëè ðàçìåðà øðèôòà ìîãóò áûòü èñïîëüçîâàíû ñëåäóþùèå òåãè (îêîí÷àòåëüíûé âèä áóäåò çàâèñåòü îò ñèñòåìû è áðàóçåðà ïîëüçîâàòåëÿ):
    • Öâåò òåêñòà ìîæíî èçìåíèòü, îêðóæèâ åãî [color=][/color]. Âû ìîæåòå óêàçàòü ëèáî èçâåñòíîå èìÿ öâåòà (red, blue, yellow è ò.ï.), èëè øåñòíàäöàòèðè÷íîå ïðåäñòàâëåíèå, íàïðèìåð #FFFFFF, #000000. Òàêèì îáðàçîì, äëÿ ñîçäàíèÿ êðàñíîãî òåêñòà âû ìîæåòå èñïîëüçîâàòü:

      [color=red]Ïðèâåò![/color]

      èëè

      [color=#FF0000]Ïðèâåò![/color]

      îáà ñïîñîáà äàäóò â ðåçóëüòàòå Ïðèâåò!
    • Èçìåíåíèå ðàçìåðà äîñòèãàåòñÿ àíàëîãè÷íûì îáðàçîì ïðè èñïîëüçîâàíèè [size=][/size]. Ýòîò òåã çàâèñèò îò èñïîëüçóåìûõ øàáëîíîâ, ðåêîìåíäóåìûé ôîðìàò — ÷èñëî, ïîêàçûâàþùåå ðàçìåð òåêñòà â ïèêñåëÿõ, íà÷èíàÿ îò 1 (íàñòîëüêî ìàëåíüêèé, ÷òî âû åãî íå óâèäèòå) äî 29 (î÷åíü áîëüøîé). Íàïðèìåð:

      [size=9]ÌÀËÅÍÜÊÈÉ[/size]

      ñêîðåå âñåãî áóäåò ÌÀËÅÍÜÊÈÉ

      â òî âðåìÿ êàê:

      [size=24]ÇÄÎÐÎÂÛÉ![/size]

      áóäåò ÇÄÎÐÎÂÛÉ!
    "); +$faq[] = array("Ìîãó ëè ÿ êîìáèíèðîâàòü òåãè?", "Äà, êîíå÷íî ìîæåòå. Íàïðèìåð äëÿ ïðèâëå÷åíèÿ ÷üåãî-òî âíèìàíèÿ âû ñìîæåòå íàïèñàòü:

    [size=18][color=red][b]ÏÎÑÌÎÒÐÈÒÅ ÍÀ ÌÅÍß![/b][/color][/size]

    ÷òî âûäàñò ÏÎÑÌÎÒÐÈÒÅ ÍÀ ÌÅÍß!

    Ìû íå ðåêîìåíäóåì âûâîäèòü òàêèì îáðàçîì äëèííûå òåêñòû! Ó÷òèòå, ÷òî âû, àâòîð ñîîáùåíèÿ, äîëæíû ïîçàáîòèòüñÿ î òîì, ÷òîáû òåãè áûëè ïðàâèëüíî âëîæåíû. Âîò ýòîò BBCode, íàïðèìåð, íåïðàâèëåí:

    [b][u]Ýòî íåâåðíî[/b][/u]"); + +$faq[] = array("--","Öèòèðîâàíèå è âûâîä ôîðìàòèðîâàííûõ òåêñòîâ"); +$faq[] = array("Öèòèðîâàíèå ïðè îòâåòàõ", "Åñòü äâà ñïîñîáà ïðîöèòèðîâàòü òåêñò, ñî ññûëêîé è áåç.
    • Êîãäà âû èñïîëüçóåòå êíîïêó «Îòâåòèòü ñ öèòàòîé» äëÿ îòâåòà íà ñîîáùåíèå, òî åãî òåêñò äîáàâëÿåòñÿ â ïîëå ââîäà îêðóæ¸ííûì áëîêîì [quote=\"\"][/quote]. Ýòîò ìåòîä ïîçâîëèò âàì öèòèðîâàòü ñî ññûëêîé íà àâòîðà, ëèáî íà ÷òî-òî åù¸, ÷òî âû òóäà âïèøåòå. Íàïðèìåð äëÿ öèòèðîâàíèÿ îòðûâêà òåêñòà, íàïèñàííîãî Mr. Blobby, âû íàïèøåòå:

      [quote=\"Mr. Blobby\"]Òåêñò Mr. Blobby áóäåò çäåñü[/quote]

       ðåçóëüòàòå ïåðåä òåêñòîì áóäóò âñòàâëåíû ñëîâà \"Mr. Blobby íàïèñàë:\". Ïîìíèòå, âû äîëæíû ïîñòàâèòü êàâû÷êè \"\" âîêðóã èìåíè, îíè íå ìîãóò áûòü îïóùåíû.
    • Âòîðîé ìåòîä ïðîñòî ïîçâîëÿåò âàì ÷òî-òî ïðîöèòèðîâàòü. Äëÿ ýòîãî âàì íàäî çàêëþ÷èòòü òåêñò â òåãè [quote][/quote]. Ïðè ïðîñìîòðå ñîîáùåíèÿ ïåðåä òåêñòîì áóäåò ñòîÿòü òîëüêî ñëîâî \"Öèòàòà:\"
    "); +$faq[] = array("Âûâîä êîäà èëè ôîðìàòèðîâàííîãî òåêñòà", "Åñëè âàì íàäî âûâåñòè êóñîê ïðîãðàììû èëè ÷òî-òî, ÷òî äîëæíî áûòü âûâåäåíî øðèôòîì ôèêñèðîâàííîé øèðèíû (Courier) âû äîëæíû çàêëþ÷èòü òåêñò â òåãè [code][/code], íàïðèìåð

    [code]echo \"This is some code\";[/code]

    Âñ¸ ôîðìàòèðîâàíèå, èñïîëüçóåìîå âíóòðè òåãîâ [code][/code] áóäåò ñîõðàíåíî."); + +$faq[] = array("--","Ñîçäàíèå ñïèñêîâ"); +$faq[] = array("Ñîçäàíèå ìàðêèðîâàííîãî ñïèñêà", "BBCode ïîääåðæèâàåò äâà âèäà ñïèñêîâ: ìàðêèðîâàííûå è íóìåðîâàííûå. Îíè ïðàêòè÷åñêè èäåíòè÷íû ñâîèì ýêâèâàëåíòàì èç HTML.  ìàðêèðîâàííîì ñïèñêå âñå ýëåìåíòû âûâîäÿòñÿ ïîñëåäîâàòåëüíî, êàæäûé îòìå÷àåòñÿ ñèìâîëîì-ìàðêåðîì. Äëÿ ñîçäàíèÿ ìàðêèðîâàííîãî ñïèñêà èñïîëüçóéòå [list][/list] è îïðåäåëèòå êàæäûé ýëåìåíò ïðè ïîìîùè [*]. Íàïðèìåð, ÷òîáû âûâåñòè ñâîè ëþáèìûå öâåòà, âû ìîæåòå èñïîëüçîâàòü:

    [list]
    [*]Êðàñíûé
    [*]Ñèíèé
    [*]Ƹëòûé
    [/list]

    Ýòî âûäàñò òàêîé ñïèñîê:
    • Êðàñíûé
    • Ñèíèé
    • Ƹëòûé
    "); +$faq[] = array("Ñîçäàíèå íóìåðîâàííîãî ñïèñêà", "Âòîðîé òèï ñïèñêà, íóìåðîâàííûé, ïîçâîëÿåò âûáðàòü, ÷òî èìåííî áóäåò âûâîäèòüñÿ ïåðåä êàæäûì ýëåìåíòîì. Äëÿ ñîçäàíèÿ íóìåðîâàííîãî ñïèñêà èñïîëüçóéòå [list=1][/list] èëè [list=a][/list] äëÿ ñîçäàíèÿ àëôàâèòíîãî ñïèñêà. Êàê è â ñëó÷àå ìàðêèðîâàííîãî ñïèñêà, ýëåìåíòû îïðåäåëÿþòñÿ ñ ïîìîùüþ [*]. Íàïðèìåð:

    [list=1]
    [*]Ïîéòè â ìàãàçèí
    [*]Êóïèòü íîâûé êîìïüþòåð
    [*]Îáðóãàòü êîìïüþòåð, êîãäà ñëó÷èòñÿ îøèáêà
    [/list]

    âûäàñò ñëåäóþùåå:
    1. Ïîéòè â ìàãàçèí
    2. Êóïèòü íîâûé êîìïüþòåð
    3. Îáðóãàòü êîìïüþòåð, êîãäà ñëó÷èòñÿ îøèáêà
    Äëÿ àëôàâèòíîãî ñïèñêà èñïîëüçóéòå:

    [list=a]
    [*]Ïåðâûé âîçìîæíûé îòâåò
    [*]Âòîðîé âîçìîæíûé îòâåò
    [*]Òðåòèé âîçìîæíûé îòâåò
    [/list]

    ÷òî âûäàñò
    1. Ïåðâûé âîçìîæíûé îòâåò
    2. Âòîðîé âîçìîæíûé îòâåò
    3. Òðåòèé âîçìîæíûé îòâåò
    "); + +$faq[] = array("--", "Ñîçäàíèå ññûëîê"); +$faq[] = array("Ññûëêè íà äðóãîé ñàéò", "Â BBCode ïîääåðæèâàåòñÿ íåñêîëüêî ñïîñîáîâ ñîçäàíèÿ URL'îâ.
    • Ïåðâûé èç íèõ èñïîëüçóåò òåã [url=][/url], ïîñëå çíàêà = äîëæåí èäòè íóæíûé URL. Íàïðèìåð, äëÿ ññûëêè íà phpBB.com âû ìîãëè áû èñïîëüçîâàòü:

      [url=http://www.phpbb.com/]Ïîñåòèòå phpBB![/url]

      Ýòî ñîçäàñò ñëåäóþùóþ ññûëêó: Ïîñåòèòå phpBB! Ññûëêà áóäåò îòêðûâàòüñÿ â íîâîì îêíå, òàê ÷òî ïîëüçîâàòåëü ñìîæåò ïðîäîëæàòü ÷èòàòü ôîðóìû.
    • Åñëè âû õîòèòå, ÷òîáû â êà÷åñòâå òåêñòà ññûëêè ïîêàçûâàëñÿ ñàì URL, âû ìîæåòå ïðîñòî ñäåëàòü ñëåäóþùåå:

      [url]http://www.phpbb.com/[/url]

      Ýòî âûäàñò ñëåäóþùóþ ññûëêó: http://www.phpbb.com/
    • Êðîìå òîãî phpBB ïîääåðæèâàåò âîçìîæíîñòü, íàçûâàåìóþ Àâòîìàòè÷åñêèå ññûëêè, ýòî ïåðåâåä¸ò ëþáîé ñèíòàêñè÷åñêè ïðàâèëüíûé URL â ññûëêó áåç íåîáõîäèìîñòè óêàçàíèÿ òåãîâ è äàæå ïðåôèêñà http://. Íàïðèìåð, ââîä www.phpbb.com â âàøå ñîîáùåíèå ïðèâåä¸ò ê àâòîìàòè÷åñêîé âûäà÷å www.phpbb.com ïðè ïðîñìîòðå ñîîáùåíèÿ.
    • Òî æå ñàìîå îòíîñèòñÿ è ê àäðåñàì e-mail, âû ìîæåòå ëèáî óêàçàòü àäðåñ â ÿâíîì âèäå:

      [email]no.one@domain.adr[/email]

      ÷òî âûäàñò no.one@domain.adr èëè ïðîñòî ââåñòè no.one@domain.adr â âàøå ñîîáùåíèå, è îí áóäåò àâòîìàòè÷åñêè ïðåîáðàçîâàí ïðè ïðîñìîòðå.
    Êàê è ñî âñåìè ïðî÷èìè òåãàìè BBCode, âû ìîæåòå çàêëþ÷àòü â URL'û ëþáûå äðóãèå òåãè, íàïðèìåð [img][/img] (ñì. ñëåäóþùèé ïóíêò), [b][/b] è ò.ä. Êàê è ñ òåãàìè ôîðìàòèðîâàíèÿ, ïðàâèëüíàÿ âëîæåííîñòü òåãîâ çàâèñèò îò âàñ, íàïðèìåð:

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/url][/img]

    íåâåðíî, ÷òî ìîæåò ïðèâåñòè ê ïîñëåäóþùåìó óäàëåíèþ âàøåãî ñîîáùåíèÿ, òàê ÷òî áóäüòå àêêóðàòíåå."); + +$faq[] = array("--", "Ïîêàç êàðòèíîê â ñîîáùåíèÿõ"); +$faq[] = array("Äîáàâëåíèå êàðòèíêè â ñîîáùåíèå", "BBCode âêëþ÷àåò òåã äëÿ äîáàâëåíèÿ êàðòèíêè â âàøå ñîîáùåíèå. Ïðè ýòîì ñëåäóåò ïîìíèòü äâå î÷åíü âàæíûå âåùè: âî-ïåðâûõ, ìíîãèõ ïîëüçîâàòåëåé ðàçäðàæàåò áîëüøîå êîëè÷åñòâî êàðòèíîê, âî-âòîðûõ, âàøà êàðòèíêà óæå äîëæíà áûòü ðàçìåùåíà â èíòåðíåòå (ò.å. îíà íå ìîæåò áûòü ðàñïîëîæåíà òîëüêî íà âàøåì êîìïüþòåðå, åñëè, êîíå÷íî, âû íå çàïóñòèëè íà í¸ì âåáñåðâåð!). Íà äàííûé ìîìåíò íåò âîçìîæíîñòè õðàíèòü èçîáðàæåíèÿ ëîêàëüíî íà phpBB (îæèäàåòñÿ, ÷òî ýòî îãðàíè÷åíèå áóäåò ñíÿòî â ñëåäóþùåé âåðñèè phpBB). Äëÿ âûâîäà êàðòèíêè âû äîëæíû îêðóæèòü å¸ URL òåãàìè [img][/img]. Íàïðèìåð:

    [img]http://www.phpbb.com/images/phplogo.gif[/img]

    Êàê óêàçàíî â ïðåäûäóùåì ïóíêòå, âû ìîæåòå çàêëþ÷èòü êàðòèíêó â òåãè [url][/url], òî åñòü

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/img][/url]

    âûäàñò:

    \"\"
    "); + +$faq[] = array("--", "Ïðî÷åå"); +$faq[] = array("Ìîãó ëè ÿ äîáàâèòü ñîáñòâåííûå òåãè?", "Íåò, ïî êðàéíåé ìåðå, íå â phpBB 2.0. Ìû ïëàíèðóåì äîáàâèòü ïîääåðæêó íàñòðàèâàåìûõ òåãîâ BBCode â ñëåäóþùåé âåðñèè"); + +// +// This ends the BBCode guide entries +// + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_russian/lang_faq.php b/includes/shared/phpbb2/language/lang_russian/lang_faq.php new file mode 100644 index 00000000..0ce6b287 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_russian/lang_faq.php @@ -0,0 +1,96 @@ +Âõîäèòü àâòîìàòè÷åñêè, âû ñìîæåòå îñòàâàòüñÿ ïîä ñâîèì èìåíåì íà ôîðóìå òîëüêî íåêîòîðîå îãðàíè÷åííîå âðåìÿ. Ýòî ñäåëàíî äëÿ òîãî, ÷òîáû íèêòî äðóãîé íå ñìîã âîñïîëüçîâàòüñÿ âàøåé ó÷¸òíîé çàïèñüþ. Äëÿ òîãî, ÷òîáû âàñ àâòîìàòè÷åñêè íå îòêëþ÷àëî îò ôîðóìà, âû ìîæåòå âûáðàòü ïóíêò Âõîäèòü àâòîìàòè÷åñêè, íî ìû íå ðåêîìåíäóåì âàì äåëàòü ýòî íà îáùåäîñòóïíîì êîìïüþòåðå, íàïðèìåð â áèáëèîòåêå, èíòåðíåò-êàôå, óíèâåðñèòåòå è ò.ä."); +$faq[] = array("Êàê ñäåëàòü, ÷òîáû ÿ íå ïîÿâëÿëñÿ â ñïèñêå àêòèâíûõ ïîëüçîâàòåëåé?", " íàñòðîéêàõ âàøåãî ïðîôèëÿ âû íàéäåòå îïöèþ Ñêðûâàòü âàøå ïðåáûâàíèå íà ôîðóìå, åñëè âû âûáåðåòå Äà, òî áóäåòå âèäíû òîëüêî àäìèíèñòðàòîðàì è ñàìîìó ñåáå. Äëÿ âñåõ îñòàëüíûõ âû áóäåòå ïîêàçûâàòüñÿ êàê ñêðûòûé ïîëüçîâàòåëü."); +$faq[] = array("ß çàáûë ïàðîëü!", "Íå ïàíèêóéòå! Õîòÿ âàø ïàðîëü è íå ìîæåò áûòü âîññòàíîâëåí, âàì ìîæåò áûòü ïðèñâîåí íîâûé. Äëÿ ýòîãî êëèêíèòå íà ß çàáûë ïàðîëü, ñëåäóéòå èíñòðóêöèÿì, è ñêîðî âû ñíîâà ñìîæåòå âîéòè íà ôîðóì"); +$faq[] = array("ß çàðåãèñòðèðîâàí, íî íå ìîãó âîéòè!", "Ïåðâîå: ïðîâåðüòå, ïðàâèëüíî ëè âû ââåëè èìÿ è ïàðîëü. Âòîðîå: âîçìîæíî, âàøà ó÷åòíàÿ çàïèñü òðåáóåò àêòèâèçàöèè. Íåêîòîðûå ôîðóìû òðåáóþò, ÷òîáû âñå íîâûå ïîëüçîâàòåëè áûëè àêòèâèçèðîâàíû ñàìîñòîÿòåëüíî ëèáî àäìèíèñòðàòîðîì ôîðóìà äî òîãî, êàê âû ñìîæåòå â íåãî âîéòè. Ãëàâíàÿ ïðè÷èíà, ïî êîòîðîé òðåáóåòñÿ àêòèâèçàöèÿ, — îíà óìåíüøàåò âîçìîæíîñòè äëÿ àíîíèìíûõ çëîóïîòðåáëåíèé â ôîðóìå. Êîãäà âû çàâåðøàëè ïðîöåññ ðåãèñòðàöèè, âàì áûëî ñêàçàíî, òðåáóåòñÿ àêòèâèçàöèÿ èëè íåò. Åñëè âàì áûë ïðèñëàí e-mail, òî ñëåäóéòå èíñòðóêöèÿì â ïèñüìå, åñëè âû íå ïîëó÷èëè ïèñüìî, òî óáåäèòåñü, ÷òî óêàçàëè ïðàâèëüíûé àäðåñ e-mail. Åñëè æå âû óâåðåíû, ÷òî ââåëè ïðàâèëüíûé àäðåñ e-mail, íî ïèñüìà íå ïîëó÷èëè, òî ñâÿæèòåñü ñ àäìèíèñòðàòîðîì ôîðóìà."); +$faq[] = array("ß áûë çàðåãèñòðèðîâàí, íî áîëüøå íå ìîãó âîéòè!", "Íàèáîëåå âåðîÿòíûå ïðè÷èíû: âû ââåëè íåâåðíîå èìÿ èëè ïàðîëü (ïðîâåðüòå ïèñüìî, êîòîðîå âàì ïðèñëàëè, êîãäà âû çàðåãèñòðèðîâàëèñü) èëè àäìèíèñòðàòîð óäàëèë âàøó ó÷¸òíóþ çàïèñü ïî êàêèì-òî ïðè÷èíàì. Åñëè âåðíî âòîðîå, òî âîçìîæíî âû íå íàïèñàëè íè îäíîãî ñîîáùåíèÿ? Àäìèíèñòðàòîðû ìîãóò óäàëÿòü íåàêòèâíûõ ïîëüçîâàòåëåé, ÷òîáû óìåíüøèòü ðàçìåð áàçû äàííûõ. Ïîïðîáóéòå çàðåãèñòðèðîâàòüñÿ ñíîâà è ïðèíÿòü ó÷àñòèå â äèñêóññèÿõ."); + + +$faq[] = array("--","Ïàðàìåòðû è íàñòðîéêè ïîëüçîâàòåëÿ"); +$faq[] = array("Êàê ìíå èçìåíèòü ìîè íàñòðîéêè?", "Âñå âàøè íàñòðîéêè õðàíÿòñÿ â áàçå äàííûõ (åñëè âû çàðåãèñòðèðîâàíû). ×òîáû èçìåíèòü èõ, ïåðåéäèòå â ðàçäåë Ïðîôèëü (îáû÷íî ññûëêà íà íåãî íàõîäèòñÿ ââåðõó ôîðóìà, íî ìîãóò áûòü è èñêëþ÷åíèÿ). Òàì âû ìîæåòå èçìåíèòü âñå ñâîè íàñòðîéêè"); +$faq[] = array(" ôîðóìàõ íåïðàâèëüíîå âðåìÿ!", "Âðåìÿ îáû÷íî ïðàâèëüíîå, íî âû ìîæåòå âèäåòü âðåìÿ, îòíîñÿùååñÿ ê äðóãîìó ÷àñîâîìó ïîÿñó, íå ê òîìó, â êîòîðîì íàõîäèòåñü âû.  ýòîì ñëó÷àå âû ìîæåòå èçìåíèòü ÷àñîâîé ïîÿñ íà òîò, â êîòîðîì âû íàõîäèòåñü: Ìîñêâà, Êèåâ è ò.ä. Ïîæàëóéñòà, ó÷òèòå, ÷òî äëÿ ñìåíû ÷àñîâîãî ïîÿñà, êàê è äëÿ ñìåíû áîëüøèíñòâà íàñòðîåê, òðåáóåòñÿ áûòü çàðåãèñòðèðîâàííûì ïîëüçîâàòåëåì."); +$faq[] = array("ß èçìåíèë ÷àñîâîé ïîÿñ, íî âðåìÿ âñå ðàâíî íåïðàâèëüíîå!", "Åñëè âû óâåðåíû, ÷òî óêàçàëè ÷àñîâîé ïîÿñ ïðàâèëüíî, òî ïðè÷èíà ìîæåò áûòü â ëåòíåì âðåìåíè. Ýòîò ôîðóì íå óìååò ðàáîòàòü ñ ëåòíèì âðåìåíåì, òàê ÷òî â ïåðèîä äåéñòâèÿ ëåòíåãî âðåìåíè ìîæåò ïîÿâëÿòüñÿ ðàçíèöà â îäèí ÷àñ ñ ðåàëüíûì âðåìåíåì."); +$faq[] = array("Ìîåãî ÿçûêà íåò â ñïèñêå!", "Ïðè÷èíà ñêîðåå âñåãî â òîì, ÷òî àäìèíèñòðàòîð íå óñòàíîâèë ïîääåðæêó âàøåãî ÿçûêà â ôîðóìå, èëè æå ïðîñòî íèêòî íå ïåðåâ¸ë ýòîò ôîðóì íà âàø ÿçûê. Ïîïðîáóéòå óçíàòü ó àäìèíèñòðàòîðà ôîðóìà, ìîæåò ëè îí óñòàíîâèòü òðåáóåìûé ÿçûê. Åñëè æå ïîääåðæêè íóæíîãî ÿçûêà ïîêà íå ñóùåñòâóåò, òî âû ñàìè ìîæåòå ïåðåâåñòè ýòîò ôîðóì íà ñâîé ÿçûê. Äîïîëíèòåëüíóþ èíôîðìàöèþ âû ìîæåòå ïîëó÷èòü íà ñàéòå Ãðóïïû phpBB (ññûëêà åñòü âíèçó ñòðàíèöû)"); +$faq[] = array("Êàê ÿ ìîãó ïîìåñòèòü êàðòèíêó ïîä ñâîèì èìåíåì?", "Ïîä èìåíåì ïîëüçîâàòåëÿ ìîãóò áûòü äâå êàðòèíêè. Ïåðâàÿ êàðòèíêà îòíîñèòñÿ ê âàøåìó çâàíèþ, îáû÷íî ýòî çâ¸çäî÷êè, óêàçûâàþùèå íà òî, ñêîëüêî ñîîáùåíèé âû îñòàâèëè â ôîðóìå èëè íà âàø ñòàòóñ â ýòîì ôîðóìå. ×óòü íèæå ìîæåò íàõîäèòüñÿ êàðòèíêà ïîáîëüøå, êîòîðàÿ íàçûâàåòñÿ «àâàòàðà». Ýòà êàðòèíêà îáû÷íî óíèêàëüíà äëÿ êàæäîãî ïîëüçîâàòåëÿ. Îò àäìèíèñòðàòîðîâ çàâèñèò, âêëþ÷åíà ëè ïîääåðæêà àâàòàð, è îò íèõ æå çàâèñèò, êàêèå àâàòàðû ìîãóò áûòü èñïîëüçîâàíû. Åñëè â äàííîì ôîðóìå íå âêëþ÷åíà ïîääåðæêà àâàòàð, òî ýòî ðåøåíèå àäìèíèñòðàòîðîâ, âû ìîæåòå âûÿñíèòü ó íèõ ïðè÷èíû."); +$faq[] = array("Êàê ÿ ìîãó èçìåíèòü ñâîå çâàíèå?", "Îáû÷íî âû íå ìîæåòå íàïðÿìóþ èçìåíèòü ñâîå çâàíèå (çâàíèå îòîáðàæàåòñÿ íèæå âàøåãî èìåíè â ñîçäàííîì âàìè ñîîáùåíèè èëè òåìå, à òàê æå â âàøåì ïðîôèëå, â çàâèñèìîñòè îò èñïîëüçóåìîãî ñòèëÿ). Áîëüøèíñòâî ôîðóìîâ èñïîëüçóþò çâàíèÿ, ÷òîáû ïîêàçàòü êàêîå êîëè÷åñòâî ñîîáùåíèé áûëî íàïèñàíî è ÷òîáû èäåíòèôèöèðîâàòü îïðåäåëåííûõ ïîëüçîâàòåëåé: íàïðèìåð ìîäåðàòîðû è àäìèíèñòðàòîðû ìîãóò èìåòü ñïåöèàëüíûå çâàíèÿ. Ïîæàëóéñòà, íå çàñîðÿéòå ôîðóì íåíóæíûìè ñîîáùåíèÿìè òîëüêî äëÿ òîãî, ÷òîáû ïîâûñèòü âàøå çâàíèå, çà ýòî ìîäåðàòîð èëè àäìèíèñòðàòîð ìîæåò ïðîñòî ïîíèçèòü êîëè÷åñòâî îòïðàâëåííûõ âàìè ñîîáùåíèé."); +$faq[] = array("Êîãäà ÿ ù¸ëêàþ ïî ññûëêå «Îòïðàâèòü e-mail», îò ìåíÿ òðåáóþò âîéòè?", "Òîëüêî çàðåãèñòðèðîâàííûå ïîëüçîâàòåëè ìîãóò ïîñûëàòü e-mail ÷åðåç âñòðîåííóþ â ôîðóì ôîðìó (åñëè ýòà âîçìîæíîñòü âîîáùå ðàçðåøåíà àäìèíèñòðàòîðîì). Ýòî ñäåëàíî äëÿ òîãî, ÷òîáû ïðåäîòâðàòèòü çëîóïîòðåáëåíèÿ ñèñòåìîé e-mail àíîíèìíûìè ïîëüçîâàòåëÿìè."); + + +$faq[] = array("--","Ñîçäàíèå ñîîáùåíèé"); +$faq[] = array("Êàê ìíå ñîçäàòü òåìó â ôîðóìå?", "Ëåãêî, ù¸ëêíèòå ïî ñîîòâåòñòâóþùåé êíîïêå â îêíå ôîðóìà èëè òåìû. Âàì, âîçìîæíî, ïðèäåòñÿ çàðåãèñòðèðîâàòüñÿ ïðåæäå ÷åì îòïðàâèòü ñîîáùåíèå. Òî ÷òî âû ìîæåòå äåëàòü â äàííîì ôîðóìå ïåðå÷èñëåíî âíèçó ñòðàíèöû ôîðóìà è òåìû (Âû ìîæåòå íà÷èíàòü òåìû â ýòîì ôîðóìå, Âû ìîæåòå îòâå÷àòü íà ñîîáùåíèÿ è ò.ä.)"); +$faq[] = array("Êàê ÿ ìîãó ðåäàêòèðîâàòü èëè óäàëèòü ñîîáùåíèå?", "Åñëè âû íå àäìèíèñòðàòîð èëè ìîäåðàòîð ôîðóìà, âû ìîæåòå ðåäàêòèðîâàòü è óäàëÿòü òîëüêî ñâîè ñîáñòâåííûå ñîîáùåíèÿ. Âû ìîæåòå ðåäàêòèðîâàòü ñîîáùåíèå (èíîãäà òîëüêî â òå÷åíèè íåêîòîðîãî âðåìåíè ñ ìîìåíòà ñîçäàíèÿ) ù¸ëêíóâ ïî êíîïêå Ðåäàêòèðîâàòü, îòíîñÿùåéñÿ ê äàííîìó ñîîáùåíèþ. Åñëè êòî-òî óæå îòâåòèë íà âàøå ñîîáùåíèå, òî ïîä íèì ïîÿâèòñÿ íåáîëüøàÿ íàäïèñü, îíà ïîêàçûâàåò ñêîëüêî ðàç âû ðåäàêòèðîâàëè ñîîáùåíèå. Ýòà íàäïèñü íå ïîÿâëÿåòñÿ, åñëè íèêòî íå îòâå÷àë íà âàøå ñîîáùåíèå, îíà òàêæå íå ïîÿâëÿåòñÿ, åñëè âàøå ñîîáùåíèå îòðåäàêòèðîâàë àäìèíèñòðàòîð èëè ìîäåðàòîð (îíè äîëæíû ñàìè îñòàâèòü ïîìåòêó, ãäå ñêàçàíî, ïî÷åìó îíè ýòî ñäåëàëè). Ó÷òèòå, ÷òî îáû÷íûå ïîëüçîâàòåëè íå ìîãóò óäàëèòü ñîîáùåíèå, åñëè íà íåãî óæå êòî-òî îòâåòèë."); +$faq[] = array("Êàê ïðèñîåäèíèòü ïîäïèñü ê ìîåìó ñîîáùåíèþ?", "Äëÿ òîãî, ÷òîáû ïðèñîåäèíèòü ïîäïèñü, âû äîëæíû ñíà÷àëà ñîçäàòü å¸ â ñâîåì ïðîôèëå. Ïîñëå ñîçäàíèÿ âû äîëæíû îòìåòèòü ãàëî÷êîé ïóíêò Ïðèñîåäèíèòü ïîäïèñü â ôîðìå îòïðàâêè ñîîáùåíèÿ, ÷òîáû ïîäïèñü äîáàâèëàñü. Âû òàêæå ìîæåòå ñäåëàòü ÷òîáû ïîäïèñü ïðèñîåäèíÿëàñü ïî óìîë÷àíèþ, åñëè îòìåòèòå ñîîòâåòñòâóþùèé ïóíêò â âàøåì ïðîôèëå (âû ñìîæåòå îòêëþ÷àòü ïîäïèñü â îïðåäåëåííûõ ñîîáùåíèÿõ, óáðàâ ãàëî÷êó Ïðèñîåäèíèòü ïîäïèñü)"); +$faq[] = array("Êàê ñîçäàòü îïðîñ?", "Ñîçäàòü îïðîñ ëåãêî: êîãäà âû ñîçäà¸òå òåìó (èëè ðåäàêòèðóåòå ïåðâîå ñîîáùåíèå â òåìå, åñëè ó âàñ åñòü íà òî ïðàâà) ÷óòü íèæå îñíîâíîé ôîðìû äëÿ ñîçäàíèÿ ñîîáùåíèé, âû óâèäèòå ôîðìó Ñîçäàòü îïðîñ. Åñëè æå âû å¸ íå âèäèòå, òî ñêîðåå âñåãî ó âàñ íåò ïðàâ íà ñîçäàíèå îïðîñà. Âû äîëæíû ââåñòè òåìó îïðîñà, çàòåì êàê ìèíèìóì äâà âàðèàíòà îòâåòà (÷òîáû äîáàâèòü âàðèàíò îòâåòà, ââåäèòå åãî è ù¸ëêíèòå êíîïêó Äîáàâèòü âàðèàíò. Âû òàêæå ìîæåòå óñòàíîâèòü ëèìèò âðåìåíè íà îïðîñ, 0 îçíà÷àåò ïîñòîÿííûé îïðîñ. Òàêæå ñóùåñòâóåò îãðàíè÷åíèå íà êîëè÷åñòâî âàðèàíòîâ îòâåòà, îíî óñòàíàâëèâàåòñÿ àäìèíèñòðàòîðîì."); +$faq[] = array("Êàê ÿ ìîãó ðåäàêòèðîâàòü èëè óäàëèòü îïðîñ?", "Òàêæå êàê è ñîîáùåíèÿ, îïðîñû ìîãóò óäàëÿòü òîëüêî èõ ñîçäàòåëè, ìîäåðàòîðû èëè àäìèíèñòðàòîðû. ×òîáû ðåäàêòèðîâàòü îïðîñ, ïåðåéäèòå ê ðåäàêòèðîâàíèþ ïåðâîãî ñîîáùåíèÿ â òåìå (îíî âñåãäà îòíîñèòñÿ ê îïðîñó). Åñëè íèêòî íå óñïåë ïðîãîëîñîâàòü, òî ïîëüçîâàòåëè ìîãóò ðåäàêòèðîâàòü èëè óäàëÿòü îïðîñ, íî åñëè óæå êòî-òî ïðîãîëîñîâàë, òî òîëüêî ìîäåðàòîðû èëè àäìèíèñòðàòîðû ìîãóò óäàëèòü åãî. Ýòî ñäåëàíî äëÿ òîãî, ÷òîáû íåëüçÿ áûëî ìåíÿòü âàðèàíòû îòâåòîâ, â òî âðåìÿ êàê ëþäè óæå ïðîãîëîñîâàëè."); +$faq[] = array("Ïî÷åìó ìíå íåäîñòóïíû íåêîòîðûå ôîðóìû?", "Íåêîòîðûå ôîðóìû äîñòóïíû òîëüêî îïðåäåë¸ííûì ïîëüçîâàòåëÿì èëè ãðóïïàì ïîëüçîâàòåëåé. ×òîáû èõ ïðîñìàòðèâàòü, ñîçäàâàòü ñîîáùåíèÿ è ò.ä., âàì ìîæåò ïîòðåáîâàòüñÿ ñïåöèàëüíîå ðàçðåøåíèå. Òîëüêî ìîäåðàòîðû èëè àäìèíèñòðàòîðû ôîðóìà ìîãóò ïðåäîñòàâèòü òàêîå ðàçðåøåíèå, ñâÿæèòåñü ñ íèìè."); +$faq[] = array("Ïî÷åìó ÿ íå ìîãó ãîëîñîâàòü â îïðîñå?", "Òîëüêî çàðåãèñòðèðîâàííûå ïîëüçîâàòåëè ìîãóò ó÷àñòâîâàòü â îïðîñå (÷òîáû ïðåäîòâðàòèòü ïîäòàñîâêó ðåçóëüòàòîâ àíîíèìíûìè ïîëüçîâàòåëÿìè). Åñëè âû çàðåãèñòðèðîâàíû, íî íå ìîæåòå ãîëîñîâàòü, òî, ñêîðåå âñåãî, ó âàñ íåò íà ýòî íåîáõîäèìûõ ïðàâ äîñòóïà."); + + +$faq[] = array("--","Ôîðìàòèðîâàíèå ñîîáùåíèé è òèïû ñîçäàâàåìûõ òåì"); +$faq[] = array("×òî òàêîå BBCode?", "BBCode ýòî îñîáàÿ ðåàëèçàöèÿ HTML, âîçìîæíîñòü èñïîëüçîâàíèÿ BBCode îïðåäåëÿåòñÿ àäìèíèñòðàòîðîì (âû òàêæå ìîæåòå îòêëþ÷èòü åãî â êàæäîì ñîçäàâàåìîì âàìè ñîîáùåíèè). BBCode î÷åíü ïîõîæ íà HTML, òýãè â í¸ì çàêëþ÷àþòñÿ â êâàäðàòíûå ñêîáêè [ è ], à íå < è >, îí äà¸ò ïîëüçîâàòåëþ áîëüøå âîçìîæíîñòåé â ñîçäàíèè ñîîáùåíèé. Çà äîïîëíèòåëüíîé èíôîðìàöèåé î BBCode ñìîòðèòå ðóêîâîäñòâî ïî BBCode, ññûëêà íà êîòîðîå äîñòóïíà èç ôîðìû îòïðàâêè ñîîáùåíèé."); +$faq[] = array("Ìîãó ëè ÿ èñïîëüçîâàòü HTML?", "Çàâèñèò îò òîãî ðàçðåøåíî ëè ýòî àäìèíèñòðàòîðîì. Åñëè ðàçðåøåíî åãî èñïîëüçîâàòü, òî, ñêîðåå âñåãî, ðàáîòàòü áóäóò ëèøü íåñêîëüêî òýãîâ. Ýòî ñäåëàíî äëÿ áåçîïàñíîñòè, ÷òîáû çàïðåòèòü èñïîëüçîâàíèå òýãîâ êîòîðûå ìîãóò âûçâàòü ïðîáëåìû. Åñëè HTML âêëþ÷¸í, òî âû ñìîæåòå âûêëþ÷èòü åãî äëÿ êîíêðåòíîãî ñîîáùåíèÿ ïðè ñîçäàíèè ýòîãî ñîîáùåíèÿ."); +$faq[] = array("×òî òàêîå ñìàéëèêè?", "Ñìàéëèêè, èëè ýìîòèêîíû — ýòî ìàëåíüêèå êàðòèíêè, êîòîðûå ìîãóò áûòü èñïîëüçîâàíû äëÿ âûðàæåíèÿ ÷óâñòâ, íàïðèìåð :) çíà÷èò ðàäîñòü, :( çíà÷èò ãðóñòü. Ïîëíûé ñïèñîê ñìàéëèêîâ ìîæíî óâèäåòü â ôîðìå ñîçäàíèÿ ñîîáùåíèé. Òîëüêî íå ïåðåñòàðàéòåñü, èñïîëüçóÿ èõ: îíè ëåãêî ìîãóò ñäåëàòü ñîîáùåíèå íå÷èòàåìûì, è ìîäåðàòîð ìîæåò îòðåäàêòèðîâàòü âàøå ñîîáùåíèå, èëè âîîáùå óäàëèòü åãî."); +$faq[] = array("Ìîãó ëè ÿ âñòàâëÿòü êàðòèíêè?", "Âû ìîæåòå âñòàâëÿòü êàðòèíêè â ñîîáùåíèÿ. Íî ïîêà íåò âîçìîæíîñòè çàãðóæàòü êàðòèíêè íà ôîðóì. Âû äîëæíû óêàçàòü ññûëêó íà êàðòèíêó, êîòîðàÿ íàõîäèòñÿ íà îáùåäîñòóïíîì ñåðâåðå, íàïðèìåð: http://www.some-unknown-place.net/my-picture.gif. Âû íå ìîæåòå óêàçàòü íè ññûëêó íà ñâîé êîìïüþòåð (åñëè, êîíå÷íî, îí íå ÿâëÿåòñÿ îáùåäîñòóïíûì ñåðâåðîì), íè íà êàðòèíêè êîòîðûå íàõîäÿòñÿ çà ìåõàíèçìîì àâòîðèçàöèè, íàïðèìåð â ïî÷òîâûõ ÿùèêàõ mail.ru, íà çàùèù¸ííûõ ïàðîëåì ñàéòàõ è ò.ä. Äëÿ îòîáðàæåíèÿ êàðòèíêè â ñîîáùåíèè èñïîëüçóéòå òýã [img] BBCode èëè ñîîòâåòñòâóþùèé òýã HTML (åñëè ýòî ðàçðåøåíî)."); +$faq[] = array("×òî òàêîå «Îáúÿâëåíèå»?", "Îáúÿâëåíèå ÷àùå âñåãî ñîäåðæèò âàæíóþ èíôîðìàöèþ, êîòîðóþ âû äîëæíû ïðî÷åñòü êàê ìîæíî ñêîðåå. Îáúÿâëåíèÿ âñåãäà íàõîäèòñÿ â ñàìîì âåðõó ôîðóìà â êîòîðîì îíè áûëî ñîçäàíû. Âîçìîæíîñòü ñîçäàíèÿ îáúÿâëåíèé çàâèñèò îò âàøåãî óðîâíÿ äîñòóïà, êîòîðûé îïðåäåëÿåòñÿ àäìèíèñòðàòîðîì."); +$faq[] = array("×òî òàêîå «Ïðèëåïëåííàÿ òåìà»?", "Ïðèëåïëåííûå òåìû íàõîäÿòñÿ íèæå îáúÿâëåíèé íà ñòðàíèöå ïðîñìîòðà ôîðóìà, è ïðè ýòîì òîëüêî íà ïåðâîé ñòðàíèöå. Îáû÷íî îíè òîæå íåñóò êàêóþ-òî âàæíóþ èíôîðìàöèþ, è âàì ñòîèò ïðî÷åñòü èõ, êàê òîëüêî ó âàñ ïîÿâèòñÿ âîçìîæíîñòü. Òàê æå êàê è ïðè ñîçäàíèè îáúÿâëåíèé, âàì ïîòðåáóåòñÿ íåîáõîäèìûé óðîâåíü äîñòóïà."); +$faq[] = array("×òî çíà÷èò «Òåìà çàêðûòà»?", "Òåìû ìîãóò áûòü çàêðûòû òîëüêî ìîäåðàòîðàìè èëè àäìèíèñòðàòîðàìè. Âû íå ìîæåòå îòâå÷àòü íà çàêðûòûå òåìû, è ëþáîé îïðîñ â çàêðûòîé òåìå àâòîìàòè÷åñêè ïðåêðàùàåòñÿ. Òåìû çàêðûâàþòñÿ ïî ìíîãèì ïðè÷èíàì..."); + + +$faq[] = array("--","Óðîâíè ïîëüçîâàòåëåé è ãðóïïû"); +$faq[] = array("Êòî òàêèå àäìèíèñòðàòîðû?", "Àäìèíèñòðàòîðû èìåþò âûñøèé óðîâåíü êîíòðîëÿ íàä ôîðóìîì. Ýòè ëþäè ìîãóò êîíòðîëèðîâàòü âñå àñïåêòû ôîðóìà: íàçíà÷åíèå äîñòóïà, îòêëþ÷åíèå ïîëüçîâàòåëåé, ñîçäàíèå ãðóïï ïîëüçîâàòåëåé è íàçíà÷åíèå ìîäåðàòîðîâ è ò.ä. Îíè òàêæå èìåþò ïîëíûå ìîäåðàòîðñêèå ïðàâà âî âñåõ ôîðóìàõ."); +$faq[] = array("Êòî òàêèå ìîäåðàòîðû?", "Ìîäåðàòîðû ýòî ïîëüçîâàòåëè (èëè ãðóïïû ïîëüçîâàòåëåé) ÷üÿ ðàáîòà — åæåäíåâíî ñëåäèòü çà ôîðóìàìè. Ó íèõ åñòü âîçìîæíîñòü ðåäàêòèðîâàòü, óäàëÿòü, çàêðûâàòü è âíîâü îòêðûâàòü òåìû, ïåðåìåùàòü è ðàçäåëÿòü òåìû â ôîðóìàõ, çà êîòîðûå îíè îòâå÷àþò. Ãëàâíûå çàäà÷è ìîäåðàòîðîâ: íå äîïóñêàòü áåñïîðÿäêà â ôîðóìàõ, îñêîðáëåíèé, ñëåäèòü, ÷òîáû ñîîáùåíèÿ ñîîòâåòñòâîâàëè òåìå ôîðóìà."); +$faq[] = array("×òî òàêîå ãðóïïû ïîëüçîâàòåëåé?", "Àäìèíèñòðàòîðû ìîãóò îáúåäèíÿòü ïîëüçîâàòåëåé â ãðóïïû. Êàæäûé ïîëüçîâàòåëü ìîæåò ñîñòîÿòü â íåñêîëüêèõ ãðóïïàõ, è êàæäîé ãðóïïå ìîãóò áûòü íàçíà÷åíû èíäèâèäóàëüíûå ïðàâà äîñòóïà. Ýòî îáëåã÷àåò àäìèíèñòðàòîðàì ðàáîòó ñ íàçíà÷åíèåì íåñêîëüêèõ ïîëüçîâàòåëåé ìîäåðàòîðàìè ôîðóìà, èëè ïðåäîñòàâëåíèåì äîñòóïà ê ïðèâàòíûì ôîðóìàì è ò.ä."); +$faq[] = array("Êàê ìíå âñòóïèòü â ãðóïïó?", "Äëÿ òîãî, ÷òîáû âñòóïèòü â ãðóïïó, ù¸ëêíèòå ïî ññûëêå «Ãðóïïû», êîòîðàÿ, êàê ïðàâèëî, íàõîäèòñÿ íàâåðõó (íî ýòî çàâèñèò îò äèçàéíà) è âû óâèäèòå ñïèñîê ãðóïï. Íå âñå ãðóïïû îáùåäîñòóïíû, íåêîòîðûé ìîãóò áûòü çàêðûòûìè, à íåêîòîðûå ìîãóò áûòü ñêðûòûìè. Åñëè ãðóïïà îáùåäîñòóïíà, òî âû ìîæåòå çàïðîñèòü ÷ëåíñòâî â íåé, ù¸ëêíóâ ïî ñîîòâåòñòâóþùåé êíîïêå. Ìîäåðàòîð ãðóïïû äîëæåí áóäåò îäîáðèòü âàøå ó÷àñòèå â ãðóïïå, îí ìîæåò ñïðîñèòü, çà÷åì âû õîòèòå ïðèñîåäèíèòüñÿ. Ïîæàëóéñòà, íå äîíèìàéòå ìîäåðàòîðà ãðóïïû, âûÿñíÿÿ, ïî÷åìó âàø çàïðîñ áûë îòêëîí¸í, ó íåãî ìîãóò áûòü ñâîè ïðè÷èíû."); +$faq[] = array("Êàê ìíå ñòàòü ìîäåðàòîðîì ãðóïïû?", "Ãðóïïû ïîëüçîâàòåëåé ñîçäàþòñÿ àäìèíèñòðàòîðàìè ôîðóìà, îíè æå è íàçíà÷àþò ìîäåðàòîðîâ ãðóïï. Åñëè âû çàèíòåðåñîâàíû â ñîçäàíèè ãðóïïû, òî ñâÿæèòåñü ñ àäìèíèñòðàòîðîì, ïîïðîáóéòå îòïðàâèòü åìó ëè÷íîå ñîîáùåíèå."); + + +$faq[] = array("--","Ëè÷íûå ñîîáùåíèÿ"); +$faq[] = array("ß íå ìîãó îòïðàâèòü ëè÷íîå ñîîáùåíèå!", "Ýòî ìîæåò áûòü âûçâàíî òðåìÿ ïðè÷èíàìè; âû íå çàðåãèñòðèðîâàíû è/èëè íå âîøëè íà ôîðóì, àäìèíèñòðàòîð çàïðåòèë îòïðàâêó ëè÷íûõ ñîîáùåíèé íà âñåì ôîðóìå èëè æå àäìèíèñòðàòîð çàïðåòèë ëè÷íî âàì îòïðàâëÿòü ëè÷íûå ñîîáùåíèÿ. Åñëè âåðíî òðåòüå, òî ñïðîñèòå ó àäìèíèñòðàòîðà, ïî÷åìó îí ýòî ñäåëàë."); +$faq[] = array("ß âñ¸ âðåìÿ ïîëó÷àþ íåæåëàòåëüíûå ëè÷íûå ñîîáùåíèÿ!", " áóäóùåì ìû äîáàâèì âîçìîæíîñòü ñîçäàíèÿ èãíîð-ñïèñêà â ñëóæáó ëè÷íûõ ñîîáùåíèé. Ïîêà æå, åñëè âû ïðîäîëæàåòå ïîëó÷àòü íåæåëàòåëüíûå ïèñüìà îò êîãî-ëèáî, ïîñòàâüòå â èçâåñòíîñòü àäìèíèñòðàòîðà: îí ìîæåò âîîáùå çàïðåòèòü ýòîìó ïîëüçîâàòåëþ îòïðàâêó ëè÷íûõ ñîîáùåíèé."); +$faq[] = array("ß ïîëó÷èë ñïàì èëè îñêîðáèòåëüíûé e-mail îò êîãî-òî ñ ýòîãî ôîðóìà!", "Î÷åíü æàëü ýòî ñëûøàòü. Ôîðìà îòïðàâêè e-mail íà äàííîì ôîðóìå âêëþ÷àåò ìåðû ïðåäîñòîðîæíîñòè è âîçìîæíîñòü îòñëåæèâàíèÿ ïîëüçîâàòåëåé, îòïðàâëÿþùèõ ïîäîáíûå ñîîáùåíèÿ. Âû äîëæíû íàïèñàòü e-mail àäìèíèñòðàòîðó ôîðóìà ñ ïîëíîé êîïèåé ïîëó÷åííîãî ïèñüìà, ïðè ýòîì î÷åíü âàæíî âêëþ÷èòü âñå çàãîëîâêè (â íèõ ñîäåðæèòñÿ äåòàëüíàÿ èíôîðìàöèÿ î ïîëüçîâàòåëå, êîòîðûé îòïðàâèë ñîîáùåíèå). Àäìèíèñòðàòîð ñìîæåò çàòåì ïðèíÿòü ìåðû."); + +// +// These entries should remain in all languages and for all modifications +// +$faq[] = array("--","Èíôîðìàöèÿ î phpBB 2"); +$faq[] = array("Êòî íàïèñàë ýòîò ôîðóì?", "Ýòî ïðîãðàììíîå îáåñïå÷åíèå (â åãî èñõîäíîé ôîðìå) íàïèñàíî è ðàñïðîñòðàíÿåòñÿ Ãðóïïîé phpBB, åé è ïðèíàäëåæàò àâòîðñêèå ïðàâà íà íåãî. Ýòîò ôîðóì âûïóñêàåòñÿ ïîä ëèöåíçèåé GNU General Public Licence è ìîæåò ñâîáîäíî ðàñïðîñòðàíÿòüñÿ, çà äîïîëíèòåëüíîé èíôîðìàöèåé ñìîòðèòå ññûëêó ââåðõó"); +$faq[] = array("Ïî÷åìó çäåñü íåò òàêîé-òî ôóíêöèè?", "Ýòîò ôîðóì áûë íàïèñàí Ãðóïïîé phpBB. Åñëè âû óâåðåíû, ÷òî êàêàÿ-òî ôóíêöèÿ äîëæíà áûòü äîáàâëåíà, ïîñåòèòå ñàéò phpbb.com è óçíàéòå, ÷òî äóìàåò ïî ýòîìó ïîâîäó Ãðóïïà phpBB. Ïîæàëóéñòà, íå ïèøèòå ïðîñüáû î âêëþ÷åíèè êàêèõ ëèáî ôóíêöèé íà ôîðóì phpbb.com, Ãðóïïà èñïîëüçóåò sourceforge ÷òîáû ðàáîòàòü íàä íîâûìè ôóíêöèÿìè. Ïîæàëóéñòà, ñíà÷àëà ïðîñìîòðèòå ôîðóìû, ÷òîáû âûÿñíèòü, êàêîâî íàøå ìíåíèå ïî ïîâîäó äàííîé ôóíêöèè (åñëè òàêîå ìíåíèå ó íàñ åñòü) è òîëüêî ïîñëå ýòîãî ñëåäóéòå ïðîöåäóðå, êîòîðàÿ òàì áóäåò îïèñàíà."); +$faq[] = array("Ñ êåì ìîæíî ñâÿçàòüñÿ ïî âîïðîñó íåêîððåêòíîãî èñïîëüçîâàíèÿ è þðèäè÷åñêèõ âîïðîñîâ, ñâÿçàííûõ ñ ýòèì ôîðóìîì?", "Âû äîëæíû ñâÿçàòüñÿ ñ àäìèíèñòðàòîðîì äàííîãî ôîðóìà. Åñëè âû íå ìîæåòå âûÿñíèòü, êòî ÿâëÿåòñÿ àäìèíèñòðàòîðîì, òî ñïåðâà ñâÿæèòåñü ñ ìîäåðàòîðîì è ñïðîñèòå ó íåãî, ñ êåì âû ìîæåòå ñâÿçàòüñÿ ïî äàííîìó âîïðîñó. Åñëè è òåïåðü âû íå ïîëó÷èëè îòâåòà, ñâÿæèòåñü ñ âëàäåëüöåì äîìåíà (ñäåëàéòå whois lookup) èëè, åñëè ôîðóì çàïóùåí íà áåñïëàòíîì äîìåíå (íàïðèìåð chat.ru, yahoo, free.fr, f2s.com, etc.), ñ òåõïîääåðæêîé äàííîãî äîìåíà. Ïîæàëóéñòà, ó÷òèòå, ÷òî Ãðóïïà phpBB íå èìååò íèêàêîãî êîíòðîëÿ íàä äàííûì ôîðóìîì, è íå ìîæåò íåñòè íèêàêîé îòâåòñòâåííîñòè çà òî êåì è êàê äàííûé ôîðóì èñïîëüçóåòñÿ. Àáñîëþòíî áåññìûñëåííî îáðàùàòüñÿ ê Ãðóïïå phpBB ïî þðèäè÷åñêèì âîïðîñàì (ïî ïðèîñòàíîâêå ôîðóìà, îòâåòñòâåííîñòè çà íåãî è ò.ä.), êîòîðûå íå îòíîñÿòñÿ íàïðÿìóþ ê âåáñàéòó phpbb.com, èëè êîòîðûå ÷àñòè÷íî îòíîñÿòñÿ ê ïðîãðàììíîìó îáåñïå÷åíèþ phpBB ãðóïïû. Åñëè æå âû âñå-òàêè ïîøë¸òå e-mail Ãðóïïå phpBB îá èñïîëüçîâàíèè òðåòüåé ñòîðîíîé äàííîãî ôîðóìà, òî íå æäèòå ïîäðîáíîãî ïèñüìà, èëè âû ìîæåòå âîîáùå íå ïîëó÷èòü îòâåòà."); + +// +// This ends the FAQ entries +// + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_russian/lang_main.php b/includes/shared/phpbb2/language/lang_russian/lang_main.php new file mode 100644 index 00000000..5aabc061 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_russian/lang_main.php @@ -0,0 +1,1014 @@ + +// 2) ЕÑли не работает поиÑк по руÑÑкому текÑту, то раÑкомментируйте Ñледующую Ñтроку +// (может не Ñработать, еÑли нет ÑоответÑтвующей локали: проконÑультируйтеÑÑŒ у Ñвоего +// ÑиÑтемного админиÑтратора): + +// setlocale(LC_ALL, 'ru_RU.CP1251'); +$lang['ENCODING'] = 'windows-1251'; +$lang['DIRECTION'] = 'ltr'; +$lang['LEFT'] = 'left'; +$lang['RIGHT'] = 'right'; +$lang['DATE_FORMAT'] = 'd.m.Y'; // This should be changed to the default date format for your language, php date() format + +// +// Common, these terms are used +// extensively on several pages +// +$lang['Forum'] = 'Форум'; +$lang['Category'] = 'КатегориÑ'; +$lang['Topic'] = 'Тема'; +$lang['Topics'] = 'Темы'; +$lang['Replies'] = 'Ответов'; +$lang['Views'] = 'ПроÑмотров'; +$lang['Post'] = 'Сообщение'; // ??? +$lang['Posts'] = 'СообщениÑ'; // ??? +$lang['Posted'] = 'Добавлено'; +$lang['Username'] = 'ИмÑ'; +$lang['Password'] = 'Пароль'; +$lang['Email'] = 'Email'; +$lang['Poster'] = 'Ðвтор'; // ??? +$lang['Author'] = 'Ðвтор'; +$lang['Time'] = 'ВремÑ'; +$lang['Hours'] = 'ЧаÑÑ‹'; +$lang['Message'] = 'Сообщение'; + +$lang['1_Day'] = 'за поÑледний день'; +$lang['7_Days'] = 'за поÑледние 7 дней'; +$lang['2_Weeks'] = 'за поÑледние 2 недели'; +$lang['1_Month'] = 'за поÑледний меÑÑц'; +$lang['3_Months'] = 'за поÑледние 3 меÑÑца'; +$lang['6_Months'] = 'за поÑледние 6 меÑÑцев'; +$lang['1_Year'] = 'за поÑледний год'; + +$lang['Go'] = 'Перейти'; +$lang['Jump_to'] = 'Перейти'; +$lang['Submit'] = 'Отправить'; +$lang['Reset'] = 'Вернуть'; +$lang['Cancel'] = 'Отмена'; +$lang['Preview'] = 'Предв. проÑмотр'; +$lang['Confirm'] = 'Подтвердите'; +$lang['Spellcheck'] = 'ОрфографиÑ'; +$lang['Yes'] = 'Да'; +$lang['No'] = 'Ðет'; +$lang['Enabled'] = 'Включено'; +$lang['Disabled'] = 'Выключено'; +$lang['Error'] = 'Ошибка'; + +$lang['Next'] = 'След.'; +$lang['Previous'] = 'Пред.'; +$lang['Goto_page'] = 'Ðа Ñтраницу'; +$lang['Joined'] = 'ЗарегиÑтрирован'; +$lang['IP_Address'] = 'ÐÐ´Ñ€ÐµÑ IP'; + +$lang['Select_forum'] = 'Выберите форум'; +$lang['View_latest_post'] = 'ПоÑмотреть поÑледнее Ñообщение'; +$lang['View_newest_post'] = 'Самое новое Ñообщение'; +$lang['Page_of'] = 'Страница %d из %d'; // Replaces with: Page 1 of 2 for example + +$lang['ICQ'] = 'ICQ Number'; +$lang['AIM'] = 'AIM Address'; +$lang['MSNM'] = 'MSN Messenger'; +$lang['YIM'] = 'Yahoo Messenger'; + +$lang['Forum_Index'] = 'СпиÑок форумов %s'; + +$lang['Post_new_topic'] = 'Ðачать новую тему'; +$lang['Reply_to_topic'] = 'Ответить на тему'; +$lang['Reply_with_quote'] = 'Ответить Ñ Ñ†Ð¸Ñ‚Ð°Ñ‚Ð¾Ð¹'; + +$lang['Click_return_topic'] = '%sВернутьÑÑ Ð² тему%s'; +$lang['Click_return_login'] = '%sПопробовать ещё раз%s'; +$lang['Click_return_forum'] = '%sВернутьÑÑ Ð² форум%s'; +$lang['Click_view_message'] = '%sПроÑмотреть ваше Ñообщение%s'; +$lang['Click_return_modcp'] = '%sВернутьÑÑ Ðº панели модерации%s'; +$lang['Click_return_group'] = '%sВернутьÑÑ Ðº информации о группах%s'; + +$lang['Admin_panel'] = 'Перейти в админиÑтраторÑкий раздел'; + +$lang['Board_disable'] = 'Извините, Ñти форумы отключены. Попробуйте зайти попозже'; + + +// +// Global Header strings +// +$lang['Registered_users'] = 'ЗарегиÑтрированные пользователи:'; +$lang['Browsing_forum'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ñтот форум проÑматривают:'; +$lang['Online_users_zero_total'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ñетителей на форуме: 0, из них '; +$lang['Online_users_total'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ñетителей на форуме: %d, из них '; +$lang['Online_user_total'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ñетителей на форуме: %d, из них '; +$lang['Reg_users_zero_total'] = 'зарегиÑтрированных: 0, '; +$lang['Reg_users_total'] = 'зарегиÑтрированных: %d, '; +$lang['Reg_user_total'] = 'зарегиÑтрированных: %d, '; +$lang['Hidden_users_zero_total'] = 'Ñкрытых: 0 и '; +$lang['Hidden_users_total'] = 'Ñкрытых: %d и '; +$lang['Hidden_user_total'] = 'Ñкрытых: %d и '; +$lang['Guest_users_zero_total'] = 'гоÑтей: 0'; +$lang['Guest_users_total'] = 'гоÑтей: %d'; +$lang['Guest_user_total'] = 'гоÑтей: %d'; +$lang['Record_online_users'] = 'Больше вÑего поÑетителей (%s) здеÑÑŒ было %s'; // first %s = number of users, second %s is the date. + +$lang['Admin_online_color'] = '%sÐдминиÑтратор%s'; +$lang['Mod_online_color'] = '%sМодератор%s'; + +$lang['You_last_visit'] = 'Ð’Ñ‹ поÑледний раз заходили %s'; +$lang['Current_time'] = 'Текущее Ð²Ñ€ÐµÐ¼Ñ %s'; // %s replaced by time + +$lang['Search_new'] = 'Ðайти ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ поÑледнего поÑещениÑ'; +$lang['Search_your_posts'] = 'Ðайти ваши ÑообщениÑ'; +$lang['Search_unanswered'] = 'Ðайти ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÐµÐ· ответов'; + +$lang['Register'] = 'РегиÑтрациÑ'; +$lang['Profile'] = 'Профиль'; +$lang['Edit_profile'] = 'Редактировать ваш профиль'; +$lang['Search'] = 'ПоиÑк'; +$lang['Memberlist'] = 'Пользователи'; +$lang['FAQ'] = 'FAQ'; +$lang['BBCode_guide'] = 'РуководÑтво по BBCode'; +$lang['Usergroups'] = 'Группы'; +$lang['Last_Post'] = 'ПоÑледнее Ñообщение'; +$lang['Moderator'] = 'Модератор'; +$lang['Moderators'] = 'Модераторы'; + + +// +// Stats block text +// +$lang['Posted_articles_zero_total'] = 'Ðаши пользователи не оÑтавили ни одного ÑообщениÑ'; // Number of posts +$lang['Posted_article_total'] = 'Ðаши пользователи оÑтавили Ñообщений: %d'; // Number of posts +$lang['Posted_articles_total'] = 'Ðаши пользователи оÑтавили Ñообщений: %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'У Ð½Ð°Ñ Ð½ÐµÑ‚ зарегиÑтрированных пользователей'; // # registered users +$lang['Registered_user_total'] = 'Ð’Ñего зарегиÑтрированных пользователей: %d'; // # registered users +$lang['Registered_users_total'] = 'Ð’Ñего зарегиÑтрированных пользователей: %d'; // # registered users +$lang['Newest_user'] = 'ПоÑледний зарегиÑтрированный пользователь: %s%s%s'; // username + +$lang['No_new_posts_last_visit'] = 'Ðет новых Ñообщений Ñ Ð¿Ð¾Ñледнего поÑещениÑ'; +$lang['No_new_posts'] = 'Ðет новых Ñообщений'; +$lang['New_posts'] = 'Ðовые ÑообщениÑ'; +$lang['New_post'] = 'Ðовое Ñообщение'; +$lang['No_new_posts_hot'] = 'Ðет новых Ñообщений [ ПопулÑÑ€Ð½Ð°Ñ Ñ‚ÐµÐ¼Ð° ]'; +$lang['New_posts_hot'] = 'Ðовые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ [ ПопулÑÑ€Ð½Ð°Ñ Ñ‚ÐµÐ¼Ð° ]'; +$lang['No_new_posts_locked'] = 'Ðет новых Ñообщений [ Тема закрыта ]'; +$lang['New_posts_locked'] = 'Ðовые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ [ Тема закрыта ]'; +$lang['Forum_is_locked'] = 'Форум закрыт'; + + +// +// Login +// +$lang['Enter_password'] = 'Введите ваше Ð¸Ð¼Ñ Ð¸ пароль Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему'; +$lang['Login'] = 'Вход'; +$lang['Logout'] = 'Выход'; + +$lang['Forgotten_password'] = 'Забыли пароль?'; + +$lang['Log_me_in'] = 'ÐвтоматичеÑки входить при каждом поÑещении'; + +$lang['Error_login'] = 'Ð’Ñ‹ ввели неверное/неактивное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ неверный пароль.'; + + +// +// Index page +// +$lang['Index'] = 'ГлавнаÑ'; +$lang['No_Posts'] = 'Ðет Ñообщений'; +$lang['No_forums'] = 'Ðа Ñтом Ñайте нет форумов'; + +$lang['Private_Message'] = 'Личное Ñообщение'; +$lang['Private_Messages'] = 'Личные ÑообщениÑ'; +$lang['Who_is_Online'] = 'Кто ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме'; + +$lang['Mark_all_forums'] = 'Отметить вÑе форумы как прочтённые'; +$lang['Forums_marked_read'] = 'Ð’Ñе форумы были отмечены как прочтённые'; + + +// +// Viewforum +// +$lang['View_forum'] = 'ПроÑмотр форума'; + +$lang['Forum_not_exist'] = 'Форума, который вы выбрали, не ÑущеÑтвует'; +$lang['Reached_on_error'] = 'Ð’Ñ‹ попали на Ñту Ñтраницу из-за ошибки'; + +$lang['Display_topics'] = 'Показать темы'; +$lang['All_Topics'] = 'вÑе темы'; + +$lang['Topic_Announcement'] = 'ОбъÑвление:'; +$lang['Topic_Sticky'] = 'Прилеплена:'; +$lang['Topic_Moved'] = 'Перемещена:'; +$lang['Topic_Poll'] = '[ ÐžÐ¿Ñ€Ð¾Ñ ]'; + +$lang['Mark_all_topics'] = 'Отметить вÑе темы как прочтённые'; +$lang['Topics_marked_read'] = 'Ð’Ñе темы в Ñтом форуме были отмечены как прочтённые'; + +$lang['Rules_post_can'] = 'Ð’Ñ‹ можете начинать темы'; +$lang['Rules_post_cannot'] = 'Ð’Ñ‹ не можете начинать темы'; +$lang['Rules_reply_can'] = 'Ð’Ñ‹ можете отвечать на ÑообщениÑ'; +$lang['Rules_reply_cannot'] = 'Ð’Ñ‹ не можете отвечать на ÑообщениÑ'; +$lang['Rules_edit_can'] = 'Ð’Ñ‹ можете редактировать Ñвои ÑообщениÑ'; +$lang['Rules_edit_cannot'] = 'Ð’Ñ‹ не можете редактировать Ñвои ÑообщениÑ'; +$lang['Rules_delete_can'] = 'Ð’Ñ‹ можете удалÑÑ‚ÑŒ Ñвои ÑообщениÑ'; +$lang['Rules_delete_cannot'] = 'Ð’Ñ‹ не можете удалÑÑ‚ÑŒ Ñвои ÑообщениÑ'; +$lang['Rules_vote_can'] = 'Ð’Ñ‹ можете голоÑовать в опроÑах'; +$lang['Rules_vote_cannot'] = 'Ð’Ñ‹ не можете голоÑовать в опроÑах'; +$lang['Rules_moderate'] = 'Ð’Ñ‹ можете %sмодерировать Ñтот форум%s'; // %s replaced by a href + +$lang['No_topics_post_one'] = 'Ð’ Ñтом форуме пока нет Ñообщений
    Щёлкните Ðачать новую тему, и ваше Ñообщение Ñтанет первым.'; + + +// +// Viewtopic +// +$lang['View_topic'] = 'ПроÑмотр темы'; + +$lang['Guest'] = 'ГоÑÑ‚ÑŒ'; +$lang['Post_subject'] = 'Заголовок ÑообщениÑ'; +$lang['View_next_topic'] = 'Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñ‚ÐµÐ¼Ð°'; +$lang['View_previous_topic'] = 'ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñ‚ÐµÐ¼Ð°'; +$lang['Submit_vote'] = 'ПроголоÑовать'; +$lang['View_results'] = 'Результаты'; + +$lang['No_newer_topics'] = 'Ð’ Ñтом форуме нет более новых тем'; +$lang['No_older_topics'] = 'Ð’ Ñтом форуме нет более Ñтарых тем'; +$lang['Topic_post_not_exist'] = 'Темы, которую вы запроÑили, не ÑущеÑтвует.'; +$lang['No_posts_topic'] = 'Ð’ Ñтой теме нет Ñообщений'; + +$lang['Display_posts'] = 'Показать ÑообщениÑ'; +$lang['All_Posts'] = 'вÑе ÑообщениÑ'; +$lang['Newest_First'] = 'ÐÐ°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½Ð¾Ð²Ñ‹Ñ…'; +$lang['Oldest_First'] = 'ÐÐ°Ñ‡Ð¸Ð½Ð°Ñ Ñо Ñтарых'; + +$lang['Back_to_top'] = 'ВернутьÑÑ Ðº началу'; + +$lang['Read_profile'] = 'ПоÑмотреть профиль'; // Followed by username of poster +$lang['Send_email'] = 'Отправить e-mail '; // Followed by username of poster +$lang['Visit_website'] = 'ПоÑетить Ñайт автора'; +$lang['ICQ_status'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ICQ'; +$lang['Edit_delete_post'] = 'Изменить/удалить Ñто Ñообщение'; +$lang['View_IP'] = 'Показать IP Ð°Ð´Ñ€ÐµÑ Ð°Ð²Ñ‚Ð¾Ñ€Ð°'; +$lang['Delete_post'] = 'Удалить Ñто Ñообщение'; + +$lang['wrote'] = 'пиÑал(а)'; // proceeds the username and is followed by the quoted text +$lang['Quote'] = 'Цитата'; // comes before bbcode quote output. +$lang['Code'] = 'Код'; // comes before bbcode code output. + +$lang['Edited_time_total'] = 'ПоÑледний раз редактировалоÑÑŒ: %s (%s), вÑего редактировалоÑÑŒ %d раз'; // Last edited by me on 12 Oct 2001, edited 1 time in total +$lang['Edited_times_total'] = 'ПоÑледний раз редактировалоÑÑŒ: %s (%s), вÑего редактировалоÑÑŒ %d раз(а)'; // Last edited by me on 12 Oct 2001, edited 2 times in total + +$lang['Lock_topic'] = 'Закрыть тему'; +$lang['Unlock_topic'] = 'Вновь открыть тему'; +$lang['Move_topic'] = 'ПеренеÑти тему'; +$lang['Delete_topic'] = 'Удалить тему'; +$lang['Split_topic'] = 'Разделить тему'; + +$lang['Stop_watching_topic'] = 'ПереÑтать Ñледить за ответами'; +$lang['Start_watching_topic'] = 'Следить за ответами в теме'; +$lang['No_longer_watching'] = 'Ð’Ñ‹ больше не Ñледите за ответами в Ñтой теме'; +$lang['You_are_watching'] = 'Теперь вы Ñледите за ответами в Ñтой теме'; + +$lang['Total_votes'] = 'Ð’Ñего проголоÑовало'; + +// +// Posting/Replying (Not private messaging!) +// +$lang['Message_body'] = 'Сообщение'; +$lang['Topic_review'] = 'Обзор темы'; + +$lang['No_post_mode'] = 'Ðе указан режим ÑообщениÑ'; + +$lang['Post_a_new_topic'] = 'Ðачать новую тему'; +$lang['Post_a_reply'] = 'Ответить'; +$lang['Post_topic_as'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñоздаваемой темы'; +$lang['Edit_Post'] = 'Редактировать Ñообщение'; +$lang['Options'] = 'ÐаÑтройки'; + +$lang['Post_Announcement'] = 'ОбъÑвление'; +$lang['Post_Sticky'] = 'ПрилепленнаÑ'; +$lang['Post_Normal'] = 'ОбычнаÑ'; + +$lang['Confirm_delete'] = 'Ð’Ñ‹ уверены, что хотите удалить Ñто Ñообщение?'; +$lang['Confirm_delete_poll'] = 'Ð’Ñ‹ уверены, что хотите удалить Ñтот опроÑ?'; + +$lang['Flood_Error'] = 'Ð’Ñ‹ не можете отправить Ñледующее Ñообщение Ñразу поÑле предыдущего. ПожалуйÑта, попробуйте чуть попозже.'; +$lang['Empty_subject'] = 'Ð’Ñ‹ должны указать заголовок ÑообщениÑ, когда начинаете новую тему'; +$lang['Empty_message'] = 'Ð’Ñ‹ должны ввеÑти текÑÑ‚ ÑообщениÑ'; +$lang['Forum_locked'] = 'Этот форум закрыт, вы не можете пиÑать новые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ редактировать Ñтарые.'; +$lang['Topic_locked'] = 'Эта тема закрыта, вы не можете пиÑать ответы и редактировать ÑообщениÑ.'; +$lang['No_post_id'] = 'Ð’Ñ‹ должны выбрать Ñообщение Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ'; +$lang['No_topic_id'] = 'Ð’Ñ‹ должны выбрать тему Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°'; +$lang['No_valid_mode'] = 'Ð’Ñ‹ можете только Ñоздавать темы, отвечать и редактировать ÑообщениÑ. ВернитеÑÑŒ и попробуйте ещё раз.'; +$lang['No_such_post'] = 'Сообщение отÑутÑтвует. ВернитеÑÑŒ и попробуйте ещё раз.'; +$lang['Edit_own_posts'] = 'Извините, вы можете редактировать только ваши ÑобÑтвенные ÑообщениÑ'; +$lang['Delete_own_posts'] = 'Извините, вы можете удалÑÑ‚ÑŒ только ваши ÑобÑтвенные ÑообщениÑ'; +$lang['Cannot_delete_replied'] = 'Извините, вы не можете удалить Ñообщение, на которое были получены ответы'; +$lang['Cannot_delete_poll'] = 'Извините, вы не можете удалить активный опроÑ'; +$lang['Empty_poll_title'] = 'Ð’Ñ‹ должны ввеÑти заголовок Ð´Ð»Ñ Ð¾Ð¿Ñ€Ð¾Ñа'; +$lang['To_few_poll_options'] = 'Ð’Ñ‹ должны ввеÑти не менее двух вариантов ответа'; +$lang['To_many_poll_options'] = 'Ð’Ñ‹ попыталиÑÑŒ ввеÑти Ñлишком много вариантов ответа'; +$lang['Post_has_no_poll'] = 'Ð’ Ñтом Ñообщении нет опроÑа'; +$lang['Already_voted'] = 'Ð’Ñ‹ уже голоÑовали в Ñтом опроÑе'; +$lang['No_vote_option'] = 'Ð’Ñ‹ должны указать вариант ответа при голоÑовании'; + +$lang['Add_poll'] = 'Добавить опроÑ'; +$lang['Add_poll_explain'] = 'ЕÑли вы не хотите добавлÑÑ‚ÑŒ Ð¾Ð¿Ñ€Ð¾Ñ Ðº вашему Ñообщению, оÑтавьте Ð¿Ð¾Ð»Ñ Ð¿ÑƒÑтыми'; +$lang['Poll_question'] = 'ВопроÑ'; +$lang['Poll_option'] = 'Вариант ответа'; +$lang['Add_option'] = 'Добавить ещё вариант'; +$lang['Update'] = 'Обновить'; +$lang['Delete'] = 'Удалить'; +$lang['Poll_for'] = 'ÐžÐ¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ идти'; +$lang['Days'] = 'Дней'; // This is used for the Run poll for ... Days + in admin_forums for pruning +$lang['Poll_for_explain'] = '[ Введите 0 или оÑтавьте поле пуÑтым, чтобы Ð¾Ð¿Ñ€Ð¾Ñ Ð½Ðµ кончалÑÑ ]'; +$lang['Delete_poll'] = 'Удалить опроÑ'; + +$lang['Disable_HTML_post'] = 'Отключить в Ñтом Ñообщении HTML'; +$lang['Disable_BBCode_post'] = 'Отключить в Ñтом Ñообщении BBCode'; +$lang['Disable_Smilies_post'] = 'Отключить в Ñтом Ñообщении Ñмайлики'; + +$lang['HTML_is_ON'] = 'HTML ВКЛЮЧЕÐ'; +$lang['HTML_is_OFF'] = 'HTML ВЫКЛЮЧЕÐ'; +$lang['BBCode_is_ON'] = '%sBBCode%s ВКЛЮЧЕÐ'; +$lang['BBCode_is_OFF'] = '%sBBCode%s ВЫКЛЮЧЕÐ'; +$lang['Smilies_are_ON'] = 'Смайлики ВКЛЮЧЕÐЫ'; +$lang['Smilies_are_OFF'] = 'Смайлики ВЫКЛЮЧЕÐЫ'; + +$lang['Attach_signature'] = 'ПриÑоединить подпиÑÑŒ (подпиÑÑŒ можно изменÑÑ‚ÑŒ в профиле)'; +$lang['Notify'] = 'Сообщать мне о получении ответа'; +$lang['Delete_post'] = 'Удалить Ñообщение'; + +$lang['Stored'] = 'Ваше Ñообщение было уÑпешно добавлено'; +$lang['Deleted'] = 'Ваше Ñообщение было уÑпешно удалено'; +$lang['Poll_delete'] = 'Ваш Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» уÑпешно удалён'; +$lang['Vote_cast'] = 'Ваш Ð³Ð¾Ð»Ð¾Ñ Ð±Ñ‹Ð» учтён'; + +$lang['Topic_reply_notification'] = 'Уведомление об ответе в теме'; + +$lang['bbcode_b_help'] = 'Жирный текÑÑ‚: [b]текÑÑ‚[/b] (alt+b)'; +$lang['bbcode_i_help'] = 'Ðаклонный текÑÑ‚: [i]текÑÑ‚[/i] (alt+i)'; +$lang['bbcode_u_help'] = 'Подчёркнутый текÑÑ‚: [u]текÑÑ‚[/u] (alt+u)'; +$lang['bbcode_q_help'] = 'Цитата: [quote]текÑÑ‚[/quote] (alt+q)'; +$lang['bbcode_c_help'] = 'Код (программа): [code]код[/code] (alt+c)'; +$lang['bbcode_l_help'] = 'СпиÑок: [list]текÑÑ‚[/list] (alt+l)'; +$lang['bbcode_o_help'] = 'Ðумерованный ÑпиÑок: [list=]текÑÑ‚[/list] (alt+o)'; +$lang['bbcode_p_help'] = 'Ð’Ñтавить картинку: [img]http://image_url[/img] (alt+p)'; +$lang['bbcode_w_help'] = 'Ð’Ñтавить ÑÑылку: [url]http://url[/url] или [url=http://url]текÑÑ‚ ÑÑылки[/url] (alt+w)'; +$lang['bbcode_a_help'] = 'Закрыть вÑе открытые теги bbCode'; +$lang['bbcode_s_help'] = 'Цвет шрифта: [color=red]текÑÑ‚[/color] ПодÑказка: можно иÑпользовать color=#FF0000'; +$lang['bbcode_f_help'] = 'Размер шрифта: [size=x-small]маленький текÑÑ‚[/size]'; + +$lang['Emoticons'] = 'Смайлики'; +$lang['More_emoticons'] = 'Дополнительные Ñмайлики'; + +$lang['Font_color'] = 'Цвет шрифта'; +$lang['color_default'] = 'По умолчанию'; +$lang['color_dark_red'] = 'Тёмно-краÑный'; +$lang['color_red'] = 'КраÑный'; +$lang['color_orange'] = 'Оранжевый'; +$lang['color_brown'] = 'Коричневый'; +$lang['color_yellow'] = 'Жёлтый'; +$lang['color_green'] = 'Зелёный'; +$lang['color_olive'] = 'Оливковый'; +$lang['color_cyan'] = 'Голубой'; +$lang['color_blue'] = 'Синий'; +$lang['color_dark_blue'] = 'Тёмно-Ñиний'; +$lang['color_indigo'] = 'Индиго'; +$lang['color_violet'] = 'Фиолетовый'; +$lang['color_white'] = 'Белый'; +$lang['color_black'] = 'Чёрный'; + +$lang['Font_size'] = 'Размер шрифта'; +$lang['font_tiny'] = 'Очень маленький'; +$lang['font_small'] = 'Маленький'; +$lang['font_normal'] = 'Обычный'; +$lang['font_large'] = 'Большой'; +$lang['font_huge'] = 'Огромный'; + +$lang['Close_Tags'] = 'Закрыть теги'; +$lang['Styles_tip'] = 'ПодÑказка: Можно быÑтро применить Ñтили к выделенному текÑту'; + + +// +// Private Messaging +// +$lang['Private_Messaging'] = 'Личные ÑообщениÑ'; + +$lang['Login_check_pm'] = 'Войти и проверить личные ÑообщениÑ'; +$lang['New_pms'] = 'Ðовых Ñообщений: %d'; // You have 2 new messages +$lang['New_pm'] = 'Ðовых Ñообщений: %d'; // You have 1 new message +$lang['No_new_pm'] = 'Ðовых Ñообщений нет'; +$lang['Unread_pms'] = 'Ðепрочитанных Ñообщений: %d'; +$lang['Unread_pm'] = 'Ðепрочитанных Ñообщений: %d'; +$lang['No_unread_pm'] = 'Ðет непрочитанных Ñообщений'; +$lang['You_new_pm'] = 'Вам пришло новое личное Ñообщение'; +$lang['You_new_pms'] = 'Вам пришли новые личные ÑообщениÑ'; +$lang['You_no_new_pm'] = 'У Ð²Ð°Ñ Ð½ÐµÑ‚ новых личных Ñообщений'; + +$lang['Unread_message'] = 'Ðепрочитанное Ñообщение'; +$lang['Read_message'] = 'Прочитанное Ñообщение'; + +$lang['Read_pm'] = 'Прочитать Ñообщение'; +$lang['Post_new_pm'] = 'ÐапиÑать новое Ñообщение'; +$lang['Post_reply_pm'] = 'Ответить на Ñообщение'; +$lang['Post_quote_pm'] = 'Ответить Ñ Ñ†Ð¸Ñ‚Ð°Ñ‚Ð¾Ð¹'; +$lang['Edit_pm'] = 'Редактировать Ñообщение'; + +$lang['Inbox'] = 'ВходÑщие'; +$lang['Outbox'] = 'ИÑходÑщие'; +$lang['Savebox'] = 'Сохраненные'; +$lang['Sentbox'] = 'Отправленные'; +$lang['Flag'] = 'Флаг'; +$lang['Subject'] = 'Тема'; +$lang['From'] = 'От'; +$lang['To'] = 'Кому'; +$lang['Date'] = 'Дата'; +$lang['Mark'] = 'Отметка'; +$lang['Sent'] = 'Отправлено'; +$lang['Saved'] = 'Сохранено'; +$lang['Delete_marked'] = 'Удалить отмеченное'; +$lang['Delete_all'] = 'Удалить вÑе'; +$lang['Save_marked'] = 'Сохранить отмеченное'; +$lang['Save_message'] = 'Сохранить Ñообщение'; +$lang['Delete_message'] = 'Удалить Ñообщение'; + +$lang['Display_messages'] = 'Показать ÑообщениÑ'; // Followed by number of days/weeks/months +$lang['All_Messages'] = 'Ð’Ñе ÑообщениÑ'; + +$lang['No_messages_folder'] = 'Ð’ Ñтой папке нет Ñообщений'; + +$lang['PM_disabled'] = 'ВозможноÑÑ‚ÑŒ отправки личных Ñообщений на Ñтих форумах была отключена'; +$lang['Cannot_send_privmsg'] = 'Извините, вам не разрешено отправлÑÑ‚ÑŒ личные ÑообщениÑ'; +$lang['No_to_user'] = 'Ð’Ñ‹ должны указать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ Ñтого ÑообщениÑ'; +$lang['No_such_user'] = 'Извините, но такого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ ÑущеÑтвует'; + +$lang['Disable_HTML_pm'] = 'Отключить в Ñтом Ñообщении HTML'; +$lang['Disable_BBCode_pm'] = 'Отключить в Ñтом Ñообщении BBCode'; +$lang['Disable_Smilies_pm'] = 'Отключить в Ñтом Ñообщении Ñмайлики'; + +$lang['Message_sent'] = 'Ваше Ñообщение было отправлено'; + +$lang['Click_return_inbox'] = '%sВернутьÑÑ Ð² папку «Ð’ходÑщие»%s'; +$lang['Click_return_index'] = '%sВернутьÑÑ Ðº ÑпиÑку форумов%s'; + +$lang['Send_a_new_message'] = 'Отправить личное Ñообщение'; +$lang['Send_a_reply'] = 'Ответить на личное Ñообщение'; +$lang['Edit_message'] = 'Редактировать личное Ñообщение'; + +$lang['Notification_subject'] = 'Вам пришло новое личное Ñообщение'; + +$lang['Find_username'] = 'Ðайти пользователÑ'; +$lang['Find'] = 'Ðайти'; +$lang['No_match'] = 'Ðе найдено'; + +$lang['No_post_id'] = 'Ðе указан ID'; +$lang['No_such_folder'] = 'Такой папки нет'; +$lang['No_folder'] = 'Ðе указана папка'; + +$lang['Mark_all'] = 'Выделить вÑе'; +$lang['Unmark_all'] = 'СнÑÑ‚ÑŒ выделение'; + +$lang['Confirm_delete_pm'] = 'Ð’Ñ‹ уверены, что хотите удалить Ñто Ñообщение?'; +$lang['Confirm_delete_pms'] = 'Ð’Ñ‹ уверены, что хотите удалить Ñти ÑообщениÑ?'; + +$lang['Inbox_size'] = 'Ваша папка «Ð’ходÑщие» заполнена на %d%%'; // eg. Your Inbox is 50% full +$lang['Sentbox_size'] = 'Ваша папка «ÐžÑ‚правленные» заполнена на %d%%'; +$lang['Savebox_size'] = 'Ваша папка «Ð¡Ð¾Ñ…раненные» заполнена на %d%%'; + +$lang['Click_view_privmsg'] = '%sПерейти в папку «Ð’ходÑщие»%s'; + + +// +// Profiles/Registration +// +$lang['Viewing_user_profile'] = 'Профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s'; // %s is username +$lang['About_user'] = 'О пользователе %s'; // Ñлово 'пользователь' - чтобы не заморачиватьÑÑ Ñ Ð¼ÑƒÐ¶Ñким/женÑким родом + +$lang['Preferences'] = 'Личные наÑтройки'; +$lang['Items_required'] = 'ÐŸÐ¾Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‡ÐµÐ½Ð½Ñ‹Ðµ * обÑзательны к заполнению, еÑли не указано обратное'; +$lang['Registration_info'] = 'РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ'; +$lang['Profile_info'] = 'Профиль'; +$lang['Profile_info_warn'] = 'Эта Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ в открытом доÑтупе'; +$lang['Avatar_panel'] = 'Управление аватарой'; +$lang['Avatar_gallery'] = 'Ð“Ð°Ð»ÐµÑ€ÐµÑ Ð°Ð²Ð°Ñ‚Ð°Ñ€'; + +$lang['Website'] = 'Сайт'; +$lang['Location'] = 'Откуда'; +$lang['Contact'] = 'Как ÑвÑзатьÑÑ Ñ'; // Как ÑвÑзатьÑÑ Ñ Vasya_Poopkin +$lang['Email_address'] = 'ÐÐ´Ñ€ÐµÑ e-mail'; +$lang['Email'] = 'E-mail'; +$lang['Send_private_message'] = 'Отправить личное Ñообщение'; +$lang['Hidden_email'] = '[ Ñкрыт ]'; +$lang['Search_user_posts'] = 'ИÑкать вÑе ÑÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñтого пользователÑ'; +$lang['Interests'] = 'ИнтереÑÑ‹'; +$lang['Occupation'] = 'Род занÑтий'; +$lang['Poster_rank'] = 'Звание'; + +$lang['Total_posts'] = 'Ð’Ñего Ñообщений'; +$lang['User_post_pct_stats'] = '%.2f%% от общего чиÑла'; // 15% of total +$lang['User_post_day_stats'] = '%.2f Ñообщений в день'; // 1.5 posts per day +$lang['Search_user_posts'] = 'Ðайти вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s'; // Find all posts by username + +$lang['No_user_id_specified'] = 'Извините, такого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ ÑущеÑтвует'; +$lang['Wrong_Profile'] = 'Ð’Ñ‹ не можете редактировать чужой профиль.'; + +$lang['Only_one_avatar'] = 'Может быть указан только один тип аватары'; +$lang['File_no_data'] = 'Файл по указанному вами URL не Ñодержит данных'; +$lang['No_connection_URL'] = 'Ðевозможно уÑтановить ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ вами URL'; +$lang['Incomplete_URL'] = 'Ð’Ñ‹ указали неполный URL'; +$lang['Wrong_remote_avatar_format'] = 'Ðеверный URL удалённой аватары'; +$lang['No_send_account_inactive'] = 'Извините, но пароль не может быть выÑлан, так как ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ неактивна. ОбратитеÑÑŒ к админиÑтратору форума за дополнительной информацией.'; + +$lang['Always_smile'] = 'Смайлики вÑегда включены'; +$lang['Always_html'] = 'HTML вÑегда включён'; +$lang['Always_bbcode'] = 'BBCode вÑегда включён'; +$lang['Always_add_sig'] = 'Ð’Ñегда приÑоединÑÑ‚ÑŒ мою подпиÑÑŒ'; +$lang['Always_notify'] = 'Ð’Ñегда Ñообщать мне об ответах'; +$lang['Always_notify_explain'] = 'Когда кто-нибудь ответит на тему, в которую вы пиÑали, вам выÑылаетÑÑ e-mail. Это можно также наÑтроить при размещении ÑообщениÑ.'; + +$lang['Board_style'] = 'Внешний вид форумов'; +$lang['Board_lang'] = 'Язык'; +$lang['No_themes'] = 'Ð’ базе нет цветовых Ñхем'; +$lang['Timezone'] = 'ЧаÑовой поÑÑ'; +$lang['Date_format'] = 'Формат даты'; +$lang['Date_format_explain'] = 'СинтакÑÐ¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ‡ÐµÐ½ функции date() Ñзыка PHP'; +$lang['Signature'] = 'ПодпиÑÑŒ'; +$lang['Signature_explain'] = 'Это текÑÑ‚, который можно добавлÑÑ‚ÑŒ к размещаемым вами ÑообщениÑм. Длина его ограничена %d Ñимволами.'; +$lang['Public_view_email'] = 'Ð’Ñегда показывать мой Ð°Ð´Ñ€ÐµÑ e-mail'; + +$lang['Current_password'] = 'Текущий пароль'; +$lang['New_password'] = 'Ðовый пароль'; +$lang['Confirm_password'] = 'Подтвердите пароль'; +$lang['Confirm_password_explain'] = 'Ð’Ñ‹ должны указать ваш текущий пароль, еÑли хотите изменить его или поменÑÑ‚ÑŒ Ñвой Ð°Ð´Ñ€ÐµÑ e-mail.'; +$lang['password_if_changed'] = 'Указывайте пароль только еÑли вы хотите его поменÑÑ‚ÑŒ'; +$lang['password_confirm_if_changed'] = 'Подтверждать пароль нужно в том Ñлучае, еÑли вы изменили его выше.'; + +$lang['Avatar'] = 'Ðватара'; +$lang['Avatar_explain'] = 'Показывает небольшое изображение под информацией о Ð²Ð°Ñ Ð² ÑообщениÑÑ…. Может быть показано только одно изображение, шириной не более %d пикÑелов, выÑотой не более %d пикÑелов и объёмом не более %d кб.'; +$lang['Upload_Avatar_file'] = 'Загрузить аватару Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ компьютера'; +$lang['Upload_Avatar_URL'] = 'Загрузить аватару Ñ URL'; +$lang['Upload_Avatar_URL_explain'] = 'Введите URL по которому находитÑÑ Ñ„Ð°Ð¹Ð» Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼, он будет Ñкопирован на Ñтот Ñайт.'; +$lang['Pick_local_Avatar'] = 'Выбрать аватару из галереи'; +$lang['Link_remote_Avatar'] = 'Показывать аватару Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñервера'; +$lang['Link_remote_Avatar_explain'] = 'Введите URL изображениÑ, на которое вы хотите ÑоÑлатьÑÑ.'; +$lang['Avatar_URL'] = 'URL Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ñ‹'; +$lang['Select_from_gallery'] = 'Выбрать аватару из галереи'; +$lang['View_avatar_gallery'] = 'Показать галерею'; + +$lang['Select_avatar'] = 'Выберите аватару'; +$lang['Return_profile'] = 'ВернутьÑÑ Ðº профилю'; +$lang['Select_category'] = 'Выберите категорию'; + +$lang['Delete_Image'] = 'Удалить изображение'; +$lang['Current_Image'] = 'Текущее изображение'; + +$lang['Notify_on_privmsg'] = 'УведомлÑÑ‚ÑŒ о новых личных ÑообщениÑÑ…'; +$lang['Popup_on_privmsg'] = 'Открывать новое окно при новом личном Ñообщении'; +$lang['Popup_on_privmsg_explain'] = 'Ð’ некоторых шаблонах может открыватьÑÑ Ð½Ð¾Ð²Ð¾Ðµ окно браузера Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸ÐµÐ¼ о приходе нового личного ÑообщениÑ.'; +$lang['Hide_user'] = 'Скрывать ваше пребывание на форуме'; + +$lang['Profile_updated'] = 'Ваш профиль был изменён'; +$lang['Profile_updated_inactive'] = 'Ваш профиль был изменён, но вы изменили важные данные, так что теперь ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ неактивна. Проверьте ваш почтовый Ñщик, чтобы узнать как вновь активизировать учётную запиÑÑŒ или, еÑли требуетÑÑ Ð¾Ð´Ð¾Ð±Ñ€ÐµÐ½Ð¸Ðµ админиÑтратора, подождите пока Ñто Ñделает админиÑтратор.'; + +$lang['Password_mismatch'] = 'Введённые пароли не Ñовпадают'; +$lang['Current_password_mismatch'] = 'Введённый вами пароль не Ñовпадает Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ из базы'; +$lang['Password_long'] = 'Ваш пароль должен быть не длиннее 32 Ñимволов'; +$lang['Username_taken'] = 'Извините, пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует'; +$lang['Username_invalid'] = 'Извините, Ñто Ð¸Ð¼Ñ Ñодержит неподходÑщие Ñимволы, (например ")'; +$lang['Username_disallowed'] = 'Извините, Ñто Ð¸Ð¼Ñ Ð±Ñ‹Ð»Ð¾ запрещено к иÑпользованию'; +$lang['Email_taken'] = 'Извините, Ñтот Ð°Ð´Ñ€ÐµÑ e-mail уже занÑÑ‚ другим пользователем'; +$lang['Email_banned'] = 'Извините, Ñтот Ð°Ð´Ñ€ÐµÑ e-mail находитÑÑ Ð² чёрном ÑпиÑке'; +$lang['Email_invalid'] = 'Извините, Ñтот Ð°Ð´Ñ€ÐµÑ e-mail неправилен'; +$lang['Invalid_username'] = 'Запрошенное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ занÑто, запрещено, либо Ñодержит неподходÑщие Ñимволы (например ")'; +$lang['Signature_too_long'] = 'Слишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ'; +$lang['Fields_empty'] = 'Ð’Ñ‹ должны заполнить обÑзательные полÑ'; +$lang['Avatar_filetype'] = 'Файл аватары должен быть .jpg, .gif или .png'; +$lang['Avatar_filesize'] = 'Объём файла аватары должен быть не более %d кб'; +$lang['Avatar_imagesize'] = 'Ðватара должна быть не больше %d пикÑелов в ширину и %d пикÑелов в выÑоту'; + +$lang['Welcome_subject'] = 'Добро пожаловать на форумы %s'; +$lang['New_account_subject'] = 'Ðовый пользователь'; +$lang['Account_activated_subject'] = 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ активизирована'; + +$lang['Account_added'] = 'СпаÑибо за региÑтрацию, ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была Ñоздана. Ð’Ñ‹ можете войти в ÑиÑтему, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ð°ÑˆÐµ Ð¸Ð¼Ñ Ð¸ пароль.'; +$lang['Account_inactive'] = 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была Ñоздана. Ðа Ñтом форуме требуетÑÑ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи, ключ Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ð·Ð°Ñ†Ð¸Ð¸ был выÑлан на введённый вами адреÑ. Проверьте Ñвою почту Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.'; +$lang['Account_inactive_admin'] = 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была Ñоздана. Ðа Ñтом форуме требуетÑÑ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ учётной запиÑи админиÑтраторами. Им был отправлен e-mail, и, как только они активизируют вашу учётную запиÑÑŒ, вы получите уведомление.'; +$lang['Account_active'] = 'Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была активизирована. СпаÑибо за региÑтрацию.'; +$lang['Account_active_admin'] = 'Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была активизирована.'; +$lang['Reactivate'] = 'Вновь активизировать учётную запиÑÑŒ'; +$lang['Already_activated'] = 'Ð’Ñ‹ уже активизировали Ñвою учётную запиÑÑŒ'; +$lang['COPPA'] = 'Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была Ñоздана, но теперь она должна быть одобрена, более Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±Ñ‹Ð»Ð° выÑлана вам по e-mail.'; + +$lang['Registration'] = 'УÑÐ»Ð¾Ð²Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтрации'; +$lang['Reg_agreement'] = 'Ð¥Ð¾Ñ‚Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтраторы и модераторы Ñтого форума ÑтараютÑÑ ÑƒÐ´Ð°Ð»ÑÑ‚ÑŒ или редактировать неприемлемые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ°Ðº можно быÑтрее, вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñмотреть невозможно. Таким образом вы признаёте, что ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° Ñтих форумах отражают точки Ð·Ñ€ÐµÐ½Ð¸Ñ Ð¸Ñ… авторов, а не админиÑтрации форумов (кроме Ñообщений, размещённых её предÑтавителÑми) и админиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть ответÑтвенна за их Ñодержание.

    Ð’Ñ‹ ÑоглашаетеÑÑŒ не размещать оÑкорбительных, угрожающих, клеветничеÑких Ñообщений, порнографичеÑких Ñообщений, призывов к национальной розни и прочих Ñообщений, могущих нарушить ÑоответÑтвующие законы. Попытки Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ‚Ð°ÐºÐ¸Ñ… Ñообщений могут привеÑти к вашему немедленному отключению от форумов (при Ñтом ваш провайдер будет поÑтавлен в извеÑтноÑÑ‚ÑŒ). IP адреÑа вÑех Ñообщений ÑохранÑÑŽÑ‚ÑÑ Ð´Ð»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñти Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð°ÐºÐ¾Ð¹ политики. Ð’Ñ‹ ÑоглашаетеÑÑŒ Ñ Ñ‚ÐµÐ¼, что админиÑтраторы форума имеют право удалить, отредактировать, перенеÑти или закрыть любую тему в любое Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾ Ñвоему уÑмотрению. Как пользователь вы ÑоглаÑны Ñ Ñ‚ÐµÐ¼, что Ð²Ð²ÐµÐ´Ñ‘Ð½Ð½Ð°Ñ Ð²Ð°Ð¼Ð¸ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ хранитьÑÑ Ð² базе данных. Ð¥Ð¾Ñ‚Ñ Ñта Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ðµ будет открыта третьим лицам без вашего разрешениÑ, админиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð² не может быть ответÑтвенна за дейÑÑ‚Ð²Ð¸Ñ Ñ…Ð°ÐºÐµÑ€Ð¾Ð², которые могут привеÑти к неÑанкционированному доÑтупу к ней.

    Эти форумы иÑпользуют cookies Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ на вашем компьютере. Эти cookie не Ñодержат никакой информации из введённой вами и Ñлужат лишь Ð´Ð»Ñ ÑƒÐ»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ ÐºÐ°Ñ‡ÐµÑтва работы форумов. Ваш e-mail Ð°Ð´Ñ€ÐµÑ Ð¸ÑпользуетÑÑ Ð»Ð¸ÑˆÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ региÑтрации и Ð¿Ð°Ñ€Ð¾Ð»Ñ (и Ð´Ð»Ñ Ð²Ñ‹Ñылки нового Ð¿Ð°Ñ€Ð¾Ð»Ñ ÐµÑли вы забудете текущий).

    Ðажатием на кнопку региÑтрации вы подтверждаете Ñвоё ÑоглаÑие Ñ Ñтими уÑловиÑми.'; + +$lang['Agree_under_13'] = 'Я ÑоглаÑен Ñ Ñтими уÑловиÑми и мне меньше 13 лет'; +$lang['Agree_over_13'] = 'Я ÑоглаÑен Ñ Ñтими уÑловиÑми и мне 13 лет или больше'; +$lang['Agree_not'] = 'Я не ÑоглаÑен Ñ Ñтими уÑловиÑми'; + +$lang['Wrong_activation'] = 'Введённый вами ключ активизации не Ñовпадает Ñ Ñ…Ñ€Ð°Ð½ÑщимÑÑ Ð² базе'; +$lang['Send_password'] = 'ПриÑлать новый пароль'; +$lang['Password_updated'] = 'Ðовый пароль был Ñоздан, проверьте почтовый Ñщик, чтобы узнать как его активизировать'; +$lang['No_email_match'] = 'Введённый вами Ð°Ð´Ñ€ÐµÑ e-mail не Ñовпадает Ñ Ð·Ð°Ð¿Ð¸Ñанным на Ñтого пользователÑ'; +$lang['New_password_activation'] = 'ÐÐºÑ‚Ð¸Ð²Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ паролÑ'; +$lang['Password_activated'] = 'Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была вновь активизирована. Ð”Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему иÑпользуйте пароль из приÑланного вам пиÑьма.'; + +$lang['Send_email_msg'] = 'Отправить e-mail'; +$lang['No_user_specified'] = 'Пользователь не был выбран'; +$lang['User_prevent_email'] = 'Пользователь не желает получать e-mail. Попробуйте отправить ему/ей личное Ñообщение'; +$lang['User_not_exist'] = 'ÐŸÐ¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ ÑущеÑтвует'; +$lang['CC_email'] = 'Отправить копию ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñамому Ñебе'; +$lang['Email_message_desc'] = 'Сообщение будет отправлено в виде проÑтого текÑта, не включайте в него HTML или BBCode. Ð’ качеÑтве обратного адреÑа будет показыватьÑÑ Ð²Ð°Ñˆ Ð°Ð´Ñ€ÐµÑ e-mail.'; +$lang['Flood_email_limit'] = 'Ð’Ñ‹ не можете отправить ещё один e-mail Ñразу поÑле предыдущего, попробуйте Ñделать Ñто попозже.'; +$lang['Recipient'] = 'Получатель'; +$lang['Email_sent'] = 'Сообщение было отправлено'; +$lang['Send_email'] = 'Отправить e-mail'; +$lang['Empty_subject_email'] = 'Ð’Ñ‹ должны указать тему ÑообщениÑ'; +$lang['Empty_message_email'] = 'Ð’Ñ‹ должны указать текÑÑ‚ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸'; + + +// +// Memberslist +// +$lang['Select_sort_method'] = 'УпорÑдочить по'; +$lang['Sort'] = 'УпорÑдочить'; +$lang['Sort_Top_Ten'] = 'деÑÑÑ‚ÑŒ Ñамых активных учаÑтников'; +$lang['Sort_Joined'] = 'дате региÑтрации'; +$lang['Sort_Username'] = 'имени пользователÑ'; +$lang['Sort_Location'] = 'меÑтонахождению'; +$lang['Sort_Posts'] = 'количеÑтву Ñообщений'; +$lang['Sort_Email'] = 'адреÑу e-mail'; +$lang['Sort_Website'] = 'адреÑу Ñайта'; +$lang['Sort_Ascending'] = 'по возраÑтанию'; +$lang['Sort_Descending'] = 'по убыванию'; +$lang['Order'] = ''; // не нужно, в английÑком иÑпользуетÑÑ Ð² контекÑте 'Order ascending'; + + +// +// Group control panel +// +$lang['Group_Control_Panel'] = 'Панель ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ð¼Ð¸'; +$lang['Group_member_details'] = 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ членÑтве в группах'; +$lang['Group_member_join'] = 'Ð’Ñтупить в группу'; + +$lang['Group_Information'] = 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ группе'; +$lang['Group_name'] = 'Ðазвание группы'; +$lang['Group_description'] = 'ОпиÑание группы'; +$lang['Group_membership'] = 'ЧленÑтво в группе'; +$lang['Group_Members'] = 'Члены группы'; +$lang['Group_Moderator'] = 'Модератор группы'; +$lang['Pending_members'] = 'Кандидаты в члены группы'; + +$lang['Group_type'] = 'Тип группы'; +$lang['Group_open'] = 'Группа Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ членÑтвом'; +$lang['Group_closed'] = 'Группа Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ членÑтвом'; +$lang['Group_hidden'] = 'Ð¡ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°'; + +$lang['Current_memberships'] = 'ЯвлÑетеÑÑŒ членом групп'; +$lang['Non_member_groups'] = 'Ðе ÑвлÑетеÑÑŒ членом групп'; +$lang['Memberships_pending'] = 'Кандидат в члены групп'; + +$lang['No_groups_exist'] = 'Ðет ни одной группы'; +$lang['Group_not_exist'] = 'Такой группы не ÑущеÑтвует'; + +$lang['Join_group'] = 'Ð’Ñтупить в группу'; +$lang['No_group_members'] = 'Ð’ Ñтой группе нет ни одного члена'; +$lang['Group_hidden_members'] = 'Эта группа Ñкрыта, вы не можете поÑмотреть её ÑоÑтав'; +$lang['No_pending_group_members'] = 'Ð’ Ñтой группе нет кандидатов в члены'; +$lang['Group_joined'] = 'Ð’Ñ‹ попроÑили о вÑтуплении в группу. Когда вашу проÑьбу одобрит модератор группы, вам будет приÑлано уведомление.'; +$lang['Group_request'] = 'Было подана проÑьба о вÑтуплении в группу.'; +$lang['Group_approved'] = 'Ваша проÑьба была удовлетворена.'; +$lang['Group_added'] = 'Ð’Ñ‹ были включены в группу'; +$lang['Already_member_group'] = 'Ð’Ñ‹ уже ÑвлÑетеÑÑŒ членом Ñтой группы'; +$lang['User_is_member_group'] = 'Пользователь уже ÑвлÑетÑÑ Ñ‡Ð»ÐµÐ½Ð¾Ð¼ Ñтой группы'; +$lang['Group_type_updated'] = 'Тип группы уÑпешно изменён'; + +$lang['Could_not_add_user'] = 'Выбранного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ ÑущеÑтвует'; +$lang['Could_not_anon_user'] = 'Ð’Ñ‹ не можете Ñделать анонимного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ‡Ð»ÐµÐ½Ð¾Ð¼ группы'; + +$lang['Confirm_unsub'] = 'Ð’Ñ‹ уверены, что хотите выйти из Ñтой группы?'; +$lang['Confirm_unsub_pending'] = 'Ð’Ñ‹ уверены, что хотите отказатьÑÑ Ð¾Ñ‚ учаÑÑ‚Ð¸Ñ Ð² Ñтой группе? Ваша проÑьба о вÑтуплении не была ни удовлетворена, ни отклонена!'; + +$lang['Unsub_success'] = 'Ð’Ñ‹ уÑпешно покинули Ñту группу.'; + +$lang['Approve_selected'] = 'Одобрить выделенное'; +$lang['Deny_selected'] = 'Отклонить выделенное'; +$lang['Not_logged_in'] = 'Ð’Ñ‹ должны войти в ÑиÑтему, прежде чем вÑтупать в группу.'; +$lang['Remove_selected'] = 'Удалить выделенное'; +$lang['Add_member'] = 'Добавить члена группы'; +$lang['Not_group_moderator'] = 'Ð’Ñ‹ не ÑвлÑетеÑÑŒ модератором группы и не можете выполнить данное дейÑтвие'; + +$lang['Login_to_join'] = 'Войдите в ÑиÑтему, чтобы менÑÑ‚ÑŒ Ñвоё членÑтво в группах'; +$lang['This_open_group'] = 'Это группа Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ членÑтвом, вы можете подать проÑьбу о вÑтуплении'; +$lang['This_closed_group'] = 'Это группа Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ членÑтвом, новые пользователи не принимаютÑÑ'; +$lang['This_hidden_group'] = 'Это ÑÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°, автоматичеÑкое добавление пользователей не разрешаетÑÑ'; +$lang['Member_this_group'] = 'Ð’Ñ‹ член Ñтой группы'; +$lang['Pending_this_group'] = 'Ð’Ñ‹ кандидат в члены Ñтой группы'; +$lang['Are_group_moderator'] = 'Ð’Ñ‹ модератор Ñтой группы'; +$lang['None'] = 'Ðет'; + +$lang['Subscribe'] = 'ПодпиÑатьÑÑ'; +$lang['Unsubscribe'] = 'ОтпиÑатьÑÑ'; +$lang['View_Information'] = 'ПроÑмотреть информацию'; + + +// +// Search +// +$lang['Search_query'] = 'ЗапроÑ'; +$lang['Search_options'] = 'Параметры запроÑа'; + +$lang['Search_keywords'] = 'Ключевые Ñлова'; +$lang['Search_keywords_explain'] = 'Ð’Ñ‹ можете иÑпользовать AND чтобы определить Ñлова, которые должны быть в результатах, OR Ð´Ð»Ñ Ñлов, которые могут быть в результатах, и NOT Ð´Ð»Ñ Ñлов, которых в результатах быть не должно. ИÑпользуйте * в качеÑтве шаблона Ð´Ð»Ñ Ñ‡Ð°Ñтичного ÑовпадениÑ.'; +$lang['Search_author'] = 'ПоиÑк по автору'; +$lang['Search_author_explain'] = 'ИÑпользуйте * в качеÑтве шаблона'; + +$lang['Search_for_any'] = 'ИÑкать любое Ñлово/поиÑк Ñ Ñзыком запроÑов'; +$lang['Search_for_all'] = 'ИÑкать вÑе Ñлова'; +$lang['Search_title_msg'] = 'ИÑкать в названиÑÑ… тем и текÑтах Ñообщений'; +$lang['Search_msg_only'] = 'ИÑкать только в текÑтах Ñообщений'; + +$lang['Return_first'] = 'Показывать первые'; // followed by xxx characters +$lang['characters_posts'] = 'Ñимволов Ñообщений'; + +$lang['Search_previous'] = 'Ð’Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ'; // followed by days, weeks, months, year, all + +$lang['Sort_by'] = 'УпорÑдочить по'; +$lang['Sort_Time'] = 'времени размещениÑ'; +$lang['Sort_Post_Subject'] = 'заголовку ÑообщениÑ'; +$lang['Sort_Topic_Title'] = 'теме'; +$lang['Sort_Author'] = 'автору'; +$lang['Sort_Forum'] = 'форуму'; + +$lang['Display_results'] = 'Показывать результаты как'; +$lang['All_available'] = 'Ð’Ñе имеющиеÑÑ'; +$lang['No_searchable_forums'] = 'У Ð²Ð°Ñ Ð½ÐµÑ‚ доÑтупа к поиÑку ни в одном из форумов на Ñайте'; + +$lang['No_search_match'] = 'ПодходÑщих тем или Ñообщений не найдено'; +$lang['Found_search_match'] = 'Результатов поиÑка: %d'; // eg. Search found 1 match +$lang['Found_search_matches'] = 'Результатов поиÑка: %d'; // eg. Search found 24 matches + +$lang['Close_window'] = 'Закрыть окно'; + + +// +// Auth related entries +// +// Note the %s will be replaced with one of the following 'user' arrays +$lang['Sorry_auth_announce'] = 'Извините, только %s могут размещать объÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð² Ñтом форуме'; +$lang['Sorry_auth_sticky'] = 'Извините, только %s могут размещать прилепленные темы в Ñтом форуме'; +$lang['Sorry_auth_read'] = 'Извините, только %s могут читать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтом форуме'; +$lang['Sorry_auth_post'] = 'Извините, только %s могут начинать темы в Ñтом форуме'; +$lang['Sorry_auth_reply'] = 'Извините, только %s могут отвечать на ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтом форуме'; +$lang['Sorry_auth_edit'] = 'Извините, только %s могут редактировать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтом форуме'; +$lang['Sorry_auth_delete'] = 'Извините, только %s могут удалÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтом форуме'; +$lang['Sorry_auth_vote'] = 'Извините, только %s могут голоÑовать в опроÑах Ñтого форума'; + +// These replace the %s in the above strings +$lang['Auth_Anonymous_Users'] = 'гоÑти'; +$lang['Auth_Registered_Users'] = 'зарегиÑтрированные пользователи'; +$lang['Auth_Users_granted_access'] = 'пользователи Ñо Ñпециальными правами доÑтупа'; +$lang['Auth_Moderators'] = 'модераторы'; +$lang['Auth_Administrators'] = 'админиÑтраторы'; + +$lang['Not_Moderator'] = 'Ð’Ñ‹ не ÑвлÑетеÑÑŒ модератором Ñтого форума'; +$lang['Not_Authorised'] = 'Ðет доÑтупа'; + +$lang['You_been_banned'] = 'Вам был закрыт доÑтуп к форуму
    ОбратитеÑÑŒ к вебмаÑтеру или админиÑтратору форумов за дополнительной информацией'; + + +// +// Viewonline +// +$lang['Reg_users_zero_online'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме зарегиÑтрированных пользователей: 0 и '; // There ae 5 Registered and +$lang['Reg_users_online'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме зарегиÑтрированных пользователей: %d и '; // There ae 5 Registered and +$lang['Reg_user_online'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме зарегиÑтрированных пользователей: %d и '; +$lang['Hidden_users_zero_online'] = 'Ñкрытых пользователей: 0'; // 6 Hidden users online +$lang['Hidden_users_online'] = 'Ñкрытых пользователей: %d'; +$lang['Hidden_user_online'] = 'Ñкрытых пользователей: %d'; // 6 Hidden users online +$lang['Guest_users_online'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме гоÑтей: %d'; +$lang['Guest_users_zero_online'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме гоÑтей: 0'; // There are 10 Guest users online +$lang['Guest_user_online'] = 'Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме гоÑтей: %d'; +$lang['No_users_browsing'] = 'Этот форум ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð¸ÐºÑ‚Ð¾ не проÑматривает'; + +$lang['Online_explain'] = 'Эти данные оÑнованы на активноÑти пользователей за поÑледние пÑÑ‚ÑŒ минут'; + +$lang['Forum_Location'] = 'МеÑто на форуме'; +$lang['Last_updated'] = 'ПоÑледнее изменение'; + +$lang['Forum_index'] = 'СпиÑок форумов'; +$lang['Logging_on'] = 'Вход в ÑиÑтему'; +$lang['Posting_message'] = 'Размещение ÑообщениÑ'; +$lang['Searching_forums'] = 'ПоиÑк по форуму'; +$lang['Viewing_profile'] = 'ПроÑмотр профилÑ'; +$lang['Viewing_online'] = 'ПроÑмотр «ÐšÑ‚о ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° форуме»'; +$lang['Viewing_member_list'] = 'ПроÑмотр ÑпиÑка пользователей'; +$lang['Viewing_priv_msgs'] = 'ПроÑмотр личных Ñообщений'; +$lang['Viewing_FAQ'] = 'ПроÑмотр FAQ'; + + +// +// Moderator Control Panel +// +$lang['Mod_CP'] = 'Панель модерации'; +$lang['Mod_CP_explain'] = 'ЗдеÑÑŒ вы можете проводить маÑÑовую модерацию Ñтого форума. Ð’Ñ‹ можете закрывать, открывать, перемещать или удалÑÑ‚ÑŒ любое количеÑтво тем.'; + +$lang['Select'] = 'Выбрать'; +$lang['Delete'] = 'Удалить'; +$lang['Move'] = 'ПеремеÑтить'; +$lang['Lock'] = 'Закрыть'; +$lang['Unlock'] = 'Открыть'; + +$lang['Topics_Removed'] = 'Выбранные темы были уÑпешно удалены из базы данных'; +$lang['Topics_Locked'] = 'Выбранные темы были закрыты'; +$lang['Topics_Moved'] = 'Выбранные темы были перемещены'; +$lang['Topics_Unlocked'] = 'Выбранные темы были открыты'; +$lang['No_Topics_Moved'] = 'Ðе было перенеÑено ни одной темы'; + +$lang['Confirm_delete_topic'] = 'Ð’Ñ‹ дейÑтвительно хотите удалить выбранные темы?'; +$lang['Confirm_lock_topic'] = 'Ð’Ñ‹ дейÑтвительно хотите закрыть выбранные темы?'; +$lang['Confirm_unlock_topic'] = 'Ð’Ñ‹ дейÑтвительно хотите открыть выбранные темы?'; +$lang['Confirm_move_topic'] = 'Ð’Ñ‹ дейÑтвительно хотите перемеÑтить выбранные темы?'; + +$lang['Move_to_forum'] = 'ПеремеÑтить в форум'; +$lang['Leave_shadow_topic'] = 'ОÑтавить ÑÑылку в Ñтаром форуме'; + +$lang['Split_Topic'] = 'Разделение темы'; +$lang['Split_Topic_explain'] = 'С иÑпользованием Ñтой формы вы можете разделить тему на две либо Ð²Ñ‹Ð±Ð¸Ñ€Ð°Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ одному, либо разбив по выбранному Ñообщению'; +$lang['Split_title'] = 'Заголовок новой темы'; +$lang['Split_forum'] = 'Форум Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ темы'; +$lang['Split_posts'] = 'Отделить выбранные ÑообщениÑ'; +$lang['Split_after'] = 'Отделить вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле выбранного'; +$lang['Topic_split'] = 'Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ñ‚ÐµÐ¼Ð° была уÑпешно отделена'; + +$lang['Too_many_error'] = 'Ð’Ñ‹ выбрали Ñлишком много Ñообщений. Ð’Ñ‹ можете выбрать только одно Ñообщение, чтобы отделить вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле него.'; + +$lang['None_selected'] = 'Ð’Ñ‹ не выбрали ни одной темы Ð´Ð»Ñ ÑÐ¾Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñтой операции. ВернитеÑÑŒ назад и выберите.'; +$lang['New_forum'] = 'Ðовый форум'; + +$lang['This_posts_IP'] = 'IP Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ñтого ÑообщениÑ'; +$lang['Other_IP_this_user'] = 'Другие IP адреÑа Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… пиÑал Ñтот пользователь'; +$lang['Users_this_IP'] = 'Пользователи, пиÑавшие Ñ Ñтого IP'; +$lang['IP_info'] = 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± IP адреÑе'; +$lang['Lookup_IP'] = 'ПоÑмотреть хоÑÑ‚ Ð´Ð»Ñ IP'; + + +// +// Timezones ... for display on each page +// +$lang['All_times'] = 'ЧаÑовой поÑÑ: %s'; // This is followed by GMT and the timezone offset + +$lang['-12'] = 'GMT - 12'; +$lang['-11'] = 'GMT - 11'; +$lang['-10'] = 'GMT - 10'; +$lang['-9'] = 'GMT - 9'; +$lang['-8'] = 'GMT - 8'; +$lang['-7'] = 'GMT - 7'; +$lang['-6'] = 'GMT - 6'; +$lang['-5'] = 'GMT - 5'; +$lang['-4'] = 'GMT - 4'; +$lang['-3.5'] = 'GMT - 3:30'; +$lang['-3'] = 'GMT - 3'; +$lang['-2'] = 'GMT - 2'; +$lang['-1'] = 'GMT - 1'; +$lang['0'] = 'GMT'; +$lang['1'] = 'GMT + 1'; +$lang['2'] = 'GMT + 2'; +$lang['3'] = 'GMT + 3'; +$lang['3.5'] = 'GMT + 3:30'; +$lang['4'] = 'GMT + 4'; +$lang['4.5'] = 'GMT + 4:30'; +$lang['5'] = 'GMT + 5'; +$lang['5.5'] = 'GMT + 5:30'; +$lang['6'] = 'GMT + 6'; +$lang['6.5'] = 'GMT + 6:30'; +$lang['7'] = 'GMT + 7'; +$lang['8'] = 'GMT + 8'; +$lang['9'] = 'GMT + 9'; +$lang['9.5'] = 'GMT + 9:30'; +$lang['10'] = 'GMT + 10'; +$lang['11'] = 'GMT + 11'; +$lang['12'] = 'GMT + 12'; + +// Ñто Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð°Ð´Ð°ÑŽÑ‰ÐµÐ³Ð¾ меню, раньше тут ещё были города +$lang['tz']['-12'] = 'GMT - 12'; +$lang['tz']['-11'] = 'GMT - 11'; +$lang['tz']['-10'] = 'GMT - 10'; +$lang['tz']['-9'] = 'GMT - 9'; +$lang['tz']['-8'] = 'GMT - 8'; +$lang['tz']['-7'] = 'GMT - 7'; +$lang['tz']['-6'] = 'GMT - 6'; +$lang['tz']['-5'] = 'GMT - 5'; +$lang['tz']['-4'] = 'GMT - 4'; +$lang['tz']['-3.5'] = 'GMT - 3:30'; +$lang['tz']['-3'] = 'GMT - 3'; +$lang['tz']['-2'] = 'GMT - 2'; +$lang['tz']['-1'] = 'GMT - 1'; +$lang['tz']['0'] = 'GMT (Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾ Гринвичу)'; +$lang['tz']['1'] = 'GMT + 1'; +$lang['tz']['2'] = 'GMT + 2'; +$lang['tz']['3'] = 'GMT + 3 (моÑковÑкое времÑ)'; +$lang['tz']['3.5'] = 'GMT + 3:30'; +$lang['tz']['4'] = 'GMT + 4 (летнее моÑковÑкое времÑ)'; +$lang['tz']['4.5'] = 'GMT + 4:30'; +$lang['tz']['5'] = 'GMT + 5'; +$lang['tz']['5.5'] = 'GMT + 5:30'; +$lang['tz']['6'] = 'GMT + 6'; +$lang['tz']['6.5'] = 'GMT + 6:30'; +$lang['tz']['7'] = 'GMT + 7'; +$lang['tz']['8'] = 'GMT + 8'; +$lang['tz']['9'] = 'GMT + 9'; +$lang['tz']['9.5'] = 'GMT + 9:30'; +$lang['tz']['10'] = 'GMT + 10'; +$lang['tz']['11'] = 'GMT + 11'; +$lang['tz']['12'] = 'GMT + 12'; +$lang['tz']['13'] = 'GMT + 13'; + +$lang['datetime']['Sunday'] = 'ВоÑкреÑенье'; +$lang['datetime']['Monday'] = 'Понедельник'; +$lang['datetime']['Tuesday'] = 'Вторник'; +$lang['datetime']['Wednesday'] = 'Среда'; +$lang['datetime']['Thursday'] = 'Четверг'; +$lang['datetime']['Friday'] = 'ПÑтница'; +$lang['datetime']['Saturday'] = 'Суббота'; +$lang['datetime']['Sun'] = 'Ð’Ñ'; +$lang['datetime']['Mon'] = 'Пн'; +$lang['datetime']['Tue'] = 'Ð’Ñ‚'; +$lang['datetime']['Wed'] = 'Ср'; +$lang['datetime']['Thu'] = 'Чт'; +$lang['datetime']['Fri'] = 'Пт'; +$lang['datetime']['Sat'] = 'Сб'; +$lang['datetime']['January'] = 'Январь'; +$lang['datetime']['February'] = 'Февраль'; +$lang['datetime']['March'] = 'Март'; +$lang['datetime']['April'] = 'Ðпрель'; +$lang['datetime']['May'] = 'Май'; +$lang['datetime']['June'] = 'Июнь'; +$lang['datetime']['July'] = 'Июль'; +$lang['datetime']['August'] = 'ÐвгуÑÑ‚'; +$lang['datetime']['September'] = 'СентÑбрь'; +$lang['datetime']['October'] = 'ОктÑбрь'; +$lang['datetime']['November'] = 'ÐоÑбрь'; +$lang['datetime']['December'] = 'Декабрь'; +$lang['datetime']['Jan'] = 'Янв'; +$lang['datetime']['Feb'] = 'Фев'; +$lang['datetime']['Mar'] = 'Мар'; +$lang['datetime']['Apr'] = 'Ðпр'; +$lang['datetime']['May'] = 'Май'; +$lang['datetime']['Jun'] = 'Июн'; +$lang['datetime']['Jul'] = 'Июл'; +$lang['datetime']['Aug'] = 'Ðвг'; +$lang['datetime']['Sep'] = 'Сен'; +$lang['datetime']['Oct'] = 'Окт'; +$lang['datetime']['Nov'] = 'ÐоÑ'; +$lang['datetime']['Dec'] = 'Дек'; + +// +// Errors (not related to a +// specific failure on a page) +// +$lang['Information'] = 'ИнформациÑ'; +$lang['Critical_Information'] = 'КритичеÑÐºÐ°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ'; + +$lang['General_Error'] = 'ÐžÐ±Ñ‰Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°'; +$lang['Critical_Error'] = 'КритичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°'; +$lang['An_error_occured'] = 'Произошла ошибка'; +$lang['A_critical_error'] = 'Произошла критичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°'; + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_swedish/lang_main.php b/includes/shared/phpbb2/language/lang_swedish/lang_main.php index 36ed48ac..5c93aa91 100644 --- a/includes/shared/phpbb2/language/lang_swedish/lang_main.php +++ b/includes/shared/phpbb2/language/lang_swedish/lang_main.php @@ -120,6 +120,30 @@ $lang['Disabled'] = 'Inaktiverad'; $lang['Error'] = 'Fel'; +// ------------------------------------------------- +$lang['Goto_page'] = 'Goto page'; + +$lang['Post_by_author'] = 'by'; +$lang['Posted_on_date'] = 'on'; +$lang['In'] = 'in'; + +$lang['Statistics'] = 'Statistics'; +$lang['Legend'] = 'Legend: '; +$lang['Posted_articles_zero_total'] = 'No post'; // Number of posts +$lang['Posted_articles_total'] = 'Total posts %d'; // Number of posts +$lang['Posted_article_total'] = 'Total posts %d'; // Number of posts +$lang['Registered_users_zero_total'] = 'No member'; // # registered users +$lang['Registered_users_total'] = 'Total members %d'; // # registered users +$lang['Registered_user_total'] = 'Total members %d'; // # registered users +$lang['Newest_user'] = 'Our newest member %s%s%s'; // a href, username, /a + +$lang['Rules_moderate'] = '%sModerate this forum%s'; // %s replaced by a href links, do not remove! + +$lang['Quick_mod'] = 'Quick-mod tools:'; + +$lang['Search_forums'] = 'Search within'; +// ------------------------------------------------- + $lang['Next'] = 'Nästa'; $lang['Previous'] = 'Föregående'; $lang['Goto_page'] = 'Gå till sida'; diff --git a/includes/shared/phpbb2/language/lang_turkish/email/admin_activate.tpl b/includes/shared/phpbb2/language/lang_turkish/email/admin_activate.tpl new file mode 100644 index 00000000..513ee1c8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/admin_activate.tpl @@ -0,0 +1,9 @@ +Subject: Yeni kullanýcý hesabý - {SITENAME} +Charset: iso-8859-9 + +"{USERNAME}" kullanýcýsý pasif edildi veya yeni alýndý. Kullanýcý hakkýndaki bilgileri kontrol edip, aktif etmek için aþaðýdaki adresi kullanabilirsiniz. + +{U_ACTIVATE} + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/admin_send_email.tpl b/includes/shared/phpbb2/language/lang_turkish/email/admin_send_email.tpl new file mode 100644 index 00000000..39c4c624 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/admin_send_email.tpl @@ -0,0 +1,9 @@ +Charset: iso-8859-9 + +Aþaðýdaki mesaj size "{SITENAME}" yöneticisi tarafýndan gönderildi. Eðer bu mesajýn içeriðinden rahatsýz olduysanýz {BOARD_EMAIL} e-posta adresi ile iletiþime geçebilirsiniz. + + +Size gönderilen mesaj: +~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/admin_welcome_activated.tpl b/includes/shared/phpbb2/language/lang_turkish/email/admin_welcome_activated.tpl new file mode 100644 index 00000000..4a230391 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/admin_welcome_activated.tpl @@ -0,0 +1,9 @@ +Subject: {USERNAME} hesabý etkin hale getirilmiþtir - {SITENAME} +Charset: iso-8859-9 + +Sayýn, {USERNAME} + +"{SITENAME}" de bulunan hesabýnýz etkinleþtirildi. Bir önceki e-posta ile gelen kullanýcý adý ve parola ile oturum açabilirsiniz. + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/admin_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_turkish/email/admin_welcome_inactive.tpl new file mode 100644 index 00000000..003bbc3e --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/admin_welcome_inactive.tpl @@ -0,0 +1,20 @@ +Subject: {SITENAME} Mesaj Panosuna Hoþgeldiniz +Charset: iso-8859-9 + +{WELCOME_MSG} + +Lütfen bu mesajý saklayýnýz. Kullanýcý bilgileriniz aþaðýda bulunmaktadýr. + +---------------------------- +Kullanýcý adý: {USERNAME} +Parola: {PASSWORD} +---------------------------- + +Kullanýcý hesabýnýz þu anda pasif durumda. Hesabýnýz, site yönetimi tarafýndan etkin hale getirildikten sonra bir e-posta daha alacaksýnýz. + +Lütfen kullanýcý bilgilerinizi unutmayýn. Parolamýz veritabanýmýzda þifrelenmiþ bir halde saklanmaktadýr. Parolanýzý geri getirmek mümkun deðildir. Parolanýzý unuttuðunuz zaman e-posta adresinize yeni bir tane isteyebilirsiniz. + +Üye olduðunuz için teþekkürler. + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/coppa_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_turkish/email/coppa_welcome_inactive.tpl new file mode 100644 index 00000000..b2334055 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/coppa_welcome_inactive.tpl @@ -0,0 +1,55 @@ +Subject: {SITENAME} Mesaj Panosuna Hoþgeldiniz +Charset: iso-8859-9 + +{WELCOME_MSG} + +COPPA ilkelerine göre kullanýcý hesabýnýz þu anda pasif durumdadýr. + +Lütfen aþaðýdaki mesajýn yazýcý çýktýsýný alýn ve ailenize imzalatýn. Daha sonra buraya fakslayýn: + +{FAX_INFO} + +Veya e-posta gönderin: + +{MAIL_INFO} + +------------------------------ Buradan Kesiniz ------------------------------ +{SITENAME} Katýlma Ýzni + +Kullanýcý adý: {USERNAME} +Parola: {PASSWORD} +E-Posta: {EMAIL_ADDRESS} + +ICQ: {ICQ} +AIM: {AIM} +MSNM: {MSN} +YIM: {YIM} +Web Sitesi: {WEB_SITE} +Þehir: {FROM} +Meslek: {OCC} +Ýlgi alanlarý: {INTERESTS} + +{SITENAME} hakkýndaki bilgeleri aldým ve adý geçen kiþinin üyeliðini onaylýyorum. +Bu bilgilerin herhangi bir zamanda kullanýcý adý ve parola girilerek deðiþtirilebileceðini kabul ediyorum. +{SITENAME} un istediði zaman bu bilgileri benden talep edebileceðini kabul ediyorum. + + +Aile veya Sorumulunun + +Adý Soyadý: _____________________ + +Ýmza : _____________________ + +Tarih : _____________________ + +------------------------------ Buradan Kesiniz ------------------------------ + + +Yönetici formu aldýktan sonra hesabýnýz aktif hale gelecektir. + +Lütfen kullanýcý bilgilerinizi unutmayýn. Parolanýz veritabanýmýzda þifrelenmiþ bir halde saklanmaktadýr. Parolanýzý geri getirmek mümkün deðildir. Parolanýzý unuttuðunuz zaman e-posta adresinize yeni bir tane isteyebilirsiniz. + +Üye olduðunuz için teþekkürler. + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/group_added.tpl b/includes/shared/phpbb2/language/lang_turkish/email/group_added.tpl new file mode 100644 index 00000000..19c9ed5a --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/group_added.tpl @@ -0,0 +1,12 @@ +Subject: Bir gruba eklendiniz - {SITENAME} +Charset: iso-8859-9 + + +"{SITENAME}" de bulunan "{GROUP_NAME}" grubuna grup yöneticisi veya pano yöneticisi tarafýndan eklendiniz. Daha fazla bilgi almak için onlarla iletiþime geçebilirsiniz. + +Grup bilgilerini aþaðýdaki adresten inceleyebilirsiniz. + +{U_GROUPCP} + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/group_approved.tpl b/includes/shared/phpbb2/language/lang_turkish/email/group_approved.tpl new file mode 100644 index 00000000..ad7c5f19 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/group_approved.tpl @@ -0,0 +1,11 @@ +Subject: Grup baþvurunuz onaylanmýþtýr - {SITENAME} +Charset: iso-8859-9 + +"{SITENAME}" deki "{GROUP_NAME}" grubuna katýlma talebiniz kabul edildi. + +Aþaðýdaki adresten grup üyeliðinizi inceleyebilirsiniz. + +{U_GROUPCP} + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/group_request.tpl b/includes/shared/phpbb2/language/lang_turkish/email/group_request.tpl new file mode 100644 index 00000000..abed10dc --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/group_request.tpl @@ -0,0 +1,13 @@ +Subject: Grubunuza katýlmak için bir baþvuru var - {SITENAME} +Charset: iso-8859-9 + +Sayýn {GROUP_MODERATOR}, + +"{SITENAME}" sitesinde bulunan bir kullanýcý, yöneticisi olduðunuz bir gruba katýlmak istiyor. + +Gruba almak veya reddetmek için aþaðýdaki adresi kullanabilirsiniz. + +{U_GROUPCP} + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/index.html b/includes/shared/phpbb2/language/lang_turkish/email/index.html new file mode 100644 index 00000000..458190a2 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/index.html @@ -0,0 +1,17 @@ + + + + + + + +

    phpBB Türkiye - phpBB Türkçe Dil Dosyası

    + + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/privmsg_notify.tpl b/includes/shared/phpbb2/language/lang_turkish/email/privmsg_notify.tpl new file mode 100644 index 00000000..239712dc --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/privmsg_notify.tpl @@ -0,0 +1,13 @@ +Subject: Yeni bir kiþisel mesaj geldi - {SITENAME} +Charset: iso-8859-9 + +Sayýn, {USERNAME} + +"{SITENAME}" da bulunan hesabýnýza yeni bir özel mesaj geldi ve uyarýlma sistemini açtýðýnýz için bu e-posta'yý aldýnýz. Mesajý okumak için aþaðýdaki adresi kullanabilirsiniz. + +{U_INBOX} + +Uyarýlma sistemini hesap ayarlarýnýzdan istediðiniz zaman kapatabilirsiniz. + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/profile_send_email.tpl b/includes/shared/phpbb2/language/lang_turkish/email/profile_send_email.tpl new file mode 100644 index 00000000..d9a79f01 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/profile_send_email.tpl @@ -0,0 +1,11 @@ +Charset: iso-8859-9 + +Sayýn, {TO_USERNAME} + +Bu mesaj size "{FROM_USERNAME}" tarafýndan "{SITENAME}" da bulunan hesabýnýz aracýlýðý ile gönderildi. Bu mesajýn içeriðinden rahatsýz olduysanýz "{BOARD_EMAIL}" e-posta adresi ile iletiþime geçebilirsiniz. + + +"{FROM_USERNAME}" tarafýndan size gönderilen mesaj: +~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/topic_notify.tpl b/includes/shared/phpbb2/language/lang_turkish/email/topic_notify.tpl new file mode 100644 index 00000000..f2c7b7b9 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/topic_notify.tpl @@ -0,0 +1,14 @@ +Subject: Konu izleme - {TOPIC_TITLE} - {SITENAME} +Charset: iso-8859-9 + +"{SITENAME}" de bulununan "{TOPIC_TITLE}" baþlýðýnda yeni mesajlar var ve konu izleme sistemini açtýðýnýz için bu e-posta'yý aldýnýz. Aþaðýdaki adresten konuya ulaþabilirsiniz. + +{U_TOPIC} + + +Eðer konu izlemeyi kapatmak istiyorsanýz aþaðýdaki adresi kullanabilirsiniz. + +{U_STOP_WATCHING_TOPIC} + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/user_activate.tpl b/includes/shared/phpbb2/language/lang_turkish/email/user_activate.tpl new file mode 100644 index 00000000..b1b37b84 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/user_activate.tpl @@ -0,0 +1,11 @@ +Subject: Hesabýnýzý yeniden etkin hale getirmelisiniz! - {SITENAME} +Charset: iso-8859-9 + +Sayýn, {USERNAME} + +"{SITENAME}" da bulunan hesabýnýz pasif durumdadýr. Bu genellikle hesap bilgileri deðiþikliklerinde olur. Tekrar etkinleþtirmek için aþaðýdaki adresi kullanabilirsiniz. + +{U_ACTIVATE} + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/user_activate_passwd.tpl b/includes/shared/phpbb2/language/lang_turkish/email/user_activate_passwd.tpl new file mode 100644 index 00000000..33ba4fdb --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/user_activate_passwd.tpl @@ -0,0 +1,20 @@ +Subject: Yeni þifre etkinleþtirme - {SITENAME} +Charset: iso-8859-9 + +Sayýn, {USERNAME} + +"{SITENAME}" de bulunan hesabýnýzdan yeni parola gönderilmesi için istekte bulunuldu. Eðer siz istemediyseniz bu mesajý dikkate almayýnýz. + +Yeni parolanýzý kullanmak için etkin hale getirmeniz gerekmektedir. Etkinleþtirmek için aþaðýdaki adresi kullanabilirsiniz. + +{U_ACTIVATE} + + +Yeni parolanýz ile oturum açabilirsiniz: + +Parola: {PASSWORD} + +Parolanýzý hesabýnýzdan deðiþtirebilirsiniz. Herhangi bir zorlukla karþýlaþýrsanýz pano yöneticisi ile iletiþime geçebilirsiniz. + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/user_welcome.tpl b/includes/shared/phpbb2/language/lang_turkish/email/user_welcome.tpl new file mode 100644 index 00000000..520df5c7 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/user_welcome.tpl @@ -0,0 +1,18 @@ +Subject: {SITENAME} Mesaj Panosuna Hoþgeldiniz +Charset: iso-8859-9 + +{WELCOME_MSG} + +Lütfen bu mesajý saklayýnýz. Kullanýcý bilgileriniz aþaðýda bulunmaktadýr: + +---------------------------- +Kullanýcý adý: {USERNAME} +Parola: {PASSWORD} +---------------------------- + +Lütfen kullanýcý bilgilerinizi unutmayýn. Parolanýz veritabanýmýzda þifrelenmiþ bir halde saklanmaktadýr. Parolanýzý geri getirmek mümkun deðildir. Parolanýzý unuttuðunuz zaman e-posta adresinize yeni bir tane isteyebilirsiniz. + +Üye olduðunuz için teþekkürler. + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/email/user_welcome_inactive.tpl b/includes/shared/phpbb2/language/lang_turkish/email/user_welcome_inactive.tpl new file mode 100644 index 00000000..84bfd115 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/email/user_welcome_inactive.tpl @@ -0,0 +1,24 @@ +Subject: {SITENAME} Mesaj Panosuna Hoþgeldiniz +Charset: iso-8859-9 + +{WELCOME_MSG} + +Lütfen bu mesajý saklayýnýz. Kullanýcý bilgileriniz aþaðýdadýr. + +---------------------------- +Kullanýcý adý: {USERNAME} +Parola: {PASSWORD} +---------------------------- + + +Kullanýcý hesabýnýz þu anda pasif durumdadýr. Etkin duruma getirmek için aþaðýdaki adresi kullanabilirsiniz. + +{U_ACTIVATE} + + +Lütfen kullanýcý bilgilerinizi unutmayýn. Parolanýz veritabanýmýzda þifrelenmiþ bir halde saklanmaktadýr. Parolanýzý geri getirmek mümkun deðildir. Parolanýzý unuttuðunuz zaman e-posta adresinize yeni bir tane isteyebilirsiniz. + +Üye olduðunuz için teþekkürler. + + +{EMAIL_SIG} \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/index.html b/includes/shared/phpbb2/language/lang_turkish/index.html new file mode 100644 index 00000000..458190a2 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/index.html @@ -0,0 +1,17 @@ + + + + + + + +

    phpBB Türkiye - phpBB Türkçe Dil Dosyası

    + + \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/lang_admin.php b/includes/shared/phpbb2/language/lang_turkish/lang_admin.php new file mode 100644 index 00000000..ce7d0c35 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/lang_admin.php @@ -0,0 +1,751 @@ +Yönetim - Ana Sayfa linkine basarak geri dönebilirsiniz. Sitenizin ana sayfasýna dönmek için soldaki küçük logoyu kullanabilirsiniz. Soldaki diðer linkler forumunuzun her türlü ayarýný yapmanýzý saðlayacaktýr, her ekran kendinin nasýl kullanýlacaðýný anlatacaktýr.'; +$lang['Main_index'] = 'Ana Sayfa'; +$lang['Forum_stats'] = 'Pano Ýstatistikleri'; +$lang['Admin_Index'] = 'Yönetim - Ana Sayfa'; +$lang['Preview_forum'] = 'Pano Önizlemesi'; + +$lang['Click_return_admin_index'] = 'Yönetim ana sayfasýna dönmek için %sburaya%s týklayýn'; + +$lang['Statistic'] = 'Ýstatistik'; +$lang['Value'] = 'Deðer'; +$lang['Number_posts'] = 'Ýleti sayýsý'; +$lang['Posts_per_day'] = 'Günlük ortalama ileti'; +$lang['Number_topics'] = 'Konu sayýsý'; +$lang['Topics_per_day'] = 'Günlük ortalama konu'; +$lang['Number_users'] = 'Üye sayýsý'; +$lang['Users_per_day'] = 'Günlük ortalama üye'; +$lang['Board_started'] = 'Pano açýlýþ tarihi'; +$lang['Avatar_dir_size'] = 'Kiþisel sembol dizini büyüklüðü'; +$lang['Database_size'] = 'Veritabaný büyüklüðü'; +$lang['Gzip_compression'] = 'Gzip sýkýþtýrma'; +$lang['Not_available'] = 'Mevcut deðil'; + +$lang['ON'] = 'Açýk'; +$lang['OFF'] = 'Kapalý'; + + +// +// DB Utils +// +$lang['Database_Utilities'] = 'Veritabaný Ýþlemleri'; + +$lang['Restore'] = 'Geri Yükleme'; +$lang['Backup'] = 'Yedekleme'; +$lang['Restore_explain'] = 'Bu iþlem bir dosyadan tüm phpBB veritabaný tablolarýný geri yükleyecektir. Eðer sunucunuz izin veriyorsa gzip ile sýkýþtýrýlmýþ bir text dosyasý yükleyebilirsiniz, otomatik olarak açýlacaktýr. UYARI: Bu iþlem bütün bulunan verileri silecek yerine yenilerini yazacaktýr. Geri yükleme uzun sürebilir, tamamlanana kadar lütfen bu sayfayý kapatmayýnýz.'; +$lang['Backup_explain'] = 'Buradan tüm phpBB verilerinizi yedekleyebilirsiniz. Eðer ayný veritabanýnda saklamak istediðiniz baþka tablolarýnýz da varsa, aþaðýdaki Ek Tablolar bölümüne isimlerini virgülle ayýrarak giriniz. Eðer sunucunuz izin veriyorsa backup dosyanýzý gzip ile sýkýþtýrýp da alabilirsiniz.'; + +$lang['Backup_options'] = 'Yedekleme seçenekleri'; +$lang['Start_backup'] = 'Yedeklemeyi baþlat'; +$lang['Full_backup'] = 'Tam yedekleme'; +$lang['Structure_backup'] = 'Sadece tablo yapýsý'; +$lang['Data_backup'] = 'Sadece veriler'; +$lang['Additional_tables'] = 'Ek tablolar'; +$lang['Gzip_compress'] = 'Gzip sýkýþtýrma'; +$lang['Select_file'] = 'Bir dosya seçin'; +$lang['Start_Restore'] = 'Geri yüklemeyi baþlat'; + +$lang['Restore_success'] = 'Veritabaný baþarýyla yedeklendi.

    Siteniz yedeklemenin yapýldýðý zamanki haline dönüþtürüldü.'; +$lang['Backup_download'] = 'Ýndirme kýsa bir süre içinde baþlayacak, lütfen bekleyiniz'; +$lang['Backups_not_supported'] = 'Kullandýðýnýz veritabaný sistemin henüz yedekleme desteklenmiyor'; + +$lang['Restore_Error_uploading'] = 'Yedekleme dosyasýný gönderirken hata'; +$lang['Restore_Error_filename'] = 'Dosya isminde problem oluþtu, lütfen alternatif bir dosya deneyin'; +$lang['Restore_Error_decompress'] = 'Gzip sýkýþtýrmasý açýlamýyor, lütfen düzyazý sürümünü gönderin'; +$lang['Restore_Error_no_file'] = 'Dosya gönderilmedi'; + + +// +// Auth pages +// +$lang['Select_a_User'] = 'Bir kullanýcý seç'; +$lang['Select_a_Group'] = 'Bir grup seç'; +$lang['Select_a_Forum'] = 'Bir forum seç'; +$lang['Auth_Control_User'] = 'Kullanýcý Ýzinleri Kontrolü'; +$lang['Auth_Control_Group'] = 'Grup Ýzinleri Kontrolü'; +$lang['Auth_Control_Forum'] = 'Forum Ýzinleri Kontrolü'; +$lang['Look_up_User'] = 'Ayrýntýlar'; +$lang['Look_up_Group'] = 'Ayrýntýlar'; +$lang['Look_up_Forum'] = 'Ayrýntýlar'; + +$lang['Group_auth_explain'] = 'Burada her gruba verilmiþ olan izinleri ve bölüm yetkilisi durumlarýný deðiþtirebilirsiniz. Grup izinlerini deðiþtirirken kullanýcý izinlerinin gruptaki bazý kullanýcýlara hala bazý özel haklar tanýyabileceðini unutmayýn. Eðer böyle bir durum söz konusuysa uyarýlacaksýnýz.'; +$lang['User_auth_explain'] = 'Burada her kullanýcýya verilmiþ olan izinleri ve bölüm yetkilisi durumlarýný deðiþtirebilirsiniz. Kullanýcý izinlerini deðiþtirirken grup izinlerinin bazý kullanýcýlara hala bazý özel haklar tanýyabileceðini unutmayýn. Eðer böyle bir durum söz konusuysa uyarýlacaksýnýz.'; +$lang['Forum_auth_explain'] = 'Buradan her forumun izin derecesini deðiþtirebilirsiniz. Geliþmiþ ve Basit olaraka ikiye ayrýlmýþ olan izinlerde, geliþmiþ seçeneðini kullanarak daha özel izinler verebileceðinizi unutmayýnýz.'; + +$lang['Simple_mode'] = 'Basit Mod'; +$lang['Advanced_mode'] = 'Geliþmiþ Mod'; +$lang['Moderator_status'] = 'Bölüm yetkilisi durumu'; + +$lang['Allowed_Access'] = 'Eriþim izni verilmiþ'; +$lang['Disallowed_Access'] = 'Eriþim izni verilmemiþ'; +$lang['Is_Moderator'] = 'Bölüm yetkilisi'; +$lang['Not_Moderator'] = 'Bölüm yetkilisi deðil'; + +$lang['Conflict_warning'] = 'Yetki Çeliþkisi Uyarýsý'; +$lang['Conflict_access_userauth'] = 'Bu kullanýcýnýn üye olduðu grup aracýlýðý ile bu foruma eriþimi var. Grup izinleriyle oynayabilir ya da kullanýcýyý gruptan çýkartabilirsiniz. Bu durumu oluþturan gruplar ve forumlar aþaðýda listelenmiþtir.'; +$lang['Conflict_mod_userauth'] = 'Bu kullanýcýnýn üye olduðu grup aracýlýðý ile bu foruma yönetici eriþimi var. Grup izinleriyle oynayabilir ya da kullanýcýyý gruptan çýkartabilirsiniz. Bu durumu oluþturan gruplar ve forumlar aþaðýda listelenmiþtir.'; + +$lang['Conflict_access_groupauth'] = 'Aþaðýdaki kullanýcýlarýn hala kullanýcý izinleriyle bu foruma eriþimleri var. Kullanýcý izinlerini deðiþtirebilirsiniz. Özel hakký olan kullanýcýlar ve forumlar aþaðýda listelenmiþtir.'; +$lang['Conflict_mod_groupauth'] = 'Aþaðýdaki kullanýcýlarýn hala kullanýcý izinleriyle bu foruma yönetici eriþimleri var. Kullanýcý izinlerini deðiþtirebilirsiniz. Özel hakký olan kullanýcýlar ve forumlar aþaðýda listelenmiþtir.'; + +$lang['Public'] = 'Herkese Açýk'; +$lang['Private'] = 'Özel'; +$lang['Registered'] = 'Kayýtlýlara Açýk'; +$lang['Administrators'] = 'Pano Yöneticilerine Açýk'; +$lang['Hidden'] = 'Gizli'; + + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! +$lang['Forum_ALL'] = 'Herkes'; +$lang['Forum_REG'] = 'Kayýtlý'; +$lang['Forum_PRIVATE'] = 'Özel'; +$lang['Forum_MOD'] = 'Bölüm Yetkilisi'; +$lang['Forum_ADMIN'] = 'Pano Yöneticisi'; + +$lang['View'] = 'Görüntüleme'; +$lang['Read'] = 'Okuma'; +$lang['Post'] = 'Gönderme'; +$lang['Reply'] = 'Cevap yazma'; +$lang['Edit'] = 'Deðiþtirme'; +$lang['Delete'] = 'Silme'; +$lang['Sticky'] = 'Önemli'; +$lang['Announce'] = 'Duyuru'; +$lang['Vote'] = 'Oy kullanma'; +$lang['Pollcreate'] = 'Anket yaratma'; + +$lang['Permissions'] = 'Ýzinler'; +$lang['Simple_Permission'] = 'Basit Mod'; + +$lang['User_Level'] = 'Kullanýcý seviyesi'; +$lang['Auth_User'] = 'Kullanýcý'; +$lang['Auth_Admin'] = 'Pano Yöneticisi'; +$lang['Group_memberships'] = 'Grup üyelikleri'; +$lang['Usergroup_members'] = 'Bu grubun üyeleri'; + +$lang['Forum_auth_updated'] = 'Forum izinleri güncellendi'; +$lang['User_auth_updated'] = 'Kullanýcý izinleri güncellendi'; +$lang['Group_auth_updated'] = 'Grup izinleri güncellendi'; + +$lang['Auth_updated'] = 'Ýzinler güncellendi'; +$lang['Click_return_userauth'] = 'Kullanýcý izinlerine dönmek için %sburaya%s týklayýn'; +$lang['Click_return_groupauth'] = 'Grup izinlerine dönmek için %sburaya%s týklayýn'; +$lang['Click_return_forumauth'] = 'Forum izinlerine dönmek için %sburaya%s týklayýn'; + + +// +// Banning +// +$lang['Ban_control'] = 'Yasaklý Kontrolü'; +$lang['Ban_explain'] = 'Buradan kullanýcýlarý yasaklama ayarlarýný yapabilirsiniz. Bunu kullanýcý adýný, IP adresini ya da sunucu adýný banlayarak yapabilirsiniz. Bu, o kullanýcýnýn anasayfaya bile eriþimini engelleyecektir. Bir kullanýcýnýn baþka bir kullanýcý adýyla kaydolmasýný engellemek için o e-posta adresini yasaklayabilirsiniz. Unutmayýn ki bir e-posta adresini yasaklamak o kullanýcýnýn anasayfaya girmesini ya da ileti gondermesini engellemez. Bunun için kullanýcý adý ya da IP - sunucu yasaklamalýsýnýz.'; +$lang['Ban_explain_warn'] = 'Bir IP dizisinin yasaklanmasý baþlangýç ve bitiþ IP\'leri arasýndaki tüm IP\'leri yasaklayacaktýr. Veritabanýnda yer kaplamamasý için uygun olduðu yerlerde joker kullanýlacaktýr. Eðer gerçekten bir IP dizisi girmek istiyorsanýz lütfen onu kýsa tutun ya da tek tek IP\'leri girin.'; + +$lang['Select_username'] = 'Kullanýcý adý seçin'; +$lang['Select_ip'] = 'IP seçin'; +$lang['Select_email'] = 'E-posta adresi seçin'; + +$lang['Ban_username'] = 'Kullanýcý yasaklama'; +$lang['Ban_username_explain'] = 'Birden fazla kullanýcý yasaklamak istiyorsanýz web tarayýcýnýza uygun klavye-fare kombinasyonunu kullanýn.'; + +$lang['Ban_IP'] = 'IP ve Sunucu yasaklama'; +$lang['IP_hostname'] = 'IP ve sunucu adresleri'; +$lang['Ban_IP_explain'] = 'Birden fazla IP/sunucu yasaklamak için araya virgül koyun. Bir IP dizisi belirtmek için baþlangýç ve bitiþ arasýna - koyun. Joker olarak * kullanýn'; + +$lang['Ban_email'] = 'E-posta yasaklama'; +$lang['Ban_email_explain'] = 'Birden fazla e-posta yasaklamak için virgül kullanýn. Joker olarak * kullanýn, mesela *@hotmail.com'; + +$lang['Unban_username'] = 'Bir veya daha fazla kullanýcý baný kaldýrma'; +$lang['Unban_username_explain'] = 'Birden fazla kullanýcýnýn yasaðýný kaldýrmak istiyorsanýz web tarayýcýnýza uygun klavye-fare kombinasyonunu kullanýn'; + +$lang['Unban_IP'] = 'IP/sunucu yasaðý kaldýrma'; +$lang['Unban_IP_explain'] = 'Birden fazla IP/sunucu yasaðýný kaldýrmak istiyorsanýz web tarayýcýnýza uygun klavye-fare kombinasyonunu kullanýn'; + +$lang['Unban_email'] = 'E-posta yasaðý kaldýrma'; +$lang['Unban_email_explain'] = 'Birden fazla e-posta yasaðýný kaldýrmak istiyorsanýz web tarayýcýnýza uygun klavye-fare kombinasyonunu kullanýn'; + +$lang['No_banned_users'] = 'Yasaklý kullanýcý yok'; +$lang['No_banned_ip'] = 'Yasaklý IP yok'; +$lang['No_banned_email'] = 'Yasaklý e-posta yok'; + +$lang['Ban_update_sucessful'] = 'Yasak listesi baþarýyla güncellendi'; +$lang['Click_return_banadmin'] = 'Yasak kontrolüne dönmek için %sburaya%s týklayýn'; + + +// +// Configuration +// +$lang['General_Config'] = 'Genel Ayarlar'; +$lang['Config_explain'] = 'Aþaðýdaki form sitenizdeki genel ayarlarý yapmak için kullanýlacaktýr. Kullanýcý ve forum bazlý ayarlar için sol taraftaki ilgili linklere týklayýnýz.'; + +$lang['Click_return_config'] = 'Genel ayarlara dönmek için %sburaya%s týklayýn'; + +$lang['General_settings'] = 'Genel Pano Ayarlarý'; +$lang['Server_name'] = 'Alan adý'; +$lang['Server_name_explain'] = 'Bu panonun olduðu sitenin alan adý'; +$lang['Script_path'] = 'Yazýlým yolu'; +$lang['Script_path_explain'] = 'Alan adýna göre phpBB yazýlýmýnýn bulunduðu yol'; +$lang['Server_port'] = 'Sunucu portu'; +$lang['Server_port_explain'] = 'Sunucunuzun çalýþtýðý port, genelde 80\'dir, sadece farklýysa deðiþtirin'; +$lang['Site_name'] = 'Pano ismi'; +$lang['Site_desc'] = 'Pano açýklamasý'; +$lang['Board_disable'] = 'Panoyu kapat'; +$lang['Board_disable_explain'] = 'Bu panoyu kullanýcýlara kapayacaktýr.'; +$lang['Acct_activation'] = 'Hesap etkinleþtirme'; +$lang['Acc_None'] = 'Kapalý'; +$lang['Acc_User'] = 'Kullanýcý'; +$lang['Acc_Admin'] = 'Pano Yöneticisi'; + +$lang['Abilities_settings'] = 'Kullanýcý ve Forum Genel Ayarlarý'; +$lang['Max_poll_options'] = 'Maksimum anket seçeneði sayýsý'; +$lang['Flood_Interval'] = 'Flood aralýðý'; +$lang['Flood_Interval_explain'] = 'Kullanýcýnýn iki ileti arasýnda beklemesi gereken süre [ saniye ]'; +$lang['Board_email_form'] = 'Kullanýcýlar arasý e-posta'; +$lang['Board_email_form_explain'] = 'Bu site aracýlýðý ile kullanýcýlarýn birbirlerine e-posta göndermesini saðlar'; +$lang['Topics_per_page'] = 'Her sayfadaki konu sayýsý'; +$lang['Posts_per_page'] = 'Her sayfadaki ileti sayýsý'; +$lang['Hot_threshold'] = 'Popülerlik sýnýrý'; +$lang['Default_style'] = 'Varsayýlan tema'; +$lang['Override_style'] = 'Kullanýcý temasýný gözardý et'; +$lang['Override_style_explain'] = 'Kullanýcýlarýn seçtiði stili varsayýlan ile deðiþtirir'; +$lang['Default_language'] = 'Varsayýlan dil'; +$lang['Date_format'] = 'Saat formatý'; +$lang['System_timezone'] = 'Sistem zaman dilimi'; +$lang['Enable_gzip'] = 'GZip sýkýþtýrma'; +$lang['Enable_prune'] = 'Ýleti temizliði'; +$lang['Allow_HTML'] = 'HTML\'e izin ver'; +$lang['Allow_BBCode'] = 'Biçimlendirmeye (BBCode) izin ver'; +$lang['Allowed_tags'] = 'Ýzin verilen HTML etiketleri'; +$lang['Allowed_tags_explain'] = 'Etiketleri virgüllerle ayýrýn'; +$lang['Allow_smilies'] = 'Ýfadelere izin ver'; +$lang['Smilies_path'] = 'Ýfade dizini'; +$lang['Smilies_path_explain'] = 'phpBB ana dizinine göre ifadeler dizini, örn: images/smilies'; +$lang['Allow_sig'] = 'Ýmzaya izin ver'; +$lang['Max_sig_length'] = 'Maksimum imza uzunluðu'; +$lang['Max_sig_length_explain'] = 'Kullanýcý imzalarýndaki maksimum karakter sayýsý'; +$lang['Allow_name_change'] = 'Kullanýcý adý deðiþikliðine izin ver'; + +// Avatar ayarlarý +$lang['Avatar_settings'] = 'Kiþisel Sembol Ayarlarý'; +$lang['Allow_local'] = 'Galeri sembolerini aç'; +$lang['Allow_remote'] = 'Uzak sembolleri aç'; +$lang['Allow_remote_explain'] = 'Baþka bir siteden link verilen semboller'; +$lang['Allow_upload'] = 'Sembol göndermeyi aç'; +$lang['Max_filesize'] = 'Maksimum sembol dosya büyüklüðü'; +$lang['Max_filesize_explain'] = 'Gönderilen semboller için'; +$lang['Max_avatar_size'] = 'Maksimum sembol boyutlarý'; +$lang['Max_avatar_size_explain'] = '(Piksel olarak Yükseklik x Geniþlik)'; +$lang['Avatar_storage_path'] = 'Sembol dizini'; +$lang['Avatar_storage_path_explain'] = 'phpBB ana dizinine göre, örn: images/avatars'; +$lang['Avatar_gallery_path'] = 'Sembol galeri dizini'; +$lang['Avatar_gallery_path_explain'] = 'phpBB ana dizinine göre önceden yüklenmiþ sembollerin yeri, örn: images/avatars/gallery'; + +// COPPA Ayarlarý +$lang['COPPA_settings'] = 'COPPA Ayarlarý'; +$lang['COPPA_fax'] = 'COPPA fax numarasý'; +$lang['COPPA_mail'] = 'COPPA e-posta adresi'; +$lang['COPPA_mail_explain'] = 'Ebeveynlerin COPPA anlaþmasýný gönderecekleri yer'; + +// E-posta ayarlarý +$lang['Email_settings'] = 'E-posta Ayarlarý'; +$lang['Admin_email'] = 'Yönetici e-posta adresi'; +$lang['Email_sig'] = 'E-posta imzasý'; +$lang['Email_sig_explain'] = 'Gönderilecek tüm e-postalara bu yazý eklenir'; +$lang['Use_SMTP'] = 'E-posta için SMTP sunucusunu kullan'; +$lang['Use_SMTP_explain'] = 'Yerel sendmail fonksiyonu yerine SMTP sunucusunu kullanmak için Evet\'i seçin'; +$lang['SMTP_server'] = 'SMTP sunucu adresi'; +$lang['SMTP_username'] = 'SMTP kullanýcý adý'; +$lang['SMTP_username_explain'] = 'Sadece SMTP sunucunuz kullanýcý adý istiyorsa giriniz'; +$lang['SMTP_password'] = 'SMTP parolasý'; +$lang['SMTP_password_explain'] = 'Sadece SMTP sunucunuz parola istiyorsa giriniz'; + +$lang['Disable_privmsg'] = 'Özel mesajlaþma'; +$lang['Inbox_limits'] = 'Gelenler\'deki maksimum msj. sayýsý '; +$lang['Sentbox_limits'] = 'Ulaþanlar\'daki maksimum msj. sayýsý'; +$lang['Savebox_limits'] = 'Saklananlar\'daki maksimum msj. sayýsý'; + +// Cookie Ayarlarý +$lang['Cookie_settings'] = 'Çerez (cookie) Ayarlarý'; +$lang['Cookie_settings_explain'] = 'Bu çerez\'lerin browserlara nasýl gönderildiðini ayarlamak içindir. Bir çok durumda bu ilk halinde býrakýlmalýdýr. Bunlarý deðiþtirmeniz gerekiyorsa dikkatli olun, yanlýþ ayarlar kullanýcýlarýn oturum açmasýný engeller.'; +$lang['Cookie_domain'] = 'Çerez alan adý'; +$lang['Cookie_name'] = 'Çerez adý'; +$lang['Cookie_path'] = 'Çerez yolu'; +$lang['Cookie_secure'] = 'Çerez güvenliði [ https ]'; +$lang['Cookie_secure_explain'] = 'Sunucunuz SSL modunda çalýþýyorsa açýn, aksi halde açmayýn'; +$lang['Session_length'] = 'Oturum uzunluðu [ saniye ]'; + +// Visual Confirmation System +$lang['Visual_confirm'] = 'Görsel kayýt doðrulamaya izin ver'; +$lang['Visual_confirm_explain'] = 'Yeni kayýt olanlarý, resim ile gösterilen bir kodu girmeye mecbur eder.'; + +// Autologin Keys - added 2.0.18 +$lang['Allow_autologin'] = 'Otomatik oturum'; +$lang['Allow_autologin_explain'] = 'Kullanýcýlarýn giriþte beni hatýrla seçeneðini seçmelerine izin ver.'; +$lang['Autologin_time'] = 'Otomatik giriþ geçerliliði '; +$lang['Autologin_time_explain'] = 'Panoyu ziyaret etmeyenler için otomatik giriþin geçerlilik süresi. Kapamak için sýfýr yapýn.'; + +// Search Flood Control - added 2.0.20 +$lang['Search_Flood_Interval'] = 'Arama Flood Aralýðý'; +$lang['Search_Flood_Interval_explain'] = 'Kullanýcýnýn iki arama arasýnda beklemesi gereken süre [ saniye ]'; + +// +// Forum Management +// +$lang['Forum_admin'] = 'Forum Yönetimi'; +$lang['Forum_admin_explain'] = 'Buradan kategori ve forumlar ekleyebilir, silebilir, deðiþtirebilirsiniz.'; +$lang['Edit_forum'] = 'Forumu deðiþtir'; +$lang['Create_forum'] = 'Yeni forum ekle'; +$lang['Create_category'] = 'Yeni kategori ekle'; +$lang['Remove'] = 'Çýkar'; +$lang['Action'] = 'Eylem'; +$lang['Update_order'] = 'Sýralamayý güncelle'; +$lang['Config_updated'] = 'Ayarlar Baþarýyla Güncellendi'; +$lang['Edit'] = 'Deðiþtir'; +$lang['Delete'] = 'Sil'; +$lang['Move_up'] = 'Yukarý taþý'; +$lang['Move_down'] = 'Aþaðý taþý'; +$lang['Resync'] = 'Yenile'; +$lang['No_mode'] = 'Hiçbir yöntem seçilmedi'; +$lang['Forum_edit_delete_explain'] = 'Aþaðýdaki form panonuzdaki genel ayarlarý yapmak için kullanýlacaktýr. Kullanýcý ve forum bazlý ayarlar için sol taraftaki ilgili linklere týklayýnýz.'; + +$lang['Move_contents'] = 'Tüm içeriði taþý'; +$lang['Forum_delete'] = 'Forumu sil'; +$lang['Forum_delete_explain'] = 'Aþaðýdaki form ile forum ya da kategori silebilir, içeriklerini istediðiniz yere taþýyabilirsiniz'; + +$lang['Status_locked'] = 'Kilitli'; +$lang['Status_unlocked'] = 'Kilitli deðil'; +$lang['Forum_settings'] = 'Genel Forum Ayarlarý'; +$lang['Forum_name'] = 'Forum adý'; +$lang['Forum_desc'] = 'Açýklama'; +$lang['Forum_status'] = 'Forum durumu'; +$lang['Forum_pruning'] = 'Otomatik Ýleti Temizleme'; + +$lang['prune_freq'] = 'Her x günde bir forumu kontrol et'; +$lang['prune_days'] = 'x gün içinde cevap gelmeyen konularý sil'; +$lang['Set_prune_data'] = 'Ýleti temizliðini açtýðýnýz halde kaç günde bir ileti temizliði yapýlacagýný seçmediniz'; + +$lang['Move_and_Delete'] = 'Taþý ve Sil'; + +$lang['Delete_all_posts'] = 'Tüm iletileri sil'; +$lang['Nowhere_to_move'] = 'Taþýnacak yer yok'; + +$lang['Edit_Category'] = 'Kategoriyi deðiþtir'; +$lang['Edit_Category_explain'] = 'Bir kategorinin ismini deðiþtirmek için bu formu kullanýn.'; + +$lang['Forums_updated'] = 'Forum ve Kategori bilgisi baþarýyla güncellendi'; +$lang['Must_delete_forums'] = 'Bu kategoriyi silmeden önce içindeki tüm forumlarý silmelisiniz'; + +$lang['Click_return_forumadmin'] = 'Forum yönetim paneline dönmek için %sburaya%s týklayýn'; + + +// +// Smiley Management +// +$lang['smiley_title'] = 'Ýfade Kontrol Paneli'; +$lang['smile_desc'] = 'Buradan kullanýcýlara sunulan ifadeleri ekleyebilir kaldýrabilir ya da deðiþtirebilirsiniz.'; + +$lang['smiley_config'] = 'Ýfade Ayarlarý'; +$lang['smiley_code'] = 'Ýfade Kodu'; +$lang['smiley_url'] = 'Ýfade Resim Dosyasý'; +$lang['smiley_emot'] = 'Ýfade Açýklamasý'; +$lang['smile_add'] = 'Yeni ifade ekle'; +$lang['Smile'] = 'Ýfade'; +$lang['Emotion'] = 'Açýklama'; + +$lang['Select_pak'] = 'Paket (.pak) dosyasý seç'; +$lang['replace_existing'] = 'Var olan ifadeyi bununla deðiþtir'; +$lang['keep_existing'] = 'Var olan ifadeyi koru'; + +$lang['smiley_import_inst'] = 'Ýfade dosyasýný zip ile açmalý ve uygun ifade dizinine göndermelisiniz. Sonra buradan doðru seçenekleri bularak yükleme iþlemini gerçekleþtiriniz.'; +$lang['smiley_import'] = 'Ýfade Paketi Kurma'; +$lang['choose_smile_pak'] = 'Ýfade Paket Dosyasý (.pak) Seçin'; +$lang['import'] = 'Ýfade Paketi Kur'; +$lang['smile_conflicts'] = 'Ýkilemlerde ne yapýlmalý?'; +$lang['del_existing_smileys'] = 'Kurumdan önce var olan ifadeleri sil'; +$lang['import_smile_pack'] = 'Ýfade Paketi Kur'; +$lang['export_smile_pack'] = 'Ýfade Paketi Yarat'; +$lang['export_smiles'] = 'Var olan ifadelerinizden bir paket yaratmak için, smiles.pak dosyasýný indirmek için %sburaya%s týklayýn. .pak uzantýsýný korumak suretiyle bu dosyanýn ismini deðiþtirin. Sonra bu .pak dosyasýný ve ilgili ifade resimlerini tek bir zip dosyasý içinde sýkýþtýrýn.'; + +$lang['smiley_add_success'] = 'Ýfade baþarýyla eklendi'; +$lang['smiley_edit_success'] = 'Ýfade baþarýyla güncellendi'; +$lang['smiley_import_success'] = 'Ýfade Paketi kurulumu baþarýldý!'; +$lang['smiley_del_success'] = 'Ýfade baþarýyla silindi'; +$lang['Click_return_smileadmin'] = 'Ýfade kontrol paneline dönmek için %sburaya%s týklayýn'; +$lang['Confirm_delete_smiley'] = 'Bu ifadeyi silmek istediðinize emin misiniz?'; + + +// +// User Management +// +$lang['User_admin'] = 'Kullanýcý Yönetimi'; +$lang['User_admin_explain'] = 'Buradan kullanýcýlarýnýzýn ayarlarýný deðiþtirebilirsiniz. Ýzinleri deðiþtirmek için soldan Ýzinler linkini kullanýn.'; + +$lang['Look_up_user'] = 'Kullanýcýyý incele'; + +$lang['Admin_user_fail'] = 'Kullanýcýnýn bilgileri güncellenemedi.'; +$lang['Admin_user_updated'] = 'Kullanýcý bilgileri baþarýyla güncellendi.'; +$lang['Click_return_useradmin'] = 'Kullanýcý Yönetim Paneline dönmek için %sburaya%s týklayýn'; + +$lang['User_delete'] = 'Bu kullanýcýyý sil'; +$lang['User_delete_explain'] = 'Kullanýcýyý silmek için burayý iþaretleyin. Bu dönüþü olmayan bir iþlemdir.'; +$lang['User_deleted'] = 'Kullanýcý baþarýyla silindi.'; + +$lang['User_status'] = 'Bu kullanýcý þu anda aktif'; +$lang['User_allowpm'] = 'Özel mesaj atabilir'; +$lang['User_allowavatar'] = 'Kiþisel sembol kullanabilir'; + +$lang['Admin_avatar_explain'] = 'Burdan kullanýcýnýn þu andaki kiþisel sembolünü silebilir ya da deðiþtirebilirsiniz.'; +$lang['User_special'] = 'Özel yönetici alanlarý'; +$lang['User_special_explain'] = 'Bu alanlar kullanýcýlar tarafýndan deðiþtirilemez. Buradan bütün kullanýcýlara verilmeyen ayarlarý yapabilirsiniz.'; + + +// +// Group Management +// +$lang['Group_administration'] = 'Grup Yönetimi'; +$lang['Group_admin_explain'] = 'Burdan gruplarýnýzý yaratabilir, silebilir ya da deðiþtirebilirsiniz. Grup yöneticilerini, grup durumlarýný, grup isimlerini deðiþtirebilirsiniz'; +$lang['Error_updating_groups'] = 'Gruplar güncellenirken bir hata oluþtu'; +$lang['Updated_group'] = 'Grup baþarýyla güncellendi'; +$lang['Added_new_group'] = 'Yeni grup baþarýyla yaratýldý'; +$lang['Deleted_group'] = 'Grup baþarýyla silindi'; +$lang['New_group'] = 'Yeni grup yarat'; +$lang['Edit_group'] = 'Grubu deðiþtir'; +$lang['group_name'] = 'Grup adý'; +$lang['group_description'] = 'Grup açýklamasý'; +$lang['group_moderator'] = 'Grup yöneticisi'; +$lang['group_status'] = 'Grup durumu'; +$lang['group_open'] = 'Açýk grup'; +$lang['group_closed'] = 'Kapalý grup'; +$lang['group_hidden'] = 'Gizli grup'; +$lang['group_delete'] = 'Grubu sil'; +$lang['group_delete_check'] = 'Bu grubu sil'; +$lang['submit_group_changes'] = 'Deðiþiklikleri gönder'; +$lang['reset_group_changes'] = 'Deðiþiklikleri sil'; +$lang['No_group_name'] = 'Bu grup için bir isim belirtmelisiniz'; +$lang['No_group_moderator'] = 'Bu grup için bir yönetici belirtmelisiniz'; +$lang['No_group_mode'] = 'Bu grup için bir mod belirmelisiniz, açýk ya da kapalý'; +$lang['No_group_action'] = 'Bir görev seçilmemiþ'; +$lang['delete_group_moderator'] = 'Eski grup yöneticisi sil'; +$lang['delete_moderator_explain'] = 'Grup yöneticisi deðiþtirirken, eski yöneticiyi gruptan atmak için burayý iþaretleyin. Aksi takdirde kullanýcý grubun normal bir üyesi olacaktýr.'; +$lang['Click_return_groupsadmin'] = 'Grup yönetimine dönmek için %sburaya%s týklayýn.'; +$lang['Select_group'] = 'Grup seç'; +$lang['Look_up_group'] = 'Grubu incele'; + + +// +// Prune Administration +// +$lang['Forum_Prune'] = 'Ýleti Temizliði'; +$lang['Forum_Prune_explain'] = 'Bu form ile seçtiðiniz gün sayýsý içinde cevap gelmeyen konularý silebilirsiniz. Eðer bir sayý girmezseniz tüm iletiler silinir. Ýçinde anket olan iletileri ya da duyurularý silmeyecektir. Onlarý tek tek elle silmek zorundasýnýz.'; +$lang['Do_Prune'] = 'Temizlik Yap'; +$lang['All_Forums'] = 'Tüm forumlar'; +$lang['Prune_topics_not_posted'] = 'Bu kadar gün içinde cevap gelmemiþ iletileri sil'; +$lang['Topics_pruned'] = 'Silinen konular'; +$lang['Posts_pruned'] = 'Silinen iletiler'; +$lang['Prune_success'] = 'Ýleti temizliði baþarýlý!'; + + +// +// Word censor +// +$lang['Words_title'] = 'Kelime Sansürleme'; +$lang['Words_explain'] = 'Buradan otomatik olarak sansürlenecek kelimeleri ekleyebilir, silebilir, deðiþtirebilirsiniz. Ayrýca insanlar bu kelimeleri kullanýcý adlarýnda da kullanamazlar. Joker olarak * kullanabilirsiniz, Örn: *siklo* ansiklopedi\'yi, siklo* siklon\'u, *siklo dersiklo\'yu sansürleyecektir.'; +$lang['Word'] = 'Kelime'; +$lang['Edit_word_censor'] = 'Sansürlü kelimeyi deðiþtir'; +$lang['Replacement'] = 'Yerine konulacak'; +$lang['Add_new_word'] = 'Yeni kelime ekle'; +$lang['Update_word'] = 'Sansürü güncelle'; + +$lang['Must_enter_word'] = 'Bir kelime ve onun yerine girilecek kelimeyi girmelisiniz'; +$lang['No_word_selected'] = 'Deðiþtirmek için bir kelime seçmediniz'; + +$lang['Word_updated'] = 'Seçilen sansürlü kelime baþarýyla güncellendi'; +$lang['Word_added'] = 'Sansürlü kelime baþarýyla eklendi'; +$lang['Word_removed'] = 'Seçilen sansürlü kelime baþarýyla silindi'; + +$lang['Click_return_wordadmin'] = 'Kelime sansürü yönetim paneline dönmek için %sburaya%s týklayýn'; +$lang['Confirm_delete_word'] = 'Bu kelime sansürünü silmek istediðinize emin misiniz?'; + + +// +// Mass Email +// +$lang['Mass_email_explain'] = 'Buradan tüm kullanýcýlarýnýza ya da bir gruba dahil tüm kullanýcýlara e-posta gönderebilirsiniz. Bu yönetici e-postasýna atýlan mesajýn gizli karbon kopyalarýnýn kullanýcýlara gönderilmesi yoluyla yapýlacak. Eðer geniþ bir gruba gönderiyorsanýz lütfen stop butonuna basmayýn ve sayfanýn yüklenmesini sabýrlý bir þekilde bekleyin. Büyük bir toptan e-posta gönderiminin yavaþ olmasý doðaldýr, yazýlým görevini tamamladýðýnda size haber verilecektir.'; +$lang['Compose'] = 'Oluþtur'; +$lang['Recipients'] = 'Alýcýlar'; +$lang['All_users'] = 'Tüm Kullanýcýlar'; +$lang['Email_successfull'] = 'Mesajýnýz Gönderilmiþtir'; +$lang['Click_return_massemail'] = 'Toptan e-posta formuna dönmek için %sburaya%s týklayýnýz'; + + +// +// Ranks admin +// +$lang['Ranks_title'] = 'Seviye Yönetimi'; +$lang['Ranks_explain'] = 'Buradan kullanýcýlarýnýza verilecek seviyeler yaratabilir, silebilir ve deðiþtirebilirsiniz. Kullanýcý yönetiminden kullanýcýlara verilebilecek özel seviyeler de yaratabilirsiniz.'; + +$lang['Add_new_rank'] = 'Yeni seviye ekle'; + +$lang['Rank_title'] = 'Seviye Adý'; +$lang['Rank_special'] = 'Özel Seviye'; +$lang['Rank_minimum'] = 'Minimum Ýleti Sayýsý'; +$lang['Rank_maximum'] = 'Maksimum Ýleti Sayýsý'; +$lang['Rank_image'] = 'Seviye resmi (phpBB ana dizinine göre)'; +$lang['Rank_image_explain'] = 'Seviye için ufak bir resim kullanýn'; + +$lang['Must_select_rank'] = 'Bir seviye seçmelisiniz'; +$lang['No_assigned_rank'] = 'Hiç özel seviye atanmamýþ'; + +$lang['Rank_updated'] = 'Seviye baþarýyla güncellendi'; +$lang['Rank_added'] = 'Seviye baþarýyla eklendi'; +$lang['Rank_removed'] = 'Seviye baþarýyla silindi'; +$lang['No_update_ranks'] = 'Bu seviye baþarýyla silindi, ancak bu seviyeye sahip olan kullanýcýlarýn ayarlarý deðiþmedi. Bu kullanýcýlarýn hesaplarýný kendiniz güncellemelisiniz'; + +$lang['Click_return_rankadmin'] = 'Seviye yönetimine dönmek için %sburaya%s týklayýn'; +$lang['Confirm_delete_rank'] = 'Bu seviyeyi silmek istediðinize emin misiniz?'; + + +// +// Disallow Username Admin +// +$lang['Disallow_control'] = 'Yasaklý Kullanýcý Ýsmi Kontrolü'; +$lang['Disallow_explain'] = 'Burada kullanýlmamasý gereken kullanýcý adlarýný ayarlayabilirsiniz. Joker olarak * kullanabilirsiniz. Kayýt olmuþ bir kullanýcý adýný yasaklayamazsýnýz, bunu yapmak için ilk önce o kullanýcýyý silmelisiniz'; + +$lang['Delete_disallow'] = 'Sil'; +$lang['Delete_disallow_title'] = 'Yasaklý bir kullanýcý adýný kaldýr'; +$lang['Delete_disallow_explain'] = 'Buradan yasaklý bir kullanýcý adýný seçip sil butonuna basarak yasaðý kaldýrabilirsiniz'; + +$lang['Add_disallow'] = 'Ekle'; +$lang['Add_disallow_title'] = 'Yasaklý bir kullanýcý adý ekle'; +$lang['Add_disallow_explain'] = 'Joker olarak * kullanabilirsiniz'; + +$lang['No_disallowed'] = 'Yasaklý kullanýcý adý yok'; + +$lang['Disallowed_deleted'] = 'Yasaklý kullanýcý adý baþarýyla kaldýrýldý'; +$lang['Disallow_successful'] = 'Yasaklý kullanýcý adý baþarýyla eklendi'; +$lang['Disallowed_already'] = 'Girdiðiniz ad yasaklanamadý. Ya listede var, ya sansür listesinde var, ya da böyle bir kullanýcý mevcut'; + +$lang['Click_return_disallowadmin'] = 'Yasaklý kullanýcý adý kontrol paneline dönmek için %sburaya%s týklayýn'; + + +// +// Styles Admin +// +$lang['Styles_admin'] = 'Stil Yönetimi'; +$lang['Styles_explain'] = 'Buradan kullanýcýlarýnýza sunduðunuz temalarýnýzý yönetebilirsiniz'; +$lang['Styles_addnew_explain'] = 'Burada tüm tema\'larýnýz listelenmiþtir. Bunlar henüz veritabanýna kaydedilmemiþtir. Kaydetmek için birini seçin ve Yükle tuþuna basýn'; + +$lang['Select_template'] = 'Bir tema seçin'; + +$lang['Style'] = 'Stil'; +$lang['Template'] = 'Tema'; +$lang['Install'] = 'Yükle'; +$lang['Download'] = 'Ýndir'; + +$lang['Edit_theme'] = 'Tema\'yý deðiþtir'; +$lang['Edit_theme_explain'] = 'Aþaðýdaki form ile seçtiðiniz tema\'yý deðiþtirebilirsiniz'; + +$lang['Create_theme'] = 'Tema yarat'; +$lang['Create_theme_explain'] = 'Aþaðýdaki form ile seçilen tema için yeni bir stil yaratýn. Renkleri girerken # iþaretini kullanmayýn. Örn: CCCCCC doðru, #CCCCCC yanlýþ'; + +$lang['Export_themes'] = 'Tema\'yý kaydet'; +$lang['Export_explain'] = 'Bu panel ile seçtiðiniz tema için bir stil dosyasý yaratýp kaydedebileceksiniz. Aþaðýdan temayý seçin ve yazýlým onun için gerekli tema dosyasýný yaratýp o dizine kaydetmeyi deneyecektir. Eðer kaydedemezse size indirme seçeneðini sunacaktýr. Yazýlým\'ýn dosyayý kaydedebilmesi için o dizine yazma izninin verilmiþ olmasý gerekir. Ayrýntýlý bilgi için PhpBB2 kullanma kýlavuzuna bakýn.'; + +$lang['Theme_installed'] = 'Seçilen tema baþarýyla yüklendi'; // eklendi +$lang['Style_removed'] = 'Seçilen tema veritabanýndan baþarýyla silindi. Bu tema\'yý sisteminizden tamamýyla silmek için dosylarýný da silmelisiniz.'; +$lang['Theme_info_saved'] = 'Seçilen tema için stil bilgisi kaydedildi.'; +$lang['Theme_updated'] = 'Seçilen tema güncellendi. Þimdi yeni tema ayarlarýný kaydetmelisiniz'; +$lang['Theme_created'] = 'Tema yaratýldý. Þimdi bu tema\'yý sonradan kullanmak ya da taþýmak için kaydetmelisiniz'; + +$lang['Confirm_delete_style'] = 'Bu stili silmek istediðinize emin misiniz?'; + +$lang['Download_theme_cfg'] = 'Tema bilgi dosyasý yazýlamadý. Dosyayý indirmek için aþaðýdaki butona týklayýnýz. Sonra onu ilgili tema dosyalarýnýn bulunduðu dizine göndermelisiniz. Sonra isterseniz dosyalarý daðýtým ya da baþka bir amaçla paketleyebilirsiniz'; +$lang['No_themes'] = 'Seçilen temanýn atanmýþ hiç stili yok. Sol taraftaki Stil Yönetimi\'nden Yarat\'a týklayýnýz'; +$lang['No_template_dir'] = 'Tema dizini açýlamadý. Web sunucusu tarafýndan okunamýyor olabilir ya da böyle bir dizin yok'; +$lang['Cannot_remove_style'] = 'Bu stil þu anda varsayýlan stil olduðu için silinemez. Varsayýlan stili deðiþtirip tekrar deneyin.'; +$lang['Style_exists'] = 'Seçilen stil adý kullanýmda, lütfen baþka bir isim seçiniz.'; + +$lang['Click_return_styleadmin'] = 'Stil yönetimine dönmek için %sburaya%s týklayýn'; + +$lang['Theme_settings'] = 'Tema Ayarlarý'; +$lang['Theme_element'] = 'Tema Elemanlarý'; +$lang['Simple_name'] = 'Ýsmi'; +$lang['Value'] = 'Deðer'; +$lang['Save_Settings'] = 'Ayarlarý Kaydet'; + +$lang['Stylesheet'] = 'CSS Stil Þablonu'; +$lang['Stylesheet_explain'] = 'Bu tema için kullanýlacak CSS þablonunun adý.'; +$lang['Background_image'] = 'Arkaplan Resmi'; +$lang['Background_color'] = 'Arkaplan Rengi'; +$lang['Theme_name'] = 'Tema Adý'; +$lang['Link_color'] = 'Link Rengi'; +$lang['Text_color'] = 'Yazý Rengi'; +$lang['VLink_color'] = 'Ziyaret Edilmiþ Link Rengi'; +$lang['ALink_color'] = 'Aktif Link Rengi'; +$lang['HLink_color'] = 'Üstüne Gelinen Link Rengi'; +$lang['Tr_color1'] = 'Tablo Satýr Rengi 1'; +$lang['Tr_color2'] = 'Tablo Satýr Rengi 2'; +$lang['Tr_color3'] = 'Tablo Satýr Rengi 3'; +$lang['Tr_class1'] = 'Tablo Satýr Sýnýfý 1'; +$lang['Tr_class2'] = 'Tablo Satýr Sýnýfý 2'; +$lang['Tr_class3'] = 'Tablo Satýr Sýnýfý 3'; +$lang['Th_color1'] = 'Tablo Konu Rengi 1'; +$lang['Th_color2'] = 'Tablo Konu Rengi 2'; +$lang['Th_color3'] = 'Tablo Konu Rengi 3'; +$lang['Th_class1'] = 'Tablo Konu Sýnýfý 1'; +$lang['Th_class2'] = 'Tablo Konu Sýnýfý 2'; +$lang['Th_class3'] = 'Tablo Konu Sýnýfý 3'; +$lang['Td_color1'] = 'Tablo Hücre Rengi 1'; +$lang['Td_color2'] = 'Tablo Hücre Rengi 2'; +$lang['Td_color3'] = 'Tablo Hücre Rengi 3'; +$lang['Td_class1'] = 'Tablo Hücre Sýnýfý 1'; +$lang['Td_class2'] = 'Tablo Hücre Sýnýfý 2'; +$lang['Td_class3'] = 'Tablo Hücre Sýnýfý 3'; +$lang['fontface1'] = 'Karakter Tipi 1'; +$lang['fontface2'] = 'Karakter Tipi 2'; +$lang['fontface3'] = 'Karakter Tipi 3'; +$lang['fontsize1'] = 'Karakter Büyüklüðü 1'; +$lang['fontsize2'] = 'Karakter Büyüklüðü 2'; +$lang['fontsize3'] = 'Karakter Büyüklüðü 3'; +$lang['fontcolor1'] = 'Karakter Rengi 1'; +$lang['fontcolor2'] = 'Karakter Rengi 2'; +$lang['fontcolor3'] = 'Karakter Rengi 3'; +$lang['span_class1'] = 'Span Sýnýfý 1'; +$lang['span_class2'] = 'Span Sýnýfý 2'; +$lang['span_class3'] = 'Span Sýnýfý 3'; +$lang['img_poll_size'] = 'Anket resmi büyüklüðü [px]'; +$lang['img_pm_size'] = 'Özel mesajlar durum resmi büyüklüðü [px]'; + + +// +// Install Process +// +$lang['Welcome_install'] = 'phpBB Yüklemesine Hoþgeldiniz'; +$lang['Initial_config'] = 'Genel Ayarlar'; +$lang['DB_config'] = 'Veritabaný Ayarlarý'; +$lang['Admin_config'] = 'Yönetici Ayarlarý'; +$lang['continue_upgrade'] = 'Config dosyasýný bilgisayarýnza indirdikten sonra \'Güncellemeye Devam\' düðmesine basarak güncelleme iþlemine devam edebilirsiniz.'; +$lang['upgrade_submit'] = 'Güncellemeye Devam'; + +$lang['Installer_Error'] = 'Yükleme sýrasýnda bir problem oluþtu'; +$lang['Previous_Install'] = 'Önceden yüklenmiþ bir phpBB bulundu'; +$lang['Install_db_error'] = 'Veritabanýný güncellerken bir hata oluþtu'; + +$lang['Re_install'] = 'Önceden yüklediðiniz phpBB halen aktif.

    Eðer phpBB\'yi yeniden yüklemek istiyorsanýz aþaðýdaki evet düðmesine basýn. Bunu yaparken bunun þu andaki tüm verileri sileceðini, yedek yapýlmayacaðýný unutmayýn! Yönetici kullanýcý adý ve parolanýz yeniden oluþturulacaktýr; baþka hiçbir ayarýnýz korunmayacaktýr.

    Evet\'e basmadan önce iyi düþünün!'; +$lang['Inst_Step_0'] = 'phpBB\'yi seçtiðiniz için teþekkür ederiz. Yükleme iþlemini bitirmek için lütfen aþaðýdaki boþluklarý doldurunuz. Kullanacaðýnýz veritabanýný önceden yaratmýþ olmanýz gerekmektedir. ODBC kullanan bir veritabanýna yükleme yapacaksanýz, (Örn: MS Access) devam etmeden önce bir DSN yaratmalýsýnýz.'; + +$lang['Start_Install'] = 'Yüklemeye baþla'; +$lang['Finish_Install'] = 'Yüklemeyi bitir'; + +$lang['Default_lang'] = 'Panonun varsayýlan dili'; +$lang['DB_Host'] = 'Veritabaný sunucu adresi'; +$lang['DB_Name'] = 'Veritabaný adý'; +$lang['DB_Username'] = 'Veritabaný kullanýcý adý'; +$lang['DB_Password'] = 'Veritabaný parolasý'; +$lang['Database'] = 'Veritabanýnýz'; +$lang['Install_lang'] = 'Yükleme dilini seçin'; +$lang['dbms'] = 'Veritabaný türü'; +$lang['Table_Prefix'] = 'Veritabaný tablo önadlarý'; +$lang['Admin_Username'] = 'Yönetici kullanýcý adý'; +$lang['Admin_Password'] = 'Yönetici parolasý'; +$lang['Admin_Password_confirm'] = 'Yönetici parolasý [ onay ]'; + +$lang['Inst_Step_2'] = 'Yönetici kullanýcý oluþturuldu. Bu noktada temel yükleme tamamlandý. Þimdi yeni yüklediðiniz panoyu yönetebileceðiniz bir sayfaya yönlendirileceksiniz. Genel ayarlarý kontrol edin ve kendi ihtiyaçlarýnýz doðrultusunda ayarlarlayýn. phpBB\'yi seçtiðiniz için teþekkür ederiz.'; + +$lang['Unwriteable_config'] = 'Þu anda config dosyasýna yazýlamýyor. Aþaðýdaki butona basýnca bu config dosyasýnýn bir kopyasý bilgisayarýnýza indirilecektir. Bu dosyayý phpBB ile ayný dizin içine göndermelisiniz. Bunu yaptýktan sonra bir önceki form\'la yaratýlan yönetici adý ve parolasýný kullanarak yönetim paneline girmeli ve ayarlarý yapmalýsýnýz. (Oturum açtýktan sonra ekranýn altýnda bir link görünecektir). phpBB\'yi seçtiðiniz için teþekkür ederiz.'; +$lang['Download_config'] = 'Config dosyasýný indir'; + +$lang['ftp_choose'] = 'Ýndirme Metodunu Seçin'; +$lang['ftp_option'] = '
    PHP\'nin bu sürümünde ftp komutlarýna izin verildiði için direk config dosyasýný yerine ftp ile gönderebilirsiniz.'; +$lang['ftp_instructs'] = 'Config dosyasýný phpBB\'nin bulunduðu yere otomatik olarak ftp ile göndermeyi seçtiniz. Lütfen aþaðýdaki bilgileri doldurunuz'; +$lang['ftp_info'] = 'FTP bilgilerinizi girin'; +$lang['Attempt_ftp'] = 'FTP ile gönderme deneniyor'; +$lang['Send_file'] = 'Bana sadece dosyayý gönder ve ben onu kendim FTP\'liyim'; +$lang['ftp_path'] = 'phpBB FTP yolu'; +$lang['ftp_username'] = 'FTP Kullanýcý Adý'; +$lang['ftp_password'] = 'FTP Parolasý'; +$lang['Transfer_config'] = 'Transfere baþla'; +$lang['NoFTP_config'] = 'FTP iþlemi baþarýsýz. Lütfen config doyasýný indirip kendiniz gönderiniz'; + +$lang['Install'] = 'Yükle'; +$lang['Upgrade'] = 'Güncelle'; + +$lang['Install_Method'] = 'Yükleme metodu'; +$lang['Install_No_Ext'] = 'Sunucu\'nuz seçtiðiniz veritabaný türünü desteklemiyor'; +$lang['Install_No_PCRE'] = 'phpBB, php için \'Perl-Compatible Regular Expressions\' modülüne ihtiyaç duymaktadýr. Kullandýðýnýz php ayarlarý bunu desteklememektedir'; + +// +// Version Check +// +$lang['Version_up_to_date'] = 'Son phpBB2 sürümünü kullanýyorsunuz. Önerilen güncelleme bulunmamaktadýr.'; +$lang['Version_not_up_to_date'] = 'Kullandýðýnýz phpBB2 sürümü güncel deðil. Güncel sürüme sahip olmak için phpbb.com sitesinin phpbb indirme bölümünü ziyaret ediniz.'; +$lang['Latest_version_info'] = 'Mevcut olan en yeni phpBB sürümü: %s. '; +$lang['Current_version_info'] = 'Kullandýðýnýz phpBB sürümü: %s.'; +$lang['Connect_socket_error'] = 'phpBB sitesi ile baðlantý kurulamadý. Bildirilen hata:
    %s'; +$lang['Socket_functions_disabled'] = 'Soket fonksiyonlarýnda sorun oluþtu.'; +$lang['Mailing_list_subscribe_reminder'] = 'En son phpBB güncellemelerinden haberdar olmak istiyorsanýz, lütfen phpBB Haber Servisine abone olun.'; +$lang['Version_information'] = 'Sürüm Bilgisi'; + +// +// Login attempts configuration +// +$lang['Max_login_attempts'] = 'Ýzin verilen oturum açma denemesi'; +$lang['Max_login_attempts_explain'] = 'Pano için izin verilen oturum açma deneme sayýsý.'; +$lang['Login_reset_time'] = 'Oturum açma kilit zamaný'; +$lang['Login_reset_time_explain'] = 'Ýzin verilen oturum açma deneme sayýsý aþýldýktan sonra, bir sonraki oturum açma izni için mecburi beklenmesi gereken dakika.'; + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/lang_bbcode.php b/includes/shared/phpbb2/language/lang_turkish/lang_bbcode.php new file mode 100644 index 00000000..05bef3d2 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/lang_bbcode.php @@ -0,0 +1,61 @@ +
  • Metnin belirli bir kýsmýný kalýn harflerle görüntülemek için [b][/b] etiketleri içine alýn, örn.

    [b]Merhaba[/b]

    yazýlýnca Merhaba olarak görüntülenir.
  • Altýçizili yazýlar için [u][/u] kullanýn, örn.:

    [u]Günaydýn[/u]

    yazýlýnca Günaydýn olarak görüntülenir.
  • Metni eðik yazmak için [i][/i] kullanýn, örn.

    Çok [i]Büyük![/i]

    yazýlýnca sonuç Çok Büyük! olur.
  • "); +$faq[] = array("Yazýlarýn rengi veya boyutu nasýl deðiþtirilir?", "Yazýlarýn renk veya boyutunu deðiþtirmek için alttaki etiketler kullanýlabilir. Elde edilen sonuç, kullanýlan web tarayýcýsý ve bilgisayar sistemine göre deðiþebilir, aklýnýzda bulunsun:
    • Yazýlarýn rengi, metni [color=][/color] etiketleri içine alarak deðiþtirilir. Belirli ingilizce renk isimlerini (örn. red, blue, yellow vs.) veya alternatif olarak 16 tabanlý sayý sisteminde (HEX) kodlanmýþ üç rakamlý renk kodunu yazabilirsiniz (örn. #FFFFFF, #000000). Metni örneðin kýrmýzý harflerle yazmak için:

      [color=red]Merhaba![/color]

      veya

      [color=#FF0000]Merhaba![/color]

      ayný þekilde görüntülenir: Merhaba!
    • Karakterlerin boyutunu benzer þekilde [size=][/size] kullanarak deðiþtirebilirsiniz. Bu etiket kullandýðýnýz tema'ya baðlýdýr. Karakterlerin pixel olarak boyutunu yazmanýz önerilir. Bu rakam 1 ile baþlayýp (gözle görülmeyecek kadar küçük), en fazla 29 (çok büyük) olabilir. Örnek:

      [size=9]KÜÇÜK[/size]

      genelde þu sonucu verir: KÜÇÜK

      öte yandan:

      [size=24]BÜYÜK![/size]

      BÜYÜK! sonucunu verir.
    "); +$faq[] = array("Biçimlendirme etiketlerini karýþtýrabilir miyim?", "Evet, mesela dikkati çekmek için þöyle yazabilirsiniz:

    [size=18][color=red][b]DÝKKAT![/b][/color][/size]

    Bu yazý þu þekilde görüntülenir: DÝKKAT!

    Uzun metinleri bu þekilde yazmamanýzý öneririz! Unutmayýn ki, etiketlerin düzgün bir þekilde kapatýlmasýný temin etmek, metni gönderen kiþi olarak sizin görevinizdir. Örneðin bu þekilde yazmak yanlýþtýr:

    [b][u]Etiketler hatalý kapatýlmýþ[/b][/u]"); + +$faq[] = array("--","Alýntý ile Cevap ve Eþaralýklý Yazýtipi"); +$faq[] = array("Alýntý ile cevap yazma", "Bir metinden alýntý yapmanýn iki ayrý yöntemi vardýr: kaynak vererek veya vermeyerek.
    • Bir iletiye cevap vermek için Alýnýtý ile Cevap komutunu kullanýrsanýz, orjinal iletinin kendi iletinize [quote=\"\"][/quote] etiketleri arasýnda eklendiðini göreceksiniz. Bu yöntem, bir þahsý veya seçeceðiniz herhangi baþka bir yeri kaynak vererek yanýt yazmanýzý saðlar. Örneðin Ali isminde bir þahsýn yazdýklarýný alýntý etmek için þu þekilde yazmanýz gerek:

      [quote=\"Ali\"]Ali'nin yazdýðý yazýlar...[/quote]

      Sonuçta alýntý yapýlan kýsmýn önüne otomatik olarak Ali demiþki: yazýlýr. Alýntý yaptýðýnýz þahsýn ismini týrnak iþaretleri \"\" içine almayý unutmayýn, týrnak iþaretleri kullanmanýz þart.


    • Ýkinci yöntem, kaynak vermeden alýntý yapmanýzý saðlar. Ýlgili bölümü [quote][/quote] etiketleri içine almanýz yeterli. Bu bölümün önünde Alýntý: yazýsýný göreceksiniz.
    "); +$faq[] = array("Kaynak yazýlým veya eþaralýklý yazýtipiyle görüntüleme", "Bir programlama dilinde yazýlmýþ kaynak yazýlým veya eþaralýklý yazýtipi (örn. Courier) gerektiren herhangi bir metni görüntülemek için, ilgili kýsmý [code][/code] etiketleri içine almalýsýnýz. Örn.:

    [code]echo \"Bu bizim kodumuz\";[/code]

    [code][/code] etiketleri arasýna yazýlan tüm biçimleme etiketleri (örn. [i], [b] gibi) iptal edilir. Bu biçimlendirmenin kullandýðý yazýtipi, kullandýðýnýz temaya göre farklýlýk gösterebilir."); + +$faq[] = array("--","Liste Yaratma"); +$faq[] = array("Madde imiyle liste", "Biçim Kodlarý rakamsýz (madde imiyle) ve rakamlý olmak üzere iki türlü liste destekler. Bu listeler aslýnda HTML listelerine eþittir. Rakamsýz liste, her maddeyi bir madde imiyle beraber satýr baþýný biraz girintilenmiþ olarak görüntüler. Rakamsýz bir liste hazýrlamak için [list][/list] etiketlerini kullanýn ve her satýrýn baþýna [*] yazýn. Örn. sevdiðiniz renklerin bir listesini þu þekilde hazýrlayabilirsiniz:

    [list]
    [*]Kýrmýzý
    [*]Mavi
    [*]Sarý
    [/list]

    Sonuç olarak þu listeyi göreceksiniz:
    • Kýrmýzý
    • Mavi
    • Sarý
    "); +$faq[] = array("Rakamlý liste", "Ýkinci liste türü olan rakamlý listeyle, her satýr baþýnda görülen rakamý kontrol edebilirsiniz. Rakamlara göre sýralanmýþ bir liste için [list=1][/list] kullanmanýz gerek. Alternatif olarak alfabe'ye göre sýralanmýþ bir liste için [list=a][/list] etiketlerini kullanabilirsiniz. Rakamsýz listelerde olduðu gibi, her maddeyi [*] ile iþaretlemeniz gerek. Örneðin:

    [list=1]
    [*]Maðazaya git
    [*]Yeni bilgisayar al
    [*]Eve götür
    [/list]

    þu þekilde görüntülenir:
    1. Maðazaya git
    2. Yeni bilgisayar al
    3. Eve götür
    Öte yandan alfabeye göre sýralanmýþ bir listeyi þu þekilde yazmanýz gerekir:

    [list=a]
    [*]Birinci seçenek
    [*]Ýkinci seçenek
    [*]Üçüncü seçenek
    [/list]

    Sonuç:
    1. Birinci seçenek
    2. Ýkinci seçenek
    3. Üçüncü seçenek
    "); + +$faq[] = array("--", "Link (URL) Yaratma"); +$faq[] = array("Ayrý bir siteye link verme", "Biçim Kodlarý link (URL) yaratmak için deðiþik yöntemleri destekler.
    • Birinci yöntem [url=][/url] etiketidir. = iþaretinin arkasýna yazýlanlar link olarak çalýþýr. Örneðin phpBB.com'a link vermek için þu þekilde yazýn:

      [url=http://www.phpbb.com/]phpBB'yi ziyaret edin![/url]

      Sonuçta þu linki göreceksiniz: phpBB'yi ziyaret edin! Bu linki týklayýnca ayrý bir pencere açýlýr. Böylece kullanýcý panoyu gezmeye devam edebilir.
    • Link adresinin gösterilmesini istiyorsanýz, þu þekildede yazabilirsiniz:

      [url]http://www.phpbb.com/[/url]

      Sonuçta þu linki göreceksiniz: http://www.phpbb.com/
    • phpBB ayrýca Sihirli Linkler denen bir iþleme sahip. Bunun sayesinde, kurallara uygun bir þekilde yazýlan her link adresi otomatik olarak link'e çevrilir, herhangi bir etiket, hatta http:// yazmanýza gerek kalmaz. Örn. www.phpbb.com yazýnca, izlenim sayfasýnda otomatik olarak www.phpbb.com olarak görüntülenir.
    • Ayný iþlem email adresleri için uygulanýr. Dilerseniz özel olarak bir adres belirleyebilirsiniz, örn.:

      [email]no.one@domain.adr[/email]

      yazýlýnca þu þekilde görüntülenir: no.one@domain.adr Veya basitçe no.one@domain.adr yazabilirsiniz ve iletiniz görüntülendiðinde bu kýsým otomatik olarak link'e çevrilir.
    Bütün Biçim Kodlarý etiketleri gibi, link adreslerini de diðer etiketlerin içine alabilirsiniz, örn. [img][/img] (bir sonraki madde bakýn), [b][/b], vs. Biçimleme etiketlerinde olduðu gibi, etiketlerin düzgün bir þekilde sýrasýyla kapatýlmasýný kendiniz saðlamalýsýnýz, örn.:

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/url][/img]

    doðru deðildir ve hatta iletinizin silinmesine yol açabilir, bu konuda dikkatli olmanýz gerek."); + +$faq[] = array("--", "Ýletilerde Resim Görüntüleme"); +$faq[] = array("Bir iletiye resim ekleme", "Biçim Kodlarý iletinize resim eklemek için bir etikete sahiptir. Bu etiketi kullanýrken iki önemli noktayý dikkate almanýz gerek: Birçok kullanýcý iletilerde çok sayýda resmin görüntülenmesini hoþ karþýlamýyor. Ayrýca kullanmak istediðiniz resme internet üzerinden ulaþýlabilmeli (örn. bu resmin kendi bilgisayarýnýzda bulunmasý yeterli deðildir). Þu anda phpBB üzerinden resim kaydetme imkaný yoktur (bu konular muhtemelen phpBB'nin bir sonraki sürümünde ele alýnacak). Bir resmi görüntülemek için, resmin adresini [img][/img] etiketleri içine almalýsýnýz. Örn.:

    [img]http://www.phpbb.com/images/phplogo.gif[/img]

    Bir önceki maddede belirtildiði gibi, resmi dilerseniz [url][/url] etiketleri içine alabilirsiniz. Örn.:

    [url=http://www.phpbb.com/][img]http://www.phpbb.com/images/phplogo.gif[/img][/url]

    yazýnca þu sonucu verir:

    \"\"
    "); + +$faq[] = array("--", "Diðer Konular"); +$faq[] = array("Kendi etiketlerimi ekleyebilir miyim?", "Hayýr, maalesef phpBB 2.0 sürümünde böyle bir imkan yok. Bir sonraki sürümde özelleþtirilmiþ Biçim Kodlarý etiketleri sunmayý planlýyoruz."); + + +// +// This ends the BBCode guide entries +// ------------------------------------ + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/lang_faq.php b/includes/shared/phpbb2/language/lang_turkish/lang_faq.php new file mode 100644 index 00000000..b2cb67ce --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/lang_faq.php @@ -0,0 +1,92 @@ +Beni hatýrla komutunu seçmediðiniz sürece, mesaj panosu sizi sadece belirli bir süre için oturum açmýþ kabul eder. Böylece hesabýnýzýn baþkalarý tarafýndan kullanýlmasý önlenir. Oturumunuzun devamlý kalmasý için, bu komutu seçmeniz yeterlidir. Fakat baþka þahýslarýnda kullandýðý (örn. herhangi bir kütüphaneye, internet cafeye, üniversiteye vs. ait) bir bilgisayardan oturum açýyorsanýz yapýyorsanýz, bu komutu seçmemeniz önerilir."); +$faq[] = array("Kimler Çevrimiçi listesinde ismimin görülmesini nasýl önleyebilirim?", "Þahsýnýza ait hesabýnýz sayfasýnda Çevrimiçi olduðumu gizle seçeneðini bulabilirsiniz. Buradan Evet 'i seçince çevrimiçi olduðunuzu sadece pano yöneticileri ve kendiniz görebilirsiniz. Bu durumda gizli kullanýcý olarak sayýlýrsýnýz."); +$faq[] = array("Parolamý unuttum!", "Telaþa kapýlmayýn! Eski parolanýzý öðrenmek mümkün olmasa bile, yerine deðiþik bir parola alabilirsiniz. Oturum açma sayfasýný açýp Parolamý Unuttum üzerini týklayýn ve tarif edilen iþlemleri uygulayýn. Kýsa sürede tekrar çevrimiçi olduðunuzu göreceksiniz."); +$faq[] = array("Hesap açtým ama oturum açamýyorum!", "Ýlk önce kullanýcý adýnýzý ve parolanýzý doðru yazdýðýnýzý emin olun. Hesabýnýzýn onaylanmasý gerekebilir. Bazý mesaj panolarý tüm yeni açýlan hesaplarýn onaylanmasýný þart koþar. Oturum açabilmeniz yapabilmeniz için ya kendiniz ya da pano yöneticisi tarafýndan hesabýnýz onaylanmalýdýr. Bu durumda onay gerekçesi, hesap açma esnasýnda size bildirilmiþ olmalý. Bu doðrultuda bir e-posta aldýysanýz, tarif edilen iþlemleri uygulamanýz gerek. Eðer böyle bir e-posta almadýysanýz, verdiðiniz e-posta adresinin doðru olup olmadýðýný kontrol edin. Onay gerekçesinin sebebi, kötü amaçlý kullanýcýlarýn anonim kullanýcýlarýn panoyu suistimal etmelerini önlemektir. Verdiðiniz e-posta adresinin doðru olduðundan eminseniz, pano yöneticisiyle irtibata geçmeniz gerekir."); +$faq[] = array("Daha önceleri hesap açmýþtým ama artýk oturum açamýyorum!", "Bunun en olasý sebebi hatalý kullanýcý adý veya parola giriþidir (hesap açtýktan sonra aldýðýnýz e-posta'ya bakýp kontrol edin). Belki de pano yöneticisi hesabýnýzý herhangi bir sebepten dolayý silmiþ olabilir. Panoya hiç ileti gönderdiniz mi? Veritabanýnýn kapladýðý alaný küçük tutmak için, ileti göndermeyen kullanýcýlarýn hesabý genelde belirli bir süre sonra silinir. Tekrar hesap açmayý deneyin."); + +$faq[] = array("--","Kullanýcý Seçenekleri ve Ayarlarý"); +$faq[] = array("Kullanýcý ayarlarýmý nasýl deðiþtirebilirim?", "Eðer hesap açtýysanýz bütün ayarlarýnýz veritabanýna kaydedilir. Ayarlarýnýzý deðiþtirmek için (genelde sayfalarýn üst kýsmýnda bulunan) Hesabýnýz linkini týklayýn. Ayarlarýnýz buradan deðiþtirilir."); +$faq[] = array("Gösterilen saatler yanlýþ!", "Gösterilen saatler büyük bir ihtimalle doðrudur. Fakat gördüðünüz saat, bulunduðunuz yerin saat diliminden farklý olabilir. Bu durumda, Hesabýnýz linkini týklayýp kendiniz için geçerli saat dilimini seçmeniz gerekir, örn. London, Paris, New York, Sydney vs. Çoðu seçenekler için geçerli olduðu gibi, saat dilimini deðiþtirme imkaný da sadece hesap açmýþ kullanýcýlara verilmiþtir."); +$faq[] = array("Deðiþik bir zaman dilimi seçtim ama saatler hala yanlýþ!", "Doðru zaman dilimini seçtiðinizden eminseniz ve saat hala yanlýþ gösteriliyorsa, bunun en olasý sebebi günýþýðýndan yararlanma deðiþimleri olabilir. Örn. yaz aylarýnda görülen saatler, bulunduðunuz ülkenin gerçek saatinden bir saat ileri veya geri olabilir. Mesaj panosu bu deðiþimleri dikkate almaz."); +$faq[] = array("Konuþtuðum lisan listede yok!", "Bunun en olasý sebepleri, pano yöneticisin konuþtuðunuz lisaný destekleyen uzantýyý kurmamýþ olabilir, ya da bu panonun konuþtuðunuz lisana henüz çevrilmiþ olmayýþýdýr. Pano yöneticilerine baþvurup, kendi lisanýnýzý destekleyen uzantýyý kurmalarýný rica edin. Eðer böyle bir uzantý yoksa, panoyu kendi dilinize çevirmekte özgürsünüz. Bu konuda daha geniþ bilgi için sayfalarýn alt kýsmýnda görülen phpBB Group linkini týklayýn."); +$faq[] = array("Ýsmimin altýnda resim (avatar/sembol) göstermek için ne yapmalýyým?", "Ýletilerin görüntülendiði sayfalarda kullanýcý adlarýnýn altýnda iki tür resim görebilirsiniz. Birincisi, kullanýcý derecenizi gösterir ve genelde gönderdiðiniz ileti sayýsýna baðlý olarak belirli bir sayýda yýldýz veya kare þeklindedir. Bunun altýnda kiþisel sembol denen biraz daha büyük bir resim görebilirsiniz. Bu resim genelde kullanýcýya ait ve özeldir. Kiþisel sembol kullanma imkanýný pano yöneticisi belirler. Ayrýca sembollerin ne þekilde kullanýlabileceðinide belirler. Sembol kullanamýyorsanýz, pano yöneticisine baþvurup bu imkaný ne sebepten iptal ettiðini öðrenebilirsiniz (bunun önemli bir sebebi olduðundan eminiz!)"); +$faq[] = array("Kullanýcý derecemi nasýl deðiþtirebilirim?", "Genelde kullanýcý derecenizi doðrudan deðiþtirmeniz mümkün deðil (kullanýcý derecesi, gönderdiðiniz iletinin yanýnda bulunan adýnýzýn altýnda ve kullanýcý bilgileri sayfasýnda görülür). Çoðu mesaj panosunda kullanýcý dereceleri, gönderilen iletilerin sayýsýný veya yetkili üyeleri belirlemek için kullanýlýr, örn. yöneticiler veya pano yöneticileri özel bir dereceye sahip olabilir. Lütfen gereksiz yere ileti gönderip, derecenizi yükseltmeye çalýþmayýn, elde edeceðiniz tek sonuç, yöneticilerin iletilerinizin sayýsýný düþürmesi olacaktýr."); +$faq[] = array("Bir kullanýcýnýn e-posta linkini týklayýnca oturum açmam isteniyor?", "Panoya ait e-posta formuyla maalesef sadece hesabý olan kullanýcýlar e-posta gönderebiliyor (ayrýca yöneticinin bu iþlevi çalýþtýrmasý gerek). Bunun sebebi, e-posta sisteminin anonim kullanýcýlar tarafýndan suistimal edilmesini önlemektir."); + +$faq[] = array("--","Konu/Ýleti Gönderme"); +$faq[] = array("Foruma yeni konu nasýl gönderilir?", "Çok basit; forumu veya konuyu görüntüleme sayfasýnda Yeni Konu Gönder düðmesine týklayýn. Yeni konu göndermeden önce hesap açmanýz gerekebilir. Forum ve konu sayfalarýnýn alt kýsmýnda yapabileceðiniz bütün iþlemlerin listesini görebilirsiniz (örn. Bu forumda yeni konular açabilirsiniz vs. gibi)."); +$faq[] = array("Ýletiler nasýl deðiþtirilir veya silinir?", "Pano yöneticisi veya bölüm yetkilisi olmadýðýnýz sürece, sadece kendinize ait iletileri deðiþtirebilir veya silebilirsiniz. Gönderdiðiniz bir iletiyi Deðiþtir/Düzenle düðmesini týklayarak deðiþtirebilirsiniz (bu imkan bazen sadece belirli bir süre için mevcuttur). Ýletinize birileri cevap göndermiþse eðer, iletinizin altýnda metni kaç defa deðiþtirdiðinizi gösteren kýsa bir yazý göreceksiniz. Ýletiniz henüz yanýtlanmamýþsa, bu not görülmez. Ayrýca iletiniz pano yöneticileri veya bölüm yetkilileri tarafýndan deðiþtirilince de bu yazý görülmez (yöneticilerin böyle bir durumda metnin hangi kýsmýný ne sebepten dolayý deðiþtirdiklerini yazmalarý önerilir). Bir iletiye cevap geldikten sonra normal kullanýcýlar tarafýndan silinemez."); +$faq[] = array("Ýleti altýna imza nasýl eklenir?", "Herhangi bir iletiye imzanýzý ekleyebilmek için önce Hesabýnýz sayfanýza girip bir imza hazýrlamanýz gerek. Daha sonra ileti gönderme formunun alt kýsmýndaki Ýmzamý ekle seçeneðini seçip iletinize imzanýzý ekleyebilirsiniz. Gönderdiðiniz bütün iletilere genel bir ayar olarak imzanýzýn eklenmesini istiyorsanýz, Hesabýnýz sayfasýndaki seçeneði týklayýn. Buna raðmen dilediðiniz her ileti için imzanýzýn eklenmesini önleyebilirsiniz (ileti gönderme formunda Ýmzamý Ekle seçeneðinin iþaretini kaldýrmanýz yeterli)."); +$faq[] = array("Anket nasýl hazýrlanýr?", "Anket hazýrlamak çok basit: yeni bir konu gönderirken (veya bir konunun ilk iletisini deðiþtirirken - bu tabi yetkinize baðlý), ileti gönderme formunun altýnda Anket Ekle formunu göreceksiniz (böyle bir formu göremiyorsanýz, anket ekleme yetkiniz yok demektir). Anket sorusunu ve en az iki tane anket þýkký eklemeniz gerekir. Anket þýkký eklemek için Bu Þýkký Ekle düðmesini týklayýn. Ayrýca anketin gösterim süresinide belirleyebilirsiniz, 0 (sýfýr) süresiz demektir. Eklenebilecek anket þýklarýnýn sayýsý sýnýrlýdýr. Bu sýnýrý pano yöneticisi belirler."); +$faq[] = array("Bir anket nasýl deðiþtirilir veya silinir?", "Anketler de iletiler gibi sadece gönderen kullanýcý, bölüm yetkilisi veya pano yöneticisi tarafýndan deðiþtirilebilir. Bir anketi deðiþtirmek için, konunun ilk iletisini týklayýn (ilgili anket daima bu iletiye baðlýdýr). Ankete henüz katýlan olmadýysa, hazýrlayan kullanýcý tarafýndan deðiþtirilebilir veya silinebilir. Ankete katýlan olmuþsa, sadece forum ve pano yöneticileri tarafýndan deðiþtirilebilir veya silinebilir. Böylece bir süre sonra þýklarý deðiþtirip anket sonuçlarýný sapýtma olanaðý kalmaz."); +$faq[] = array("Anketlere neden katýlamýyorum?", "Anketlere sadece hesabý oplan kullanýcýlar katýlabilir (böylece hile yapma olanaðý önlenmiþ olur). Eðer hesap açmanýza olmanýza raðmen anketlere katýlamýyorsanýz, gerekli yetkilere sahip deðilsiniz demektir."); +$faq[] = array("Bazý forumlara neden ulaþamýyorum?", "Bazý forumlar sadece belirli kullanýcýlara veya kullanýcý gruplarýna açýk olabilir. Ýletileri okumak, görüntülemek, göndermek için vs. özel yetki gerekebilir. Bu yetkiyi sadece pano yöneticileri verebilir, bu kiþilere baþvurmalýsýnýz."); + +$faq[] = array("--","Biçimlendirme ve Konu Tipleri"); +$faq[] = array("Biçim Kodlarý (BBCode) nedir?", "Biçim Kodlarý HTML'in özel bir uygulamasýdýr. Forum'lara yazdýðýnýz iletilerde Biçim Kodlarý kullanabilme imkanýný pano yöneticisi belirler. Ayrýca ileti gönderme formundaki seçenekler sayesinde dilediðiniz iletilerde Biçim Kodlarý'larýný iptal etmeniz mümkündür. Biçim Kodlarý, HTML'e benzer tarzdadýr fakat wtiketler < ve > yerine köþeli parantez içine alýnýr: [ ve ]. Ayrýca nelerin nasýl görüntülendiði daha iyi kontrol edilebilir. Biçim Kodlarý hakkýnda daha geniþ bilgiler için, ileti gönderme sayfasýndan ulaþabileceðiniz rehbere bakýnýz."); +$faq[] = array("HTML kullanabilir miyim?", "Pano yöneticisinin izin vermesine baðlýdýr, ilgili ayarlarýn tümünü o kontrol eder. Eðer izin verilmiþse, büyük ihtimalle sadece bazý etiketlerin çalýþtýðýný göreceksiniz. Böyle olmasý güvenlik içindir. Amaç, pano görüntüsünün bozulmasýný veya daha deðiþik sorunlarýn meydana gelmesini önlemektir. Ýzin verilmiþ olsa bile, ileti gönderme formundaki seçenekler sayesinde dilediðiniz iletilerde HTML'i iptal etmeniz mümkündür."); +$faq[] = array("Ýfade nedir?", "Ýfade (Smiley veya Emoticon), belirli duygu ifadelerini vermek için kullanýlan iþaretlerdir. Metinde küçük resimler halinde görüntülenir. Örn. :) mutlu, :( ise üzgün anlamýndadýr. Kullanabileceðiniz ifadelerin listesini ileti gönderme formunda görebilirsiniz. Ýfadeleri aþýrý derecede kullanmamaya özen gösterin, yoksa metin okunmaz hale gelebilir. Bu durumda yönetici ifadeleri veya iletilerinizi tamamýyla silmeye karar verebilir."); +$faq[] = array("Resim gönderebilir miyim?", "Gönderdiðiniz ileti ile beraber resim de görüntülenebilir. Fakat þu anda panoya doðrudan resim göndermek mümkün deðildir. Bu yüzden umuma açýk bir web sitesinde kayýtlý bir resme link vermeniz gerek, örn. http://www.umuma-acik-site.net/resim.gif. Kendi bilgisayarýnýzda bulunan bir resme link vermeniz mümkün deðil. Ayrýca, umuma açýk olmayan ve sadece parolayla ulaþýlan resimlere link vermek mümkün deðildir (örn. hotmail veya yahoo gelen kutusunda vs. kayýtlý resimler). Resim görüntülemek için, Biçim Kodlarý'nýn [img] etiketini ya da (izin verilmiþse) HTML kullanabilirsiniz."); +$faq[] = array("Duyuru nedir?", "Duyurular çoðu zaman önemli bilgileri içerir, en kýsa zamanda okumanýzý öneririz. Duyurular, ilgili forumun her sayfasýnýn baþýnda görülür. Duyuru gönderebilmeniz için bu yetkiye sahip olmanýz gerek. Yetkilerinizi ise pano yöneticisi belirler."); +$faq[] = array("Önemli konular nedir?", "Önemli konular, ilgili forumun ilk sayfasýnda, duyurularýn hemen altýnda görülür. Çoðu zaman önemli bilgileri içerirler, mümkünse okumanýzý öneririz. Duyurular için geçerli olduðu gibi, herhangi bir foruma önemli konu göndermek için gereken yetkileri pano yöneticisi belirler."); +$faq[] = array("Kilitli konular nedir?", "Bu konularý bölüm yetkilisi veya pano yöneticisi kilitler. Kilitli konularý yanýtlamak mümkün deðildir, içerdikleri anketler otomatik olarak sonlandýrýlýr. Konular birçok nedenden dolayý kilitlenmiþ olabilir."); + +$faq[] = array("--","Kullanýcý Seviyeleri ve Gruplarý"); +$faq[] = array("Pano yöneticileri nedir?", "Pano yöneticileri, panonun her bölümünde en çok yetkiye sahip olan þahýslardýr. Bu kiþiler, panonun her türlü iþlevini kontrol edebilir: izin verme, yetkilendirme, kullanýcý yasaklama, kullanýcý gruplarý yaratma, bölüm yetkilisi yetkilerini verme vs. Ayrýca bütün forumlarda bölüm yetkilisi yetkilerine sahiptirler."); +$faq[] = array("Bölüm yetkilileri nedir?", "Bölüm yetkilileri, günlük olarak forumun çalýþmasýný kontrol eden þahýslar veya gruplardýr. Konularý deðiþtirme ve silme yetkisine sahiptirler. Ayrýca yönettikleri forumdaki konularý kilitleyebilir, taþýyabilir, silebilir ve bölebilirler. Genelde bölüm yetkililerinin görevi, off-topic, yani baþlýk konusuyla ilgisi olmayan yanýtlarýn veya hakaret ve saldýrý niteliðindeki metinlerin gönderilmesini önlemektir."); +$faq[] = array("Kullanýcý gruplarý nedir?", "Kullanýcý gruplarý, pano yöneticilerinin kullanýcýlarý grup halinde ayýrabilmesi için öngörülen bir yöntemdir. Her kullanýcý (çoðu panolardan farklý olarak) birçok gruba üye olabilir. Bu þekilde pano yöneticileri belirli kullanýcýlara rahatlýkla bölüm yetkilisi yetkilerini veya özel forumlara ulaþma yetkisini vs. verebilir."); +$faq[] = array("Bir kullanýcý grubuna nasýl üye olabilirim?", "Bir kullanýcý grubuna üye olmak için, sayfa baþýndaki kullanýcý gruplarý linkine týklayýn. Kullanýcý gruplarýnýn listesini göreceksiniz. Gruplarýn tümü eriþime açýk olmayabilir, bazýlarý kilitli veya gizli olabilir. Grup açýk ise, ilgili düðmeyi týklayarak üye olmak için istekte bulunabilirsiniz. Ýsteðinizin kullanýcý grubu yöneticisi tarafýndan onaylanmasý gerekir, örneðin isteðinizin nedenini sorabilir. Ýsteðiniz reddedilirse grup yöneticisini lütfen rahatsýz etmeyin, bunun nedenleri olsa gerek."); +$faq[] = array("Bir kullanýcý grubunun yöneticisi olmak için ne yapmam gerek?", "Kullanýcý gruplarý pano yöneticisi tarafýndan açýlýr. Pano yöneticisi ayný zamanda her grubun yöneticisini belirler. Eðer yeni bir kullanýcý grubu açmak istiyorsanýz, ilk önce pano yöneticisiyle irtibata geçmeniz gerek, kendisine özel mesaj göndermeyi deneyin."); + +$faq[] = array("--","Özel Mesajlar"); +$faq[] = array("Özel mesaj gönderemiyorum!", "Bunun üç sebebi olabilir: henüz hesap açmamýþ veya oturum açmamýþsýnýz, veya pano yöneticisi bütün pano için özel mesajlarý iptal etmiþ. Üçüncü olanak ise: pano yöneticisi sizin bu imkaný kullanmanýzý önlemiþ olabilir, bu durumda kendisine nedenini sorabilirsiniz."); +$faq[] = array("Ýstemediðim özel mesajlarý almaya devam ediyorum!", "Ýleride özel mesajlar sistemine belirli kiþilerden gelen mesajlarý iptal etme imkanýný ekleyeceðiz. Þimdilik herhangi bir þahýstan istemediðiniz özel mesajlar alýyorsanýz, pano yöneticisine baþvurun. O herhangi bir kullanýcýyý özel mesaj göndermekten men edebilir."); +$faq[] = array("Bu mesaj panosunda hesabý olan birinden spam e-posta aldým!", "Üzgünüz, aslýnda bu panonun sunduðu e-posta gönderme iþlevi bundan korunmak için birçok önlemi almýþ bulunuyor. Aldýðýnýz spam e-posta'nýn bir kopyasýný pano yöneticisine gönderin. Özellikle aldýðýnýz e-posta'nýn baþlýk kýsmýný (to (kime), subject (konu) vs.) iletmeyi unutmayýn, bu kýsýmda e-posta'yý gönderen kullanýcý hakkýnda bilgiler bulunur. Pano yöneticisi bu bilgilerle meseleyi takip edebilir."); + +// +// These entries should remain in all languages and for all modifications +// +$faq[] = array("--","phpBB2 ile ilgili Konular"); +$faq[] = array("Bu mesaj panosunu kim yazdý?", "Bu yazýlým (deðiþtirilmemiþ haliyle) phpBB Group tarafýndan üretilmiþ ve genel daðýtýma çýkarýlmýþtýr. Tüm eser haklarý phpBB Group'a aittir. Bu eser, 'GNU General Public Licence' lisansýna uygun olarak eriþime açýlmýþtýr. Bu lisansa uyma þartýyla ücretsiz daðýtýlabilir."); + +$faq[] = array("Bu mesaj panosunu kim Türkçeleþtirdi?", "Kullandýðýnýz Türkçe dil dosyalarý (deðiþtirilmemiþ haliyle) 'phpBB Türkiye' tarafýndan çevrilmiþ ve genel daðýtýma sunulmuþtur. Tüm eser ve telif haklarý 'Canver Software'a aittir. Bu dosyalar, 'GNU General Public Licence' lisansýna uygun olarak eriþime açýlmýþtýr. Bu lisansa uyma þartýyla ücretsiz daðýtýlabilir, ancak dosyalardaki imza ve copyright gibi bilgiler deðiþtirilemez."); + +$faq[] = array("Aradýðým ... özellik neden yok?", "Eðer herhangi bir özelliðin eksik olduðunu düþünüyorsanýz, lütfen phpbb.com sitesini ziyaret edip phpBB Group'un ilgili düþüncelerini öðrenin. Lütfen phpbb.com sitesindeki panoya yazýp yeni bir özellik isteðinde bulunmayýn. Yeni özellik taleplerinizi sourceforge aracýlýðýyla phpBB Group'a iletebilirsiniz. Lütfen ilgili forumlarý gezip ilk önce phpBB Group'un herhangi bir özellikle ilgili tutumunu öðrenin ve daha sonra burada tarif edilen yöntemle baþvuruda bulunun."); +$faq[] = array("Bu panoyla ilgili hukuki sorunlar için veya suistimal durumunda kime baþvurabilirim?", "Pano yöneticisine baþvurmanýz önerilir. Pano yöneticisinin kim olduðunu öðrenemezseniz, ilk önce bölüm yetkililerinden biriyle irtibata geçip, kime yazmanýz gerektiðini öðrenin. Herhangi bir yanýt alamadýðýnýz takdirde, site sahibine baþvurun (whois aramasýyla sitenin sahibini öðrenebilirsiniz) veya (eðer pano ücretsiz hizmet veren sitelerde çalýþtýrýlýyorsa, örn. Lycos, free.fr, f2s.com vs.) sitenin yönetimine veya suistimal konularýyla ilgilenen þubesine baþvurun. phpBB Group'un bu panonun nasýl, nerede ve kimler tarafýndan çalýþtýrýldýðýný kontrol etmediðini ve herhangi bir þekilde bundan sorumlu olmadýðýný lütfen dikkate alýn. phpbb.com sitesiyle veya phpBB yazýlýmýyla doðrudan ilgisi olmayan herhangi bir hukuki konuda (ihtiyati tedbir, mali sorumluluk, iftira vs.) phpBB Group'la irtibata geçmek tamamen anlamsýzdýr. Bu yazýlýmýn herhangi üçüncü þahýslar tarafýndan kullanýmýyla ilgili phpBB Group'a e-posta yazarsanýz, çok kýsa yada hiç cevap almamayý beklemeniz gerek."); +$faq[] = array("Bu yardýmcý bilgiler için kimlere teþekkür edebilirim?", "▪ phpBB Group - phpBB Resmi Sitesi
    phpBB Türkiye - phpBB yazýlýmýnýn Türkçe Desteðini saðlar
    "); + + + +// +// This ends the FAQ entries +//----------------------------- + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/lang_main.php b/includes/shared/phpbb2/language/lang_turkish/lang_main.php new file mode 100644 index 00000000..54b39770 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/lang_main.php @@ -0,0 +1,996 @@ + $lang['mesaj'] = 'Yazı'; +// + +$lang['ENCODING'] = 'utf-8'; //iso-8859-9 +$lang['DIRECTION'] = 'ltr'; +$lang['LEFT'] = 'left'; +$lang['RIGHT'] = 'right'; +$lang['DATE_FORMAT'] = 'd.m.Y'; + +// +// Translator credit +// +$lang['TRANSLATION_INFO'] = "phpBB2 Türkçe: phpBB Türkiye"; + +// +// Common, these terms are used extensively on several pages +// +$lang['Forum'] = 'Forum'; +$lang['Category'] = 'Kategori'; +$lang['Topic'] = 'Konu'; +$lang['Topics'] = 'Konular'; +$lang['Replies'] = 'Cevap'; +$lang['Views'] = 'Gösterim'; +$lang['Post'] = 'Ä°leti'; +$lang['Posts'] = 'Ä°letiler'; +$lang['Posted'] = 'Tarih'; +$lang['Username'] = 'Kullanıcı'; +$lang['Password'] = 'Parola'; +$lang['Email'] = 'E-Posta'; +$lang['Poster'] = 'Gönderen'; +$lang['Author'] = 'Yazar'; +$lang['Time'] = 'Saat'; +$lang['Hours'] = 'Saat'; +$lang['Message'] = 'Mesaj'; + +$lang['1_Day'] = '1 Günlük'; +$lang['7_Days'] = '1 Haftalık'; +$lang['2_Weeks'] = '2 Haftalık'; +$lang['1_Month'] = '1 Aylık'; +$lang['3_Months'] = '3 Aylık'; +$lang['6_Months'] = '6 Aylık'; +$lang['1_Year'] = '1 Yıllık'; + +$lang['Go'] = 'TAMAM'; +$lang['Jump_to'] = 'Forum Seçin'; +$lang['Submit'] = 'Gönder'; +$lang['Reset'] = 'Sil'; +$lang['Cancel'] = 'Ä°ptal'; +$lang['Preview'] = 'Önizleme'; +$lang['Confirm'] = 'Onayla'; +$lang['Spellcheck'] = 'Yazım denetimi'; +$lang['Yes'] = 'Evet'; +$lang['No'] = 'Hayır'; +$lang['Enabled'] = 'Açık'; +$lang['Disabled'] = 'Kapalı'; +$lang['Error'] = 'Hata'; + +$lang['Previous'] = '« Önceki'; +$lang['Next'] = 'Sonraki »'; +$lang['Goto_page'] = 'Sayfa:'; +$lang['Joined'] = 'Kayıt'; +$lang['IP_Address'] = 'IP Adresi'; + +$lang['Select_forum'] = 'Forum Seçin'; +$lang['View_latest_post'] = 'Son gönderilen iletiler'; +$lang['View_newest_post'] = 'Yeni gönderilen iletiler'; +$lang['Page_of'] = '%d. sayfa (Toplam %d sayfa)'; + +$lang['ICQ'] = 'ICQ'; +$lang['AIM'] = 'AIM'; +$lang['MSNM'] = 'MSNM'; +$lang['YIM'] = 'YIM'; + +$lang['Forum_Index'] = 'Mesaj Panosu'; +$lang['Post_new_topic'] = 'Yeni Konu Gönder'; +$lang['Reply_to_topic'] = 'Cevap Gönder'; +$lang['Reply_with_quote'] = 'Alıntıyla Cevap Gönder'; + +$lang['Click_return_topic'] = 'Konuya dönmek için %sburaya%s tıklayın'; +$lang['Click_return_login'] = 'Bir daha denemek için %sburaya%s tıklayın'; +$lang['Click_return_forum'] = 'Foruma dönmek için %sburaya%s tıklayın'; +$lang['Click_view_message'] = 'Ä°letinizi görmek için %sburaya%s tıklayın'; +$lang['Click_return_modcp'] = 'Forum Yönetim Paneline dönmek için %sburaya%s tıklayın'; +$lang['Click_return_group'] = 'Grup bilgilerine dönmek için %sburaya%s tıklayın'; + +$lang['Admin_panel'] = 'Yönetim Paneli'; +$lang['Board_disable'] = 'Panomuz ÅŸimdilik kapalıdır. Lütfen daha sonra tekrar deneyiniz.'; + +// +// Index page +// +$lang['Index'] = 'Ana Sayfa'; +$lang['No_Posts'] = 'Ä°leti Yok'; +$lang['No_forums'] = 'Bu panonun henüz hiç forumu yok.'; + +$lang['Private_Message'] = 'Özel Mesaj'; +$lang['Private_Messages'] = 'Özel Mesajlar'; +$lang['Who_is_Online'] = 'Kimler Çevrimiçi'; + +$lang['Mark_all_forums'] = 'Tüm forumları okunmuÅŸ say'; +$lang['Forums_marked_read'] = 'Tüm forumlar okunmuÅŸ sayıldı.'; + +// +// Global Header strings +// +$lang['Registered_users'] = 'Çevrimiçi olanlar:'; +$lang['Browsing_forum'] = 'Forumu görüntüleyen kullanıcılar:'; +$lang['Online_users_zero_total'] = 'Toplam 0 kullanıcı çevrimiçi :: '; +$lang['Online_users_total'] = 'Toplam %d kullanıcı çevrimiçi :: '; +$lang['Online_user_total'] = 'Toplam %d kullanıcı çevrimiçi :: '; +$lang['Reg_users_zero_total'] = '0 Kayıtlı, '; +$lang['Reg_users_total'] = '%d Kayıtlı, '; +$lang['Reg_user_total'] = '%d Kayıtlı, '; +$lang['Hidden_users_zero_total'] = '0 Gizli ve '; +$lang['Hidden_user_total'] = '%d Gizli ve '; +$lang['Hidden_users_total'] = '%d Gizli ve '; +$lang['Guest_users_zero_total'] = '0 Misafir'; +$lang['Guest_users_total'] = '%d Misafir'; +$lang['Guest_user_total'] = '%d Misafir'; +$lang['Record_online_users'] = 'Ä°zlenme Rekoru: %s kullanıcı %s tarihinde.'; + +$lang['Admin_online_color'] = '%sPano Yöneticisi%s'; +$lang['Mod_online_color'] = '%sBölüm Yetkilisi%s'; + +$lang['You_last_visit'] = 'Son ziyaretiniz: %s'; +$lang['Current_time'] = 'Sistem saati: %s'; + +$lang['Search_new'] = 'Yeni eklenen iletiler'; +$lang['Search_your_posts'] = 'Ä°letileriniz'; +$lang['Search_unanswered'] = 'Cevapsız konular'; + +$lang['Register'] = 'Hesap Aç'; +$lang['Profile'] = 'Hesabınız'; +$lang['Edit_profile'] = 'Hesap Bilgilerinizi DeÄŸiÅŸtirin'; +$lang['Search'] = 'Arama'; +$lang['Memberlist'] = 'Ãœye Listesi'; +$lang['FAQ'] = 'Pano Kılavuzu'; +$lang['BBCode_guide'] = 'Biçim Kodları Kullanma Kılavuzu'; +$lang['Usergroups'] = 'Gruplar'; +$lang['Last_Post'] = 'Son Ä°leti'; +$lang['Moderator'] = 'Bölüm Yetkilisi'; +$lang['Moderators'] = 'Bölüm Yetkilileri'; + +// +// Stats block text +// +$lang['Posted_articles_zero_total'] = 'Toplam ileti sayısı: 0'; +$lang['Posted_articles_total'] = 'Toplam ileti sayısı: %d'; +$lang['Posted_article_total'] = 'Toplam ileti sayısı: %d'; +$lang['Registered_users_zero_total'] = 'Toplam üye sayısı: 0'; +$lang['Registered_users_total'] = 'Toplam üye sayısı: %d'; +$lang['Registered_user_total'] = 'Toplam üye sayısı: %d'; +$lang['Newest_user'] = 'Son kayıt olan: %s%s%s'; + +$lang['No_new_posts_last_visit'] = 'Son ziyaretinizden bu yana hiç yeni ileti yok.'; +$lang['No_new_posts'] = 'Yeni ileti yok'; +$lang['New_posts'] = 'Yeni ileti var'; +$lang['New_post'] = 'Yeni ileti var'; +$lang['No_new_posts_hot'] = 'Yeni ileti yok [ Popüler ]'; +$lang['New_posts_hot'] = 'Yeni ileti var [ Popüler ]'; +$lang['No_new_posts_locked'] = 'Yeni ileti yok [ Kilitli ]'; +$lang['New_posts_locked'] = 'Yeni ileti var [ Kilitli ]'; +$lang['Forum_is_locked'] = 'Forum kilitli'; + +// +// Login +// +$lang['Enter_password'] = 'Kullanıcı Ä°sminizi ve Parolanızı Giriniz'; +$lang['Login'] = 'Oturum Aç'; +$lang['Logout'] = 'Oturum Kapat'; +$lang['Forgotten_password'] = 'Parolamı Unuttum'; +$lang['Log_me_in'] = 'Beni hatırla'; +$lang['Error_login'] = 'Yanlış ya da aktif edilmemiÅŸ bir kullanıcı adı veya yanlış bir parola girdiniz.'; + +// +// Viewforum +// +$lang['View_forum'] = 'Forumu görüntüle'; +$lang['Forum_not_exist'] = 'SeçtiÄŸiniz forum bulunmamakta veya eriÅŸim yetkiniz yoktur'; +$lang['Reached_on_error'] = 'Bu sayfaya bir hata sonucu geldiniz.'; +$lang['Display_topics'] = 'Konuları göster'; +$lang['All_Topics'] = 'Hepsi'; +$lang['Topic_Announcement'] = 'Duyuru:'; +$lang['Topic_Sticky'] = 'Önemli:'; +$lang['Topic_Moved'] = 'Taşındı:'; +$lang['Topic_Poll'] = 'Anket:'; +$lang['Mark_all_topics'] = 'Tüm iletileri okunmuÅŸ say'; +$lang['Topics_marked_read'] = 'Bu forumdaki tüm iletiler okunmuÅŸ sayıldı.'; + +$lang['Rules_post_can'] = 'Bu forumda yeni konular açabilirsiniz'; +$lang['Rules_post_cannot'] = 'Bu forumda yeni konular açamazsınız'; +$lang['Rules_reply_can'] = 'Bu forumdaki iletilere cevap verebilirsiniz'; +$lang['Rules_reply_cannot'] = 'Bu forumdaki iletilere cevap veremezsiniz'; +$lang['Rules_edit_can'] = 'Bu forumdaki iletilerinizi deÄŸiÅŸtirebilirsiniz'; +$lang['Rules_edit_cannot'] = 'Bu forumdaki iletilerinizi deÄŸiÅŸtiremezsiniz'; +$lang['Rules_delete_can'] = 'Bu forumdaki iletilerinizi silebilirsiniz'; +$lang['Rules_delete_cannot']= 'Bu forumdaki iletilerinizi silemezsiniz'; +$lang['Rules_vote_can'] = 'Bu forumdaki anketlerde oy kullanabilirsiniz'; +$lang['Rules_vote_cannot'] = 'Bu forumdaki anketlerde oy kullanamazsınız'; +$lang['Rules_moderate'] = 'Bu forumu %syönetebilirsiniz%s'; + +$lang['No_topics_post_one'] = 'Bu forumda hiç konu yok
    Yeni bir tane göndermek için Yeni Konu butonuna tıklayın'; + +// +// Viewtopic +// +$lang['View_topic'] = 'BaÅŸlığı Görüntüle'; + +$lang['Guest'] = 'Misafir'; +$lang['Post_subject'] = 'Ä°leti konusu'; +$lang['View_previous_topic'] = '« Önceki konu'; +$lang['View_next_topic'] = 'Sonraki konu »'; +$lang['Submit_vote'] = 'Oy Ver'; +$lang['View_results'] = 'Sonuçları Göster'; + +$lang['No_newer_topics'] = 'Bu forumda daha yeni konu yok'; +$lang['No_older_topics'] = 'Bu forumda daha eski konu yok'; +$lang['Topic_post_not_exist'] = 'Talep ettiÄŸiniz konu veya ileti mevcut deÄŸil.'; +$lang['No_posts_topic'] = 'Bu konuya hiç cevap gelmemiÅŸ'; + +$lang['Display_posts'] = 'Ä°letileri göster'; +$lang['All_Posts'] = 'Hepsi'; +$lang['Newest_First'] = 'yeniden-eskiye'; +$lang['Oldest_First'] = 'eskiden-yeniye'; + +$lang['Back_to_top'] = 'BaÅŸa dön'; + +$lang['Read_profile'] = 'Kullanıcı bilgilerini göster'; +$lang['Visit_website'] = 'Kullanıcının web sitesini ziyaret et'; +$lang['ICQ_status'] = 'ICQ Durumu'; +$lang['Edit_delete_post'] = 'Ä°letiyi deÄŸiÅŸtir/sil'; +$lang['View_IP'] = 'Bu iletiyi gönderenin IP adresine bak'; +$lang['Delete_post'] = 'Bu iletiyi sil'; + +$lang['wrote'] = 'yazdı'; +$lang['Quote'] = 'Alıntı'; +$lang['Code'] = 'Kod'; + +$lang['Edited_time_total'] = 'En son %s tarafından %s tarihinde deÄŸiÅŸtirildi, toplamda %d defa deÄŸiÅŸtirildi.'; +$lang['Edited_times_total'] = 'En son %s tarafından %s tarihinde deÄŸiÅŸtirildi, toplamda %d defa deÄŸiÅŸtirildi.'; + +$lang['Lock_topic'] = 'BaÅŸlığı kilitle'; +$lang['Unlock_topic'] = 'BaÅŸlığın kilidini aç'; +$lang['Move_topic'] = 'BaÅŸlığı taşı'; +$lang['Delete_topic'] = 'BaÅŸlığı sil'; +$lang['Split_topic'] = 'BaÅŸlığı böl'; + +$lang['Stop_watching_topic'] = 'Bu konuyu takip etmeyi bırak'; +$lang['Start_watching_topic'] = 'Bu konuyu cevaplar için takip et'; +$lang['No_longer_watching'] = 'Artık bu konuyu takip etmiyorsunuz'; +$lang['You_are_watching'] = 'Åžu anda bu konuyu cevaplar için takip ediyorsunuz'; + +$lang['Total_votes'] = 'Toplam Oylar'; + +// +// Posting/Replying (Not private messaging!) +// +$lang['Message_body'] = 'Ä°leti Gövdesi'; +$lang['Topic_review'] = 'Orjinal Ä°leti'; + +$lang['No_post_mode'] = 'Hiçbir gönderme metodu seçilmedi'; + +$lang['Post_a_new_topic'] = 'Yeni bir konu gönder'; +$lang['Post_a_reply'] = 'Cevap Gönder'; +$lang['Post_topic_as'] = 'Ä°leti Türü'; +$lang['Edit_Post'] = 'Ä°letiyi DeÄŸiÅŸtir'; +$lang['Options'] = 'Seçenekler'; + +$lang['Post_Announcement'] = 'Duyuru'; +$lang['Post_Sticky'] = 'Önemli'; +$lang['Post_Normal'] = 'Normal'; + +$lang['Confirm_delete'] = 'Bu iletiyi silmek istediÄŸinize emin misiniz?'; +$lang['Confirm_delete_poll'] = 'Bu anketi silmek istediÄŸinize emin misiniz?'; + +// Mesaj hataları +$lang['Flood_Error'] = 'Son iletinizden bu kadar kısa süre sonra bir yenisini gönderemezsiniz, lütfen bir süre sonra tekrar deneyiniz'; +$lang['Empty_subject'] = 'Yeni bir konu açarken konu belirtmek zorundasınız'; +$lang['Empty_message'] = 'BoÅŸ bir ileti gönderemezsiniz'; +$lang['Forum_locked'] = 'Bu forum kilitlenmiÅŸtir; yeni bir konu açamazsınız, cevap göndermez, iletileri deÄŸiÅŸtiremezsiniz'; +$lang['Topic_locked'] = 'Bu konu kilitlenmiÅŸtir; cevap yazamaz, iletileri deÄŸiÅŸtiremezsiniz'; +$lang['No_post_id'] = 'DeÄŸiÅŸtirmek için bir ileti seçmelisiniz'; +$lang['No_topic_id'] = 'Cevap vermek için bir ileti seçmelisiniz'; +$lang['No_valid_mode'] = 'Sadece ileti gönderebilir, deÄŸiÅŸtirebilir, cevap verebilir, alıntı yapabilirsiniz; lütfen geri dönüp tekrar deneyin'; +$lang['No_such_post'] = 'Böyle bir ileti yok, lütfen geri dönüp tekrar deneyin'; +$lang['Edit_own_posts'] = 'Sadece kendi iletilerinizi deÄŸiÅŸtirebilirsiniz'; +$lang['Delete_own_posts'] = 'Sadece kendi iletilerinizi silebilirsiniz'; +$lang['Cannot_delete_replied'] = 'Cevap verilmiÅŸ olan iletilerinizi silemezsiniz'; +$lang['Cannot_delete_poll'] = 'Aktif bir anketi silemezsiniz'; +$lang['Empty_poll_title'] = 'Anketiniz için bir baÅŸlık girmelisiniz'; +$lang['To_few_poll_options'] = 'Anket için en az iki seçenek girmelisiniz'; +$lang['To_many_poll_options'] = 'Anket için çok fazla seçenek girdiniz'; +$lang['Post_has_no_poll'] = 'Bu konuda anket yoktur'; +$lang['Already_voted'] = 'Bu anket için daha önce oy kullandınız'; +$lang['No_vote_option'] = 'Oy kullanırken bir seçenek belirtmelisiniz'; + +// Mesaja anket ekleme +$lang['Add_poll'] = 'Anket Ekle'; +$lang['Add_poll_explain'] = 'EÄŸer anket eklemek istemiyorsanız, aÅŸağıdaki bölümleri boÅŸ bırakın'; +$lang['Poll_question'] = 'Anket sorusu'; +$lang['Poll_option'] = 'Anket seçeneÄŸi'; +$lang['Add_option'] = 'Bu seçeneÄŸi ekle'; +$lang['Update'] = 'Güncelle'; +$lang['Delete'] = 'Sil'; +$lang['Poll_for'] = 'Gösterim süresi'; +$lang['Days'] = 'Gün'; +$lang['Poll_for_explain'] = '[ Sınırlama koymamak için 0 yazın ya da boÅŸ bırakın ]'; +$lang['Delete_poll'] = 'Anketi sil'; + +$lang['Disable_HTML_post'] = 'Bu iletide HTML kullanma'; +$lang['Disable_BBCode_post'] = 'Bu iletide Biçimlendirme kullanma'; +$lang['Disable_Smilies_post'] = 'Bu iletide Ä°fadeleri kullanma'; + +$lang['HTML_is_ON'] = 'HTML Açık'; +$lang['HTML_is_OFF'] = 'HTML Kapalı'; +$lang['BBCode_is_ON'] = '%sBiçim kodları%s Açık'; +$lang['BBCode_is_OFF'] = '%sBiçim kodları%s Kapalı'; +$lang['Smilies_are_ON'] = 'Ä°fadeler Açık'; +$lang['Smilies_are_OFF'] = 'Ä°fadeler Kapalı'; + +$lang['Attach_signature'] = 'Ä°mzamı ekle'; +$lang['Notify'] = 'Cevap geldiÄŸinde e-posta ile haber ver'; + +$lang['Stored'] = 'Ä°leti baÅŸarıyla gönderilmiÅŸtir'; +$lang['Deleted'] = 'Ä°leti baÅŸarıyla silinmiÅŸtir'; +$lang['Poll_delete'] = 'Anket baÅŸarıyla silinmiÅŸtir'; +$lang['Vote_cast'] = 'Oyunuz ankete eklendi'; + +$lang['Topic_reply_notification'] = 'Konu izleme'; + +$lang['bbcode_b_help'] = 'Kalın yazı: [b]metin[/b] (alt+b)'; +$lang['bbcode_i_help'] = 'EÄŸik yazı: [i]metin[/i] (alt+i)'; +$lang['bbcode_u_help'] = 'Altçizgili yazı: [u]metin[/u] (alt+u)'; +$lang['bbcode_q_help'] = 'Alıntı: [quote]metin[/quote] (alt+q)'; +$lang['bbcode_c_help'] = 'Kod: [code]kod[/code] (alt+c)'; +$lang['bbcode_l_help'] = 'Liste: [list]liste[/list] (alt+l)'; +$lang['bbcode_o_help'] = 'Sıralı liste: [list=]metin[/list] (alt+o)'; +$lang['bbcode_p_help'] = 'Resim ekle: [img]http://adres[/img] (alt+p)'; +$lang['bbcode_w_help'] = 'URL ekle: [url]http://adres[/url] veya [url=http://adres]metin[/url] (alt+w)'; +$lang['bbcode_a_help'] = 'Açık tüm biçim komutlarını sonlandırır.'; +$lang['bbcode_s_help'] = 'Karakter rengi: [color=red]metin[/color] Bilgi: color=#FF0000 diye de kullanılabilir'; +$lang['bbcode_f_help'] = 'Karakter boyutu: [size=x-small]küçük karakter[/size]'; + +$lang['Emoticons'] = 'Ä°fade Paneli'; +$lang['More_emoticons'] = 'Tüm ifadeler'; + +// Karakter rengi +$lang['Font_color'] = 'Karakter rengi'; +$lang['color_default'] = 'Varsayılan'; +$lang['color_dark_red'] = 'Koyu kırmızı'; +$lang['color_red'] = 'Kırmızı'; +$lang['color_orange'] = 'Turuncu'; +$lang['color_brown'] = 'Kahverengi'; +$lang['color_yellow'] = 'Sarı'; +$lang['color_green'] = 'YeÅŸil'; +$lang['color_olive'] = 'Haki'; +$lang['color_cyan'] = 'Turkuaz'; +$lang['color_blue'] = 'Mavi'; +$lang['color_dark_blue'] = 'Koyu mavi'; +$lang['color_indigo'] = 'Mor'; +$lang['color_violet'] = 'Eflatun'; +$lang['color_white'] = 'Beyaz'; +$lang['color_black'] = 'Siyah'; + +// Karakter boyutu +$lang['Font_size'] = 'Karakter boyutu'; +$lang['font_tiny'] = 'Çok küçük'; +$lang['font_small'] = 'Küçük'; +$lang['font_normal'] = 'Normal'; +$lang['font_large'] = 'Büyük'; +$lang['font_huge'] = 'Çok büyük'; + +$lang['Close_Tags'] = 'Etiketleri kapat'; +$lang['Styles_tip'] = 'Bilgi: Yazıyı seçerek burdaki stilleri daha rahat uygulayabilirsiniz'; + +// +// Private Messaging +// +$lang['Private_Messaging'] = 'Özel Mesajlar'; +$lang['Login_check_pm'] = 'Özel Mesajlar'; +$lang['New_pms'] = 'Özel Mesajlar (%d)'; +$lang['New_pm'] = 'Özel Mesajlar (%d)'; +$lang['No_new_pm'] = 'Özel Mesajlar'; +$lang['Unread_pms'] = 'Özel Mesajlar (%d okunmamış)'; +$lang['Unread_pm'] = 'Özel Mesajlar (%d okunmamış)'; +$lang['No_unread_pm'] = 'Okunmamış özel mesajınız yok'; +$lang['You_new_pm'] = 'Yeni bir özel mesaj sizi bekliyor'; +$lang['You_new_pms'] = 'Yeni özel mesajlar sizi bekliyor'; +$lang['You_no_new_pm'] = 'Bekleyen yeni özel mesajınız yok'; + +$lang['Unread_message'] = 'Okunmamış mesaj'; +$lang['Read_message'] = 'OkunmuÅŸ mesaj'; + +$lang['Read_pm'] = 'Mesajı oku'; +$lang['Post_new_pm'] = 'Mesaj gönder'; +$lang['Post_reply_pm'] = 'Mesaja cevap ver'; +$lang['Post_quote_pm'] = 'Alıntı yap'; +$lang['Edit_pm'] = 'Mesajı düzenle'; + +$lang['Inbox'] = 'Gelenler'; +$lang['Outbox'] = 'Gönderilenler'; +$lang['Savebox'] = 'Saklananlar'; +$lang['Sentbox'] = 'UlaÅŸanlar'; +$lang['Flag'] = 'Durum'; +$lang['Subject'] = 'Konu'; +$lang['From'] = 'Kimden'; +$lang['To'] = 'Kime'; +$lang['Date'] = 'Tarih'; +$lang['Mark'] = 'Ä°ÅŸaret'; +$lang['Sent'] = 'Gönderildi'; +$lang['Saved'] = 'Kaydedildi'; +$lang['Delete_marked'] = 'Seçilenleri Sil'; +$lang['Delete_all'] = 'Hepsini Sil'; +$lang['Save_marked'] = 'Seçilenleri Sakla'; +$lang['Save_message'] = 'Mesajı Sakla'; +$lang['Delete_message'] = 'Mesajı Sil'; + +$lang['Display_messages'] = 'Mesajları göster'; +$lang['All_Messages'] = 'Hepsi'; + +$lang['No_messages_folder'] = 'Bu klasörde hiç mesaj yok'; + +$lang['PM_disabled'] = 'Bu panoda Özel MesajlaÅŸma engellenmiÅŸtir'; +$lang['Cannot_send_privmsg'] = 'Pano Yöneticisi sizin özel mesaj atma hakkınızı iptal etmiÅŸtir'; +$lang['No_to_user'] = 'Bu mesajı göndermek için bir kullanıcı adı belirtmelisiniz'; +$lang['No_such_user'] = 'Böyle bir kullanıcı bulunmamaktadır'; + +$lang['Disable_HTML_pm'] = 'Bu mesajda HTML\'i kapa'; +$lang['Disable_BBCode_pm'] = 'Bu mesajda biçimlendirme\'yi kapa'; +$lang['Disable_Smilies_pm'] = 'Bu mesajda ifadeleri kullanma'; + +$lang['Message_sent'] = 'Mesajınız gönderilmiÅŸtir'; + +$lang['Click_return_inbox'] = 'Gelenler Kutusuna dönmek için %sburaya%s tıklayın'; +$lang['Click_return_index'] = 'Pano Ana Sayfasına gitmek için %sburaya%s tıklayın'; + +$lang['Send_a_new_message'] = 'Yeni bir özel mesaj gönder'; +$lang['Send_a_reply'] = 'Özel mesaja cevap ver'; +$lang['Edit_message'] = 'Özel mesajı deÄŸiÅŸtir'; + +$lang['Notification_subject'] = 'Yeni bir özel mesaj geldi'; + +$lang['Find_username'] = 'Kullanıcı adı bul'; +$lang['Find'] = 'Bul'; +$lang['No_match'] = 'Kullanıcı adı bulunamadı'; + +$lang['No_post_id'] = 'Mesaj ID\'i belirtilmemiÅŸ'; +$lang['No_such_folder'] = 'Böyle bir klasör yok'; +$lang['No_folder'] = 'Klasör belirtilmemiÅŸ'; + +$lang['Mark_all'] = 'Hepsini iÅŸaretle'; +$lang['Unmark_all'] = 'Ä°ÅŸaretleri kaldır'; + +$lang['Confirm_delete_pm'] = 'Bu mesajı silmek istediÄŸinize emin misiniz?'; +$lang['Confirm_delete_pms'] = 'Bu mesajları silmek istediÄŸinize emin misiniz?'; + +$lang['Inbox_size'] = 'Gelenler Kutunuz %%%d dolu'; +$lang['Sentbox_size'] = 'UlaÅŸanlar Kutunuz %%%d dolu'; +$lang['Savebox_size'] = 'Saklananlar Kutunuz %%%d dolu'; + +$lang['Click_view_privmsg'] = 'Gelenler Kutunuza gitmek için %sburaya%s tıklayınız'; + +// +// Profiles/Registration +// +$lang['Viewing_user_profile'] = 'Bilgileri görüntülenen :: %s'; +$lang['About_user'] = '%s hakkında'; + +$lang['Preferences'] = 'Seçenekler'; +$lang['Items_required'] = '* iÅŸaretli bölümler doldurulmak zorundadır'; +$lang['Registration_info'] = 'Hesap bilgileri'; +$lang['Profile_info'] = 'Bilgiler ve iletiÅŸim'; +$lang['Profile_info_warn'] = 'Bu bilgiler herkes tarafından görülebilecektir'; +$lang['Avatar_panel'] = 'Sembol kontrol paneli'; +$lang['Avatar_gallery'] = 'Sembol galerisi'; + +$lang['Website'] = 'Web sitesi'; +$lang['Location'] = 'Konum'; +$lang['Contact'] = 'Ä°letiÅŸim bilgileri:'; +$lang['Email_address'] = 'E-Posta'; +$lang['Send_private_message'] = 'Özel mesaj gönder'; +$lang['Hidden_email'] = '[Gizli]'; +$lang['Search_user_posts'] = 'Bu kullanıcının gönderdiÄŸi iletileri bul'; +$lang['Interests'] = 'Ä°lgi alanları'; +$lang['Occupation'] = 'Meslek'; +$lang['Poster_rank'] = 'Kullanıcı seviyesi'; + +$lang['Total_posts'] = 'Ä°leti Sayısı'; +$lang['User_post_pct_stats'] = 'Tüm iletilerin %.2f%%'; +$lang['User_post_day_stats'] = 'Ortalama hergün %.2f ileti'; +$lang['Search_user_posts'] = '%s tarafından gönderilen tüm iletileri bul'; + +$lang['No_user_id_specified'] = 'Böyle bir kullanıcı yok'; +$lang['Wrong_Profile'] = 'Size ait olmayan bir hesabın bilgilerini deÄŸiÅŸtiremezsiniz'; + +$lang['Only_one_avatar'] = 'Sadece bir tip sembol seçilebilir'; +$lang['File_no_data'] = 'VerdiÄŸiniz URL\'deki dosya bilgi içermiyor'; +$lang['No_connection_URL'] = 'VerdiÄŸiniz URL ile baÄŸlantı kurulamadı'; +$lang['Incomplete_URL'] = 'VerdiÄŸiniz URL tamamlanmamış'; +$lang['Wrong_remote_avatar_format'] = 'URL\'sini verdiÄŸiniz sembol, doÄŸru bir formatta deÄŸil'; +$lang['No_send_account_inactive'] = 'Åžu anda parolanız belirlenemiyor çünkü hesabınız aktif deÄŸil. Lütfen pano yöneticisi ile görüşünüz'; + +$lang['Always_smile'] = 'Her zaman ifadeleri kullan'; +$lang['Always_html'] = 'Her zaman HTML kullan'; +$lang['Always_bbcode'] = 'Her zaman biçimlendirme kullan'; +$lang['Always_add_sig'] = 'Her zaman imzamı ekle'; +$lang['Always_notify'] = 'Her zaman beni cevaplardan haberdar et'; +$lang['Always_notify_explain'] = 'GönderdiÄŸiniz bir baÅŸlığa her cevap geldiÄŸinde sizi e-posta ile haberdar eder. Bu her ileti gönderiÅŸinizde de deÄŸiÅŸtirilebilir.'; + +$lang['Board_style'] = 'Ana tema'; +$lang['Board_lang'] = 'Pano dili'; +$lang['No_themes'] = 'Kayıtlı tema yok'; +$lang['Timezone'] = 'Zaman dilimi'; +$lang['Date_format'] = 'Saat formatı'; +$lang['Date_format_explain'] = 'Kullanılan yazım tarzı PHP\'deki date() fonksiyonuna eÅŸtir'; +$lang['Signature'] = 'Ä°mza'; +$lang['Signature_explain'] = 'Bu gönderdiÄŸiniz iletilere eklenebilecek bir yazı bloÄŸudur. %d karakterlik bir limiti vardır.'; +$lang['Public_view_email'] = 'Her zaman e-posta adresimi göster'; + +$lang['Current_password'] = 'Åžimdiki parolanız'; +$lang['New_password'] = 'Yeni parolanız'; +$lang['Confirm_password'] = 'Parolanızı tekrar girin'; +$lang['Confirm_password_explain'] = 'Parolanızı ya da e-posta adresinizi deÄŸiÅŸtirmek için parolanızı tekrar girerek onaylamanız gerekmektedir.'; +$lang['password_if_changed'] = 'Sadece deÄŸiÅŸtirmek istiyorsanız parolanızı yazmalısınız.'; +$lang['password_confirm_if_changed'] = 'Sadece parolanızı deÄŸiÅŸtirdiyseniz yeni parolanızı onaylamalısınız.'; + +$lang['Avatar'] = 'KiÅŸisel sembol'; +$lang['Avatar_explain'] = 'Ä°letilerinizin yanındaki küçük resim. Bir seferde sadece bir resim gösterilebilir, geniÅŸliÄŸi %d pixelden, yüksekliÄŸi %d pixelden ve boyutu %d KB\'tan büyük olamaz.'; +$lang['Upload_Avatar_file'] = 'Bilgisayarınızdan bir sembol yollayın'; +$lang['Upload_Avatar_URL'] = 'Bir URL\'den sembol gönderin'; +$lang['Upload_Avatar_URL_explain'] = 'Sembol\'ün olduÄŸu sitenin URL\'sini girin, sembol bu siteye kopyalanacaktır.'; +$lang['Pick_local_Avatar'] = 'Sembol\'ü galeriden seçin'; +$lang['Link_remote_Avatar'] = 'BaÅŸka bir siteden sembol seçin'; +$lang['Link_remote_Avatar_explain'] = 'Ä°stediÄŸiniz baÅŸka bir sembulün URL\'sini girin, sembol bu siteye kopyalanmayacaktır.'; +$lang['Avatar_URL'] = 'Sembol URL\'si'; +$lang['Select_from_gallery'] = 'Galeriden sembol seçin'; +$lang['View_avatar_gallery'] = 'Galeriyi göster'; + +$lang['Select_avatar'] = 'Sembolü Seç'; +$lang['Return_profile'] = 'Ä°ptal'; +$lang['Select_category'] = 'Kategori seç'; + +$lang['Delete_Image'] = 'Sembolü sil'; +$lang['Current_Image'] = 'Åžu andaki sembol'; + +$lang['Notify_on_privmsg'] = 'Özel Mesaj gelince beni haberdar et'; +$lang['Popup_on_privmsg'] = 'Özel Mesaj gelince yeni bir pencere aç'; +$lang['Popup_on_privmsg_explain'] = 'Yeni bir özel mesaj geldiÄŸinde yeni bir pencere ile haberdar edilirsiniz.'; +$lang['Hide_user'] = 'Çevrimiçi olduÄŸumu gizle'; + +$lang['Profile_updated'] = 'Hesabınız güncellendi'; +$lang['Profile_updated_inactive'] = 'Hesabınız güncellendi, ama bazı önemli bilgileri deÄŸiÅŸtirdiÄŸiniz için hesabınız aktif deÄŸil. Yeniden aktif hale getirmek için yapmanız gerekenleri bulmak için e-posta\'nızı kontrol edin, eÄŸer Pano Yöneticisi onayı gerekiyorsa, yöneticinin onaylamasını bekleyin'; + +$lang['Password_mismatch'] = 'GirdiÄŸiniz parolalar birbiri ile uyuÅŸmuyor'; +$lang['Current_password_mismatch'] = 'GirdiÄŸiniz parola ÅŸu andaki parolanız ile uyuÅŸmuyor'; +$lang['Password_long'] = 'Parolanız 32 karakterden uzun olamaz'; +$lang['Username_taken'] = 'Bu kullanıcı ismi daha önce alınmış'; +$lang['Username_invalid'] = 'Bu kullanıcı ismi \' gibi izin verilmeyen bir karakter içeriyor'; +$lang['Username_disallowed'] = 'Bu kullanıcı ismine izin verilmiyor'; +$lang['Email_taken'] = 'Bu e-posta adresi baÅŸka bir kullanıcı tarafından kullanılıyor'; +$lang['Email_banned'] = 'Bu e-posta adresi yasaklanmış'; +$lang['Email_invalid'] = 'Bu e-posta adresi doÄŸru deÄŸil'; +$lang['Signature_too_long'] = 'Ä°mzanız çok uzun'; +$lang['Fields_empty'] = 'Zorunlu bölümleri doldurmalısınız'; +$lang['Avatar_filetype'] = 'Sembolün formatı .jpg, .gif ya da .png olmalıdır'; +$lang['Avatar_filesize'] = 'Sembol dosyası %d kB\'tan az olmalıdır'; +$lang['Avatar_imagesize'] = 'Sembolün geniÅŸliÄŸi %d pikselden, yüksekliÄŸi %d pikselden küçük olmalıdır'; + +$lang['Welcome_subject'] = '%s Forumlarına HoÅŸgeldiniz'; +$lang['New_account_subject'] = 'Yeni kullanıcı hesabı'; +$lang['Account_activated_subject'] = 'Hesap aktif hale getirilmiÅŸtir'; + +$lang['Account_added'] = 'KaydolduÄŸunuz için teÅŸekkürler, hesabınız yaratılmıştır. Kullanıcı adınız ve parolanızla oturum açabilirsiniz.'; +$lang['Account_inactive'] = 'Hesabınız yaratılmıştır. EtkinleÅŸtirme kodu e-posta\'nıza gönderilmiÅŸtir. Daha fazla bilgi için e-posta\'nızı kontrol ediniz.

    NOT: Ücretsiz bazı e-posta sitelerinde (Hotmail vb.) aktivasyon mailleri bazen "Junk Email" (Gereksiz Mesaj) klasörlerine atılabiliyor. Eğer aktivasyon e-postanızı bulamazsanız, lütfen bu alanları da kontrol edin...'; +$lang['Account_inactive_admin'] = 'Hesabınız yaratılmıştır. Ancak hesabınızın aktif hale gelmesi için Pano Yöneticisi onayı gerekmektedir. Onlara bir e-posta gönderilmiştir ve hesabınız aktif hale geldiğinde size haber verilecektir'; +$lang['Account_active'] = 'Hesabınız aktif hale getirilmiştir. Kaydolduğunuz için teşekkür ederiz'; +$lang['Account_active_admin'] = 'Hesap aktif hale getirilmiştir'; +$lang['Already_activated'] = 'Hesabınızı daha önce aktif hale getirmiştiniz'; +$lang['Reactivate'] = 'Hesabınızı yeniden aktif hale getirmelisiniz!'; +$lang['COPPA'] = 'Hesabınız yaratılmıştır ama onaylanması gerekmektedir, detaylar için e-posta\'nızı kontrol ediniz.'; + +$lang['Registration'] = 'Kayıt Anlaşması'; +$lang['Reg_agreement'] = 'Bu panonun yöneticileri ve bölüm yetkilileri her ne kadar itiraz edilebilecek her türlü materyali mümkün olduğu kadar kısa sürede siteden kaldıracak da olsa, bütün iletilerin incelenmesi mümkün olmamaktadır. Bu durumda siz buraya gönderilen her iletinin, onu gönderen kullanıcının görüşlerini yansıttığını, bölüm yetkililerinin, pano yöneticilerinin (kendilerine ait iletiler dışında) sorumlu tutulamayacağını peşinen kabul etmiş bulunuyorsunuz.

    Aşağılayıcı, müstehcen, kaba, iftira niteliğinde, nefret dolu, tehdit edici, sekse yönelik ya da kanunlarla çelişecek içerikler göndermeyeceğinizi kabul ediyorsunuz. Bunları dikkate almamanız durumunda hemen ve süresizce siteden uzaklaştırılırsınız (ve servis sağlayıcınız da haberdar edilir). Her iletinin IP adresi bunları engellemek için kaydedilmektedir. Bu panonun yöneticileri veya bölüm yetkililerini kendi iradeleri doğrultusuna herhangi bir başlığı silme, taşıma, kilitleme yetkisi olduğunu kabul ediyorsunuz. Bir kullanıcı olarak her girdiğiniz bilginin veritabanında saklanacağını kabul ediyorsunuz. Her ne kadar bu bilgiler sizin bilginiz dışında 3. şahıslara verilmeyecek olsa da, herhangi bir \'hack\' olayı sonucunda bu bilgiler 3. şahıslara dağılırsa bundan, Forum ya da Pano Yöneticilerini sorumlu tutamazsınız.

    Bu pano sistemi, bazı bilgileri bilgisayarınızda saklamak için çerez\'leri (cookie) kullanmaktadır. Girdiğiniz özel bilgilerin hiçbiri bu çerez\'lerde (cookie) bulunmamaktadır, bunların tek amacı panoda daha rahat bir gezinti yapabilmenizdir. E-Posta adresiniz sadece kaydınızı onaylamak ve parolanızı yollamak içindir (unuttuğunuz zaman parolanızı yeniden yollamak için).

    Aşağıdaki kabul ediyorum linkine basmak sureti ile yukarıdaki bütün koşulların bağlayıcılığını kabul edersiniz.'; + +$lang['Agree_under_13'] = 'Yukarıdaki koşulları kabul ediyorum ve 13 yaşın altındayım'; +$lang['Agree_over_13'] = 'Yukarıdaki koşulları kabul ediyorum ve 13 yaşın üstündeyim'; +$lang['Agree_not'] = 'Bu koşulları kabul etmiyorum'; + +$lang['Wrong_activation'] = 'Girdiğiniz etkinleştirme kodu veritabanındaki ile uyuşmuyor.'; +$lang['Send_password'] = 'Yeni bir parola gönder'; +$lang['Password_updated'] = 'Yeni parolanız oluşturuldu, nasıl aktif hale getireceğinizi öğrenmek için e-posta\'nızı kontrol ediniz'; +$lang['No_email_match'] = 'Bu kullanıcı için verdiğiniz e-posta adresi veritabanındaki ile uyuşmuyor'; +$lang['New_password_activation'] = 'Yeni parola etkinleştirme'; +$lang['Password_activated'] = 'Hesabınız yeniden aktif hale getirilmiştir. Oturum açmak için e-posta\'nıza gönderilen parolayı kullanın'; + +$lang['Send_email_msg'] = 'E-Posta gönder'; +$lang['No_user_specified'] = 'Kullanıcı ismi seçilmedi'; +$lang['User_prevent_email'] = 'Bu kullanıcı e-posta almak istemiyor. Özel Mesaj göndermeyi deneyin'; +$lang['User_not_exist'] = 'Böyle bir kullanıcı yok'; +$lang['CC_email'] = 'Bu e-posta\'nın bir kopyasını kendinize gönderin'; +$lang['Email_message_desc'] = 'Bu mesaj düz metin içerecektir, Biçim kodları ya da HTML kullanılmayacaktır. Cevap adresi olarak sizin e-posta adresiniz girilmiştir'; +$lang['Flood_email_limit'] = 'Şu anda başka bir e-posta gönderemezsiniz, lütfen daha sonra tekrar deneyiniz.'; +$lang['Recipient'] = 'Alıcı'; +$lang['Email_sent'] = 'E-Posta gönderilmiştir'; +$lang['Send_email'] = 'E-Posta gönder'; +$lang['Empty_subject_email'] = 'E-Posta için bir konu belirtmelisiniz'; +$lang['Empty_message_email'] = 'E-Posta ile gönderilecek bir mesaj yazmalısınız'; + +// +// Memberslist +// +$lang['Select_sort_method'] = 'Sıralama'; +$lang['Sort'] = 'Sırala'; +$lang['Sort_Top_Ten'] = 'TOP 10'; +$lang['Sort_Joined'] = 'Kayıt tarihi'; +$lang['Sort_Username'] = 'Kullanıcı ismi'; +$lang['Sort_Location'] = 'Şehir'; +$lang['Sort_Posts'] = 'Toplam ileti'; +$lang['Sort_Email'] = 'E-Posta'; +$lang['Sort_Website'] = 'Web sitesi'; +$lang['Sort_Ascending'] = 'Artan'; +$lang['Sort_Descending'] = 'Azalan'; +$lang['Order'] = 'Düzen'; + +// +// Group control panel +// +$lang['Group_Control_Panel'] = 'Grup Kontrol Paneli'; +$lang['Group_member_details'] = 'Grup Üyeliği Detayları'; +$lang['Group_member_join'] = 'Bir Gruba Katıl'; + +$lang['Group_Information'] = 'Grup Bilgileri'; +$lang['Group_name'] = 'Grup adı'; +$lang['Group_description'] = 'Grup açıklaması'; +$lang['Group_membership'] = 'Grup üyeliği'; +$lang['Group_Members'] = 'Grup Üyeleri'; +$lang['Group_Moderator'] = 'Grup Yöneticisi'; +$lang['Pending_members'] = 'Onay bekleyen üyeler'; + +$lang['Group_type'] = 'Grup türü'; +$lang['Group_open'] = 'Açık grup'; +$lang['Group_closed'] = 'Kapalı grup'; +$lang['Group_hidden'] = 'Gizli grup'; + +$lang['Current_memberships'] = 'Şu andaki üyelikler'; +$lang['Non_member_groups'] = 'Üye olunmamış gruplar'; +$lang['Memberships_pending'] = 'Onay bekleyen üyelikler'; + +$lang['No_groups_exist'] = 'Hiç kullanıcı grubu yok'; +$lang['Group_not_exist'] = 'Böyle bir kullanıcı grubu yok'; + +$lang['Join_group'] = 'Gruba katıl'; +$lang['No_group_members'] = 'Bu grubun hiç üyesi yok'; +$lang['Group_hidden_members'] = 'Bu grup gizlenmiş, üyelikleri göremezsiniz'; +$lang['No_pending_group_members'] = 'Bu grupta hiç onay bekleyen üyelik yok'; +$lang['Group_joined'] = 'Bu gruba başarıyla kayıt oldunuz
    Üyeliğiniz grup yöneticisi tarafından onaylandığında haberdar edileceksiniz'; +$lang['Group_request'] = 'Grubunuza katılmak için bir başvuru var'; +$lang['Group_approved'] = 'Başvurunuz onaylanmıştır'; +$lang['Group_added'] = 'Bu gruba eklendiniz'; +$lang['Already_member_group'] = 'Zaten bu grubun üyesisiniz'; +$lang['User_is_member_group'] = 'Kullanıcı zaten bu grubun üyesi'; +$lang['Group_type_updated'] = 'Grup türü güncellendi'; + +$lang['Could_not_add_user'] = 'Seçtiğiniz kullanıcı yok'; +$lang['Could_not_anon_user'] = 'Misafir bir kullanıcıyı üye yapamazsınız'; + +$lang['Confirm_unsub'] = 'Bu gruptan üyeliğinizi sildirmek istediğinize emin misiniz?'; +$lang['Confirm_unsub_pending'] = 'Bu gruba üyeliğiniz henüz onaylanmadı, yine de sildirmek istediğinize emin misiniz?'; + +$lang['Unsub_success'] = 'Bu gruptan kaydınız silinmiştir'; + +$lang['Approve_selected'] = 'Seçilenleri onayla'; +$lang['Deny_selected'] = 'Seçilenleri reddet'; +$lang['Not_logged_in'] = 'Bir gruba katılmak için oturum açmalısınız.'; +$lang['Remove_selected'] = 'Seçilenleri çıkar'; +$lang['Add_member'] = 'Üye Ekle'; +$lang['Not_group_moderator'] = 'Bu grubun yöneticisi değilsiniz, bunu yapamazsınız.'; + +$lang['Login_to_join'] = 'Gruba katılmak ya da grubu yönetmek için oturum açmalısınız'; +$lang['This_open_group'] = 'Bu açık bir grup, üyelik istemek için tıklayın'; +$lang['This_closed_group'] = 'Bu kapalı bir grup, yeni üyelik alınmıyor'; +$lang['This_hidden_group'] = 'Bu gizli bir grup, otomatik üye alımına izin verilmiyor'; +$lang['Member_this_group'] = 'Bu grubun üyesisiniz'; +$lang['Pending_this_group'] = 'Bu gruba üyeliğiniz onay için beklemede'; +$lang['Are_group_moderator'] = 'Bu grubu yönetebilirsiniz'; +$lang['None'] = 'Yok'; + +$lang['Subscribe'] = 'Abone ol'; +$lang['Unsubscribe'] = 'Abonelik sildir'; +$lang['View_Information'] = 'Grup hakkında'; + +// +// Search +// +$lang['Search_query'] = 'Arama'; +$lang['Search_options'] = 'Arama Seçenekleri'; +$lang['Search_keywords'] = 'Aranacak Kelimeler'; +$lang['Search_keywords_explain'] = 'AND ile sonuçlarda bulunması zorunlu kelimeleri, OR ile sonuçlarda olabilecek kelimeleri ve NOT ile sonuçta olmaması gereken kelimeleri tanımlayabilirsiniz. * işareti ile kelimenin bir bölümünü girip gerisinin bulunmasını sağlayabilirsiniz'; +$lang['Search_author'] = 'Yazar'; +$lang['Search_author_explain'] = '* ile kelimenin bir kısmını girip tutan sonuçları bulabilirsiniz'; + +$lang['Search_for_any'] = 'Herhangi bir terim için ara ya da girilen önermeyi kullan'; +$lang['Search_for_all'] = 'Bütün terimler için ara'; +$lang['Search_title_msg'] = 'Konu başlığı ve ileti metninde ara'; +$lang['Search_msg_only'] = 'Sadece ileti metninde ara'; + +$lang['Return_first'] = 'İletinin ilk'; +$lang['characters_posts'] = 'karakterini göster'; + +$lang['Search_previous'] = 'Süre'; + +$lang['Sort_by'] = 'Sıralama'; +$lang['Sort_Time'] = 'Zaman'; +$lang['Sort_Post_Subject'] = 'Konu'; +$lang['Sort_Topic_Title'] = 'Başlık'; +$lang['Sort_Author'] = 'Yazar'; +$lang['Sort_Forum'] = 'Forum'; + +$lang['Display_results'] = 'Sonuçlar'; +$lang['All_available'] = 'Tümü'; +$lang['No_searchable_forums'] = 'Bu sitedeki hiçbir forumda arama yapma yetkiniz yok'; + +$lang['No_search_match'] = 'Arama kriterlerinize uygun ileti ya da başlık bulunamadı'; +$lang['Found_search_match'] = 'Arama %d sonuç buldu'; +$lang['Found_search_matches'] = 'Arama %d sonuç buldu'; +$lang['Search_Flood_Error'] = 'Son aramanızdan bu kadar kısa bir süre sonra başka bir arama yapamazsınız, lütfen bir süre sonra tekrar deneyiniz.'; + +$lang['Close_window'] = 'Pencereyi kapat'; + +// +// Auth related entries +// +// Note the %s will be replaced with one of the following 'user' arrays +$lang['Sorry_auth_announce'] = 'Sadece %s bu foruma duyuru gönderebilir'; +$lang['Sorry_auth_sticky'] = 'Sadece %s bu foruma önemli ileti gönderebilir'; +$lang['Sorry_auth_read'] = 'Sadece %s bu forumdaki iletileri okuyabilir'; +$lang['Sorry_auth_post'] = 'Sadece %s bu foruma konu açabilir'; +$lang['Sorry_auth_reply'] = 'Sadece %s bu forumdaki iletilere cevap verebilir'; +$lang['Sorry_auth_edit'] = 'Sadece %s bu forumdaki iletileri değiştirebilir'; +$lang['Sorry_auth_delete'] = 'Sadece %s bu forumdaki iletileri silebilir'; +$lang['Sorry_auth_vote'] = 'Sadece %s bu forumdaki anketlere oy verebilir'; + +$lang['Auth_Anonymous_Users'] = 'misafirler'; +$lang['Auth_Registered_Users'] = 'kayıtlı kullanıcılar'; +$lang['Auth_Users_granted_access'] = 'özel haklara sahip kullanıcılar'; +$lang['Auth_Moderators'] = 'bölüm yetkilileri'; +$lang['Auth_Administrators'] = 'pano yöneticileri'; + +$lang['Not_Moderator'] = 'Bu forumun yetkilisi değilsiniz'; +$lang['Not_Authorised'] = 'İzniniz yok'; + +$lang['You_been_banned'] = 'Bu panodan atıldınız
    Ayrıntılı bilgi için Pano Yöneticisi ile bağlantıya geçin'; + +// +// Viewonline +// +$lang['Reg_users_zero_online'] = '0 kayıtlı kullanıcı ve '; +$lang['Reg_users_online'] = '%d kayıtlı kullanıcı ve '; +$lang['Reg_user_online'] = '%d kayıtlı kullanıcı ve '; +$lang['Hidden_users_zero_online'] = '0 gizli kullanıcı çevrimiçi'; +$lang['Hidden_users_online'] = '%d gizli kullanıcı çevrimiçi'; +$lang['Hidden_user_online'] = '%d gizli kullanıcı çevrimiçi'; +$lang['Guest_users_online'] = '%d misafir çevrimiçi'; +$lang['Guest_users_zero_online'] = '0 misafir çevrimiçi'; +$lang['Guest_user_online'] = '%d misafir çevrimiçi'; +$lang['No_users_browsing'] = 'Şu anda bu forumu dolaşan kullanıcı yok'; + +$lang['Online_explain'] = 'Bu bilgi son 5 dakika içinde aktif olan kullanıcılara dayanmaktadır.'; + +$lang['Forum_Location'] = 'Forumdaki Yeri'; +$lang['Last_updated'] = 'Son Güncelleme'; + +$lang['Forum_index'] = 'Pano Ana Sayfa'; +$lang['Logging_on'] = 'Oturum açıyor'; +$lang['Posting_message'] = 'İleti gönderiyor'; +$lang['Searching_forums'] = 'Arama yapıyor'; +$lang['Viewing_profile'] = 'Hesap görüntülüyor'; +$lang['Viewing_online'] = 'Kimlerin çevrimiçi olduğuna bakıyor'; +$lang['Viewing_member_list'] = 'Üye listesine bakıyor'; +$lang['Viewing_priv_msgs'] = 'Özel mesajlarına bakıyor'; +$lang['Viewing_FAQ'] = 'Pano Kılavuzu\'na bakıyor'; + +// +// Moderator Control Panel +// +$lang['Mod_CP'] = 'Forum Yönetim Paneli'; +$lang['Mod_CP_explain'] = 'Aşağıdaki formu kullanarak bu forumda düzenleme yapabilirsiniz. İstediğiniz başlığı silebilir, taşıyabilir, kilitleyebilir ya da kilidini açabilirsiniz'; + +$lang['Select'] = 'Seç'; +$lang['Delete'] = 'Sil'; +$lang['Move'] = 'Taşı'; +$lang['Lock'] = 'Kilitle'; +$lang['Unlock'] = 'Kilidi Aç'; + +$lang['Topics_Removed'] = 'Seçtiğiniz konular veritabanından başarıyla silinmiştir'; +$lang['Topics_Locked'] = 'Seçtiğiniz konular kilitlenmiştir'; +$lang['Topics_Moved'] = 'Seçtiğiniz konular taşınmıştır'; +$lang['Topics_Unlocked'] = 'Seçtiğiniz konuların kilidi açılmıştır'; +$lang['No_Topics_Moved'] = 'Hiçbir konu taşınmamıştır'; + +$lang['Confirm_delete_topic'] = 'Seçtiğiniz konuları silmek istediğinize emin misiniz?'; +$lang['Confirm_lock_topic'] = 'Seçtiğiniz konuları kilitlemek istediğinize emin misiniz?'; +$lang['Confirm_unlock_topic'] = 'Seçtiğiniz konuların kilitlerini açmak istediğinize emin misiniz?'; +$lang['Confirm_move_topic'] = 'Seçtiğiniz konuları taşımak istediğinize emin misiniz?'; + +$lang['Move_to_forum'] = 'Bu foruma taşı:'; +$lang['Leave_shadow_topic'] = 'Eski forumda gölgesini bırak'; + +$lang['Split_Topic'] = 'Konu Bölme Kontrol Paneli'; +$lang['Split_Topic_explain'] = 'Bu form ile bir ana konuyu, ister tek tek ileti seçerek ister belli bir iletiden ayırarak ikiye bölebilirsiniz'; +$lang['Split_title'] = 'Yeni konu başlığı'; +$lang['Split_forum'] = 'Yeni başlığın forumu'; +$lang['Split_posts'] = 'Seçilen iletileri ayır'; +$lang['Split_after'] = 'Seçilen iletiden ayır'; +$lang['Topic_split'] = 'Seçilen konu başarıyla ayrılmıştır'; + +$lang['Too_many_error'] = 'Çok fazla ileti seçtiniz. Başlığı sadece bir iletiden ayırabilirsiniz!'; + +$lang['None_selected'] = 'Bu işlemi yapmak için hiçbir başlığı seçmediniz. Lütfen geri dönüp bir tane seçiniz'; +$lang['New_forum'] = 'Yeni forum'; + +$lang['This_posts_IP'] = 'Bu iletiyi gönderenin IP adresi'; +$lang['Other_IP_this_user'] = 'Bu kullanıcının diğer IP adresleri'; +$lang['Users_this_IP'] = 'Bu IP adresini kullanan diğer kullanıcılar'; +$lang['IP_info'] = 'IP bilgisi'; +$lang['Lookup_IP'] = 'Bu IP adresini ara'; + + +// +// Timezones ... for display on each page +// +$lang['All_times'] = 'Saatler %s zaman dilimine göredir'; +$lang['-12'] = 'GMT -12'; +$lang['-11'] = 'GMT -11'; +$lang['-10'] = 'GMT -10'; +$lang['-9'] = 'GMT -9'; +$lang['-8'] = 'GMT -8'; +$lang['-7'] = 'GMT -7'; +$lang['-6'] = 'GMT -6'; +$lang['-5'] = 'GMT -5'; +$lang['-4'] = 'GMT -4'; +$lang['-3.5'] = 'GMT -3.5'; +$lang['-3'] = 'GMT -3'; +$lang['-2'] = 'GMT -2'; +$lang['-1'] = 'GMT -1'; +$lang['0'] = 'GMT'; +$lang['1'] = 'GMT +1'; +$lang['2'] = 'GMT +2'; +$lang['3'] = 'GMT +3'; +$lang['3.5'] = 'GMT +3.5'; +$lang['4'] = 'GMT +4'; +$lang['4.5'] = 'GMT +4.5'; +$lang['5'] = 'GMT +5'; +$lang['5.5'] = 'GMT +5.5'; +$lang['5.75'] = 'GMT +5.75 '; +$lang['6'] = 'GMT +6'; +$lang['6.5'] = 'GMT +6.5'; +$lang['7'] = 'GMT +7'; +$lang['8'] = 'GMT +8'; +$lang['9'] = 'GMT +9'; +$lang['9.5'] = 'GMT +9.5'; +$lang['10'] = 'GMT +10'; +$lang['11'] = 'GMT +11'; +$lang['12'] = 'GMT +12'; +$lang['13'] = 'GMT +13'; + +// These are displayed in the timezone select box +$lang['tz']['-12'] = 'GMT -12'; +$lang['tz']['-11'] = 'GMT -11'; +$lang['tz']['-10'] = 'GMT -10'; +$lang['tz']['-9'] = 'GMT -9'; +$lang['tz']['-8'] = 'GMT -8'; +$lang['tz']['-7'] = 'GMT -7'; +$lang['tz']['-6'] = 'GMT -6'; +$lang['tz']['-5'] = 'GMT -5'; +$lang['tz']['-4'] = 'GMT -4'; +$lang['tz']['-3.5'] = 'GMT -3.5'; +$lang['tz']['-3'] = 'GMT -3'; +$lang['tz']['-2'] = 'GMT -2'; +$lang['tz']['-1'] = 'GMT -1'; +$lang['tz']['0'] = 'GMT'; +$lang['tz']['1'] = 'GMT +1'; +$lang['tz']['2'] = 'GMT +2'; +$lang['tz']['3'] = 'GMT +3'; +$lang['tz']['3.5'] = 'GMT +3.5'; +$lang['tz']['4'] = 'GMT +4'; +$lang['tz']['4.5'] = 'GMT +4.5'; +$lang['tz']['5'] = 'GMT +5'; +$lang['tz']['5.5'] = 'GMT +5.5'; +$lang['tz']['5.75'] = 'GMT +5.75'; +$lang['tz']['6'] = 'GMT +6'; +$lang['tz']['6.5'] = 'GMT +6.5'; +$lang['tz']['7'] = 'GMT +7'; +$lang['tz']['8'] = 'GMT +8'; +$lang['tz']['9'] = 'GMT +9'; +$lang['tz']['9.5'] = 'GMT +9.5'; +$lang['tz']['10'] = 'GMT +10'; +$lang['tz']['11'] = 'GMT +11'; +$lang['tz']['12'] = 'GMT +12'; +$lang['tz']['13'] = 'GMT +13'; + +$lang['datetime']['Sunday'] = 'Pazar'; +$lang['datetime']['Monday'] = 'Pazartesi'; +$lang['datetime']['Tuesday'] = 'Salı'; +$lang['datetime']['Wednesday'] = 'Çarşamba'; +$lang['datetime']['Thursday'] = 'Perşembe'; +$lang['datetime']['Friday'] = 'Cuma'; +$lang['datetime']['Saturday'] = 'Cumartesi'; +$lang['datetime']['Sun'] = 'Pzr'; +$lang['datetime']['Mon'] = 'Pts'; +$lang['datetime']['Tue'] = 'Sal'; +$lang['datetime']['Wed'] = 'Çar'; +$lang['datetime']['Thu'] = 'Per'; +$lang['datetime']['Fri'] = 'Cum'; +$lang['datetime']['Sat'] = 'Cmt'; +$lang['datetime']['January'] = 'Ocak'; +$lang['datetime']['February'] = 'Şubat'; +$lang['datetime']['March'] = 'Mart'; +$lang['datetime']['April'] = 'Nisan'; +$lang['datetime']['May'] = 'Mayıs'; +$lang['datetime']['June'] = 'Haziran'; +$lang['datetime']['July'] = 'Temmuz'; +$lang['datetime']['August'] = 'Ağustos'; +$lang['datetime']['September'] = 'Eylül'; +$lang['datetime']['October'] = 'Ekim'; +$lang['datetime']['November'] = 'Kasım'; +$lang['datetime']['December'] = 'Aralık'; +$lang['datetime']['Jan'] = 'Oca'; +$lang['datetime']['Feb'] = 'Şub'; +$lang['datetime']['Mar'] = 'Mar'; +$lang['datetime']['Apr'] = 'Nis'; +$lang['datetime']['May'] = 'May'; +$lang['datetime']['Jun'] = 'Haz'; +$lang['datetime']['Jul'] = 'Tem'; +$lang['datetime']['Aug'] = 'Ağu'; +$lang['datetime']['Sep'] = 'Eyl'; +$lang['datetime']['Oct'] = 'Ekm'; +$lang['datetime']['Nov'] = 'Kas'; +$lang['datetime']['Dec'] = 'Arl'; + +// +// Errors (not related to a specific failure on a page) +// +$lang['Information'] = 'Bilgi'; +$lang['Critical_Information'] = 'Kritik Bilgi'; +$lang['General_Error'] = 'Genel Hata'; +$lang['Critical_Error'] = 'Kritik Hata'; +$lang['An_error_occured'] = 'Bir hata oluştu'; +$lang['A_critical_error'] = 'Kritik bir hata oluştu'; +$lang['Admin_reauthenticate'] = 'Yönetim paneline girmek için oturumunuzu doğrulamalısınız.'; + +// +// Visual Confirmation System +// +$lang['Confirm_code_wrong'] = 'Görsel doğrulama kodunu eksik veya yanlış girdiniz '; +$lang['Too_many_registers'] = 'Görsel doğrulama kodunu birkaç kez yanlış girdiniz!

    Güvenlik amacı ile bu oturum süresince kayıt sayfasına erişiminiz engellenmiştir.
    Lütfen daha sonra tekrar deneyin.'; +$lang['Confirm_code_impaired'] = 'EÄŸer kod bozuk görünüyor veya okuyamıyorsanız yardım için lütfen %sSite Yöneticisi%s ile irtibata geçin.'; +$lang['Confirm_code'] = 'Görsel doÄŸrulama kodu'; +$lang['Confirm_code_explain'] = 'Resimde gördüğünüz kodu kutuya tam olarak yazınız, küçük-büyük harf duyarlıdır.'; + +$lang['Login_attempts_exceeded'] = 'En fazla oturum açma deneme sayısı olan %s aÅŸtınız. %s dakika boyunca oturum açmanıza izin verilmeyecektir.'; +$lang['Please_remove_install_contrib'] = 'Lütfen install/ ve contrib/ dizinlerini siliniz. Aksi halde sürekli bu hatayı alacaksınız.'; + +$lang['Session_invalid'] = 'Geçersiz Oturum. Lütfen formu tekrar gönderin.'; + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/search_stopwords.txt b/includes/shared/phpbb2/language/lang_turkish/search_stopwords.txt new file mode 100644 index 00000000..416ddbc8 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/search_stopwords.txt @@ -0,0 +1,54 @@ +de +diye +ile +ise +ve +veya +ama +yada +ya da +eðer +için +gibi +bir +iki +her +tüm +çok +ancak +böyle +göre +iyi +hiç +ben +benim +bende +bence +bunu +hiç +sen +siz +var +yok +daha +iyi +kadar +zaten +size +bunu +yani +yeni +site +ilgili +sadece +deðil +sonra +olan +olarak +diðer +önce +mutlaka +güzel +olur +olsun +ilgili \ No newline at end of file diff --git a/includes/shared/phpbb2/language/lang_turkish/search_synonyms.txt b/includes/shared/phpbb2/language/lang_turkish/search_synonyms.txt new file mode 100644 index 00000000..5a3c8a17 --- /dev/null +++ b/includes/shared/phpbb2/language/lang_turkish/search_synonyms.txt @@ -0,0 +1,19 @@ +belkim belki +çenber çember +domayin domain +efet evet +eksoz egzoz +ewet evet +güsel güzel +herkez herkes +klavuz kýlavuz +laboratuar laboratuvar +makina makine +metod metot +orjinal orijinal +saol saðol +traþ týraþ +wep web +yalnýþ yanlýþ +yanlýz yalnýz +yassak yasak \ No newline at end of file diff --git a/includes/shared/phpbb3/includes/functions.php b/includes/shared/phpbb3/includes/functions.php index 157abc0c..04553b36 100644 --- a/includes/shared/phpbb3/includes/functions.php +++ b/includes/shared/phpbb3/includes/functions.php @@ -1115,7 +1115,7 @@ function phpbb_realpath($path) return phpbb_own_realpath($path); } } -else +elseif (!function_exists('phpbb_realpath')) { /** * A wrapper for realpath @@ -5167,57 +5167,40 @@ function merge($bitfield) } } - -/** -* Little helper for the build_hidden_fields function -*/ -function _build_hidden_fields($key, $value, $specialchar, $stripslashes) +// +//This file is sometime included for build_hidden_fields() function +//and so we keep it here with this check for new for phpBB2 Tablet-PC and SmartPhone Edition Backend +// +if (!function_exists('_build_hidden_fields')) { - $hidden_fields = ''; - - if (!is_array($value)) + /** + * Little helper for the build_hidden_fields function + */ + function _build_hidden_fields3($key, $value, $specialchar, $stripslashes) { - $value = ($stripslashes) ? stripslashes($value) : $value; - $value = ($specialchar) ? htmlspecialchars($value, ENT_COMPAT, 'UTF-8') : $value; + $hidden_fields = ''; - $hidden_fields .= '' . "\n"; - } - else - { - foreach ($value as $_key => $_value) + if (!is_array($value)) { - $_key = ($stripslashes) ? stripslashes($_key) : $_key; - $_key = ($specialchar) ? htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') : $_key; + $value = ($stripslashes) ? stripslashes($value) : $value; + $value = ($specialchar) ? htmlspecialchars($value, ENT_COMPAT, 'UTF-8') : $value; - $hidden_fields .= _build_hidden_fields($key . '[' . $_key . ']', $_value, $specialchar, $stripslashes); + $hidden_fields .= '' . "\n"; } - } - - return $hidden_fields; -} - -/** -* Build simple hidden fields from array -* -* @param array $field_ary an array of values to build the hidden field from -* @param bool $specialchar if true, keys and values get specialchared -* @param bool $stripslashes if true, keys and values get stripslashed -* -* @return string the hidden fields -*/ -function build_hidden_fields($field_ary, $specialchar = false, $stripslashes = false) -{ - $s_hidden_fields = ''; + else + { + foreach ($value as $_key => $_value) + { + $_key = ($stripslashes) ? stripslashes($_key) : $_key; + $_key = ($specialchar) ? htmlspecialchars($_key, ENT_COMPAT, 'UTF-8') : $_key; - foreach ($field_ary as $name => $vars) - { - $name = ($stripslashes) ? stripslashes($name) : $name; - $name = ($specialchar) ? htmlspecialchars($name, ENT_COMPAT, 'UTF-8') : $name; + $hidden_fields .= _build_hidden_fields($key . '[' . $_key . ']', $_value, $specialchar, $stripslashes); + } + } - $s_hidden_fields .= _build_hidden_fields($name, $vars, $specialchar, $stripslashes); + return $hidden_fields; } - return $s_hidden_fields; } ?> \ No newline at end of file diff --git a/includes/shared/phpbb3/language/index.htm b/includes/shared/phpbb3/language/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_arabic/common.php b/includes/shared/phpbb3/language/lang_arabic/common.php new file mode 100644 index 00000000..0f2e1449 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_arabic/common.php @@ -0,0 +1,1516 @@ + +* @translated 2014 phpBBArabia.com +* 2017 Updated and mainted by Saeed Hubaishan +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » †“ … +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => '', + 'DIRECTION' => 'rtl', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M YØŒ H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'ar', + + // You can define different rules for the determination of plural forms here. + // See https://area51.phpbb.com/docs/dev/32x/language/plurals.html for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 12, + + '1_DAY' => 'يوم', + '1_MONTH' => 'شهر', + '1_YEAR' => 'سنة', + '2_WEEKS' => 'أسبوعان', + '3_MONTHS' => '3 شهور', + '6_MONTHS' => '6 شهور', + '7_DAYS' => 'أسبوع', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'حسابك Ù…Ùعل الآن', + 'ACCOUNT_DEACTIVATED' => 'تم إيقا٠حسابك يدويًا وإدارة المنتدى Ùقط هي القادرة على إعادة تÙعيله', + 'ACCOUNT_NOT_ACTIVATED' => 'حسابك غير Ù…Ùعّل بعد', + 'ACP' => 'لوحة التحكم الرئيسية', + 'ACP_SHORT' => 'الإدارة', + 'ACTIVE' => 'نشط', + 'ACTIVE_ERROR' => 'حسابك معطل الآن. الرجاء تÙعيل حسابك ثم حاول الدخول مرة أخرى. إذا واجهت أية مشاكل راجع مدير المنتدى.', + 'ADMINISTRATOR' => 'المدير العام', + 'ADMINISTRATORS' => 'مديرو المنتدى', + 'AGE' => 'العمر', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'خطأ AJAX', + 'AJAX_ERROR_TEXT' => 'حدث خطأ أثناء معالجة طلبك.', + 'AJAX_ERROR_TEXT_ABORT' => 'تم إيقا٠الطلب عن طريق المستخدم.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'لقد Ù†ÙØ° الوقت أثناء التنÙيذ؛ يرجى المحاولة لاحقًا.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'حدث خطأ ÙÙŠ الطلب وتم إرجاع رد غير سليم من الخادم.', + 'ALLOWED' => 'مسموح', + 'ALL_FILES' => 'جميع الملÙات', + 'ALL_FORUMS' => 'جميع المنتديات', + 'ALL_MESSAGES' => 'جميع الرسائل', + 'ALL_POSTS' => 'جميع المشاركات', + 'ALL_TIMES' => 'جميع الأوقات تستخدم %1$s', + 'ALL_TOPICS' => 'جميع المواضيع', + 'ALT_TEXT' => 'نص بديل', + 'AND' => 'Ùˆ', + 'ARE_WATCHING_FORUM' => 'قد اشتركت ÙÙŠ هذا المنتدى وستصلك التحديثات الحاصلة Ùيه', + 'ARE_WATCHING_TOPIC' => 'قد اشتركت ÙÙŠ هذا الموضوع وستصلك التحديثات الحاصلة Ùيه', + 'ASCENDING' => 'تصاعديًا', + 'ATTACHMENTS' => 'المرÙقات', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'الصورة التي تريد إرÙاقها غير صحيحة', + 'AUTHOR' => 'الكاتب', + 'AUTH_NO_PROFILE_CREATED' => 'خطأ ÙÙŠ إنشاء المل٠الشخصي للعضو', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'مدخل قاعدة بيانات غير سليم.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'نوع الخدمة المقدم ÙÙŠ معالج OAuth غير سليم.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'لم يتم إنشاء خدمة OAuth', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_SERVICE_TWITTER' => 'Twitter', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'لم يتم تخزين رمز OAuth.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'رمز OAuth تم تخزينه بشكل خاطئ.', + 'AVATAR_DISALLOWED_CONTENT' => 'تم إبطال عملية الرÙع للشك بأن المل٠المرÙوع مل٠ضار', + 'AVATAR_DISALLOWED_EXTENSION' => 'هذه الإضاÙØ© %s غير مسموح بها', + 'AVATAR_EMPTY_REMOTE_DATA' => 'الصورة الرمزية لم تحمّل. قد يكون الإيصال خاطئا أو لا يعمل', + 'AVATAR_EMPTY_FILEUPLOAD' => 'الصورة الرمزية التي رÙعتها Ùارغة', + 'AVATAR_INVALID_FILENAME' => '%s اسم المل٠خاطئ', + 'AVATAR_NOT_UPLOADED' => 'لم تÙحَمّل الصورة الرمزية', + 'AVATAR_NO_TEMP_DIR' => 'لم يتم العثور على المجلد المؤقت أو أنه غير قابل للكتابة.', + 'AVATAR_NO_SIZE' => 'لم يتمكن النظام من الحصول على طول وعرض الصورة الرمزية، الرجاء القيام بذلك يدويًا', + 'AVATAR_PARTIAL_UPLOAD' => 'Ø­ÙÙ…Ùلّت الصورة جزئيا Ùقط', + 'AVATAR_PHP_SIZE_NA' => 'حجم الصورة/الصور الرمزية كبير جدًا.
    لا يستطيع النظام تحديد أقصى حجم المعرّ٠من قبل PHP ÙÙŠ مل٠php.ini', + 'AVATAR_PHP_SIZE_OVERRUN' => 'حجم الصورة الشخصيه اكبر من الحد المسموح. الحد المسموح هو %1$d %2$s.
    الرجاء الانتباه إلى أنه لا يمكن تجاوز اعدادت مل٠php.ini', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'الصورة الرمزية المحددة لم يتم رÙعها لأن وقت تنÙيذ الطلب انتهى.', + 'AVATAR_PHP_UPLOAD_STOPPED' => 'ملحقة PHP اوقÙت تحميل الملÙ.', + 'AVATAR_URL_INVALID' => 'Ø£ÙدخÙÙ„ العنوان بطريقة خاطئة', + 'AVATAR_URL_NOT_FOUND' => 'لم ÙŠÙعثَر على المل٠المحدد', + 'AVATAR_WRONG_FILESIZE' => 'ينبغي أن يكون حجم الصورة الرمزية بين 0 Ùˆ %1$d %2$s', + 'AVATAR_WRONG_SIZE' => 'عرض الصورة المقدّمة هو %5$s وطولها %6$s .ينبغي أن يكون عرض الصورة الرمزية على الأقل %1$sØŒ وطولها %2$s وعلى الأكثر يكون عرضها %3$s وطولها %4$s.', + + 'BACK_TO_TOP' => 'أعلى', + 'BACK_TO_PREV' => 'العودة للصÙحة السابقة', + 'BAN_TRIGGERED_BY_EMAIL'=> 'لقد Ø­ÙظÙر بريدك الإلكتروني', + 'BAN_TRIGGERED_BY_IP' => 'لقد Ø­ÙظÙر رقم IP الخاص بك', + 'BAN_TRIGGERED_BY_USER' => 'Ø­ÙظÙر اسم المستخدم الخاص بك', + 'BBCODE_GUIDE' => 'دليل BBCode', + 'BCC' => 'نسخة إلى', + 'BIRTHDAYS' => 'أعياد الميلاد', + 'BOARD_BAN_PERM' => 'أوقÙÙÙŽ حسابك نهائيًا ÙÙŠ هذا المنتدى.

    رجاءً راسل %2$sمدير المنتدى%3$s لمزيد من المعلومات', + 'BOARD_BAN_REASON' => 'أسباب الإيقاÙ: %s', + 'BOARD_BAN_TIME' => 'أوقÙÙÙŽ حسابك ÙÙŠ هذا المنتدى حتى %1$s.

    رجاءً راسل %2$sمدير المنتدى%3$s لمزيد من المعلومات', + 'BOARD_DISABLE' => 'نأس٠لكن المنتدى معطّل الآن', + 'BOARD_DISABLED' => 'هذا المنتدى معطل حاليًا', + 'BOARD_UNAVAILABLE' => 'نأس٠لكن المنتدى متوق٠مؤقتًا، عاود الزيارة بعد دقائق', + 'BROWSING_FORUM' => 'أعضاء يستعرضون المنتدى: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 0 => 'المتصÙحون للمنتدى الآن: %2$s Ùقط', + 1 => 'المتصÙحون للمنتدى الآن: %2$s وزائر واحد', + 2 => 'المتصÙحون للمنتدى الآن: %2$s وزائران', + 3 => 'المتصÙحون للمنتدى الآن: %2$s Ùˆ %1$d زوار', + 4 => 'المتصÙحون للمنتدى الآن: %2$s Ùˆ %1$d زائرًا', + 5 => 'المتصÙحون للمنتدى الآن: %2$s Ùˆ %1$d زائر', + ), + 'BUTTON_DELETE' => 'حذÙ', + 'BUTTON_EDIT' => 'تعديل', + 'BUTTON_FORUM_LOCKED' => 'مغلق', + 'BUTTON_INFORMATION' => 'معلومات', + 'BUTTON_NEW_TOPIC' => 'موضوع جديد', + 'BUTTON_PM' => 'رسالة', + 'BUTTON_PM_FORWARD' => 'إعادة إرسال', + 'BUTTON_PM_NEW' => 'رسالة جديدة', + 'BUTTON_PM_REPLY' => 'أرسل رد', + 'BUTTON_PM_REPLY_ALL' => 'رد على الكل', + 'BUTTON_POST_REPLY' => 'أض٠رد جديد', + 'BUTTON_QUOTE' => 'اقتابس', + 'BUTTON_REPORT' => 'تبليغ', + 'BUTTON_TOPIC_LOCKED' => 'مغلق', + 'BUTTON_WARN' => 'تحذير', + 'BYTES' => 'بايت', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'إلغاء', + 'CHANGE' => 'تغيير', + 'CHANGE_FONT_SIZE' => 'تغيير حجم الخط', + 'CHANGING_PREFERENCES' => 'يغير إعدادات المنتدى', + 'CHANGING_PROFILE' => 'يغير إعدادات المل٠الشخصي', + 'CHARACTERS' => array( + 1 => 'حر٠واحد', + 2 => 'حرÙان', + 3 => '%d حروÙ', + 4 => '%d حرÙًا', + 5 => '%d حرÙ', + ), + 'COLLAPSE_VIEW' => 'عرض مصغر', + 'CLOSE_WINDOW' => 'أغلق الناÙذة', + 'COLOUR_SWATCH' => 'قائمة الألوان', + 'COLON' => ':', + 'COMMA_SEPARATOR' => 'ØŒ', // Comma used to join lists into a single string, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'تأكيد', + 'CONFIRM_CODE' => 'الرمز الأمني', + 'CONFIRM_CODE_EXPLAIN' => 'اكتب الرمز كما تراه ÙÙŠ الصورة تمامًا', + 'CONFIRM_CODE_WRONG' => 'الرمز الأمني الذي أدخلته غير صحيح', + 'CONFIRM_OPERATION' => 'هل أنت متأكد من أنك تريد القيام بهذه العملية؟', + 'CONFIRM_AVATAR_DELETE' => 'هل أنت متأكد من أنك تريد حذ٠هذه الصورة الرمزية؟', + 'CONGRATULATIONS' => 'مبروك لـ', + 'CONNECTION_FAILED' => 'خطأ ÙÙŠ الاتصال', + 'CONNECTION_SUCCESS' => 'تم الاتصال بنجاح!', + 'CONTACT' => 'اتصال', + 'CONTACT_USER' => 'اتصل بـ %s', + 'CONTACT_US' => 'اتصل بنا', + 'COOKIE_CONSENT_INFO' => 'اعر٠المزيد', + 'COOKIE_CONSENT_MSG' => 'يستخدم هذا الموقع الكوكيز لضمان الحصول على Ø£Ùضل تجربه علي موقعنا.', + 'COOKIE_CONSENT_OK' => 'بالتوÙيق!', + 'COOKIE_CONSENT_HREF' => 'http://cookiesandyou.com', + 'COOKIES_DELETED' => 'Ø­ÙØ°ÙÙت جميع ملÙات تعري٠الارتباط (كوكي) الخاصة بالمنتدى بنجاح', + 'CURRENT_TIME' => 'اليوم هو %s', + + 'DAY' => 'يوم', + 'DAYS' => 'أيام', + 'DELETE' => 'حذÙ', + 'DELETE_ALL' => 'حذ٠الكل', + 'DELETE_COOKIES' => 'حذ٠الكوكيز', + 'DELETE_MARKED' => 'حذ٠المحدد', + 'DELETE_POST' => 'حذ٠المشاركة', + 'DELIMITER' => 'الÙاصل', + 'DESCENDING' => 'تنازليًا', + 'DISABLED' => 'معطل', + 'DISPLAY' => 'عرض', + 'DISPLAY_GUESTS' => 'عرض الزوار', + 'DISPLAY_MESSAGES' => 'عرض رسائل سابقة منذ', + 'DISPLAY_POSTS' => 'عرض مشاركات سابقة منذ', + 'DISPLAY_TOPICS' => 'عرض مواضيع سابقة منذ', + 'DOWNLOADED' => 'تحميل', + 'DOWNLOADING_FILE' => 'تحميل ملÙ', + 'DOWNLOAD_COUNTS' => array( + 0 => 'لم ÙŠÙحمَّل بعد', + 1 => 'Ø­ÙمّÙÙ„ مرة واحدة', + 2 => 'Ø­ÙمّÙÙ„ مرتين', + 3 => 'Ø­ÙمّÙÙ„ %d مرات', + 4 => 'Ø­ÙمّÙÙ„ %d مرةً', + 5 => 'Ø­ÙمّÙÙ„ %d مرة', + ), + + 'EDIT_POST' => 'تعديل المشاركة', + 'ELLIPSIS' => '…', + 'EMAIL' => 'بريد', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'البريد الإلكتروني', + 'EMAIL_INVALID_EMAIL' => 'البريد الالكتروني المدخل غير صحيح!', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'هناك مشكلة ÙÙŠ إرسال البريد الإلكتروني ÙÙŠ السطر %1$s. الرد: %2$s', + 'EMPTY_SUBJECT' => 'ينبغي كتابة عنوان للموضوع', + 'EMPTY_MESSAGE_SUBJECT' => 'ينبغي عليك كتابة العنوان عند إنشاء رسالة جديدة', + 'ENABLED' => 'Ù…Ùعّل', + 'ENCLOSURE' => 'تطويق', + 'ENTER_USERNAME' => 'أدخل اسم مستخدم', + 'ERR_CHANGING_DIRECTORY' => 'غير قادر على تغيير الدليل', + 'ERR_CONNECTING_SERVER' => 'خطأ ÙÙŠ الاتصال بالخادم', + 'ERR_JAB_AUTH' => 'غير مسموح باستخدام Jabber على الخادم', + 'ERR_JAB_CONNECT' => 'لا يمكن الاتصال بخادم Jabber', + 'ERR_UNABLE_TO_LOGIN' => 'خطأ ÙÙŠ تسجيل الدخول. اسم المستخدم أو كلمة المرور غير صحيحة', + 'ERR_UNWATCHING' => 'حدث خطأ أثناء محاولة إلغاء الاشتراك.', + 'ERR_WATCHING' => 'حدث خطأ أثناء محاولة الاشتراك.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'يبدو أن مسار phpBB الذي أدخلته غير صحيح', + 'ERROR' => 'خطأ', + 'EXPAND_VIEW' => 'عرض موسع', + 'EXTENSION' => 'امتدادات', + 'EXTENSION_DISABLED' => 'الإضاÙØ© %s غير Ù…Ùعلة.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'الإضاÙØ© %s معطّلة الآن ولا يمكن عرضها.', + 'EXTENSION_DOES_NOT_EXIST' => 'الإضاÙØ© %s غير موجودة.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'الأسئلة المتكررة', + 'FAQ_EXPLAIN' => 'الأسئلة المتكررة', + 'FEATURE_NOT_AVAILABLE' => 'الميزة المطلوبة غير متوÙرة ÙÙŠ هذا المنتدى.', + 'FILENAME' => 'اسم الملÙ', + 'FILESIZE' => 'حجم الملÙ', + 'FILEDATE' => 'تاريخ الملÙ', + 'FILE_COMMENT' => 'التعليق', + 'FILE_CONTENT_ERR' => 'لم نتمكن من قراءة محتويات الملÙ: %s', + 'FILE_JSON_DECODE_ERR' => 'Ùشل ÙÙŠ ÙÙƒ Ø´Ùرة مل٠json: %s', + 'FILE_NOT_FOUND' => 'لم ÙŠÙعثَر على المل٠المطلوب: %s', + 'FIND_USERNAME' => 'بحث عن عضو', + 'FOLDER' => 'مجلد', + 'FORGOT_PASS' => 'Ùقدت كلمة المرور', + 'FORM_INVALID' => 'النموذج المقدم غير صحيح. حاول تقديمه مرة أخرى', + 'FORUM' => 'منتدى', + 'FORUMS' => 'منتديات', + 'FORUMS_MARKED' => 'عدّت المنتديات مقروءة.', + 'FORUM_CAT' => 'تصني٠منتدى', + 'FORUM_INDEX' => 'قائمة المنتديات', + 'FORUM_LINK' => 'رابط المنتدى', + 'FORUM_LOCATION' => 'مكان المنتدى', + 'FORUM_LOCKED' => 'منتدى مغلق', + 'FORUM_RULES' => 'قوانين المنتدى', + 'FORUM_RULES_LINK' => 'رجاءً اضغط لمشاهدة قوانين القسم', + 'FROM' => 'من', + 'FSOCK_DISABLED' => 'لا يمكن إكمال العملية لأن المهمة fsockopen عÙØ·Ùلَت أو أن الخادم لا يدعم هذا الأمر', + 'FSOCK_TIMEOUT' => 'حدث خطأ timeout أثناء قراءة البيانات من الشبكة.', + + 'FTP_FSOCK_HOST' => 'مستضي٠FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'مستضي٠FTP المستخدم للاتصال بموقعك', + 'FTP_FSOCK_PASSWORD' => 'كلمة مرور FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'كلمة المرور الخاصة باسم مستخدم FTP', + 'FTP_FSOCK_PORT' => 'منÙØ° FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'المنÙØ° المستخدم للاتصال بالخادم', + 'FTP_FSOCK_ROOT_PATH' => 'مسار phpBB', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'المسار من المجلد الرئيسي لمنتداك phpBB', + 'FTP_FSOCK_TIMEOUT' => 'انتهاء الوقت FTP', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'الوقت بالثواني الذي ينبغي على النظام انتظاره للاستجابة من الخادم', + 'FTP_FSOCK_USERNAME' => 'اسم مستخدم FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'اسم المستخدم المستعمل للاتصال بالخادم', + + 'FTP_HOST' => 'مستضي٠FTP', + 'FTP_HOST_EXPLAIN' => 'خادم FTP المستعمل للاتصال بموقعك', + 'FTP_PASSWORD' => 'كلمة مرور FTP', + 'FTP_PASSWORD_EXPLAIN' => 'كلمة المرور الخاصة باسم مستخدم FTP', + 'FTP_PORT' => 'FTP port', + 'FTP_PORT_EXPLAIN' => 'المنÙØ° المستخدم للاتصال بالخادم', + 'FTP_ROOT_PATH' => 'المسار إلى phpBB', + 'FTP_ROOT_PATH_EXPLAIN' => 'المسار من المجلد الرئيسي لمنتداك phpBB', + 'FTP_TIMEOUT' => 'انتهاء الوقت FTP', + 'FTP_TIMEOUT_EXPLAIN' => 'الوقت بالثواني الذي ينبغي على النظام انتظاره للاستجابة من الخادم', + 'FTP_USERNAME' => 'اسم مستخدم FTP', + 'FTP_USERNAME_EXPLAIN' => 'اسم المستخدم المستعمل للاتصال بالخادم', + + 'GENERAL_ERROR' => 'خطأ عام', + 'GB' => 'جيجابايت', + 'GIB' => 'GiB', + 'GO' => 'انتقال', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'اذهب إلى أول مشاركة', + 'GOTO_LAST_POST' => 'اذهب إلى آخر مشاركة', + 'GOTO_PAGE' => 'الانتقال إلى صÙحة', + 'GROUP' => 'مجموعة', + 'GROUPS' => 'مجموعات', + 'GROUP_ERR_TYPE' => 'نوع المجموعة غير مناسب', + 'GROUP_ERR_USERNAME' => 'لم ÙŠÙعَيّن اسم للمجموعة', + 'GROUP_ERR_USER_LONG' => 'اسم المجموعة طويل جدًا', + 'GUEST' => 'زائر', + 'GUEST_USERS_ONLINE' => array( + 1 => 'يوجد الآن زائر واحد', + 2 => 'يوجد الآن زائران', + 3 => 'يوجد الآن %d زوار', + 4 => 'يوجد الآن %d زائرًا', + 5 => 'يوجد الآن %d زائر', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => 'زائر واحد', + 2 => 'زائران', + 3 => '%d زوار', + 4 => '%d زائرًا', + 5 => '%d زائر', + 6 => 'لا زوار', + ), + 'G_ADMINISTRATORS' => 'المدير العام', + 'G_BOTS' => 'محركات البحث', + 'G_GUESTS' => 'الزوار', + 'G_REGISTERED' => 'الأعضاء', + 'G_REGISTERED_COPPA' => 'أعضاء تحت سن الـ 13', + 'G_GLOBAL_MODERATORS' => 'مراقب عام', + 'G_NEWLY_REGISTERED' => 'آخر الأعضاء المسجلين', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => 'عضو واحد مخÙÙŠ', + 2 => 'عضوان مخÙيان', + 3 => '%d أعضاء مخÙيون', + 4 => '%d عضوًا مخÙيًا', + 5 => '%d عضو مخÙÙŠ', + ), + 'HIDDEN_USERS_TOTAL' => array( + 0 => '', + 1 => 'مخÙÙŠ', + 2 => 'مخÙيان', + 3 => '%d مخÙيون', + 4 => '%d مخÙيًا', + 5 => '%d مخÙÙŠ', + ), + 'HIDE_GUESTS' => 'إخÙاء الزوار', + 'HIDE_ME' => 'أخÙ٠حالة وجودي ÙÙŠ المنتدى هذه المرة', + 'HOURS' => 'ساعات', + 'HOME' => 'الرئيسية', + + 'ICQ' => 'ICQ', + 'IF' => 'إذا', + 'IMAGE' => 'صورة', + 'IMAGE_FILETYPE_INVALID' => 'نوع مل٠الصورة %d لنوع الصورة %s غير مدعوم', + 'IMAGE_FILETYPE_MISMATCH' => 'نوع مل٠الصورة غير مطابق: التمدد المتوقع %1$s لكن التمدد المعطى هو %2$s', + 'IN' => 'ÙÙŠ', + 'INACTIVE' => 'غير نشط', + 'INDEX' => 'قائمة المنتديات', + 'INFORMATION' => 'معلومات', + 'INSECURE_REDIRECT' => 'محاولة Ù„Ùتح رابط غير آمن.', + 'INTERESTS' => 'اهتمامات', + 'INVALID_DIGEST_CHALLENGE' => 'غير مسموح digest challenge', + 'INVALID_EMAIL_LOG' => '%s يحتمل أن يكون عنوان بريدي خاطئا؟', + 'INVALID_FEED_ATTACHMENTS' => 'حاولت التغذية المحددة إحضار المرÙقات بقيود غير صالحه.', + 'INVALID_PLURAL_RULE' => 'قاعدة الجمع المختارة غير صحيحة. القيم الصحيحة تكون أرقامًا بين 0 Ùˆ 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'عنوان IP الخاص بك %1$s أوقÙ٠لأنه من القائمة السوداء. لمزيد من المعلومات يرجى مراجعة %2$s', + + 'JABBER' => 'Jabber', + 'JOINED' => 'اشترك ÙÙŠ', + 'JUMP_PAGE' => 'ادخل رقم الصÙحة التي تريد الذهاب إليها', + 'JUMP_TO' => 'الانتقال إلى', + 'JUMP_TO_PAGE' => 'اضغط للانتقال إلى الصÙحة', + 'JUMP_TO_PAGE_CLICK' => 'اضغط للذهاب إلى صÙحة…', + + 'KB' => 'كيلوبايت', + 'KIB' => 'KiB', + + 'LAST_POST' => 'آخر مشاركة', + 'LAST_UPDATED' => 'آخر تحديث', + 'LAST_VISIT' => 'آخر زيارة', + 'LDAP_NO_LDAP_EXTENSION' => 'امتداد LDAP غير متوÙر', + 'LDAP_NO_SERVER_CONNECTION' => 'لا يمكن الاتصال بخادم LDAP', + 'LDAP_SEARCH_FAILED' => 'لقد حدث خطأ أثناء البحث عن امتداد LDAP', + 'LEGEND' => 'ألوان المجموعات', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'البحث الحي غير مسموح.', + 'LOADING' => 'جار التحميل', + 'LOCATION' => 'مكان', + 'LOCK_POST' => 'إغلاق المشاركة', + 'LOCK_POST_EXPLAIN' => 'منع التعديل', + 'LOCK_TOPIC' => 'إغلاق الموضوع', + 'LOGIN' => 'تسجيل الدخول', + 'LOGIN_CHECK_PM' => 'سجل الدخول لقراءة رسائلك الخاصة', + 'LOGIN_CONFIRMATION' => 'تأكيد تسجيل الدخول', + 'LOGIN_CONFIRM_EXPLAIN' => 'لمنع محاولات اختراق الحسابات الآلية Ùإن المنتدى يطالبك بإدخال رمز أمني بعد استنÙاذك لجميع محاولات تسجيل الدخول المتاحة. الرمز الأمني مكتوب ÙÙŠ الصورة أدناه، إذا كنت غير قادر على قراءة الرموز Ùيرجى منك مراسلة %sمدير المنتدى%s', // unused + 'LOGIN_ERROR_ATTEMPTS' => 'لقد تجاوزت الحد المسموح لك ÙÙŠ محاولات تسجيل الدخول. الآن بالإضاÙØ© لاسم المستخدم وكلمة المرور يجب عليك أن تقوم بحلّ الرمز الأمني الموجود ÙÙŠ الأسÙÙ„.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'ليست لديك صلاحية بواسطة الأباتشي', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'لقد تم طلب خدمة OAuth غير متوÙرة.', + 'LOGIN_ERROR_PASSWORD' => 'قد أدخلت كلمة مرور خاطئة. رجاءً تحقق من كلمة المرور وعاود المحاولة مرة أخرى. إذا كنت تواجه مشاكل اتصل بـ%sمدير المنتدى%s', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'لا يمكن تحويل كلمة المرور أثناء تحديث نظام المنتديات. رجاءً قم بـ %sطلب كلمة مرور جديدة%s. إذا كنت لا تزال تواجه المشاكل الرجاء الاتصال %sبإدارة الموقع%s', + 'LOGIN_ERROR_USERNAME' => 'لقد أدخلت اسم مستخدم خاطئ. رجًاء تحقق من اسم المستخدم وعاود المحاولة مرة أخرى. إذا كنت تواجه مشاكل اتصل بـ%sمدير المنتدى%s', + 'LOGIN_FORUM' => 'لمشاهدة هذا المنتدى أو المشاركة Ùيه ينبغي عليك أولًا إدخال كلمة المرور', + 'LOGIN_INFO' => 'ينبغي أن تكون مسجلًا لتستطيع الدخول. التسجيل لا يأخذ منك سوى بضع دقائق وسيعطيك مميزات أكثر. وقد تكون إدارة المنتدى خصصت صلاحيات أكثر للأعضاء المسجلين. قبل التسجيل تأكد أنك قرأتَ شروط المنتدى وسياساته وأنك مواÙÙ‚ عليها. رجاءً تأكد من قراءتك لشروط كل قسم قبل المشاركة Ùيه', + 'LOGIN_VIEWFORUM' => 'ينبغي أن تكون عضوًا مسجلًا لتستطيع مشاهدة هذا المنتدى', + 'LOGIN_EXPLAIN_EDIT' => 'لتستطيع التعديل على مشاركاتك ينبغي أن تكون عضوًا ÙÙŠ المنتدى', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'لكي تشاهدة قائمة الموجودين ينبغي عليك التسجيل وتسجيل الدخول', + 'LOGIN_REQUIRED' => 'يجب عليك تسجيل الدخول للقيام بهذه العملية.', + 'LOGOUT' => 'تسجيل الخروج', + 'LOGOUT_USER' => 'تسجيل خروج [ %s ]', + 'LOG_ME_IN' => 'تذكرني', + + 'MAIN' => 'الرئيسية', + 'MARK' => 'تحديد', + 'MARK_ALL' => 'تحديد الكل', + 'MARK_ALL_READ' => 'اعتبر الجميع مقروء', + 'MARK_FORUMS_READ' => 'اعتبر جميع المنتديات مقروءة', + 'MARK_READ' => 'اعتبره مقروء', + 'MARK_SUBFORUMS_READ' => 'اعتبر جميع المنتديات الÙرعية مقروءة', + 'MB' => 'ميجابايت', + 'MIB' => 'MiB', + 'MCP' => 'لوحة تحكم المشرÙ', + 'MCP_SHORT' => 'الإشراÙ', + 'MEMBERLIST' => 'قائمة الأعضاء', + 'MEMBERLIST_EXPLAIN' => 'مشاهدة قائمة الأعضاء كاملة', + 'MERGE' => 'دمج', + 'MERGE_POSTS' => 'نقل المشاركات', + 'MERGE_TOPIC' => 'دمج المواضيع', + 'MESSAGE' => 'رسالة', + 'MESSAGES' => 'رسائل', + 'MESSAGES_COUNT' => array( + 1 => 'رسالة واحدة', + 2 => 'رسالتان', + 3 => '%d رسائل', + 4 => '%d رسالةً', + 5 => '%d رسالة', + ), + 'MESSAGE_BODY' => 'نص الرسالة', + 'MINUTES' => 'دقائق', + 'MODERATE' => 'إدارة', + 'MODERATOR' => 'المشرÙ', + 'MODERATORS' => 'المشرÙون', + 'MODULE_NOT_ACCESS' => 'لا يمكن الوصول إلى الموديول', + 'MODULE_NOT_FIND' => 'لا يمكن إيجاد الموديول %s', + 'MODULE_FILE_INCORRECT_CLASS' => 'مل٠الموديول %s لا يحتوي على متغير صحيح [%s]', + 'MONTH' => 'شهر', + 'MOVE' => 'نقل', + + 'NA' => 'غير محدد', + 'NEWEST_USER' => 'آخر عضو مسجل %s', + 'NEW_MESSAGE' => 'رسالة جديدة', + 'NEW_MESSAGES' => 'رسائل جديدة', + 'NEW_POST' => 'مشاركة جديدة', // Not used anymore + 'NEW_POSTS' => 'مشاركات جديدة', // Not used anymore + 'NEXT' => 'التالي', // Used in pagination + 'NEXT_STEP' => 'الخطوة التالية', + 'NEVER' => 'أبدًا', + 'NO' => 'لا', + 'NO_NOTIFICATIONS' => 'لا توجد لديك إشعارات', + 'NOT_ALLOWED_MANAGE_GROUP' => 'غير مصرح لك بإدارة هذه المجموعة', + 'NOT_AUTHORISED' => 'لا تملك الصلاحية لدخول هذه المنطقة', + 'NOT_WATCHING_FORUM' => 'لم تعد مشتركًا ÙÙŠ هذا المنتدى', + 'NOT_WATCHING_TOPIC' => 'لم تعد مشتركًا ÙÙŠ هذا الموضوع', + 'NOTIFICATIONS' => 'الإشعارات', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'رد جديد من %1$s ÙÙŠ موضوع المÙضلة:', + ), + 'NOTIFICATION_FORUM' => 'منتدى: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'طلب انضمام من %1$s للمجموعة %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'تم قبول طلب الانضمام للمجموعة %1$s.', + 'NOTIFICATION_METHOD_INVALID' => 'الوظيÙØ© "%s" لا تشير إلى وظيÙØ© إشعارات صالحة.', + 'NOTIFICATION_PM' => 'رسالة خاصة من %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'رد جديد من %1$s ÙÙŠ الموضوع:', + ), + 'NOTIFICATION_POST_APPROVED' => 'تمت المواÙقة على المشاركة:', + 'NOTIFICATION_POST_DISAPPROVED' => 'لم تتم المواÙقة على المشاركة:', + 'NOTIFICATION_POST_IN_QUEUE' => 'طلب مواÙقة على مشاركة من %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'تم اقتباس مشاركتك من %1$s ÙÙŠ:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'السبب: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'تبليغ عن رسالة خاصة من %1$s:', + 'NOTIFICATION_REPORT_POST' => 'تبليغ عن مشاركة من %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'تم إغلاق التقرير من %1$s الخاص بـ:', + 'NOTIFICATION_TOPIC' => 'موضوع جديد من %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'تمت المواÙقة على الموضوع:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'لم تتم المواÙقة على الموضوع:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'طلب مواÙقة على موضوع من %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'نوع الإشعار "%s" Ù…Ùقود من ملÙات النظام.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'اجراء مطلوب عضوية معطله او عضويه جديدة â€%1$s“', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'أخرى', + 'NOTIFICATION_X_OTHERS' => array( + 2 => 'آخران', + 3 => '%d آخرون', + 4 => '%d آخرين', + 5 => '%d آخرون', + ), + 'NOTIFY_ADMIN' => 'رجاءً أبلÙغ إدارة المنتدى أو الموقع', + 'NOTIFY_ADMIN_EMAIL' => 'يرجى منك إخبار مدير المنتدى: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'غير مسموح لك بتحميل هذا الملÙ', + 'NO_ACTION' => 'ليس هناك خيار محدد', + 'NO_ADMINISTRATORS' => 'ليس هناك مديرون لهذا المنتدى', + 'NO_AUTH_ADMIN' => 'لا تملك صلاحيات المدير وغير مسموح لك الدخول للوحة التحكم الرئيسية', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'لا يمكنك إعادة تعري٠نÙسك باستخدام عضوية أخرى', + 'NO_AUTH_OPERATION' => 'لا تملك الصلاحيات اللازمة لإكمال هذه العملية', + 'NO_AVATARS' => 'لا توجد صور رمزية حاليًا', + 'NO_CONNECT_TO_SMTP_HOST' => 'لا يمكن الوصول إلى مستضي٠smtp : %s : %s', + 'NO_BIRTHDAYS' => 'لا توجد أعياد ميلاد اليوم', + 'NO_EMAIL_MESSAGE' => 'الرسالة البريدية Ùارغة', + 'NO_EMAIL_RESPONSE_CODE' => 'لم نستطع جلب رد خادم البريد', + 'NO_EMAIL_SUBJECT' => 'لم ÙŠÙعيّن عنوان الرسالة', + 'NO_FORUM' => 'المنتدى الذي اخترته غير موجود', + 'NO_FORUMS' => 'هذا المنتدى لا يحتوي على أقسام', + 'NO_GROUP' => 'المجموعة التي طلبتها غير موجودة', + 'NO_GROUP_MEMBERS' => 'هذه المجموعة ليس Ùيها أعضاء', + 'NO_IPS_DEFINED' => 'ليس هناك IP أو مستضي٠محدد', + 'NO_MEMBERS' => 'لا يوجد عضو بهذه المعايير التي تبحث عنها', + 'NO_MESSAGES' => 'لا رسائل', + 'NO_MODE' => 'لم ÙŠÙحدد أي نمط', + 'NO_MODERATORS' => 'لم ÙŠÙعيّن أي مشر٠ÙÙŠ هذا المنتدى', + 'NO_NEW_MESSAGES' => 'لا رسائل جديدة', + 'NO_NEW_POSTS' => 'لا رسائل جديدة', // Not used anymore + 'NO_ONLINE_USERS' => 'لا يوجد أعضاء مسجلين متصلين', + 'NO_POSTS' => 'لا مشاركات', + 'NO_POSTS_TIME_FRAME' => 'لا يوجد مشاركات ÙÙŠ هذا الموضوع خلال الÙترة الزمنية المحددة', + 'NO_FEED_ENABLED' => 'لا يوجد تغذية متاحة لهذا المنتدى Feeds.', + 'NO_FEED' => 'التغذية المطلوبة غير متاحة.', + 'NO_STYLE_DATA' => 'لا يمكن جلب معلومات الاستايل', + 'NO_SUBJECT' => 'لا يوجد عنوان محدد', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'البحث المحدد غير موجود', + 'NO_SUPPORTED_AUTH_METHODS' => 'لا توجد صلاحيات دعم الطرق', + 'NO_TOPIC' => 'الموضوع المطلوب غير موجود', + 'NO_TOPIC_FORUM' => 'الموضوع أو المنتدى المطلوب لم يعد موجودًا', + 'NO_TOPICS' => 'لا توجد مواضيع أو مشاركات ÙÙŠ هذا المنتدى', + 'NO_TOPICS_TIME_FRAME' => 'لا يوجد مواضيع ÙÙŠ هذا المنتدى خلال الÙترة الزمنية المحددة', + 'NO_UNREAD_POSTS' => 'لا يوجد مشاركات غير مقروءة', + 'NO_UPLOAD_FORM_FOUND' => 'تم الرÙع بنجاح لكن لم يوجد شكل الملÙ', + 'NO_USER' => 'العضو المطلوب غير موجود', + 'NO_USERS' => 'الأعضاء المطلوبين غير موجودين', + 'NO_USER_SPECIFIED' => 'لم ÙŠÙحدّد اسم مستخدم', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 0 => 'لا توجد مرÙقات', + 1 => 'مل٠مرÙÙ‚ واحد', + 2 => 'ملÙان مرÙقان', + 3 => '%d مرÙقات', + 4 => '%d مرÙقًا', + 5 => '%d مرÙÙ‚', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'لا مشاركات ÙÙŠ الانتظار', // 0 + 1 => 'مشاركة واحدة ÙÙŠ الانتظار', // 1 + 2 => 'مشاركتان ÙÙŠ الانتظار', // 2 + 3 => '%d مشاركات ÙÙŠ الانتظار', // 3-10 + 4 => '%d مشاركةً ÙÙŠ الانتظار', // 11-99 + 5 => '%d مشاركة ÙÙŠ الانتظار', // 100, 101, 102.. + ), + + 'OCCUPATION' => 'الوظيÙØ©', + 'OFFLINE' => 'غير متصل', + 'ONLINE' => 'متصل', + 'ONLINE_BUDDIES' => 'قائمة الأصدقاء', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'يوجد حاليًا مستخدم واحد : %2$s Ùˆ %3$s', + 2 => 'يوجد حاليًا مستخدمان : %2$s Ùˆ %3$s', + 3 => 'يوجد حاليًا %1$d مستخدمون : %2$s Ùˆ %3$s', + 4 => 'يوجد حاليًا %1$d مستخدمًا : %2$s Ùˆ %3$s', + 5 => 'يوجد حاليًا %1$d مستخدم : %2$s Ùˆ %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'يوجد حاليًا مستخدم واحد : %2$sØŒ %3$s Ùˆ %4$s', + 2 => 'يوجد حاليًا مستخدمان : %2$sØŒ %3$s Ùˆ %4$s', + 3 => 'يوجد حاليًا %1$d مستخدمين : %2$sØŒ %3$s Ùˆ %4$s', + 4 => 'يوجد حاليًا %1$d مستخدمًا : %2$sØŒ %3$s Ùˆ %4$s', + 5 => 'يوجد حاليًا %1$d مستخدم : %2$sØŒ %3$s Ùˆ %4$s', + ), + 'OPTIONS' => 'خيارات', + + 'PAGE_NOT_FOUND' => 'الصÙحة المطلوبة غير موجودة.', + 'PAGE_OF' => 'صÙحة %1$d من %2$d', + 'PAGE_TITLE_NUMBER' => 'صÙحة %s', + 'PASSWORD' => 'كلمة المرور', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => 'بكسل واحد', + 2 => 'بكسلان', + 3 => '%d بكسلات', + 4 => '%d بكسلًا', + 5 => '%d بكسل', + ), + 'PLEASE_WAIT' => 'يرجى الانتظار.', + 'PM' => 'إعادة إرسال', + 'PM_REPORTED' => 'اضغط لعرض التقرير', + 'POSTING_MESSAGE' => 'إرسال الرسالة ÙÙŠ %s', + 'POSTING_PRIVATE_MESSAGE' => 'يرسل رسالة خاصة', + 'POST' => 'مشاركة', + 'POST_ANNOUNCEMENT' => 'إعلان', + 'POST_STICKY' => 'مثبت', + 'POSTED' => 'مرسل', + 'POSTED_IN_FORUM' => 'ÙÙŠ', + 'POSTED_ON_DATE' => 'ÙÙŠ', + 'POSTS' => 'مشاركات', + 'POSTS_UNAPPROVED' => 'هناك رد واحد على الأقل لم ÙŠÙواÙÙ‚ عليه ÙÙŠ هذا الموضوع.', + 'POSTS_UNAPPROVED_FORUM'=> 'هناك على الأقل مشاركة واحدة ÙÙŠ هذا المنتدى لم تتم المواÙقة عليها.', + 'POST_BY_AUTHOR' => 'بواسطة', + 'POST_BY_FOE' => '%1$sØŒ والذي هو على قائمة التجاهل لديك، قام بكتابة هذه المشاركة.', + 'POST_DISPLAY' => '%1$sعرض هذه المشاركة%2$s.', + 'POST_DAY' => '%.2f مشاركة ÙÙŠ اليوم', + 'POST_DELETED_ACTION' => 'المشاركة المحذوÙØ©:', + 'POST_DELETED' => 'تم حذ٠هذه المشاركة.', + 'POST_DELETED_BY' => '%2$s قام بحذ٠المشاركة بواسطة %1$s ÙÙŠ %3$s.', + 'POST_DELETED_BY_REASON'=> '%2$s قام بحذ٠المشاركة بواسطة %1$s ÙÙŠ %3$s للسبب التالي: %4$s', + 'POST_DETAILS' => 'تÙاصيل المشاركة', + 'POST_NEW_TOPIC' => 'إرسال موضوع جديد', + 'POST_PCT' => '%.2f%% من كل المشاركات', + 'POST_PCT_ACTIVE' => '%.2f%% من مشاركاتك', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% من مشاركاتك', + 'POST_REPLY' => 'إضاÙØ© رد', + 'POST_REPORTED' => 'اضغط لمشاهدة التقارير', + 'POST_SUBJECT' => 'عنوان المشاركة', + 'POST_TIME' => 'وقت الإرسال', + 'POST_TOPIC' => 'إضاÙØ© موضوع جديد', + 'POST_UNAPPROVED_ACTION' => 'مشاركة تنتظر المواÙقة:', + 'POST_UNAPPROVED' => 'هذه المشاركة تنتظر المواÙقة', + 'POWERED_BY' => 'بدعم من %s', + 'PREVIEW' => 'استعراض', + 'PREVIOUS' => 'السابق', // Used in pagination + 'PREVIOUS_STEP' => 'السابق', + 'PRIVACY' => 'سياسة الخصوصية', + 'PRIVACY_LINK' => 'الخصوصية', + 'PRIVATE_MESSAGE' => 'رسالة خاصة', + 'PRIVATE_MESSAGES' => 'الرسائل الخاصة', + 'PRIVATE_MESSAGING' => 'مراسلة خاصة', + 'PROFILE' => 'لوحة التحكم', + + 'QUICK_LINKS' => 'روابط سريعة', + + 'RANK' => 'الرتبة', + 'READING_FORUM' => 'يشاهد المواضيع ÙÙŠ %s', + 'READING_GLOBAL_ANNOUNCE' => 'يقرأ اعلان عام', + 'READING_LINK' => 'يتبع الرباط التالي %s', + 'READING_TOPIC' => 'يقرأ موضوع ÙÙŠ %s', + 'READ_PROFILE' => 'المل٠الشخصي', + 'REASON' => 'السبب', + 'RECORD_ONLINE_USERS' => 'أكثر وجود ÙÙŠ المنتدى كان %1$s ÙÙŠ %2$s', + 'REDIRECT' => 'تحويل', + 'REDIRECTS' => 'إجمالي التحويلات', + 'REGISTER' => 'التسجيل', + 'REGISTERED_USERS' => 'الأعضاء الموجودون:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'يوجد الآن عضو واحد Ùˆ %2$s', + 2 => 'يوجد الآن عضوان Ùˆ %2$s', + 3 => 'يوجد الآن %1$d أعضاء Ùˆ %2$s', + 4 => 'يوجد الآن %1$d عضوًا Ùˆ %2$s', + 5 => 'يوجد الآن %1$d عضو Ùˆ %2$s', + 6 => 'يوجد الآن %2$s', + ), + 'REG_USERS_TOTAL' => array( + 1 => 'عضو واحد', + 2 => 'عضوان', + 3 => '%d أعضاء', + 4 => '%d عضوًا', + 5 => '%d عضو', + 6 => 'لا أعضاء', + ), + 'REMOVE' => 'حذÙ', + 'REMOVE_INSTALL' => 'رجاءً احذ٠أو انقل أو غيّر اسم مجلد install', + 'REPLIES' => 'ردود', + 'REPLY_WITH_QUOTE' => 'رد مع اقتباس', + 'REPLYING_GLOBAL_ANNOUNCE' => 'يرد على اعلان عام', + 'REPLYING_MESSAGE' => 'يرد على رسالة ÙÙŠ %s', + 'REPORT_BY' => 'التقرير بواسطة', + 'REPORT_POST' => 'تقرير عن هذه المشاركة', + 'REPORTING_POST' => 'تقرير المشاركة', + 'RESEND_ACTIVATION' => 'إعادة إرسال كود التÙعيل', + 'RESET' => 'إعادة', + 'RESTORE_PERMISSIONS' => 'استعادة الصلاحيات', + 'RETURN_INDEX' => '%sالعودة للصÙحة الرئيسية%s', + 'RETURN_FORUM' => '%sالرجوع إلى آخر منتدى قمت بزيارته%s', + 'RETURN_PAGE' => '%sالعودة للصÙحة السابقة%s', + 'RETURN_TOPIC' => '%sالرجوع إلى آخر موضوع قمت بزيارته%s', + 'RETURN_TO' => 'العودة إلى â€%s“', + 'RETURN_TO_INDEX' => 'العودة إلى قائمة المنتديات', + 'FEED' => 'التغذية - Feed', + 'FEED_NEWS' => 'الأخبار - News', + 'FEED_TOPICS_ACTIVE' => 'مواضيع نشيطة', + 'FEED_TOPICS_NEW' => 'مواضيع جديدة', + 'RULES_ATTACH_CAN' => 'تستطيع إرÙاق مل٠ÙÙŠ هذا المنتدى', + 'RULES_ATTACH_CANNOT' => 'لا تستطيع إرÙاق مل٠ÙÙŠ هذا المنتدى', + 'RULES_DELETE_CAN' => 'تستطيع حذ٠مشاركاتك ÙÙŠ هذا المنتدى', + 'RULES_DELETE_CANNOT' => 'لا تستطيع حذ٠مشاركاتك ÙÙŠ هذا المنتدى', + 'RULES_DOWNLOAD_CAN' => 'تستطيع تحميل المرÙقات ÙÙŠ هذا المنتدى', + 'RULES_DOWNLOAD_CANNOT' => 'لا تستطيع تحميل المرÙقات ÙÙŠ هذا المنتدى', + 'RULES_EDIT_CAN' => 'تستطيع تعديل مشاركاتك ÙÙŠ هذا المنتدى', + 'RULES_EDIT_CANNOT' => 'لا تستطيع تعديل مشاركاتك ÙÙŠ هذا المنتدى', + 'RULES_LOCK_CAN' => 'تستطيع إغلاق مواضيعك ÙÙŠ هذا المنتدى', + 'RULES_LOCK_CANNOT' => 'لا تستطيع إغلاق مواضيعك ÙÙŠ هذا المنتدى', + 'RULES_POST_CAN' => 'تستطيع كتابة مواضيع جديدة ÙÙŠ هذا المنتدى', + 'RULES_POST_CANNOT' => 'لا تستطيع كتابة مواضيع جديدة ÙÙŠ هذا المنتدى', + 'RULES_REPLY_CAN' => 'تستطيع كتابة ردود ÙÙŠ هذا المنتدى', + 'RULES_REPLY_CANNOT' => 'لا تستطيع كتابة ردود ÙÙŠ هذا المنتدى', + 'RULES_VOTE_CAN' => 'تستطيع التصويت ÙÙŠ هذا المنتدى', + 'RULES_VOTE_CANNOT' => 'لا تستطيع التصويت ÙÙŠ هذا المنتدى', + + 'SEARCH' => 'بحث', + 'SEARCH_MINI' => 'بحث …', + 'SEARCH_ADV' => 'بحث متقدم', + 'SEARCH_ADV_EXPLAIN' => 'عرض خيارات البحث المتقدم', + 'SEARCH_KEYWORDS' => 'البحث عن الكلمات', + 'SEARCHING_FORUMS' => 'بحث المنتديات', + 'SEARCH_ACTIVE_TOPICS' => 'المواضيع النشطة', + 'SEARCH_FOR' => 'البحث عن', + 'SEARCH_FORUM' => 'ابحث ÙÙŠ المنتدى …', + 'SEARCH_NEW' => 'المشاركات الجديدة', + 'SEARCH_POSTS_BY' => 'ابحث ÙÙŠ المشاركات بواسطة', + 'SEARCH_SELF' => 'مشاركاتك', + 'SEARCH_TOPIC' => 'ابحث ÙÙŠ الموضوع…', + 'SEARCH_UNANSWERED' => 'مواضيع لم ÙŠÙرد عليها', + 'SEARCH_UNREAD' => 'المشاركات غير المقروءة', + 'SEARCH_USER_POSTS' => 'ابحث ÙÙŠ مشاركات العضو', + 'SECONDS' => 'ثواني', + 'SEE_ALL' => 'مشاهدة الكل', + 'SELECT' => 'تحديد', + 'SELECT_ALL_CODE' => 'تحديد الكل', + 'SELECT_DESTINATION_FORUM' => 'Ùضلًا حدد المنتدى المطلوب', + 'SELECT_FORUM' => 'اختيار منتدى', + 'SEND_EMAIL' => 'إرسال بريد', // Used for submit buttons + 'SEND_EMAIL_USER' => 'أرسل بريد الكتروني للعضو %s', + 'SEND_PRIVATE_MESSAGE' => 'ارسال رسالة خاصة', + 'SETTINGS' => 'إعدادات', + 'SIGNATURE' => 'التوقيع', + 'SKIP' => 'تجاهل المحتويات', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'لا يدعم خادم SMTP هذه الصلاحيات', + 'SORRY_AUTH_READ' => 'ليست لديك الصلاحية لقراءة محتويات هذا المنتدى', + 'SORRY_AUTH_READ_TOPIC' => 'غير مصرح لك بالاطلاع على هذا الموضوع.', + 'SORRY_AUTH_VIEW_ATTACH' => 'لا تملك الصلاحية لتحميل هذا المرÙÙ‚', + 'SORT_BY' => 'مرتبة بواسطة', + 'SORT_DIRECTION' => 'اتجاه الترتيب', + 'SORT_JOINED' => 'تاريخ الاشتراك', + 'SORT_LOCATION' => 'المكان', + 'SORT_OPTIONS' => 'خيارات العرض والترتيب', + 'SORT_RANK' => 'الرتبة', + 'SORT_POSTS' => 'المشاركات', + 'SORT_TOPIC_TITLE' => 'عنوان الموضوع', + 'SORT_USERNAME' => 'اسم المستخدم', + 'SPLIT_TOPIC' => 'تقسيم الموضوع', + 'SQL_ERROR_OCCURRED' => 'حدث خطأ SQL أثناء القيام باستدعاء الصÙحة. إذا استمر الخطأ قم بمراسلة %sمدير المنتدى%s عن هذه المشكلة', + 'STATISTICS' => 'إحصائيات', + 'START_WATCHING_FORUM' => 'الاشتراك ÙÙŠ هذا المنتدى', + 'START_WATCHING_TOPIC' => 'الاشتراك ÙÙŠ هذا الموضوع', + 'STOP_WATCHING_FORUM' => 'إلغاء الاشتراك ÙÙŠ هذا المنتدى', + 'STOP_WATCHING_TOPIC' => 'إلغاء الاشتراك ÙÙŠ هذا الموضوع', + 'STRING_LIST_MULTI' => '%1$sØŒ Ùˆ %2$s', + 'STRING_LIST_SIMPLE' => '%1$s Ùˆ %2$s', + 'SUBFORUM' => 'منتدى Ùرعي', + 'SUBFORUMS' => 'منتديات Ùرعية', + 'SUBJECT' => 'عنوان', + 'SUBMIT' => 'إرسال', + + 'TB' => 'تيرابايت', + 'TERMS_LINK' => 'الشروط', + 'TERMS_USE' => 'شروط الاستخدام', + 'TEST_CONNECTION' => 'اختبار الاتصال', + 'THE_TEAM' => 'Ùريق الموقع', + 'TIB' => 'TiB', + 'TIME' => 'الوقت', + 'TIMEOUT_PROCESSING_REQ' => 'وقت التنÙيذ انتهى.', + + 'TOO_LARGE' => 'القيمة المدخلية كبيرة جدًا', + 'TOO_LARGE_MAX_RECIPIENTS' => 'إن قيمة عدد المستقبلين الأقصى للرسالة الخاصة كبير جدًا.', + + 'TOO_LONG' => 'القيمة المدخلة طويلة جدًا.', + + 'TOO_LONG_CONFIRM_CODE' => 'الرمز الأمني الذي أدخلته طويل جدًا', + 'TOO_LONG_DATEFORMAT' => 'صيغة التاريخ التي أدخلتها كبيرة جدًا', + 'TOO_LONG_JABBER' => 'حساب Jabber الذي أدخلته طويل جدًا', + 'TOO_LONG_NEW_PASSWORD' => 'كلمة المرور التي أدخلتها طويلة جدًا', + 'TOO_LONG_PASSWORD_CONFIRM' => 'تأكيد كلمة المرور التي أدخلتها طويل جدًا', + 'TOO_LONG_USER_PASSWORD' => 'كلمة المرور التي أدخلتها طويلة جدًا', + 'TOO_LONG_USERNAME' => 'اسم المستخدم الذي أدخلته طويل جدًا', + 'TOO_LONG_EMAIL' => 'البريد الإلكتروني الذي أدخلته طويل جدًا', + + 'TOO_MANY_VOTE_OPTIONS' => 'حاولت أن تصوّت للعديد من الخيارات', + + 'TOO_SHORT' => 'القيمة التي أدخلتها قصيرة جدًا.', + + 'TOO_SHORT_CONFIRM_CODE' => 'الرمز الأمني الذي أدخلته قصير جدًا', + 'TOO_SHORT_DATEFORMAT' => 'صيغة التاريخ التي أدخلتها صغيرة جدًا', + 'TOO_SHORT_JABBER' => 'حساب Jabber الذي أدخلته قصير جدًا', + 'TOO_SHORT_NEW_PASSWORD' => 'كلمة المرور التي أدخلتها قصيرة جدًا', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'تأكيد كلمة المرور التي أدخلتها قصير جدًا', + 'TOO_SHORT_USER_PASSWORD' => 'كلمة المرور التي أدخلتها قصيرة جدًا', + 'TOO_SHORT_USERNAME' => 'اسم المستخدم الذي أدخلته قصير جدًا', + 'TOO_SHORT_EMAIL' => 'البريد الالكتروني الذي أدخلته قصير جدًا', + 'TOO_SHORT_EMAIL_CONFIRM' => 'تأكيد البريد الالكتروني الذي أدخلته قصير جدًا.', + 'TOO_SMALL' => 'القيمة المدخلية قصيرة جدًا.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'إن قيمة عدد المستلمين الأقصى للرسالة الخاصة قصير جدًا.', + + 'TOPIC' => 'موضوع', + 'TOPICS' => 'مواضيع', + 'TOPICS_UNAPPROVED' => 'يوجد على الأقل موضوع واحد لم ÙŠÙواÙÙ‚ عليه بعد.', + 'TOPIC_ICON' => 'أيقونة الموضوع', + 'TOPIC_LOCKED' => 'هذا الموضوع مغلق، لا تستطيع تعديله أو إضاÙØ© الردود عليه', + 'TOPIC_LOCKED_SHORT'=> 'الموضوع مغلق', + 'TOPIC_MOVED' => 'موضوع منقول', + 'TOPIC_REVIEW' => 'مراجعة الموضوع', + 'TOPIC_TITLE' => 'عنوان الموضوع', + 'TOPIC_UNAPPROVED' => 'لم ÙŠÙواÙÙ‚ على هذا الموضوع', + 'TOPIC_DELETED' => 'هذا الموضوع تم حذÙÙ‡.', + 'TOTAL_ATTACHMENTS' => 'المرÙقات', + 'TOTAL_LOGS' => array( + 1 => 'سجل واحد', + 2 => 'سجلان', + 3 => '%d سجلات', + 4 => '%d سجلًا', + 5 => '%d سجل', + ), + 'TOTAL_PMS' => array( + 1 => 'رسالة خاصة واحدة ÙÙŠ المجمل', + 2 => 'رسالتان خاصتان ÙÙŠ المجمل', + 3 => '%d رسائل خاصة ÙÙŠ المجمل', + 4 => '%d رسالةً خاصة ÙÙŠ المجمل', + 5 => '%d رسالة خاصة ÙÙŠ المجمل', + ), + 'TOPIC_POLL' => 'هذا الموضوع يحتوي على استÙتاء.', + 'TOTAL_POSTS' => 'عدد المشاركات', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'عدد المشاركات %d', + ), + 'TOPIC_REPORTED' => 'تم التبليغ هذا الموضوع', + 'TOTAL_TOPICS' => array( + 2 => 'عدد المواضيع %d', + ), + 'TOTAL_USERS' => array( + 2 => 'عدد الأعضاء %d', + ), + 'TRACKED_PHP_ERROR' => 'أخطاء تتبع PHP: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'لم يتمكن من تحديد أبعاد الصورة', + 'UNABLE_TO_DELIVER_FILE'=> 'غير قادر على توصيل الملÙ', + 'UNKNOWN_BROWSER' => 'متصÙØ­ غير معروÙ', + 'UNMARK_ALL' => 'إلغاء تحديد الكل', + 'UNREAD_MESSAGES' => 'رسائل غير مقروءة', + 'UNREAD_POST' => 'مشاركة غير مقروءة', + 'UNREAD_POSTS' => 'مشاركات غير مقروءة', + 'UNWATCH_FORUM_CONFIRM' => 'هل انت متأكد أنك تريد أن تلغي اشتراكك ÙÙŠ هذا المنتدى؟', + 'UNWATCH_FORUM_DETAILED' => 'هل أنت متأكد أنك تريد أن تلغي اشتراكك ÙÙŠ المنتدى â€%s“؟', + 'UNWATCH_TOPIC_CONFIRM' => 'هل أنت متأكد أنك تريد أن تلغي اشتراكك ÙÙŠ هذا الموضوع؟', + 'UNWATCH_TOPIC_DETAILED' => 'هل أنت متأكد أنك تريد أن تلغي اشتراكك ÙÙŠ الموضوع â€%s“؟', + 'UNWATCHED_FORUMS' => 'لم تعد مشتركا ÙÙŠ المنتديات المحددة', + 'UNWATCHED_TOPICS' => 'لم تعد مشتركا ÙÙŠ المواضيع المحددة', + 'UNWATCHED_FORUMS_TOPICS' => 'لم تعد مشتركًا ÙÙŠ المنتديات والمواضيع التي حددتها', + 'UPDATE' => 'تحديث', + 'UPLOAD_IN_PROGRESS' => 'جاري الرÙع حاليًا', + 'URL_REDIRECT' => 'إذا كان متصÙحك لا يدعم الانتقال التلقائي اضغط %sهنا%s للانتقال', + 'USERGROUPS' => 'المجموعات', + 'USERNAME' => 'اسم المستخدم', + 'USERNAMES' => 'أسماء المستخدمين', + 'USER_AVATAR' => 'صورة العضو الرمزية', + 'USER_CANNOT_READ' => 'لا يمكنك قراءة المشاركات ÙÙŠ هذا المنتدى', + 'USER_POSTS' => array( + 1 => 'مشاركة واحدة', + 2 => 'مشاركتان', + 3 => '%d مشاركات', + 4 => '%d مشاركةً', + 5 => '%d مشاركة', + ), + 'USERS' => 'مستخدمين', + 'USE_PERMISSIONS' => 'تجربة صلاحيات هذا المستخدم', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'عذرًا، لست مخوّلًا لاستخدام هذه الميزة. قد تكون عضوًا جديدًا ÙÙŠ المنتدى وتحتاج إلى المزيد من المشاركة لتصبح هذه الميزة متاحة لك.', + + 'VARIANT_DATE_SEPARATOR' => ' /', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'شوهد', + 'VIEWED_COUNTS' => array( + 0 => 'لم تتم مشاهدته بعد', + 1 => 'تمت المشاهدة مرة واحدة', + 2 => 'تمت المشاهدة مرتين', + 3 => 'تمت المشاهدة %d مرات', + 4 => 'تمت المشاهدة %d مرةً', + 5 => 'تمت المشاهدة %d مرة', + ), + 'VIEWING_CONTACT_ADMIN' => 'يشاهد صÙحة الاتصال بالإدارة', + 'VIEWING_FAQ' => 'يشاهد الأسئلة المتكررة', + 'VIEWING_MEMBERS' => 'يشاهد قائمة الأعضاء', + 'VIEWING_ONLINE' => 'يشاهد الموجودين الآن', + 'VIEWING_MCP' => 'مشاهدة لوحة تحكم المشرÙ', + 'VIEWING_MEMBER_PROFILE' => 'يشاهد المل٠الشخصي لأحد الأعضاء', + 'VIEWING_PRIVATE_MESSAGES' => 'يشاهد الرسائل الخاصة', + 'VIEWING_REGISTER' => 'يسجل عضوية جديدة', + 'VIEWING_UCP' => 'يشاهد لوحة تحكم العضو', + 'VIEWS' => 'مشاهدات', + 'VIEW_BOOKMARKS' => 'شاهد المÙضلات', + 'VIEW_FORUM_LOGS' => 'شاهد التسجيلات', + 'VIEW_LATEST_POST' => 'شاهد آخر مشاركة', + 'VIEW_NEWEST_POST' => 'شاهد أحدث مشاركة', + 'VIEW_NOTES' => 'شاهد مذكرات الأعضاء', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'هذه البيانات تعتمد على الأعضاء النشطين خلال الدقيقة الماضية', + 2 => 'هذه البيانات تعتمد على الأعضاء النشطين خلال الدقيقتان الماضيتان', + 3 => 'هذه البيانات تعتمد على الأعضاء النشطين خلال الـ %d دقائق الماضية', + 4 => 'هذه البيانات تعتمد على الأعضاء النشطين خلال الـ %d دقيقةً الماضية', + 5 => 'هذه البيانات تعتمد على الأعضاء النشطين خلال الـ %d دقيقة الماضية', + ), + 'VIEW_TOPIC' => 'مشاهدة الموضوع', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'إعلان:', + 'VIEW_TOPIC_GLOBAL' => 'اعلان عام:', + 'VIEW_TOPIC_LOCKED' => 'مغلق:', + 'VIEW_TOPIC_LOGS' => 'شاهد السجلات', + 'VIEW_TOPIC_MOVED' => 'انتقل:', + 'VIEW_TOPIC_POLL' => 'تصويت:', + 'VIEW_TOPIC_STICKY' => 'مثبت:', + 'VISIT_WEBSITE' => 'زيارة الموقع', + + 'WARNINGS' => 'تحذيرات', + 'WARN_USER' => 'تحذير العضو', + 'WATCH_FORUM_CONFIRM' => 'هل أنت متأكد انك تريد أن تشترك ÙÙŠ هذا المنتدى؟', + 'WATCH_FORUM_DETAILED' => 'هل أنت متأكد أنك تريد أن تشترك ÙÙŠ المنتدى â€%s“؟', + 'WATCH_TOPIC_CONFIRM' => 'هل أنت متأكد أنك تريد أن تشترك ÙÙŠ هذا الموضوع؟', + 'WATCH_TOPIC_DETAILED' => 'هل أنت متأكد أنك تريد أن تشترك ÙÙŠ الموضوع â€%s“؟', + 'WELCOME_SUBJECT' => 'أهلا وسهلا بك ÙÙŠ منتديات %s', + 'WEBSITE' => 'WWW', + 'WHOIS' => 'Whois', + 'WHO_IS_ONLINE' => 'الموجودون الآن', + 'WRONG_PASSWORD' => 'لقد أدخلت كلمة مرور خاطئة', + + 'WRONG_DATA_COLOUR' => 'كود اللون المدخل غير صحيح.', + 'WRONG_DATA_JABBER' => 'اسم حساب Jabber الذي أدخلته غير صحيح', + 'WRONG_DATA_LANG' => 'اللغة التي حددتها ليست صحيحة', + 'WRONG_DATA_POST_SD' => 'اتجاه ترتيب المشاركات الذي حددته غير صالح.', + 'WRONG_DATA_POST_SK' => 'خيار ترتيب المشاركات الذي حددته غير صالح.', + 'WRONG_DATA_TOPIC_SD' => 'اتجاه ترتيب المواضيع الذي حددته غير صالح.', + 'WRONG_DATA_TOPIC_SK' => 'خيار ترتيب المواضيع الذي حددته غير صالح.', + 'WROTE' => 'كتب', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'سنة', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'نعم', + 'YOU_LAST_VISIT' => 'آخر زيارة كانت ÙÙŠ: %s', + + 'datetime' => array( + 'TODAY' => 'اليوم', + 'TOMORROW' => 'غدًا', + 'YESTERDAY' => 'الأمس', + 'AGO' => array( + 0 => 'منذ أقل من دقيقة', + 1 => 'منذ دقيقة واحدة', + 2 => 'منذ دقيقتين', + 3 => 'منذ %d دقائق', + 4 => 'منذ %d دقيقة', + 5 => 'منذ %d دقيقة', + ), + + 'Sunday' => 'الأحد', + 'Monday' => 'الاثنين', + 'Tuesday' => 'الثلاثاء', + 'Wednesday' => 'الأربعاء', + 'Thursday' => 'الخميس', + 'Friday' => 'الجمعة', + 'Saturday' => 'السبت', + + 'Sun' => 'الأحد', + 'Mon' => 'الاثنين', + 'Tue' => 'الثلاثاء', + 'Wed' => 'الأربعاء', + 'Thu' => 'الخميس', + 'Fri' => 'الجمعة', + 'Sat' => 'السبت', + + 'January' => 'يناير', + 'February' => 'Ùبراير', + 'March' => 'مارس', + 'April' => 'إبريل', + 'May' => 'مايو', + 'June' => 'يونيو', + 'July' => 'يوليو', + 'August' => 'أغسطس', + 'September' => 'سبتمبر', + 'October' => 'أكتوبر', + 'November' => 'نوÙمبر', + 'December' => 'ديسمبر', + + 'Jan' => 'يناير', + 'Feb' => 'Ùبراير', + 'Mar' => 'مارس', + 'Apr' => 'إبريل', + 'May_short' => 'مايو', // Short representation of "May". May_short used because in English the short and long date are the same for May. + 'Jun' => 'يونيو', + 'Jul' => 'يوليو', + 'Aug' => 'أغسطس', + 'Sep' => 'سبتمبر', + 'Oct' => 'أكتوبر', + 'Nov' => 'نوÙمبر', + 'Dec' => 'ديسمبر', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'التوقيت العالمي', + 'UTC_OFFSET' => 'التوقيت العالمي%1$s', + 'UTC_OFFSET_CURRENT' => 'التوقيت العالمي%1$s - %2$s', + + 'Etc/GMT-12' => 'التوقيت العالمي+12', + 'Etc/GMT-11' => 'التوقيت العالمي+11', + 'Etc/GMT-10' => 'التوقيت العالمي+10', + 'Etc/GMT-9' => 'التوقيت العالمي+9', + 'Etc/GMT-8' => 'التوقيت العالمي+8', + 'Etc/GMT-7' => 'التوقيت العالمي+7', + 'Etc/GMT-6' => 'التوقيت العالمي+6', + 'Etc/GMT-5' => 'التوقيت العالمي+5', + 'Etc/GMT-4' => 'التوقيت العالمي+4', + 'Etc/GMT-3' => 'التوقيت العالمي+3', + 'Etc/GMT-2' => 'التوقيت العالمي+2', + 'Etc/GMT-1' => 'التوقيت العالمي+1', + 'Etc/GMT+1' => 'التوقيت العالمي-1', + 'Etc/GMT+2' => 'التوقيت العالمي-2', + 'Etc/GMT+3' => 'التوقيت العالمي-3', + 'Etc/GMT+4' => 'التوقيت العالمي-4', + 'Etc/GMT+5' => 'التوقيت العالمي-5', + 'Etc/GMT+6' => 'التوقيت العالمي-6', + 'Etc/GMT+7' => 'التوقيت العالمي-7', + 'Etc/GMT+8' => 'التوقيت العالمي-8', + 'Etc/GMT+9' => 'التوقيت العالمي-9', + 'Etc/GMT+10' => 'التوقيت العالمي-10', + 'Etc/GMT+11' => 'التوقيت العالمي-11', + 'Etc/GMT+12' => 'التوقيت العالمي-12', + + 'Africa/Abidjan' => 'Ø£Ùريقيا/أبيدجان', + 'Africa/Accra' => 'Ø£Ùريقيا/أكرا', + 'Africa/Addis_Ababa' => 'Ø£Ùريقيا/أديس أبابا', + 'Africa/Algiers' => 'Ø£Ùريقيا/الجزائر', + 'Africa/Asmara' => 'Ø£Ùريقيا/أسمرة', + 'Africa/Bamako' => 'Ø£Ùريقيا/باماكو', + 'Africa/Bangui' => 'Ø£Ùريقيا/بانغي', + 'Africa/Banjul' => 'Ø£Ùريقيا/بانجول', + 'Africa/Bissau' => 'Ø£Ùريقيا/بيساو', + 'Africa/Blantyre' => 'Ø£Ùريقيا/بلانتير', + 'Africa/Brazzaville' => 'Ø£Ùريقيا/برازاÙيل', + 'Africa/Bujumbura' => 'Ø£Ùريقيا/بوجومبرا', + 'Africa/Cairo' => 'Ø£Ùريقيا/القاهرة', + 'Africa/Casablanca' => 'Ø£Ùريقيا/الدار البيضاء', + 'Africa/Ceuta' => 'Ø£Ùريقيا/سبتة', + 'Africa/Conakry' => 'Ø£Ùريقيا/كوناكري', + 'Africa/Dakar' => 'Ø£Ùريقيا/داكار', + 'Africa/Dar_es_Salaam' => 'Ø£Ùريقيا/دار السلام', + 'Africa/Djibouti' => 'Ø£Ùريقيا/جيبوتي', + 'Africa/Douala' => 'Ø£Ùريقيا/دوالا', + 'Africa/El_Aaiun' => 'Ø£Ùريقيا/العيون', + 'Africa/Freetown' => 'Ø£Ùريقيا/Ùريتاون', + 'Africa/Gaborone' => 'Ø£Ùريقيا/غابورون', + 'Africa/Harare' => 'Ø£Ùريقيا/هراري', + 'Africa/Johannesburg' => 'Ø£Ùريقيا/جوهانسبرج', + 'Africa/Juba' => 'Ø£Ùريقيا/جوبا', + 'Africa/Kampala' => 'Ø£Ùريقيا/كمبالا', + 'Africa/Khartoum' => 'Ø£Ùريقيا/الخرطوم', + 'Africa/Kigali' => 'Ø£Ùريقيا/كيغالي', + 'Africa/Kinshasa' => 'Ø£Ùريقيا/كينشاسا', + 'Africa/Lagos' => 'Ø£Ùريقيا/البحيرات', + 'Africa/Libreville' => 'Ø£Ùريقيا/ليبرÙيل', + 'Africa/Lome' => 'Ø£Ùريقيا/لومي', + 'Africa/Luanda' => 'Ø£Ùريقيا/لواندا', + 'Africa/Lubumbashi' => 'Ø£Ùريقيا/لوبومباشي', + 'Africa/Lusaka' => 'Ø£Ùريقيا/لوساكا', + 'Africa/Malabo' => 'Ø£Ùريقيا/مالابو', + 'Africa/Maputo' => 'Ø£Ùريقيا/مابوتو', + 'Africa/Maseru' => 'Ø£Ùريقيا/ماسيرو', + 'Africa/Mbabane' => 'Ø£Ùريقيا/مبابان', + 'Africa/Mogadishu' => 'Ø£Ùريقيا/مقديشيو', + 'Africa/Monrovia' => 'Ø£Ùريقيا/مونروÙيا', + 'Africa/Nairobi' => 'Ø£Ùريقيا/نيروبي', + 'Africa/Ndjamena' => 'Ø£Ùريقيا/نجامينا', + 'Africa/Niamey' => 'Ø£Ùريقيا/نيامي', + 'Africa/Nouakchott' => 'Ø£Ùريقيا/نواكشوط', + 'Africa/Ouagadougou' => 'Ø£Ùريقيا/واغادوغو', + 'Africa/Porto-Novo' => 'Ø£Ùريقيا/بورتو-نوÙÙˆ', + 'Africa/Sao_Tome' => 'Ø£Ùريقيا/ساو تومي', + 'Africa/Tripoli' => 'Ø£Ùريقيا/تريبولي', + 'Africa/Tunis' => 'Ø£Ùريقيا/تونس', + 'Africa/Windhoek' => 'Ø£Ùريقيا/ويندهوك', + + 'America/Adak' => 'أمريكا/اداك', + 'America/Anchorage' => 'أمريكا/أنكوريج', + 'America/Anguilla' => 'أمريكا/أنغيلا', + 'America/Antigua' => 'أمريكا/أنتيغوا', + 'America/Araguaina' => 'أمريكا/أراغواينا', + + 'America/Argentina/Buenos_Aires' => 'أمريكا/الأرجنتين/بوينس آيرس', + 'America/Argentina/Catamarca' => 'أمريكا/الأرجنتين/كاتاماركا', + 'America/Argentina/Cordoba' => 'أمريكا/الأرجنتين/قرطبة', + 'America/Argentina/Jujuy' => 'أمريكا/الأرجنتين/خوخوي', + 'America/Argentina/La_Rioja' => 'أمريكا/الأرجنتين/لا ريوخا', + 'America/Argentina/Mendoza' => 'أمريكا/الأرجنتين/ميندوزا', + 'America/Argentina/Rio_Gallegos' => 'أمريكا/الأرجنتين/ريو غاليغوس', + 'America/Argentina/Salta' => 'أمريكا/الأرجنتين/سالتا', + 'America/Argentina/San_Juan' => 'أمريكا/الأرجنتين/سان خوان', + 'America/Argentina/San_Luis' => 'أمريكا/الأرجنتين/سان لويس', + 'America/Argentina/Tucuman' => 'أمريكا/الأرجنتين/توكومان', + 'America/Argentina/Ushuaia' => 'أمريكا/الأرجنتين/أوشوايا', + + 'America/Aruba' => 'أمريكا/أروبا', + 'America/Asuncion' => 'أمريكا/أسونسيون', + 'America/Atikokan' => 'أمريكا/أتيكوكان', + 'America/Bahia' => 'أمريكا/باهيا', + 'America/Bahia_Banderas' => 'أمريكا/باهيا بانديراس', + 'America/Barbados' => 'أمريكا/بربادوس', + 'America/Belem' => 'أمريكا/بيت لحم', + 'America/Belize' => 'أمريكا/بليز', + 'America/Blanc-Sablon' => 'أمريكا/بلان-سابلون', + 'America/Boa_Vista' => 'أمريكا/بوينا Ùيستا', + 'America/Bogota' => 'أمريكا/بوغوتا', + 'America/Boise' => 'أمريكا/بويز', + 'America/Cambridge_Bay' => 'أمريكا/خليج كامبريدج', + 'America/Campo_Grande' => 'أمريكا/كامبو غراندي', + 'America/Cancun' => 'أمريكا/كانكون', + 'America/Caracas' => 'أمريكا/كراكاس', + 'America/Cayenne' => 'أمريكا/كايين', + 'America/Cayman' => 'أمريكا/كايمان', + 'America/Chicago' => 'أمريكا/شيكاغو', + 'America/Chihuahua' => 'أمريكا/شيواوا', + 'America/Costa_Rica' => 'أمريكا/كوستا ريكا', + 'America/Creston' => 'أمريكا/كريستون', + 'America/Cuiaba' => 'أمريكا/كويابا', + 'America/Curacao' => 'أمريكا/كوراكاو', + 'America/Danmarkshavn' => 'أمريكا/دانماركشاÙÙ†', + 'America/Dawson' => 'أمريكا/داوسون', + 'America/Dawson_Creek' => 'أمريكا/داوسون كريك', + 'America/Denver' => 'أمريكا/دينÙر', + 'America/Detroit' => 'أمريكا/ديترويت', + 'America/Dominica' => 'أمريكا/دومينيكا', + 'America/Edmonton' => 'أمريكا/ادمونتون', + 'America/Eirunepe' => 'أمريكا/ايرونيب', + 'America/El_Salvador' => 'أمريكا/السلÙادور', + 'America/Fortaleza' => 'أمريكا/Ùورتاليزا', + 'America/Glace_Bay' => 'أمريكا/خليج جليس', + 'America/Godthab' => 'أمريكا/غادتاب', + 'America/Goose_Bay' => 'أمريكا/خليج الأوز', + 'America/Grand_Turk' => 'أمريكا/غراند تورك', + 'America/Grenada' => 'أمريكا/غرينادا', + 'America/Guadeloupe' => 'أمريكا/غوادلوب', + 'America/Guatemala' => 'أمريكا/جواتيمالا', + 'America/Guayaquil' => 'أمريكا/غواياكيل', + 'America/Guyana' => 'أمريكا/غيانا', + 'America/Halifax' => 'أمريكا/هاليÙاكس', + 'America/Havana' => 'أمريكا/هاÙانا', + 'America/Hermosillo' => 'أمريكا/هيرموسيلو', + 'America/Indiana/Indianapolis' => 'أمريكا/إنديانا/انديانابوليس', + 'America/Indiana/Knox' => 'أمريكا/إنديانا/نوكس', + 'America/Indiana/Marengo' => 'أمريكا/إنديانا/مارينغو', + 'America/Indiana/Petersburg' => 'أمريكا/إنديانا/بطرسبرج', + 'America/Indiana/Tell_City' => 'أمريكا/إنديانا/مدينة تيل', + 'America/Indiana/Vevay' => 'أمريكا/إنديانا/ÙÙŠÙاي', + 'America/Indiana/Vincennes' => 'أمريكا/إنديانا/Ùينسين', + 'America/Indiana/Winamac' => 'أمريكا/إنديانا/ويناماك', + 'America/Inuvik' => 'أمريكا/إنوÙيك', + 'America/Iqaluit' => 'أمريكا/إيكالويت', + 'America/Jamaica' => 'أمريكا/جامايكا', + 'America/Juneau' => 'أمريكا/جونو', + 'America/Kentucky/Louisville' => 'أمريكا/كنتاكي/لويزÙيل', + 'America/Kentucky/Monticello' => 'أمريكا/كنتاكي/مونتيشيلو', + 'America/Kralendijk' => 'أمريكا/كرالنديك', + 'America/La_Paz' => 'أمريكا/لاباز', + 'America/Lima' => 'أمريكا/ليما', + 'America/Los_Angeles' => 'أمريكا/لوس أنجلوس', + 'America/Lower_Princes' => 'أمريكا/لاور برنسيس', + 'America/Maceio' => 'أمريكا/ماسيو', + 'America/Managua' => 'أمريكا/ماناغوا', + 'America/Manaus' => 'أمريكا/ماناوس', + 'America/Marigot' => 'أمريكا/ماريجوت', + 'America/Martinique' => 'أمريكا/مارتينيك', + 'America/Matamoros' => 'أمريكا/ماتاموروس', + 'America/Mazatlan' => 'أمريكا/مازاتلان', + 'America/Menominee' => 'أمريكا/مينوميني', + 'America/Merida' => 'أمريكا/ميريدا', + 'America/Metlakatla' => 'أمريكا/ميتلاكاتلا', + 'America/Mexico_City' => 'أمريكا/مكسيكو سيتي', + 'America/Miquelon' => 'أمريكا/ميكلون', + 'America/Moncton' => 'أمريكا/مونكتون', + 'America/Monterrey' => 'أمريكا/مونتيري', + 'America/Montevideo' => 'أمريكا/مونتيÙيديو', + 'America/Montreal' => 'أمريكا/مونتريال', + 'America/Montserrat' => 'أمريكا/مونتسيرات', + 'America/Nassau' => 'أمريكا/ناسو', + 'America/New_York' => 'أمريكا/نيو يورك', + 'America/Nipigon' => 'أمريكا/نيبيجون', + 'America/Nome' => 'أمريكا/نوم', + 'America/Noronha' => 'أمريكا/نورونها', + 'America/North_Dakota/Beulah' => 'أمريكا/داكوتا الشمالية/بيولاه', + 'America/North_Dakota/Center' => 'أمريكا/داكوتا الشمالية/سنتر', + 'America/North_Dakota/New_Salem' => 'أمريكا/داكوتا الشمالية/نيو سالم', + 'America/Ojinaga' => 'أمريكا/أوجيناجا', + 'America/Panama' => 'أمريكا/بنما', + 'America/Pangnirtung' => 'أمريكا/بانجنيرتونج', + 'America/Paramaribo' => 'أمريكا/باراماريبو', + 'America/Phoenix' => 'أمريكا/Ùينكس', + 'America/Port-au-Prince' => 'أمريكا/بورت أو برنس', + 'America/Port_of_Spain' => 'أمريكا/ميناء أسبانيا', + 'America/Porto_Velho' => 'أمريكا/بورتو Ùيلهو', + 'America/Puerto_Rico' => 'أمريكا/بورتو ريكو', + 'America/Rainy_River' => 'أمريكا/نهر الأمطار', + 'America/Rankin_Inlet' => 'أمريكا/مدخل رانكن', + 'America/Recife' => 'أمريكا/ريسيÙ', + 'America/Regina' => 'أمريكا/ريجينا', + 'America/Resolute' => 'أمريكا/ريزوليوت', + 'America/Rio_Branco' => 'أمريكا/ريو برانكو', + 'America/Santa_Isabel' => 'أمريكا/سانتا ايزابيل', + 'America/Santarem' => 'أمريكا/سانتاريم', + 'America/Santiago' => 'أمريكا/سانتياجو', + 'America/Santo_Domingo' => 'أمريكا/سانتو دومينجو', + 'America/Sao_Paulo' => 'أمريكا/ساو باولو', + 'America/Scoresbysund' => 'أمريكا/سكورسبيسوند', + 'America/Shiprock' => 'أمريكا/شيبروك', + 'America/Sitka' => 'أمريكا/سيتكا', + 'America/St_Barthelemy' => 'أمريكا/سانت بارثيلمي', + 'America/St_Johns' => 'أمريكا/سانت جونز', + 'America/St_Kitts' => 'أمريكا/سانت كيتس', + 'America/St_Lucia' => 'أمريكا/سانت لوسيا', + 'America/St_Thomas' => 'أمريكا/سانت توماس', + 'America/St_Vincent' => 'أمريكا/سانت Ùينسنت', + 'America/Swift_Current' => 'أمريكا/سويÙت كارنت', + 'America/Tegucigalpa' => 'أمريكا/تيجوسيجالبا', + 'America/Thule' => 'أمريكا/ثول', + 'America/Thunder_Bay' => 'أمريكا/خليج الرعد', + 'America/Tijuana' => 'أمريكا/تيجوانا', + 'America/Toronto' => 'أمريكا/تورنتو', + 'America/Tortola' => 'أمريكا/تورتولا', + 'America/Vancouver' => 'أمريكا/ÙانكوÙر', + 'America/Whitehorse' => 'أمريكا/وايتهورس', + 'America/Winnipeg' => 'أمريكا/وينيبيج', + 'America/Yakutat' => 'أمريكا/ياكوتات', + 'America/Yellowknife' => 'أمريكا/يلونايÙ', + + 'Antarctica/Casey' => 'أنتاركتيكا/كيسي', + 'Antarctica/Davis' => 'أنتاركتيكا/داÙيس', + 'Antarctica/DumontDUrville' => 'أنتاركتيكا/دومون دورÙيل', + 'Antarctica/Macquarie' => 'أنتاركتيكا/ماكواري', + 'Antarctica/Mawson' => 'أنتاركتيكا/موسن', + 'Antarctica/McMurdo' => 'أنتاركتيكا/ماك موردو', + 'Antarctica/Palmer' => 'أنتاركتيكا/بالمر', + 'Antarctica/Rothera' => 'أنتاركتيكا/روثيرا', + 'Antarctica/South_Pole' => 'أنتاركتيكا/القطب الجنوبي', + 'Antarctica/Syowa' => 'أنتاركتيكا/سيووا', + 'Antarctica/Vostok' => 'أنتاركتيكا/Ùوستوك', + + 'Arctic/Longyearbyen' => 'القطب الشمالي/لونغياربين', + + 'Asia/Aden' => 'آسيا/عدن', + 'Asia/Almaty' => 'آسيا/ألماتي', + 'Asia/Amman' => 'آسيا/عمّان', + 'Asia/Anadyr' => 'آسيا/أنادير', + 'Asia/Aqtau' => 'آسيا/أكتا', + 'Asia/Aqtobe' => 'آسيا/أكتوبي', + 'Asia/Ashgabat' => 'آسيا/عشق آباد', + 'Asia/Baghdad' => 'آسيا/بغداد', + 'Asia/Bahrain' => 'آسيا/البحرين', + 'Asia/Baku' => 'آسيا/باكو', + 'Asia/Bangkok' => 'آسيا/بانكوك', + 'Asia/Beirut' => 'آسيا/بيروت', + 'Asia/Bishkek' => 'آسيا/بيشكيك', + 'Asia/Brunei' => 'آسيا/بروناي', + 'Asia/Choibalsan' => 'آسيا/شويبالسان', + 'Asia/Chongqing' => 'آسيا/تشونغتشينغ', + 'Asia/Colombo' => 'آسيا/كولومبو', + 'Asia/Damascus' => 'آسيا/دمشق', + 'Asia/Dhaka' => 'آسيا/دكا', + 'Asia/Dili' => 'آسيا/ديلي', + 'Asia/Dubai' => 'آسيا/دبي', + 'Asia/Dushanbe' => 'آسيا/دوشنبه', + 'Asia/Gaza' => 'آسيا/غزة', + 'Asia/Harbin' => 'آسيا/هاربين', + 'Asia/Hebron' => 'آسيا/الخليل', + 'Asia/Ho_Chi_Minh' => 'آسيا/هو تشي منه', + 'Asia/Hong_Kong' => 'آسيا/هونج كونج', + 'Asia/Hovd' => 'آسيا/هوود', + 'Asia/Irkutsk' => 'آسيا/إركوتسك', + 'Asia/Jakarta' => 'آسيا/جاكارتا', + 'Asia/Jayapura' => 'آسيا/جايابورا', + 'Asia/Jerusalem' => 'آسيا/القدس', + 'Asia/Kabul' => 'آسيا/كابول', + 'Asia/Kamchatka' => 'آسيا/كامتشاتكا', + 'Asia/Karachi' => 'آسيا/كراتشي', + 'Asia/Kashgar' => 'آسيا/كاشغر', + 'Asia/Kathmandu' => 'آسيا/كاتماندو', + 'Asia/Khandyga' => 'آسيا/خانديجة', + 'Asia/Kolkata' => 'آسيا/كالكتة', + 'Asia/Krasnoyarsk' => 'آسيا/كراسنويارك', + 'Asia/Kuala_Lumpur' => 'آسيا/كوالا لامبور', + 'Asia/Kuching' => 'آسيا/كوتشينغ', + 'Asia/Kuwait' => 'آسيا/الكويت', + 'Asia/Macau' => 'آسيا/ماكاو', + 'Asia/Magadan' => 'آسيا/ماغادان', + 'Asia/Makassar' => 'آسيا/ماكاسار', + 'Asia/Manila' => 'آسيا/مانيلا', + 'Asia/Muscat' => 'آسيا/مسقط', + 'Asia/Nicosia' => 'آسيا/نيقوسيا', + 'Asia/Novokuznetsk' => 'آسيا/نوÙوكوزنتسك', + 'Asia/Novosibirsk' => 'آسيا/نوÙوسيبيرسك', + 'Asia/Omsk' => 'آسيا/أومسك', + 'Asia/Oral' => 'آسيا/أورال', + 'Asia/Phnom_Penh' => 'آسيا/بنوم بنه', + 'Asia/Pontianak' => 'آسيا/بونتياناك', + 'Asia/Pyongyang' => 'آسيا/بيونغ يانغ', + 'Asia/Qatar' => 'آسيا/قطر', + 'Asia/Qyzylorda' => 'آسيا/كيزيلوردا', + 'Asia/Rangoon' => 'آسيا/رانغون', + 'Asia/Riyadh' => 'آسيا/الرياض', + 'Asia/Sakhalin' => 'آسيا/سخالين', + 'Asia/Samarkand' => 'آسيا/سمرقند', + 'Asia/Seoul' => 'آسيا/سيول', + 'Asia/Shanghai' => 'آسيا/شانغهاي', + 'Asia/Singapore' => 'آسيا/سنغاÙورة', + 'Asia/Taipei' => 'آسيا/تايبي', + 'Asia/Tashkent' => 'آسيا/طشقند', + 'Asia/Tbilisi' => 'آسيا/تبليسي', + 'Asia/Tehran' => 'آسيا/طهران', + 'Asia/Thimphu' => 'آسيا/تيمÙÙˆ', + 'Asia/Tokyo' => 'آسيا/طوكيو', + 'Asia/Ulaanbaatar' => 'آسيا/أولان باتور', + 'Asia/Urumqi' => 'آسيا/اورومتشي', + 'Asia/Ust-Nera' => 'آسيا/أوست-نيرا', + 'Asia/Vientiane' => 'آسيا/Ùينتيان', + 'Asia/Vladivostok' => 'آسيا/ÙلاديÙوستوك', + 'Asia/Yakutsk' => 'آسيا/ياكوتسك', + 'Asia/Yekaterinburg' => 'آسيا/ايكاترينبرج', + 'Asia/Yerevan' => 'آسيا/يريÙان', + + 'Atlantic/Azores' => 'المحيط الأطلسي/جزر الأزور', + 'Atlantic/Bermuda' => 'المحيط الأطلسي/برمودا', + 'Atlantic/Canary' => 'المحيط الأطلسي/جزر الكناري', + 'Atlantic/Cape_Verde' => 'المحيط الأطلسي/الرأس الأخضر', + 'Atlantic/Faroe' => 'المحيط الأطلسي/Ùارو', + 'Atlantic/Madeira' => 'المحيط الأطلسي/ماديرا', + 'Atlantic/Reykjavik' => 'المحيط الأطلسي/ريكياÙيك', + 'Atlantic/South_Georgia' => 'المحيط الأطلسي/جورجيا الجنوبية', + 'Atlantic/St_Helena' => 'المحيط الأطلسي/سانت هيلينا', + 'Atlantic/Stanley' => 'المحيط الأطلسي/ستانلي', + + 'Australia/Adelaide' => 'أستراليا/أديليد', + 'Australia/Brisbane' => 'أستراليا/بريزبين', + 'Australia/Broken_Hill' => 'أستراليا/بروكن هيل', + 'Australia/Currie' => 'أستراليا/كاري', + 'Australia/Darwin' => 'أستراليا/داروين', + 'Australia/Eucla' => 'أستراليا/يوكلا', + 'Australia/Hobart' => 'أستراليا/هوبارت', + 'Australia/Lindeman' => 'أستراليا/ليندمان', + 'Australia/Lord_Howe' => 'أستراليا/لورد هاو', + 'Australia/Melbourne' => 'أستراليا/ملبورن', + 'Australia/Perth' => 'أستراليا/بيرث', + 'Australia/Sydney' => 'أستراليا/سيدني', + + 'Europe/Amsterdam' => 'أوروبا/أمستردام', + 'Europe/Andorra' => 'أوروبا/أندورا', + 'Europe/Athens' => 'أوروبا/أثينا', + 'Europe/Belgrade' => 'أوروبا/بيلجراد', + 'Europe/Berlin' => 'أوروبا/برلين', + 'Europe/Bratislava' => 'أوروبا/براتيسلاÙا', + 'Europe/Brussels' => 'أوروبا/بروسيلس', + 'Europe/Bucharest' => 'أوروبا/بوخارست', + 'Europe/Budapest' => 'أوروبا/بودابست', + 'Europe/Busingen' => 'أوروبا/بوسينجن', + 'Europe/Chisinau' => 'أوروبا/كيشيناو', + 'Europe/Copenhagen' => 'أوروبا/كوبنهاجن', + 'Europe/Dublin' => 'أوروبا/دبلن', + 'Europe/Gibraltar' => 'أوروبا/جبل طارق', + 'Europe/Guernsey' => 'أوروبا/غيرنسي', + 'Europe/Helsinki' => 'أوروبا/هلسنكي', + 'Europe/Isle_of_Man' => 'أوروبا/آيل أو٠مان', + 'Europe/Istanbul' => 'أوروبا/اسطنبول', + 'Europe/Jersey' => 'أوروبا/جيرسي', + 'Europe/Kaliningrad' => 'أوروبا/كالينينغراد', + 'Europe/Kiev' => 'أوروبا/كييÙ', + 'Europe/Lisbon' => 'أوروبا/لشبونة', + 'Europe/Ljubljana' => 'أوروبا/ليوبليانا', + 'Europe/London' => 'أوروبا/لندن', + 'Europe/Luxembourg' => 'أوروبا/لوكسمبورج', + 'Europe/Madrid' => 'أوروبا/مدريد', + 'Europe/Malta' => 'أوروبا/ملطا', + 'Europe/Mariehamn' => 'أوروبا/ماريهامن', + 'Europe/Minsk' => 'أوروبا/ميسنك', + 'Europe/Monaco' => 'أوروبا/موناكو', + 'Europe/Moscow' => 'أوروبا/موسكو', + 'Europe/Oslo' => 'أوروبا/أوسلو', + 'Europe/Paris' => 'أوروبا/باريس', + 'Europe/Podgorica' => 'أوروبا/بودغوريتشا', + 'Europe/Prague' => 'أوروبا/براغ', + 'Europe/Riga' => 'أوروبا/ريغا', + 'Europe/Rome' => 'أوروبا/روما', + 'Europe/Samara' => 'أوروبا/سمارا', + 'Europe/San_Marino' => 'أوروبا/سان مارينو', + 'Europe/Sarajevo' => 'أوروبا/سراييÙÙˆ', + 'Europe/Simferopol' => 'أوروبا/سيمÙيروبول', + 'Europe/Skopje' => 'أوروبا/سكوبي', + 'Europe/Sofia' => 'أوروبا/صوÙيا', + 'Europe/Stockholm' => 'أوروبا/ستوكهولم', + 'Europe/Tallinn' => 'أوروبا/تالين', + 'Europe/Tirane' => 'أوروبا/تيرانا', + 'Europe/Uzhgorod' => 'أوروبا/أوزجورود', + 'Europe/Vaduz' => 'أوروبا/Ùادوز', + 'Europe/Vatican' => 'أوروبا/الÙاتيكان', + 'Europe/Vienna' => 'أوروبا/Ùيينا', + 'Europe/Vilnius' => 'أوروبا/Ùيلنيوس', + 'Europe/Volgograd' => 'أوروبا/Ùولغوغراد', + 'Europe/Warsaw' => 'أوروبا/وارسو', + 'Europe/Zagreb' => 'أوروبا/زغرب', + 'Europe/Zaporozhye' => 'أوروبا/زابوروجي', + 'Europe/Zurich' => 'أوروبا/زيورخ', + + 'Indian/Antananarivo' => 'المحيط الهندي/أنتاناناريÙÙˆ', + 'Indian/Chagos' => 'المحيط الهندي/تشاغوس', + 'Indian/Christmas' => 'المحيط الهندي/كريسماس', + 'Indian/Cocos' => 'المحيط الهندي/كوكوس', + 'Indian/Comoro' => 'المحيط الهندي/جزر القمر', + 'Indian/Kerguelen' => 'المحيط الهندي/كيرغولن', + 'Indian/Mahe' => 'المحيط الهندي/ماهي', + 'Indian/Maldives' => 'المحيط الهندي/جزر المالديÙ', + 'Indian/Mauritius' => 'المحيط الهندي/موريشيوس', + 'Indian/Mayotte' => 'المحيط الهندي/مايوت', + 'Indian/Reunion' => 'المحيط الهندي/ريونيون', + + 'Pacific/Apia' => 'المحيط الهادي/آبيا', + 'Pacific/Auckland' => 'المحيط الهادي/أوكلاند', + 'Pacific/Chatham' => 'المحيط الهادي/تشاتام', + 'Pacific/Chuuk' => 'المحيط الهادي/شوك', + 'Pacific/Easter' => 'المحيط الهادي/جزيرة الÙصح', + 'Pacific/Efate' => 'المحيط الهادي/إيÙات', + 'Pacific/Enderbury' => 'المحيط الهادي/اندربوري', + 'Pacific/Fakaofo' => 'المحيط الهادي/ÙاكاوÙÙˆ', + 'Pacific/Fiji' => 'المحيط الهادي/Ùيجي', + 'Pacific/Funafuti' => 'المحيط الهادي/ÙوناÙوتي', + 'Pacific/Galapagos' => 'المحيط الهادي/غالاباغوس', + 'Pacific/Gambier' => 'المحيط الهادي/جامبير', + 'Pacific/Guadalcanal' => 'المحيط الهادي/القنال', + 'Pacific/Guam' => 'المحيط الهادي/غوام', + 'Pacific/Honolulu' => 'المحيط الهادي/هونولولو', + 'Pacific/Johnston' => 'المحيط الهادي/جونستون', + 'Pacific/Kiritimati' => 'المحيط الهادي/كيريتيماتي', + 'Pacific/Kosrae' => 'المحيط الهادي/كوسراي', + 'Pacific/Kwajalein' => 'المحيط الهادي/كواجالين', + 'Pacific/Majuro' => 'المحيط الهادي/ماجورو', + 'Pacific/Marquesas' => 'المحيط الهادي/الماركيز', + 'Pacific/Midway' => 'المحيط الهادي/ميدواي', + 'Pacific/Nauru' => 'المحيط الهادي/ناورو', + 'Pacific/Niue' => 'المحيط الهادي/نيوي', + 'Pacific/Norfolk' => 'المحيط الهادي/نورÙولك', + 'Pacific/Noumea' => 'المحيط الهادي/نوميا', + 'Pacific/Pago_Pago' => 'المحيط الهادي/باجو باجو', + 'Pacific/Palau' => 'المحيط الهادي/بالاو', + 'Pacific/Pitcairn' => 'المحيط الهادي/بيتكيرن', + 'Pacific/Pohnpei' => 'المحيط الهادي/بوهنباي', + 'Pacific/Port_Moresby' => 'المحيط الهادي/ميناء مورسبي', + 'Pacific/Rarotonga' => 'المحيط الهادي/راروتونجا', + 'Pacific/Saipan' => 'المحيط الهادي/سايبان', + 'Pacific/Tahiti' => 'المحيط الهادي/تاهيتي', + 'Pacific/Tarawa' => 'المحيط الهادي/تاراوا', + 'Pacific/Tongatapu' => 'المحيط الهادي/تونغاتابو', + 'Pacific/Wake' => 'المحيط الهادي/ويك', + 'Pacific/Wallis' => 'المحيط الهادي/واليس', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'y/m/d H:i' => '1/01/2007 13:37', + '|y/m/d H:i|' => '1/01/2007 13:37', + 'Y/n/j g:i a' => '1/1/2007 1:37 Ù…', + '|Y/n/j| g:i a' => '1/1/2007 1:37 Ù…', + 'j F Y g:i a' => '1 يناير 2007 1:37Ù…', + '|j F Y| g:i a' => '1 يناير 2007 1:37 Ù…', + 'l j F Y g:i a' => 'الإثنين 1 يناير 2007 1:37Ù…', + '|l j F Y| g:i a' => 'الإثنين 1 يناير 2007 1:37Ù…', + 'D Y/n/j g:i a' => 'الإثنين 2007/1/1 1:37 Ù…', + '|D Y/n/j| g:i a' => 'الإثنين 2007/1/1 1:37 Ù…', + 'D j-n-Y g:i a' => 'الإثنين 1-1-2007 1:37 Ù…', + '|D j-n-Y| g:i a' => 'الإثنين 1-1-2007 1:37 Ù…', + 'D Y.n.j g:i a' => 'الإثنين 2007.1.1 1:37 Ù…', + '|D Y.n.j| g:i a' => 'الإثنين 2007.1.1 1:37 Ù…', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'l j F Y g:i a', // Monday 1 January 2007 1:37 pm + +)); diff --git a/includes/shared/phpbb3/language/lang_arabic/index.htm b/includes/shared/phpbb3/language/lang_arabic/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_arabic/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_arabic/ucp.php b/includes/shared/phpbb3/language/lang_arabic/ucp.php new file mode 100644 index 00000000..05597c0e --- /dev/null +++ b/includes/shared/phpbb3/language/lang_arabic/ucp.php @@ -0,0 +1,682 @@ + +* @translated 2014 phpBBArabia.com +* 2017 Updated and mainted by Saeed Hubaishan +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// Privacy policy and T&C +// Some characters you may want to copy&paste: +// ’ » †“ … + +$lang = array_merge($lang, array( + 'TERMS_OF_USE_CONTENT' => 'بدخولك â€%1$s“ (المشار إليها بـâ€Ù†Ø­Ù†â€œØŒ â€%1$s“, â€%2$s“) Ùإنك تواÙÙ‚ قانونيا على الشروط التالية، إذا كنت غير مواÙÙ‚ على الالتزام قانونيا بهذه الشروط Ùعليك ألا تدخل أو/Ùˆ تستعمل â€%1$s“، ربما نغير ÙÙŠ هذه الشروط ÙÙŠ أي وقت سنعمل جهدنا لإبلاغك بذلك، ومع أنه من الحكمة أن تطالع هذه الشروط من وقت لآخر Ùإنه باستمرارك ÙÙŠ الدخول واستعمال â€%1$s“ بعد تعديل الشروط يعني أنك مواÙÙ‚ قانونيا على الالتزام بها بعد تعديها أو/Ùˆ إضاÙتها.
    +
    + منتدياتنا مدعومة من برنامج phpBB (ويشار إليه بهم أو â€Ø¨Ø±Ù†Ø§Ù…ج phpBB“ أو “www.phpbb.com†أو â€phpBB Limited“ أو â€phpBB Teams“) وهو برنامج منتديات مرخص تحت “رخصة جنو العمومية v2†(يشار إليها بـ â€GPL“) ومن الممكن تحميله من www.phpbb.com.يسهل برنامج phpbb المناقشات القائمة على الإنترنت Ø› phpbb Limited ليست مسؤوله عن السماح Ùˆ/أو عدم السماح بالمحتوى Ùˆ/أو السلوك المباح. لمزيد من المعلومات حول phpbb اطلع على https://www.phpbb.com/.
    +
    + أن تواÙÙ‚ أنك لن تنشر مواد مهينة، Ùاحشة، سوقية، بشكل قذÙØŒ عرقي، مهدد، جنسي أو أي نوع يخال٠القانون المتبع ÙÙŠ دولتك أو الدولة حيث تستظي٠â€%1$s“، أو أي قانون دولي. Ùعل أي مما سبق سو٠يؤدي إلى وقÙÙƒ وإزالتك بشكل دائم من المنتدى (وإخبار مزود خدمة الانترنت لديك). وسو٠تÙرصد عناوين الآي بي كلها Ù„Ùرض هذه القوانين. أنت تواÙÙ‚ أن â€%1$s“ له الحق بإزالة أي موضوع أو تعديله أو نقله أو إغلاقه حسب رأيهم. وأنت بصÙتك مشتركا أو مستخدما تواÙÙ‚ أن تخزن المعلومات المدخلة كلها سابقًا ÙÙŠ قاعدة بيانات. وحيث أن هذه المعلومات لن تÙـعرض إلى أي جهة ثالثة دون علمك، لن يتحمل â€%1$s“ ولا phpBB أي مسؤولية حيال محاولة اختراق تتسبب ÙÙŠ جعل البيانات ÙÙŠ خطر', + + 'PRIVACY_POLICY' => 'هذه الاتÙاقية توضع تÙاصيل كي٠تستعمل â€%1$s“ وأية شركات تابعة لها (مشار إليها بـ â€Ù†Ø­Ù†â€œ أو â€%1$s“ أو â€%2$s“) Ùˆ phpBB (مشار إليها بـ â€Ù‡Ù…“, أو â€phpBB software“ أو “www.phpbb.com†أو â€phpBB Limited“ أو â€phpBB Teams“) أية معلومات جÙمعت خلال أية دورة من دورات استخدامك (مشار إليها بـ â€Ù…علوماتك“).
    +
    + معلوماتك تجمع بطريقين، أولاً عبر تصÙØ­ â€%1$s“ سينتج عنه أن برنامج phpBB سو٠ينشئ مجموعة من ملÙات تعري٠الارتباط (كوكيز)ØŒ والتي هي عبارة عن ملÙات نصية صغيرة تÙحمل إلى المجلد المؤقت لمتصÙØ­ جهازك، أول كوكيين يحتويات على تعري٠المستخدم ومعر٠جلسة مجهول، يعينهما لك تلقائيًا برنامج phpBB. الكوكي الثالث سيتم إنشاؤه عندما تطالع مواضيع ضمن â€%1$s“ ويستخدم لمعرÙØ© أي مواضيع قد قمت بقراءتها وبالتالي إثراء تجربة المستخدم.
    +
    + وربما ننشئ كوكيات خارجة عن برنامج phpBB عند تصÙØ­ â€%1$s“ ولكن هذا خارج نطاق هذا المستند الذي يهد٠Ùقط إلى تغطية الصÙحات المنشأة عبر برنامج phpBB. الطريق الأخرى التي نجمع بها معلوماتك هي عبر ما ترسله إلينا. هذا ربما يكون أحد هذه الأشياء وليس محصورًا Ùيها: المشاركة كمستحدم مجهول (يشار إليه بـمنشورات المجهول) أو التسجيل ÙÙŠ â€%1$s“ (يشار إلي بـحسابك) وإرسال مشاركات عبرك بعد التسجيل وخلال تسجيل الدخول (يشار إليه بعد بـمشاركاتك).
    +
    + سيحتوي حسابك عند الحد الأدنى على اسم معر٠Ùريد (يشار إليه بعد بـاسم عضويتك)ØŒ وكلمة مرور خاصة للدخول إلى حسابك (يشار إليها بعد بـكلمة مرورك) وبريد إلكتروني شخصي صالح (يشار إليه بعد بـبريدك). معلومات حسابك ÙÙŠ â€%1$s“ محمية بقوانين حماية البيانات ÙÙŠ البلد الذي يستظي٠موقعنا. أية معلومات أخرى بخلا٠اسم عضويتك أو كلمة مرورك أو عنوان البريدي مطلوبة عبر â€%1$s“ أثناء التسجيل هي إما إلزامية أو اختيارية بناء على تقدير â€%1$s“. ÙÙŠ كل الأحوال لديك الخيار تحديد معلومات حسابك التي تريد عرضها للعموم. وعلاوة على ذلك لديك الخيار ÙÙŠ تلقي أو عدم تلقي رسائل البريد الإلكتروني التلقائية الصادرة من برنامج phpBB.
    +
    + كلمة مرورك مشÙرة (معماه ÙÙŠ اتجاه واحد) لذلك Ùهي آمنة. ومع ذلك Ùمن المستحسن أنك لا تعيد استعمال Ù†Ùس كلمة المرور عبر عدة مواقع مختلÙØ©. كلمة مرورك تعني دخول حسابك ÙÙŠ â€%1$s“، لذلك احمها بحرص وتحت أي ظر٠من الظرو٠لا تعطها أحدًا لها علاقة بـâ€%1$s“ أو phpBB أو أي طر٠ثالث يسألك عن كلمة مرورك. إذا Ùقدت كلمة مرورك الخاصة بحسابك بإمكانك استعمال خدمة â€Ùقدت كلمة المرور“ المقدمة من برنامج phpBB. هذه العملية ستسألك عن اسم عضويتك وبريدك الإلكتروني وبعد ذلك برنامج phpBB سينشئ لك كلمة مرور جديدة لكي تدخل بها إلى حسابك.
    ', +)); + +// Common language entries +$lang = array_merge($lang, array( + 'ACCOUNT_ACTIVE' => 'تم تنشيط حسابك. شكرًا لتسجيلك معنا', + 'ACCOUNT_ACTIVE_ADMIN' => 'تم تنشيط الحساب', + 'ACCOUNT_ACTIVE_PROFILE' => 'تنشطط حسابك بنجاح', + 'ACCOUNT_ADDED' => 'شكرًا لتسجيلك، تم تكوين حسابك. يمكنك الآن الدخول باستخدام اسم المستخدم وكلمة المرور', + 'ACCOUNT_COPPA' => 'تم تكوين حسابك لكنه يحتاج للمواÙقة. راجع بريدك لمزيد من التÙاصيل', + 'ACCOUNT_EMAIL_CHANGED' => 'تحدثت معلومات حسابك بنجاح، هذا المنتدى يتطلب إعادة تنشيط العضوية عند تغيير البريد الالكتروني، لقد Ø£ÙرسÙÙ„ رابط تنشيط العضوية إلى البريد الالكتروني الذي أدخلته. راجع بريدك للمزيد من المعلومات', + 'ACCOUNT_EMAIL_CHANGED_ADMIN' => 'تحدث حسابك بنجاح، ولكن هذا المنتدى يتطلب إعادة تنشيط العضوية بواسطة الإدارة عند تغيير البريد الاإكتروني، لقد Ø£ÙرسÙÙ„ بريد لإدارة المنتدى لإخبارهم بذلك وستÙبلَغ عندما ÙŠÙعاد تنشيط حسابك من جديد', + 'ACCOUNT_INACTIVE' => 'تم تكوين حسابك. هذا المنتدى يطلب تنشيط الاشتراك عن طريق البريد الالكتروني. راجÙع بريدك واضغط على رابط تنشيط العضوية', + 'ACCOUNT_INACTIVE_ADMIN' => 'تم تكوين حسابك. هذا المنتدى يطلب تنشيط الاشتراك عن طريق إدارة المنتدى وقد أرسÙÙ„ طلب التنشيط لهم. عليك الانتظار حتى ÙŠÙنشّط حسابك', + 'ACTIVATION_EMAIL_SENT' => ' أرسÙÙ„ رابط تنشيط الاشتراك إلى بريدك', + 'ACTIVATION_EMAIL_SENT_ADMIN' => 'أرسÙلت رسالة التÙعيل إلى بريد المدير الإلكتروني', + 'ADD' => 'أضÙ', + 'ADD_BCC' => 'أض٠[نسخة إلى]', + 'ADD_FOES' => 'أض٠عضو لقائمة التجاهل', + 'ADD_FOES_EXPLAIN' => 'عليك وضع كل اسم ÙÙŠ سطر منÙرد عند إدخال عدة أسماء', + 'ADD_FOLDER' => 'أض٠مجلد', + 'ADD_FRIENDS' => 'أض٠عضو لقائمة الأصدقاء', + 'ADD_FRIENDS_EXPLAIN' => 'عليك وضع كل اسم ÙÙŠ سطر منÙرد عند إدخال عدة أسماء', + 'ADD_NEW_RULE' => 'أض٠شرط جديد', + 'ADD_RULE' => 'أض٠شرط', + 'ADD_TO' => 'أض٠[مستلم]', + 'ADD_USERS_UCP_EXPLAIN' => 'من هنا يمكنك إضاÙØ© عضو جديد للمجموعة. يمكنك الاختيار إذا كنت تريد هذه المجموعة أن تصبح المجموعة الاÙتراضية للأعضاء المحددين. رجاءً ضع كل اسم عضو ÙÙŠ سطر مستقل.', + 'ADMIN_EMAIL' => 'استقبال بريد الكتروني من إدارة المنتدى', + 'AGREE' => 'مواÙÙ‚ على هذه الشروط', + 'ALLOW_PM' => 'السماح للأعضاء بإرسال رسائل خاصة إليك', + 'ALLOW_PM_EXPLAIN' => 'السماح باستقبال الرسائل من إدارة المنتدى والمشرÙين', + 'ALREADY_ACTIVATED' => 'اشتراكك Ù…Ùعّل مسبقًا', + 'ATTACHMENTS_EXPLAIN' => 'قائمة المرÙقات الخاصة بك ÙÙŠ هذا المنتدى', + 'ATTACHMENTS_DELETED' => 'حذÙÙَت المرÙقات بنجاح', + 'ATTACHMENT_DELETED' => 'Ø­ÙØ°Ù٠المرÙÙ‚ بنجاح', + 'AUTOLOGIN_SESSION_KEYS_DELETED'=> 'تم حذ٠مÙاتيح "تذكرني" المحددة بنجاح.', + 'AVATAR_CATEGORY' => 'تصنيÙ', + 'AVATAR_DRIVER_GRAVATAR_TITLE' => 'Gravatar', + 'AVATAR_DRIVER_GRAVATAR_EXPLAIN'=> 'Gravatar هي خدمة تتيح لك استخدام Ù†Ùس الصورة الرمزية ÙÙŠ أكثر من موقع. قم بزيارة Gravatar لمزيد من المعلومات.', + 'AVATAR_DRIVER_LOCAL_TITLE' => 'معرض الصور الرمزية', + 'AVATAR_DRIVER_LOCAL_EXPLAIN' => 'يمكنك اختيار صورتك الرمزية من مجموعة صورة رمزية متوÙرة محليًا.', + 'AVATAR_DRIVER_REMOTE_TITLE' => 'صورة رمزية بعيدة', + 'AVATAR_DRIVER_REMOTE_EXPLAIN' => 'رابط لصورة رمزية من موقع آخر.', + 'AVATAR_DRIVER_UPLOAD_TITLE' => 'تحميل صورة رمزية', + 'AVATAR_DRIVER_UPLOAD_EXPLAIN' => 'تحميل صورتك الرمزية الخاصة.', + 'AVATAR_EXPLAIN' => 'الحجم الأقصى; العرض %1$sØŒ الطول %2$sØŒ حجم المل٠%3$.2f كيلوبايت', + 'AVATAR_EXPLAIN_NO_FILESIZE' => 'الأبعاد القصوى; العرض: %1$s, الارتÙاع: %2$s.', + 'AVATAR_FEATURES_DISABLED' => 'ميزة الصورة الرمزية غير Ùعالة', + 'AVATAR_GALLERY' => 'المعرض المحلي', + 'AVATAR_GENERAL_UPLOAD_ERROR' => 'لم تÙرÙع الصورة إلى %s', + 'AVATAR_NOT_ALLOWED' => 'لا يمكن عرض الصورة الرمزية لأن الصور الرمزية قد منعَت.', + 'AVATAR_PAGE' => 'صÙحة', + 'AVATAR_SELECT' => 'اختر الصورة الرمزية', + 'AVATAR_TYPE' => 'نوع الصورة الرمزية', + 'AVATAR_TYPE_NOT_ALLOWED' => 'لا يمكن عرض صورتك الرمزية لأنه قد Ù…ÙÙ†Ùع نوعها من العرض، حاول أن تكون الصورة ذات لاحقة أخرى.', + + 'BACK_TO_DRAFTS' => 'العودة إلى المسودات المحÙوظة', + 'BACK_TO_LOGIN' => 'العودة إلى صÙحة الدخول', + 'BIRTHDAY' => 'تاريخ الميلاد', + 'BIRTHDAY_EXPLAIN' => 'وضع السنة سو٠يعرض عمرك بجوار اسم المستخدم عندما يأتي يوم ميلادك', + 'BOARD_DATE_FORMAT' => 'صيغة التاريخ', + 'BOARD_DATE_FORMAT_EXPLAIN' => 'الصيغة المستخدمة مطابقة لدالة date() الخاصة بالـphp', + 'BOARD_LANGUAGE' => 'اللغة', + 'BOARD_STYLE' => 'ستايل المنتدى', + 'BOARD_TIMEZONE' => 'خط الزمن', + 'BOOKMARKS' => 'المÙضلة', + 'BOOKMARKS_EXPLAIN' => 'يمكنك إضاÙØ© المواضيع إلى المÙضلة للعودة إليها مستقبلًا. قم باختيار أي موضوع تود حذÙÙ‡ من المÙضلة، ثم اضغط على حذ٠المواضيع المحددة', + 'BOOKMARKS_DISABLED' => 'تم تعطيل خاصية المÙضلة ÙÙŠ هذا المنتدى', + 'BOOKMARKS_REMOVED' => 'Ø­ÙØ°Ùت المواضيع من المÙضلة بنجاح', + + 'CANNOT_EDIT_MESSAGE_TIME' => 'لم يعد بإمكانك تعديل هذه الرسالة أو حذÙها', + 'CANNOT_MOVE_TO_SAME_FOLDER'=> 'لا يمكن نقل الرسائل إلى مجلد تريد حذÙÙ‡', + 'CANNOT_MOVE_FROM_SPECIAL' => 'الرسائل لا يمكن نقلها من صندوق الصادر', + 'CANNOT_RENAME_FOLDER' => 'لا يمكن تغيير اسم هذا المجلد', + 'CANNOT_REMOVE_FOLDER' => 'لا يمكن حذ٠هذا المجلد', + 'CHANGE_DEFAULT_GROUP' => 'تغيير المجموعة الاÙتراضية', + 'CHANGE_PASSWORD' => 'تغيير كلمة المرور', + 'CLICK_GOTO_FOLDER' => '%1$sاذهب إلى مجلد â€%3$s“ الخاص بك%2$s', + 'CLICK_RETURN_FOLDER' => '%1$sالرجوع إلى â€%3$s“ مجلد%2$s', + 'CONFIRMATION' => 'تأكيد الاشتراك', + 'CONFIRM_CHANGES' => 'تأكيد التغييرات', + 'CONFIRM_EXPLAIN' => 'حماية للمنتدى ينبغي عليك كتابة الرمز الأمني تمامًا كما تراه ظاهرًا ÙÙŠ الصورة، إن لم تتمكن من رؤية الرمز الأمني بوضوح أو لم يظهر لك رجاءً راسل %sإدارة المنتدى%s', + 'VC_REFRESH' => 'تحديث كود التأكيد', + 'VC_REFRESH_EXPLAIN' => 'إذا لم تتمكن من قراءة كود التأكيد تستطيع تحديثه بالضغط على الزر الخاص بذلك', + + 'CONFIRM_PASSWORD' => 'تأكيد كلمة المرور', + 'CONFIRM_PASSWORD_EXPLAIN' => 'تحتاج إلى تأكيد كلمة المرور ÙÙŠ حالة تغييرها Ùقط', + 'COPPA_BIRTHDAY' => 'لإكمال عملية التسجيل عليك إخبارنا عن تاريخ ميلادك', + 'COPPA_COMPLIANCE' => 'رخصة', + 'COPPA_EXPLAIN' => 'يرجى ملاحظة أنه بالضغط على تقديم سو٠ينشَأ حسابك، لكن لا يمكن تنشيط الحساب حتى ÙŠÙسمح بذلك عبر أحد الوالدين أو الوصي للمواÙقة على التسجيل، ستÙرسَل نسخة من الوثيقة عبر البريد الإلكتروني مع كامل التÙاصيل', + 'CREATE_FOLDER' => 'أض٠مجلد …', + 'CURRENT_IMAGE' => 'الصورة الحالية', + 'CURRENT_PASSWORD' => 'كلمة المرور الحالية', + 'CURRENT_PASSWORD_EXPLAIN' => 'يجب عليك إدخال كلمة مرورك إذا أردت تغيير بريدك أو اسم المستخدم.', + 'CURRENT_CHANGE_PASSWORD_EXPLAIN' => 'لتغيير كلمة مرورك، بريدك، أو اسم المستخدم، يجب عليك إدخال كلمة مرورك الحالية.', + 'CUR_PASSWORD_EMPTY' => 'لم تقم بإدخال كلمة مرورك الحالية.', + 'CUR_PASSWORD_ERROR' => 'كلمة المرور الحالية التي أدخلتها خاطئة', + 'CUSTOM_DATEFORMAT' => 'مخصص', + + 'DEFAULT_ACTION' => 'عمل اÙتراضي', + 'DEFAULT_ACTION_EXPLAIN' => 'سيتم تحديد هذه الوظيÙØ© ÙÙŠ حالة عدم تحديد أي وظيÙØ© ÙÙŠ الأعلى', + 'DEFAULT_ADD_SIG' => 'أرÙÙÙ‚ التوقيع تلقائيًا', + 'DEFAULT_BBCODE' => 'تشغيل BBCode تلقائيًا', + 'DEFAULT_NOTIFY' => 'إشعاري بوجود ردود جديدة تلقائيًا', + 'DEFAULT_SMILIES' => 'تشغيل الابتسامات تلقائيًا', + 'DEFINED_RULES' => 'الشروط المعرÙØ©', + 'DELETED_TOPIC' => ' Ø­ÙØ°Ù٠الموضوع', + 'DELETE_ATTACHMENT' => 'حذ٠المل٠المرÙÙ‚', + 'DELETE_ATTACHMENTS' => 'حذ٠الملÙات المرÙقة', + 'DELETE_ATTACHMENT_CONFIRM' => 'هل أنت متأكد من حذ٠هذا المرÙق؟', + 'DELETE_ATTACHMENTS_CONFIRM'=> 'هل أنت متأكد من حذ٠هذه المرÙقات؟', + 'DELETE_AVATAR' => 'حذ٠الصورة', + 'DELETE_COOKIES_CONFIRM' => 'هل أنت متأكد من حذ٠ملÙات تعري٠الارتباط (الكوكيز) لهذا المنتدى؟', + 'DELETE_MARKED_PM' => 'حذ٠الرسائل المختارة', + 'DELETE_MARKED_PM_CONFIRM' => 'هل أنت متأكد من حذ٠الرسائل المختارة كلها؟', + 'DELETE_OLDEST_MESSAGES' => 'حذ٠الرسائل القديمة', + 'DELETE_MESSAGE' => 'حذ٠الرسالة', + 'DELETE_MESSAGE_CONFIRM' => 'هل أنت متأكد من حذ٠هذه الرسالة الخاصة؟', + 'DELETE_MESSAGES_IN_FOLDER' => 'حذ٠الرسائل الموجودة كلها داخل المجلد المحذوÙ', + 'DELETE_RULE' => 'حذ٠الشرط', + 'DELETE_RULE_CONFIRM' => 'هل أنت متأكد من حذ٠هذا الشرط؟', + 'DEMOTE_SELECTED' => 'تنزيل المختار', + 'DISABLE_CENSORS' => 'تنشيط مراقبة الكلمات', + 'DISPLAY_GALLERY' => 'إظهار المعرض', + 'DOMAIN_NO_MX_RECORD_EMAIL' => 'البريد المدخل غير صحيح', + 'DOWNLOADS' => 'تحميل', + 'DRAFTS_DELETED' => 'حذÙÙت المسودات المختارة كلها بنجاح', + 'DRAFTS_EXPLAIN' => 'هنا يمكنك مشاهدة وتعديل وحذ٠مسوداتك المحÙوظة', + 'DRAFT_UPDATED' => 'تحدثت المسودة بنجاح', + + 'EDIT_DRAFT_EXPLAIN' => 'هنا تستطيع تعديل مسوداتك، المسودات لا تحتوي على المرÙقات أو التصويت', + 'EMAIL_BANNED_EMAIL' => 'البريد الإلكتروني المدخل غير مسموح به', + 'EMAIL_REMIND' => 'ينبغي عليك إدخال البريد الإلكتروني الذي سجلت به', + 'EMAIL_TAKEN_EMAIL' => 'البريد الإلكتروني المدخل موجود حاليًا', + 'EMPTY_DRAFT' => 'ينبغي عليك إدخال رسالة لإرسال تعديلاتك', + 'EMPTY_DRAFT_TITLE' => 'ينبغي عليك إدخال عنوان للمسودة', + 'EXPORT_AS_XML' => 'تصدير كـ XML', + 'EXPORT_AS_CSV' => 'تصدير كـ CSV', + 'EXPORT_AS_CSV_EXCEL' => 'تصدير كـ CSV (مل٠إكسل)', + 'EXPORT_AS_TXT' => 'تصدير كـ TXT', + 'EXPORT_AS_MSG' => 'تصدير كـ MSG', + 'EXPORT_FOLDER' => 'تصدير مجلد', + + 'FIELD_REQUIRED' => 'الحقل â€%s“ ينبغي عليك إكماله', + 'FIELD_TOO_SHORT' => array( + 1 => 'الحقل â€%2$s“ قصير جدًا، على الأقل يجب أن يكون Ùيه حرÙًا واحدًا.', + 2 => 'الحقل â€%2$s“ قصير جدًا، على الأقل يجب أن يكون Ùيه حرÙان.', + 3 => 'الحقل â€%2$s“ قصير جدًا، على الأقل يجب أن يكون Ùيه %1$d حروÙ.', + 4 => 'الحقل â€%2$s“ قصير جدًا، على الأقل يجب أن يكون Ùيه %1$d حرÙًا.', + 5 => 'الحقل â€%2$s“ قصير جدًا، على الأقل يجب أن يكون Ùيه %1$d حرÙ.', + ), + 'FIELD_TOO_LONG' => array( + 1 => 'الحقل â€%2$s“ طويل جدًا، غير مسموح بأكثر من حر٠واحد.', + 2 => 'الحقل â€%2$s“ طويل جدًا، غير مسموح بأكثر من حرÙين.', + 3 => 'الحقل â€%2$s“ طويل جدًا، غير مسموح بأكثر من %1$d حروÙ.', + 4 => 'الحقل â€%2$s“ طويل جدًا، غير مسموح بأكثر من %1$d حرÙًا.', + 5 => 'الحقل â€%2$s“ طويل جدًا، غير مسموح بأكثر من %1$d حرÙ.', + ), + 'FIELD_TOO_SMALL' => 'القيمة المدخلة ÙÙŠ â€%1$s“ صغيرة جدًا. أدنى قيمة مطالب بها هي %2$d', + 'FIELD_TOO_LARGE' => 'القيمة المدخلة ÙÙŠ â€%1$s“ كبيرة جدًا. أقصى قيمة مسموح بها هي %2$d', + 'FIELD_INVALID_CHARS_INVALID' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة.', + 'FIELD_INVALID_CHARS_NUMBERS_ONLY' => 'الحقل â€%s“ يحتوي قيمة خاطئة. الأرقام Ùقط مسموح بها', + 'FIELD_INVALID_CHARS_ALPHA_DOTS' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحروÙØŒ الأرقام أو. مسموح بهم.', + 'FIELD_INVALID_CHARS_ALPHA_ONLY' => 'الحقل â€%s“ يحتوي قيمة خاطئة. يسمح باستخدام الحرو٠Ùقط', + 'FIELD_INVALID_CHARS_ALPHA_PUNCTUATION' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحروÙØŒ الأرقام أو _,-. مسموح بهم ويجب أن يبدأ بحرÙ.', + 'FIELD_INVALID_CHARS_ALPHA_SPACERS' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحروÙØŒ الأرقام، المساÙات أو -+_[] مسموح بهم.', + 'FIELD_INVALID_CHARS_ALPHA_UNDERSCORE' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحروÙØŒ الأرقام أو _ مسموح بهم.', + 'FIELD_INVALID_CHARS_LETTER_NUM_DOTS' => 'الحقل â€%s“ يحتوي على حرو٠غير صححة، Ùقط الحروÙØŒ الأرقام أو . هي الأحر٠المسموحة.', + 'FIELD_INVALID_CHARS_LETTER_NUM_ONLY' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحرو٠والأرقام هي الأحر٠المسموحة.', + 'FIELD_INVALID_CHARS_LETTER_NUM_PUNCTUATION' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحروÙØŒ الأرقام أو _,-. هي الأحر٠المسموحة والبادئة يجب أن تكون حرÙًا أبجديًا.', + 'FIELD_INVALID_CHARS_LETTER_NUM_SPACERS' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحروÙØŒ الأرقام، المساÙات أو -+_[] هي الأحر٠المسموحة.', + 'FIELD_INVALID_CHARS_LETTER_NUM_UNDERSCORE' => 'الحقل â€%s“ يحتوي على حرو٠غير صحيحة، Ùقط الحروÙØŒ الأرقام أو _ هي الأحر٠المسموحة.', + 'FIELD_INVALID_DATE' => 'الحقل â€%s“ يحتوي على تاريخ خاطئ', + 'FIELD_INVALID_URL' => 'الحقل â€%s“ يحتوي على رابط خاطئ.', + 'FIELD_INVALID_VALUE' => 'الحقل â€%s“ يحتوي على قيمة خاطئة.', + + 'FOE_MESSAGE' => 'رسالة من عضو ÙÙŠ قائمة التجاهل', + 'FOES_EXPLAIN' => 'المتجاهلون هم الأعضاء المحظورون تلقائيًا، مشاركات هؤلاء الأعضاء لن تكون ظاهرة أمامك ولكن الرسائل الخاصة منهم مصرح بها، انتبه إلى أنه لا يمكنك حظر المديرين والمشرÙين', + 'FOES_UPDATED' => 'تحدثت قائمة التجاهل بنجاح', + 'FOLDER_ADDED' => 'أضيÙت المجلد بنجاح', + 'FOLDER_MESSAGE_STATUS' => array( + 1 => 'Ø­Ùظت %2$d من %1$s', + 2 => 'Ø­Ùظت %2$d من %1$s', + ), + 'FOLDER_NAME_EMPTY' => 'ينبغي عليك إدخال اسم للمجلد.', + 'FOLDER_NAME_EXIST' => 'المجلد %s موجود مسبقًا', + 'FOLDER_OPTIONS' => 'خيارات المجلد', + 'FOLDER_RENAMED' => 'تغيّر اسم المجلد بنجاح', + 'FOLDER_REMOVED' => 'Ø­ÙØ°Ù٠المجلد بنجاح', + 'FOLDER_STATUS_MSG' => array( + 1 => 'المجلد مملوء بنسبة %3$d%% (%2$d من %1$s محÙوظة)', + 2 => 'المجلد مملوء بنسبة %3$d%% (%2$d من %1$s محÙوظة)', + ), + 'FORWARD_PM' => 'إعادة إرسال', + 'FORCE_PASSWORD_EXPLAIN' => 'قبل إكمال عملية تصÙØ­ المنتدى عليك تغيير كلمة المرور', + 'FRIEND_MESSAGE' => 'رسالة من صديق', + 'FRIENDS' => 'الأصدقاء', + 'FRIENDS_EXPLAIN' => 'قائمة الأصدقاء تمكنك من الوصول السريع للأعضاء الذين تتواصل معهم بشكل متكرر، وربما يتم تحديد المشاركات الخاصة بهم إذا كان استايل المنتدى يدعم ذلك', + 'FRIENDS_OFFLINE' => 'غير متصل', + 'FRIENDS_ONLINE' => 'متصل', + 'FRIENDS_UPDATED' => 'تحدّثت قائمة الأصدقاء بنجاح', + 'FULL_FOLDER_OPTION_CHANGED'=> 'العميلة التي تحدث عند امتلاء المجلد تغيرت بنجاح', + 'FWD_ORIGINAL_MESSAGE' => '-------- الرسالة الأصلية --------', + 'FWD_SUBJECT' => 'العنوان: %s', + 'FWD_DATE' => 'التاريخ: %s', + 'FWD_FROM' => 'من: %s', + 'FWD_TO' => 'إلى: %s', + + 'GLOBAL_ANNOUNCEMENT' => 'إعلان عام', + + 'GRAVATAR_AVATAR_EMAIL' => 'بريد Gravatar', + 'GRAVATAR_AVATAR_EMAIL_EXPLAIN' => 'أدخل البريد الالكتروني الذي استعملته عند تسجيل حسابك ÙÙŠ Gravatar.', + 'GRAVATAR_AVATAR_SIZE' => 'أبعاد الصورة الرمزية', + 'GRAVATAR_AVATAR_SIZE_EXPLAIN' => 'حدد العرض والطول لصورتك الرمزية، أتركها Ùارغة لمحاولة معرÙØ© الأبعاد آليًا.', + + 'HIDE_ONLINE' => 'أخ٠حالتي ÙÙŠ المنتدى', + 'HIDE_ONLINE_EXPLAIN' => 'تغيير هذا الإعداد إلى "لا" لن يكون Ùعالًا إلا عند زيارتك القادمة', + 'HOLD_NEW_MESSAGES' => 'لا تستقبل رسائل جديدة (الرسائل الجديدة ستبقى معلقة إلى أن تتوÙر مساحة كاÙية)', + 'HOLD_NEW_MESSAGES_SHORT' => 'Ø£Ùعيدت الرسائل الجديدة بنجاح', + + 'IF_FOLDER_FULL' => 'ÙÙŠ حالة امتلاء المجلد', + 'IMPORTANT_NEWS' => 'إعلانات هامة', + 'INVALID_USER_BIRTHDAY' => 'تاريخ الميلاد المدخل غير صحيح!', + 'INVALID_CHARS_USERNAME' => 'اسم المستخدم يحتوي قيم محظورة', + 'INVALID_CHARS_NEW_PASSWORD'=> 'كلمة المرور لا تحتوي على القيم المطلوبة', + 'ITEMS_REQUIRED' => 'الحقول المعلمة بـ * مطلوبة', + + 'JOIN_SELECTED' => 'الانضمام للمحددة', + + 'LANGUAGE' => 'اللغة', + 'LINK_REMOTE_AVATAR' => 'الربط بصورة خارجية', + 'LINK_REMOTE_AVATAR_EXPLAIN'=> 'أدخل الرابط الذي يحتوي على الصورة التي ترغب بوضعها', + 'LINK_REMOTE_SIZE' => 'أبعاد الصورة الرمزية', + 'LINK_REMOTE_SIZE_EXPLAIN' => 'تحديد العرض والطول للصورة الرمزية. أو اتركه Ùارغًا ليقوم المنتدى بذلك تلقائيًا', + 'LOGIN_EXPLAIN_UCP' => 'من Ùضلك سجل الدخول للوصول إلى لوحة التحكم', + 'LOGIN_LINK' => 'أربط أو سجل حسابك ÙÙŠ خدمة خارجية عن طريق حساب المنتدى', + 'LOGIN_LINK_EXPLAIN' => 'لقد حاولت الدخول إلى خدمة خارجية غير مرتبطة بعد بحساب على هذا المنتدى. يجب عليك الآن إما أن تربط هذا الحساب بحساب موجود أو أن تنشئ حسابًا جديدًا.', + 'LOGIN_LINK_MISSING_DATA' => 'البيانات المطلوبة لربط حسابك مع الخدمة الخارجية غير متوÙرة. يرجى إعادة عملية الدخول مرة أخرى.', + 'LOGIN_LINK_NO_DATA_PROVIDED' => 'لم يتم توÙير بيانات لهذه الصÙحة لربط حساب خارجي بحساب ÙÙŠ المنتدى. يرجى الاتصال بمدير المنتدى إذا استمريت ÙÙŠ مواجهة مشاكل.', + 'LOGIN_KEY' => 'Ù…Ùتاح الدخول', + 'LOGIN_TIME' => 'وقت الدخول', + 'LOGIN_REDIRECT' => 'تم تسجيل الدخول بنجاح!', + 'LOGOUT_FAILED' => 'لم ÙŠÙسجل خروجك بنجاح وذلك لاختلا٠رقم الجلسة، إذا واجهتك المزيد من المشاكل Ùيرجى منك الاتصال بمدير المنتدى', + 'LOGOUT_REDIRECT' => 'تم تسجيل الخروج بنجاح!', + + 'MARK_IMPORTANT' => 'تحديده مهما', + 'MARKED_MESSAGE' => 'رسالة محددة', + 'MAX_FOLDER_REACHED' => 'العدد الأقصى للمجلدات الممسوحة للعضو', + 'MESSAGE_BY_AUTHOR' => 'بواسطة', + 'MESSAGE_COLOURS' => 'ألوان الرسالة', + 'MESSAGE_DELETED' => 'حذÙَت الرسالة بنجاح', + 'MESSAGE_EDITED' => 'تم تعديل الرسالة بنجاح', + 'MESSAGE_HISTORY' => 'تاريخ الرسالة', + 'MESSAGE_REMOVED_FROM_OUTBOX' => 'لقد حذÙÙَت هذه الرسالة بواسطة الشخص المرسل قبل أن تÙسلّم', + 'MESSAGE_SENT_ON' => 'ÙÙŠ', + 'MESSAGE_STORED' => 'أرسÙلت الرسالة بنجاح', + 'MESSAGE_TO' => 'إلى', + 'MESSAGES_DELETED' => 'حذÙÙَت الرسائل بنجاح', + 'MOVE_DELETED_MESSAGES_TO' => 'نقل الرسائل من المجلد المحذو٠إلى', + 'MOVE_DOWN' => 'تحريك للأسÙÙ„', + 'MOVE_MARKED_TO_FOLDER' => 'نقل المحدد إلى %s', + 'MOVE_PM_ERROR' => array( + 1 => 'حدث خطأ أثناء نقل الرسائل إلى مجلد جديد، Ùقط رسالة واحدة من %1$s تم نقلها.', + 2 => 'حدث خطأ أثناء نقل الرسائل إلى مجلد جديد، Ùقط رسالتان من %1$s تم نقلهم.', + 3 => 'حدث خطأ أثناء نقل الرسائل إلى مجلد جديد، Ùقط %2$d رسائل من %1$s تم نقلهم.', + 4 => 'حدث خطأ أثناء نقل الرسائل إلى مجلد جديد، Ùقط %2$d رسالة من %1$s تم نقلهم.', + 5 => 'حدث خطأ أثناء نقل الرسائل إلى مجلد جديد، Ùقط %2$d رسالة من %1$s تم نقلهم.', + ), + 'MOVE_TO_FOLDER' => 'نقل إلى مجلد', + 'MOVE_UP' => 'تحريك للأعلى', + + 'NEW_FOLDER_NAME' => 'اسم مجلد جديد', + 'NEW_PASSWORD' => 'كلمة مرور جديدة', + 'NEW_PASSWORD_CONFIRM_EMPTY' => 'لم تقم بإدخال تأكيد كلمة المرور.', + 'NEW_PASSWORD_ERROR' => 'كلمة المرور التي أدخلتها غير متطابقة', + + 'NOTIFICATIONS_MARK_ALL_READ' => 'اعتبر كل الإشعارات مقروءة', + 'NOTIFICATIONS_MARK_ALL_READ_CONFIRM' => 'هل أنت متأكد أنك تريد اعتبار جميع الاشعارات مقروءة؟', + 'NOTIFICATIONS_MARK_ALL_READ_SUCCESS' => 'تم اعتبار جميع الإشعارات مقروءة.', + 'NOTIFICATION_GROUP_MISCELLANEOUS' => 'إشعارات عامة', + 'NOTIFICATION_GROUP_MODERATION' => 'إشعارات الإشراÙ', + 'NOTIFICATION_GROUP_ADMINISTRATION' => 'إشعارات الإدارة', + 'NOTIFICATION_GROUP_POSTING' => 'إشعارات المشاركة', + 'NOTIFICATION_METHOD_BOARD' => 'الإشعارات', + 'NOTIFICATION_METHOD_EMAIL' => 'البريد الالكتروني', + 'NOTIFICATION_METHOD_JABBER' => 'Jabber', + 'NOTIFICATION_TYPE' => 'نوع الإشعار', + 'NOTIFICATION_TYPE_BOOKMARK' => 'شخص قام بالرد على موضوع من المÙضلة', + 'NOTIFICATION_TYPE_GROUP_REQUEST' => 'شخص يطلب الانضمام لمجموعة أن رئيسها', + 'NOTIFICATION_TYPE_IN_MODERATION_QUEUE' => 'مشاركة أو موضوع يحتاج إلى المواÙقة عليه', + 'NOTIFICATION_TYPE_MODERATION_QUEUE' => 'المواÙقة على أو رÙض مواضيعك/مشاركاتك بواسطة أحد المشرÙين', + 'NOTIFICATION_TYPE_PM' => 'شخص أرسل لك رسالة خاصة', + 'NOTIFICATION_TYPE_POST' => 'شخص قام بالرد على موضوع أنت مشترك به', + 'NOTIFICATION_TYPE_QUOTE' => 'شخص قام باقتباس رد لك ÙÙŠ إحدى المشاركات', + 'NOTIFICATION_TYPE_REPORT' => 'شخص قام بالتبليغ عن مشاركة', + 'NOTIFICATION_TYPE_TOPIC' => 'شخص قام بإنشاء موضوع جديد ÙÙŠ منتدى أنت مشترك به', + 'NOTIFICATION_TYPE_ADMIN_ACTIVATE_USER' => 'أعضاء مسجلين حديثًا يتطلبون التÙعيل', + + 'NOTIFY_METHOD' => 'طريقة الإشعار', + 'NOTIFY_METHOD_BOTH' => 'الكل', + 'NOTIFY_METHOD_EMAIL' => 'البريد الإلكتروني Ùقط', + 'NOTIFY_METHOD_EXPLAIN' => 'طريقة إرسال الرسائل من هذا المنتدى', + 'NOTIFY_METHOD_IM' => 'Jabber Ùقط', + 'NOTIFY_ON_PM' => 'إشعاري بوجود رسائل خاصة جديدة', + 'NOT_ADDED_FRIENDS_ANONYMOUS' => 'لا يمكنك إضاÙØ© زائر إلى قائمة الأصدقاء', + 'NOT_ADDED_FRIENDS_BOTS' => 'لا يمكنك أن تضي٠محرك بحث إلى قائمة الأصدقاء.', + 'NOT_ADDED_FRIENDS_FOES' => 'لا يمكنك إضاÙØ© الأعضاء الموجودين ÙÙŠ قائمة التجاهل إلى قائمة الأصدقاء', + 'NOT_ADDED_FRIENDS_SELF' => 'لا يمكنك إضاÙØ© Ù†Ùسك إلى قائمة الأصدقاء', + 'NOT_ADDED_FOES_MOD_ADMIN' => 'لا يمكنك إضاÙØ© المدراء والمشرÙين إلى قائمة التجاهل', + 'NOT_ADDED_FOES_ANONYMOUS' => 'لا يمكنك إضاÙØ© زائر إلى قائمة التجاهل', + 'NOT_ADDED_FOES_BOTS' => 'لا يمكنك إضاÙØ© محرك بحث على قائمة التجاهل.', + 'NOT_ADDED_FOES_FRIENDS' => 'لا يمكنك إضاÙØ© الأعضاء الموجودين ÙÙŠ قائمة الأصدقاء إلى قائمة التجاهل', + 'NOT_ADDED_FOES_SELF' => 'لا يمكنك إضاÙØ© Ù†Ùسك إلى قائمة التجاهل', + 'NOT_AGREE' => 'غير مواÙÙ‚ على هذه الشروط', + 'NOT_ENOUGH_SPACE_FOLDER' => 'لم تنÙـّذ المهمة المطلوبة لأن المجلد الهد٠â€%s“ ممتلئ', + 'NOT_MOVED_MESSAGES' => array( + 1 => 'لديك حاليًا رسالة خاصة بالانتظار لأن مجلد رسائلك ممتلئ تمامًا.', + 2 => 'لديك حاليًا رسالتان خاصتان بالانتظار لأن مجلد رسائلك ممتلئ تمامًا', + 3 => 'لديك حاليًا %d رسائل خاصة بالانتظار لأن مجلد رسائلك ممتلئ تمامًا', + 4 => 'لديك حاليًا %d رسالة خاصة بالانتظار لأن مجلد رسائلك ممتلئ تمامًا', + 5 => 'لديك حاليًا %d رسالة خاصة بالانتظار لأن مجلد رسائلك ممتلئ تمامًا', + ), + 'NO_ACTION_MODE' => 'لم يحدّد قرار للرسائل', + 'NO_AUTHOR' => 'لم يتم تحديد كاتب لهذه الرسالة', + 'NO_AVATAR' => 'لم يتم اختيار صورة رمزية', + 'NO_AVATAR_CATEGORY' => 'لا يوجد', + + 'NO_AUTH_DELETE_MESSAGE' => 'ليست لديك الصلاحية لحذ٠الرسائل الخاصة', + 'NO_AUTH_EDIT_MESSAGE' => 'ليست لديك الصلاحية لتعديل الرسائل الخاصة', + 'NO_AUTH_FORWARD_MESSAGE' => 'ليست لديك الصلاحية لإعادة إرسال الرسائل الخاصة', + 'NO_AUTH_GROUP_MESSAGE' => 'ليست لديك الصلاحية لإرسال الرسائل الخاصة إلى المجموعات', + 'NO_AUTH_PASSWORD_REMINDER' => 'ليست لديك الصلاحية لطلب كلمة مرور جديدة', + 'NO_AUTH_PROFILEINFO' => 'ليست لديك الصلاحية لتغيير بياناتك.', + 'NO_AUTH_READ_HOLD_MESSAGE' => 'ليست لديك الصلاحية لقراءة الرسائل الخاصة المعلقة', + 'NO_AUTH_READ_MESSAGE' => 'ليست لديك الصلاحية لقراءة الرسائل الخاصة', + 'NO_AUTH_READ_REMOVED_MESSAGE' => 'لا يمكنك قراءة هذه الرسالة بسبب حذÙها بواسطة كاتبها', + 'NO_AUTH_SEND_MESSAGE' => 'ليست لديك الصلاحية لإرسال الرسائل الخاصة', + 'NO_AUTH_SIGNATURE' => 'ليست لديك الصلاحية لتعري٠التوقيع', + + 'NO_BCC_RECIPIENT' => 'لا يوجد', + 'NO_BOOKMARKS' => 'لا توجد مواضيع Ù…Ùضلة', + 'NO_BOOKMARKS_SELECTED' => 'لم تختر مواضيع Ù…Ùضلة', + 'NO_EDIT_READ_MESSAGE' => 'الرسالة الشخصية لا يمكن تعديلها بعد قراءتها', + 'NO_EMAIL_USER' => 'لم يعثَر على اسم المستخدم/البريد الذي Ø£ÙدخÙÙ„', + 'NO_FOES' => 'لا يوجد أي عضو ÙÙŠ قائمة التجاهل', + 'NO_FRIENDS' => 'لا يوجد أي عضو ÙÙŠ قائمة الأصدقاء', + 'NO_FRIENDS_OFFLINE' => 'لا يوجد صديق غير متصل', + 'NO_FRIENDS_ONLINE' => 'لا يوجد صديق متصل', + 'NO_GROUP_SELECTED' => 'لم تÙحدّد مجموعة', + 'NO_IMPORTANT_NEWS' => 'لا توجد إعلانات هامة', + 'NO_MESSAGE' => 'لم يعثَر على رسالة خاصة', + 'NO_NEW_FOLDER_NAME' => 'لم تقم بتحديد اسم مجلد جديد', + 'NO_NEWER_PM' => 'لا رسائل جديدة', + 'NO_OLDER_PM' => 'لا رسائل قديمة', + 'NO_PASSWORD_SUPPLIED' => 'لا يمكنك تسجيل الدخول بدون كلمة سر', + 'NO_RECIPIENT' => 'لا مستقبل محدد', + 'NO_RULES_DEFINED' => 'لا شروط محددة', + 'NO_SAVED_DRAFTS' => 'لا مسودات محÙوظة', + 'NO_TO_RECIPIENT' => 'لا يوجد', + 'NO_WATCHED_FORUMS' => 'أنت غير مشترك ÙÙŠ أي منتدى', + 'NO_WATCHED_SELECTED' => 'لم تختر منتدى أو موضوعا للاشتراك به!', + 'NO_WATCHED_TOPICS' => 'أنت غير مشترك ÙÙŠ أي موضوع', + + 'PASS_TYPE_ALPHA_EXPLAIN' => 'كلمة المرور ينبغي أن يكون طولها بين %1$s Ùˆ %2$s وينبغي أن تحتوي على الحرو٠والأرقام', + 'PASS_TYPE_ANY_EXPLAIN' => 'عدد الحرو٠ينبغي أن يكون بين %1$s Ùˆ %2$s', + 'PASS_TYPE_CASE_EXPLAIN' => 'كلمة المرور ينبغي أن يكون طولها بين %1$s Ùˆ %2$s وينبغي أن تكون مختلطة', + 'PASS_TYPE_SYMBOL_EXPLAIN' => 'كلمة المرور ينبغي أن يكون طولها بين %1$s Ùˆ %2$s وينبغي أن تحتوي على رموز', + 'PASSWORD' => 'كلمة المرور', + 'PASSWORD_ACTIVATED' => 'تم تنشيط كلمة المرور الجديدة الخاصة بك', + 'PASSWORD_UPDATED' => 'Ø£ÙرسÙÙ„ كود التأكيد الجديد إلى بريدك المسجل لدنيا بنجاح', + 'PERMISSIONS_RESTORED' => 'اÙستعيدت الصلاحيات السابقة بنجاح', + 'PERMISSIONS_TRANSFERRED' => 'تحولت الصلاحيات من %s بنجاح، يمكنك الآن تصÙØ­ المنتدى بواسطة صلاحيات المستخدم.
    يرجى العلم بأن صلاحياتك الإدارية لم تحول، ويمكنك استعادة صلاحياتك ÙÙŠ أي وقت', + 'PM_DISABLED' => 'الرسائل الخاصة عطلت ÙÙŠ هذا المنتدى', + 'PM_FROM' => 'من', + 'PM_FROM_REMOVED_AUTHOR' => 'أرسÙلت هذه الرسالة من عضو لم تعد عضويته موجودة', + 'PM_ICON' => 'أيقونة الرسالة الخاصة', + 'PM_INBOX' => 'صندوق الوارد', + 'PM_MARK_ALL_READ' => 'اعتبر جميع الرسائل مقروءة', + 'PM_MARK_ALL_READ_SUCCESS' => 'تم اعتبار جميع الرسائل الخاصة ÙÙŠ هذا المجلد مقروءة', + 'PM_NO_USERS' => 'الأعضاء المحددون للإضاÙØ© غير موجودين', + 'PM_OUTBOX' => 'صندوق الصادر', + 'PM_SENTBOX' => 'الرسائل المرسلة', + 'PM_SUBJECT' => 'موضوع الرسالة', + 'PM_TO' => 'مرسلة إلى', + 'PM_TOOLS' => 'أدوات الرسالة الخاصة', + 'PM_USERS_REMOVED_NO_PERMISSION' => 'لم يمكن إضاÙØ© بعض الأعضاء لأنهم ليست لديهم صلاحية قراءة الرسائل الخاصة.', + 'PM_USERS_REMOVED_NO_PM' => 'لا يمكن إضاÙØ© بعض هؤلاء الأعضاء لأنهم يرÙضون استقبال الرسائل الخاصة', + 'POST_EDIT_PM' => 'تعديل الرسالة', + 'POST_FORWARD_PM' => 'الرسالة الآتية', + 'POST_NEW_PM' => 'إنشاء رسالة', + 'POST_PM_LOCKED' => 'الرسالة الخاصة مغلقة.', + 'POST_PM_POST' => 'اقتباس الإرسال', + 'POST_QUOTE_PM' => 'اقتباس الرسالة', + 'POST_REPLY_PM' => 'الرد على الرسالة', + 'PRINT_PM' => 'نسخة للطباعة', + 'PREFERENCES_UPDATED' => 'Ø­ÙÙظ التحديث بنجاح', + 'PROFILE_INFO_NOTICE' => 'يرجى ملاحظة أن المعلومات سيشاهدها الأعضاء الآخرون، كن حذرًا عند إضاÙØ© أي معلومات شخصية، أي حقول تم تعليمها بـ * ينبغي إكمالها', + 'PROFILE_UPDATED' => 'تم تعديل ملÙÙƒ الشخصي', + 'PROFILE_AUTOLOGIN_KEYS' => 'Ù…Ùاتيح "تذكرني" للدخول تقوم بتسجيل دخولك تلقائيًا عند زيارتك للمنتدى. إذا قمت بتسجيل الخروج، Ùإن Ù…Ùتاح تذكرني يتم حذÙها من على الجهاز الذي تستخدمه لتسجيل الخروج Ùقط. من هنا يمكنك رؤية جميع Ù…Ùاتيح تذكرني الموجودة على أجهزة أخرى قمت باستعمالها للدخول إلى المنتدى.', + 'PROFILE_NO_AUTOLOGIN_KEYS' => 'لا توجد Ù…Ùاتيح "تذكرني" محÙوظة.', + + 'RECIPIENT' => 'المستقبل', + 'RECIPIENTS' => 'المستقبلين', + 'REGISTRATION' => 'التسجيل', + 'RELEASE_MESSAGES' => '%sإطلاق الرسائل المعلقة %s كلها سيقوم هذا الخيار بإعادة تصني٠الرسائل حسب المجلدات المناسبة لها ÙÙŠ حالة وجود مساحة كاÙية', + 'REMOVE_ADDRESS' => 'إلغاء العنوان', + 'REMOVE_SELECTED_BOOKMARKS' => 'حذ٠المواضيع المختارة', + 'REMOVE_SELECTED_BOOKMARKS_CONFIRM' => 'هل أنت متأكد من حذ٠المواضيع المحددة كلها؟', + 'REMOVE_BOOKMARK_MARKED' => 'حذ٠المواضيع المحددة', + 'REMOVE_FOLDER' => 'حذ٠المجلد', + 'REMOVE_FOLDER_CONFIRM' => 'هل أنت متأكد من إلغاء المجلد؟', + 'RENAME' => 'إعادة تسمية', + 'RENAME_FOLDER' => 'إعادة تسمية المجلد', + 'REPLIED_MESSAGE' => 'رسالة تم الرد عليها', + 'REPLY_TO_ALL' => 'أرسل ردا للمرسل وكل المستقبلين.', + 'REPORT_PM' => 'بلغ عن الرسالة الخاصة', + 'RESIGN_SELECTED' => 'إعادة تأشير المحدد', + 'RETURN_FOLDER' => '%1$sالرجوع إلى المجلد السابق%2$s', + 'RETURN_UCP' => '%sالعودة للمل٠الشخصي%s', + 'RULE_ADDED' => 'Ø£Ùضي٠الشرط بنجاح', + 'RULE_ALREADY_DEFINED' => 'هذا الشرط معر٠سابقًا', + 'RULE_DELETED' => 'أزيل الشرط بنجاح', + 'RULE_LIMIT_REACHED' => 'لا يمكنك إضاÙØ© شروط جديدة. لقد وصلت إلى الحد الأقصى من عدد الشروط.', + 'RULE_NOT_DEFINED' => 'لم ÙŠÙعرّ٠الشرط بالصورة الصحيحة', + 'RULE_REMOVED_MESSAGES' => array( + 1 => 'رسالة خاصة واحدة تم حذÙها بسبب شروط الرسائل الخاصة.', + 2 => 'رسالتان خاصتان تم حذÙهما بسبب شروط الرسائل الخاصة.', + 3 => '%d رسائل خاصة تم حذÙها بسبب شروط الرسائل الخاصة.', + 4 => '%d رسالة خاصة تم حذÙها بسبب شروط الرسائل الخاصة.', + 5 => '%d رسالة خاصة تم حذÙها بسبب شروط الرسائل الخاصة.', + ), + + 'SAME_PASSWORD_ERROR' => 'كلمة المرور الجديدة التي أدخلتها هي Ù†Ùس كلمة المرور الحالية', + 'SEARCH_YOUR_POSTS' => 'استعرض مشاركاتك', + 'SEND_PASSWORD' => 'إرسال كلمة المرور', + 'SENT_AT' => 'أرسلت ÙÙŠ', // Used before dates in private messages + 'SHOW_EMAIL' => 'يمكن للأعضاء مراسلتي عبر البريد الإلكتروني', + 'SIGNATURE_EXPLAIN' => 'هذا النص يمكنك إضاÙته إلى المشاركات التي تكتبها، هناك %d حر٠كحد أقصى', + 'SIGNATURE_PREVIEW' => 'توقيعك سيظهر ÙÙŠ المشاركات بهذا الشكل', + 'SIGNATURE_TOO_LONG' => 'توقيعك طويل جدًا', + 'SELECT_CURRENT_TIME' => 'اختر الوقت الحالي', + 'SELECT_TIMEZONE' => 'اختر منطقة التوÙيت', + 'SORT' => 'ترتيب', + 'SORT_COMMENT' => 'التعليق على الملÙ', + 'SORT_DOWNLOADS' => 'مرات التحميل', + 'SORT_EXTENSION' => 'الامتداد', + 'SORT_FILENAME' => 'اسم الملÙ', + 'SORT_POST_TIME' => 'وقت الإرسال', + 'SORT_SIZE' => 'حجم الملÙ', + + 'TIMEZONE' => 'التوقيت', + 'TIMEZONE_DATE_SUGGESTION' => 'اقتراح: %s', + 'TIMEZONE_INVALID' => 'منطقة التوقيت التي اخترتها غير صحيحة.', + 'TO' => 'إلى', + 'TO_MASS' => 'المستلمون', + 'TO_ADD' => 'أض٠مستلم', + 'TO_ADD_MASS' => 'أض٠مستلمين', + 'TO_ADD_GROUPS' => 'أض٠مجموعات', + 'TOO_MANY_RECIPIENTS' => 'عدد كبير من المستقبلين', + 'TOO_MANY_REGISTERS' => 'لقد تجاوزت الحد الأقصى من محاولات التسجيل لهذه الجلسة، يرجى المحاولة مرة أخرى ÙÙŠ وقت لاحق', + + 'UCP' => 'لوحة التحكم', + 'UCP_ACTIVATE' => 'تنشيط الحساب', + 'UCP_ADMIN_ACTIVATE' => 'يرجى العلم بأنه عليك إدخال بريد إلكتروني صحيح لينشّط حسابك، سيراجع المدير حسابك وإذا تمت المواÙقة عليه ستستقبل بريد إلكتروني على العنوان الذي اخترته', + 'UCP_ATTACHMENTS' => 'المرÙقات', + 'UCP_AUTH_LINK' => 'حسابات خارجية', + 'UCP_AUTH_LINK_ASK' => 'لا توجد لديك حاليًا حساب مرتبط بهذه الخدمة الخارجية. اضغط على الزر بأسÙÙ„ لربط حساب منتداك بحساب لدى هذه الخدمة الخارجية.', + 'UCP_AUTH_LINK_ID' => 'معر٠خاص', + 'UCP_AUTH_LINK_LINK' => 'ربط', + 'UCP_AUTH_LINK_MANAGE' => 'إدارة ارتباطات الحسابات الخارجية', + 'UCP_AUTH_LINK_NOT_SUPPORTED' => 'ربط حسابات المنتدى مع خدمات خارجية غير مدعوم بواسطة صلاحيات المنتدى الحالية.', + 'UCP_AUTH_LINK_TITLE' => 'إدارة ارتباطات الحسابات الخارجيةالخاصة بك', + 'UCP_AUTH_LINK_UNLINK' => 'ÙÙƒ الربط', + 'UCP_COPPA_BEFORE' => 'قبل %s', + 'UCP_COPPA_ON_AFTER' => 'ÙÙŠ أو بعد %s', + 'UCP_EMAIL_ACTIVATE' => 'يرجى العلم بأنه عليك إدخال بريد إلكتروني صحيح لن ينشّط حسابك، ستستقبل رسالة على البريد تحتوي على رابط تنشيط الاشتراك', + 'UCP_JABBER' => 'عنوان Jabber', + 'UCP_LOGIN_LINK' => 'إنشاء ارتباط بحسابات خارجية', + + 'UCP_MAIN' => 'عام', + 'UCP_MAIN_ATTACHMENTS' => 'إدارة المرÙقات', + 'UCP_MAIN_BOOKMARKS' => 'إدارة المÙضلة', + 'UCP_MAIN_DRAFTS' => 'إدارة المسودات', + 'UCP_MAIN_FRONT' => 'الرئيسية', + 'UCP_MAIN_SUBSCRIBED' => 'إدارة الاشتراكات', + + 'UCP_NO_ATTACHMENTS' => 'ليس لديك أي ملÙات مرÙقة', + + 'UCP_NOTIFICATION_LIST' => 'إدارة الإشعارات', + 'UCP_NOTIFICATION_LIST_EXPLAIN' => 'هنا يمكنك مشاهدة جميع الإشعارات السابقة.', + 'UCP_NOTIFICATION_OPTIONS' => 'تعديل خيارات الإشعارات', + 'UCP_NOTIFICATION_OPTIONS_EXPLAIN' => 'من هنا يمكنك ضبط خياراتك المÙضلة لإشعارات المنتدى.', + + 'UCP_PREFS' => 'إعدادات المنتدى', + 'UCP_PREFS_PERSONAL' => 'تعديل الإعدادات العامة', + 'UCP_PREFS_POST' => 'تعديل النظام الاÙتراضي للمشاركة', + 'UCP_PREFS_VIEW' => 'تعديل خيارات العرض', + + 'UCP_PM' => 'الرسائل الخاصة', + 'UCP_PM_COMPOSE' => 'أرسل رسالة', + 'UCP_PM_DRAFTS' => 'إدارة مسودات الرسائل الخاصة', + 'UCP_PM_OPTIONS' => 'الإعدادات والمجلدات والشروط', + 'UCP_PM_UNREAD' => 'رسائل غير مقروءة', + 'UCP_PM_VIEW' => 'مشاهدة الرسائل', + + 'UCP_PROFILE' => 'المل٠الشخصي', + 'UCP_PROFILE_AVATAR' => 'تعديل الصورة الرمزية', + 'UCP_PROFILE_PROFILE_INFO' => 'تعديل المل٠الشخصي', + 'UCP_PROFILE_REG_DETAILS' => 'تغيير إعدادات الحساب', + 'UCP_PROFILE_SIGNATURE' => 'تعديل التوقيع', + 'UCP_PROFILE_AUTOLOGIN_KEYS'=> 'إدارة Ù…Ùاتيح "تذكرني" للدخول', + + 'UCP_USERGROUPS' => 'مجموعة الأعضاء', + 'UCP_USERGROUPS_MEMBER' => 'تعديل العضوية', + 'UCP_USERGROUPS_MANAGE' => 'إدارة مجموعة الأعضاء', + + 'UCP_PASSWORD_RESET_DISABLED' => 'خاصة استعادة كلمة المرور تم تعطيلها. إذا كنت ÙÙŠ حاجة للدخول إلى حسابك، يرجى مراسلة %sمدير المنتدى%s', + 'UCP_REGISTER_DISABLE' => 'إنشاء حساب جديد غير متوÙر حاليًا', + 'UCP_REMIND' => 'إرسال كلمة المرور', + 'UCP_RESEND' => 'أرسل بريد التنشيط', + 'UCP_WELCOME' => 'أهلا بك ÙÙŠ لوحة تحكم العضوية، من هنا يمكنك مراقبة ملÙÙƒ الشخصي وعرضه وتعديله وضبط الإعدادات بالإضاÙØ© إلى إدارة المواضيع والمنتديات المشترك بها، كما يمكنك إرسال الرسائل الخاصة إلى أعضاء آخرين (إذا كان مسموحًا). رجاءً تأكد من قراءتك لأي إعلان قبل الاستمرار', + 'UCP_ZEBRA' => 'قائمة الأصدقاء والتجاهل', + 'UCP_ZEBRA_FOES' => 'إدارة قائمة التجاهل', + 'UCP_ZEBRA_FRIENDS' => 'إدارة قائمة الأصدقاء', + 'UNDISCLOSED_RECIPIENT' => 'مستلم غير معروÙ', + 'UNKNOWN_FOLDER' => 'مجلد غير معروÙ', + 'UNWATCH_MARKED' => 'لا تراقب المحدد', + 'UPLOAD_AVATAR_FILE' => 'تحميل من جهازك الشخصي', + 'UPLOAD_AVATAR_URL' => 'تحميل من عنوان على الويب', + 'UPLOAD_AVATAR_URL_EXPLAIN' => 'أدخل العنوان الخاص بالصورة، ستÙنسَخ إلى هذا الموقع', + 'USERNAME_ALPHA_ONLY_EXPLAIN' => 'اسم العضو ينبغي أن يكون طوله من %1$s إلى %2$s وينبغي أي يحتوي على أحر٠وأرقام Ùقط', + 'USERNAME_ALPHA_SPACERS_EXPLAIN'=> 'اسم العضو ينبغي أن يكون طوله من %1$s إلى %2$s ويحتوي على أحر٠وأرقام ومساÙØ© والرموز الآتية -+_[] Ùقط', + 'USERNAME_ASCII_EXPLAIN' => 'اسم العضو ينبغي أن يكون طوله من %1$s إلى %2$s ويستعمل Ùقط حرو٠ASCII أي بدون رموز خاصة', + 'USERNAME_LETTER_NUM_EXPLAIN' => 'أسم العضو ينبغي أن يكون طوله من %1$s إلى %2$s ويستعمل Ùقط حرو٠أو أرقام', + 'USERNAME_LETTER_NUM_SPACERS_EXPLAIN'=> 'اسم العضو ينبغي أن يكون طوله من %1$s إلى %2$s ويستعمل حروÙØŒ أرقام، مساÙØ© أو -+_[]', + 'USERNAME_CHARS_ANY_EXPLAIN' => 'الطول ينبغي أن يكون بين %1$s Ùˆ %2$s', + 'USERNAME_TAKEN_USERNAME' => 'اسم المستخدم الذي أدخلته موجود مسبقًا، الرجاء اختيار اسم آخر', + 'USERNAME_DISALLOWED_USERNAME' => 'Ø­ÙظÙر اسم المستخدم الذي أدخلته', + 'USER_NOT_FOUND_OR_INACTIVE' => 'أسماء الأعضاء التي حددتها قد تكون لأعضاء غير موجودين أو لأعضاء غير نشيطين', + + 'VIEW_AVATARS' => 'عرض الصور الرمزية', + 'VIEW_EDIT' => 'عرض/تعديل', + 'VIEW_FLASH' => 'عرض مقاطع الÙلاش', + 'VIEW_IMAGES' => 'عرض الصور داخل المشاركات', + 'VIEW_NEXT_HISTORY' => 'عرض الرسالة الآتية ÙÙŠ الأرشيÙ', + 'VIEW_NEXT_PM' => 'عرض الرسالة التالية', + 'VIEW_PM' => 'عرض الرسالة', + 'VIEW_PM_INFO' => 'معلومات الرسالة', + 'VIEW_PM_MESSAGES' => array( + 1 => 'رسالة واحدة', + 2 => 'رسالتان', + 3 => '%d رسائل', + 4 => '%d رسالة', + 5 => '%d رسالة', + 6 => 'لا رسائل', + ), + 'VIEW_PREVIOUS_HISTORY' => 'الرسالة السابقة ÙÙŠ الأرشيÙ', + 'VIEW_PREVIOUS_PM' => 'عرض الرسالة السابقة', + 'VIEW_PROFILE' => 'عرض المل٠الشخصي', + 'VIEW_SIGS' => 'عرض التواقيع', + 'VIEW_SMILIES' => 'عرض الابتسامات كصور', + 'VIEW_TOPICS_DAYS' => 'عرض المواضيع منذ الأيام السابقة', + 'VIEW_TOPICS_DIR' => 'طريقة ترتيب عرض المواضيع', + 'VIEW_TOPICS_KEY' => 'عرض المواضيع مرتبة حسب', + 'VIEW_POSTS_DAYS' => 'عرض المشاركات منذ الأيام السابقة', + 'VIEW_POSTS_DIR' => 'طريقة ترتيب عرض المشاركات', + 'VIEW_POSTS_KEY' => 'عرض المشاركات مرتبة حسب', + + 'WATCHED_EXPLAIN' => 'ÙÙŠ الأسÙÙ„ قائمة بالمنتديات والمواضيع التي اشتركت بها، ستبلّغ عند وضع مشاركات جديدة بها. لإلغاء الاشتراك حدد المنتدى أو الموضوع ومن ثم اضغط على الزر ألغ اشتراك المحدد', + 'WATCHED_FORUMS' => 'المنتديات المشاهدة', + 'WATCHED_TOPICS' => 'المواضيع المشاهدة', + 'WRONG_ACTIVATION' => 'Ù…Ùتاح التنشيط الذي أدخلته غير صحيح', + + 'YOUR_DETAILS' => 'نشاطاتك', + 'YOUR_FOES' => 'قائمة التجاهل الخاصة بك', + 'YOUR_FOES_EXPLAIN' => 'لإلغاء اسم العضو قم بالتحديد ثم إرسال', + 'YOUR_FRIENDS' => 'قائمة الأصدقاء الخاصة بك', + 'YOUR_FRIENDS_EXPLAIN' => 'لإلغاء اسم العضو حدد ثم أرسÙÙ„', + 'YOUR_WARNINGS' => 'مستوى التحذير', + + 'PM_ACTION' => array( + 'PLACE_INTO_FOLDER' => 'ضعها ÙÙŠ المجلد', + 'MARK_AS_READ' => 'تحديد كمقروء', + 'MARK_AS_IMPORTANT' => 'تحديد الرسالة', + 'DELETE_MESSAGE' => 'حذ٠الرسالة', + ), + 'PM_CHECK' => array( + 'SUBJECT' => 'العنوان', + 'SENDER' => 'المرسل', + 'MESSAGE' => 'الرسالة', + 'STATUS' => 'حالة الرسالة', + 'TO' => 'أرسلت إلى', + ), + 'PM_RULE' => array( + 'IS_LIKE' => 'مشابه لـ', + 'IS_NOT_LIKE' => 'مخال٠لـ', + 'IS' => 'بالضبط مشابه لـ', + 'IS_NOT' => 'بالضبط مخال٠لـ', + 'BEGINS_WITH' => 'يبدأ بـ', + 'ENDS_WITH' => 'ينتهي بـ', + 'IS_FRIEND' => 'صديق', + 'IS_FOE' => 'متجاهل', + 'IS_USER' => 'العضو', + 'IS_GROUP' => 'ÙÙŠ مجموعة أعضاء', + 'ANSWERED' => 'مجابة', + 'FORWARDED' => 'أعيد إرسالها', + 'TO_GROUP' => 'مجموعة الأعضاء الخاصة بي', + 'TO_ME' => 'لي شخصيًا', + ), + + 'GROUPS_EXPLAIN' => 'مجموعات الأعضاء تساعد الإدارة على التحكم بالأعضاء بصورة Ø£Ùضل، ستنضم إلى مجموعة محددة بصورة تلقائية، تسمى مجموعتك الاÙتراضية، هذه المجموعة تحدد كي٠يمكنك الظهور أمام الأعضاء الآخرين، على سبيل المثال اللون الخاص باسمك، صورتك الرمزية، الرتبة وغيرها، قد تكون لديك صلاحية لتغيير مجموعتك الاÙتراضية إذا ما سمحت الإدارة بذلك، كما يمكن أن تكون ÙÙŠ مجموعات أخرى أو يسمح لك بالمشاركة بمجموعات أخرى. بعض المجموعات قد تعطيك المزيد من الصلاحيات ÙÙŠ مواضع مختلÙØ©', + 'GROUPS_EXPLAIN' => 'مجموعات الأعضاء تساعد الإدارة على التحكم بالأعضاء بصورة Ø£Ùضل، ستنضم إلى مجموعة محددة بصورة تلقائية، تسمى مجموعتك الاÙتراضية، هذه المجموعة تحدد كي٠يمكنك الظهور أمام الأعضاء الآخرين، على سبيل المثال اللون الخاص باسمك، صورتك الرمزية، الرتبة وغيرها، قد تكون لديك صلاحية لتغيير مجموعتك الاÙتراضية إذا ما سمحت الإدارة بذلك، كما يمكن أن تكون ÙÙŠ مجموعات أخرى أو يسمح لك بالمشاركة بمجموعات أخرى. بعض المجموعات قد تعطيك المزيد من الصلاحيات ÙÙŠ مواضع مختلÙØ©', + 'GROUP_LEADER' => 'ضمن Ùريق الإدارة للمجموعة', + 'GROUP_MEMBER' => 'عضو ÙÙŠ المجموعة', + 'GROUP_PENDING' => 'مجموعات ينتظر المواÙقة على انضمامك إليها', + 'GROUP_NONMEMBER' => 'مجموعات لست مشتركًا بها', + 'GROUP_DETAILS' => 'تÙاصيل المجموعة', + + 'NO_LEADER' => 'لست ÙÙŠ إدارة أية مجموعة', + 'NO_MEMBER' => 'لم تنضم لأية مجموعة', + 'NO_PENDING' => 'لا يوجد مجموعات تنتظر المواÙقة على انضمامك إليها', + 'NO_NONMEMBER' => 'لا يوجد مجموعات لست مشتركًا بها', +)); diff --git a/includes/shared/phpbb3/language/lang_english/common.php b/includes/shared/phpbb3/language/lang_english/common.php new file mode 100644 index 00000000..865c9b01 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_english/common.php @@ -0,0 +1,1447 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » “ †… +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => '', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'en-gb', + + // You can define different rules for the determination of plural forms here. + // See https://area51.phpbb.com/docs/dev/32x/language/plurals.html for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 1, + + '1_DAY' => '1 day', + '1_MONTH' => '1 month', + '1_YEAR' => '1 year', + '2_WEEKS' => '2 weeks', + '3_MONTHS' => '3 months', + '6_MONTHS' => '6 months', + '7_DAYS' => '7 days', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Your account has already been activated.', + 'ACCOUNT_DEACTIVATED' => 'Your account has been manually deactivated and is only able to be reactivated by an administrator.', + 'ACCOUNT_NOT_ACTIVATED' => 'Your account has not been activated yet.', + 'ACP' => 'Administration Control Panel', + 'ACP_SHORT' => 'ACP', + 'ACTIVE' => 'active', + 'ACTIVE_ERROR' => 'The specified username is currently inactive. If you have problems activating your account, please contact a board administrator.', + 'ADMINISTRATOR' => 'Administrator', + 'ADMINISTRATORS' => 'Administrators', + 'AGE' => 'Age', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'AJAX error', + 'AJAX_ERROR_TEXT' => 'Something went wrong when processing your request.', + 'AJAX_ERROR_TEXT_ABORT' => 'User aborted request.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'Your request timed out; please try again.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Something went wrong with the request and the server returned an invalid reply.', + 'ALLOWED' => 'Allowed', + 'ALL_FILES' => 'All files', + 'ALL_FORUMS' => 'All forums', + 'ALL_MESSAGES' => 'All messages', + 'ALL_POSTS' => 'All posts', + 'ALL_TIMES' => 'All times are %1$s', + 'ALL_TOPICS' => 'All Topics', + 'ALT_TEXT' => 'Alternative text', + 'AND' => 'And', + 'ARE_WATCHING_FORUM' => 'You have subscribed to be notified of new posts in this forum.', + 'ARE_WATCHING_TOPIC' => 'You have subscribed to be notified of new posts in this topic.', + 'ASCENDING' => 'Ascending', + 'ATTACHMENTS' => 'Attachments', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'The image file you tried to attach is invalid.', + 'AUTHOR' => 'Author', + 'AUTH_NO_PROFILE_CREATED' => 'The creation of a user profile was unsuccessful.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'Invalid database entry.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Invalid service type provided to OAuth service handler.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'OAuth service not created', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_SERVICE_TWITTER' => 'Twitter', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'OAuth token not stored.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'OAuth token incorrectly stored.', + 'AVATAR_DISALLOWED_CONTENT' => 'The upload was rejected because the uploaded file was identified as a possible attack vector.', + 'AVATAR_DISALLOWED_EXTENSION' => 'This file cannot be displayed because the extension %s is not allowed.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'The specified avatar could not be uploaded because the remote data appears to be invalid or corrupted.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'The uploaded avatar file is empty.', + 'AVATAR_INVALID_FILENAME' => '%s is an invalid filename.', + 'AVATAR_NOT_UPLOADED' => 'Avatar could not be uploaded.', + 'AVATAR_NO_TEMP_DIR' => 'Temporary folder could not be found or is not writable.', + 'AVATAR_NO_SIZE' => 'The width or height of the linked avatar could not be determined. Please enter them manually.', + 'AVATAR_PARTIAL_UPLOAD' => 'The specified file was only partially uploaded.', + 'AVATAR_PHP_SIZE_NA' => 'The avatar’s filesize is too large.
    The maximum allowed filesize set in php.ini could not be determined.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'The avatar’s filesize is too large. The maximum allowed upload size is %1$d %2$s.
    Please note this is set in php.ini and cannot be overridden.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'The specified avatar could not be uploaded because the request timed out.', + 'AVATAR_PHP_UPLOAD_STOPPED' => 'A PHP extension has stopped the file upload.', + 'AVATAR_URL_INVALID' => 'The URL you specified is invalid.', + 'AVATAR_URL_NOT_FOUND' => 'The file specified could not be found.', + 'AVATAR_WRONG_FILESIZE' => 'The avatar’s filesize must be between 0 and %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'The submitted avatar is %5$s wide and %6$s high. Avatars must be at least %1$s wide and %2$s high, but no larger than %3$s wide and %4$s high.', + + 'BACK_TO_TOP' => 'Top', + 'BACK_TO_PREV' => 'Back to previous page', + 'BAN_TRIGGERED_BY_EMAIL'=> 'A ban has been issued on your email address.', + 'BAN_TRIGGERED_BY_IP' => 'A ban has been issued on your IP address.', + 'BAN_TRIGGERED_BY_USER' => 'A ban has been issued on your username.', + 'BBCODE_GUIDE' => 'BBCode guide', + 'BCC' => 'BCC', + 'BIRTHDAYS' => 'Birthdays', + 'BOARD_BAN_PERM' => 'You have been permanently banned from this board.

    Please contact the %2$sBoard Administrator%3$s for more information.', + 'BOARD_BAN_REASON' => 'Reason given for ban: %s', + 'BOARD_BAN_TIME' => 'You have been banned from this board until %1$s.

    Please contact the %2$sBoard Administrator%3$s for more information.', + 'BOARD_DISABLE' => 'Sorry but this board is currently unavailable.', + 'BOARD_DISABLED' => 'This board is currently disabled.', + 'BOARD_UNAVAILABLE' => 'Sorry but the board is temporarily unavailable, please try again in a few minutes.', + 'BROWSING_FORUM' => 'Users browsing this forum: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Users browsing this forum: %2$s and %1$d guest', + 2 => 'Users browsing this forum: %2$s and %1$d guests', + ), + 'BUTTON_DELETE' => 'Delete', + 'BUTTON_EDIT' => 'Edit', + 'BUTTON_FORUM_LOCKED' => 'Locked', + 'BUTTON_INFORMATION' => 'Information', + 'BUTTON_NEW_TOPIC' => 'New Topic', + 'BUTTON_PM' => 'PM', + 'BUTTON_PM_FORWARD' => 'Forward', + 'BUTTON_PM_NEW' => 'New PM', + 'BUTTON_PM_REPLY' => 'Send Reply', + 'BUTTON_PM_REPLY_ALL' => 'Reply All', + 'BUTTON_POST_REPLY' => 'Post Reply', + 'BUTTON_QUOTE' => 'Quote', + 'BUTTON_REPORT' => 'Report', + 'BUTTON_TOPIC_LOCKED' => 'Locked', + 'BUTTON_WARN' => 'Warn', + 'BYTES' => 'Bytes', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Cancel', + 'CANNOT_RENAME_FILE' => 'Cannot rename %s', + 'CHANGE' => 'Change', + 'CHANGE_FONT_SIZE' => 'Change font size', + 'CHANGING_PREFERENCES' => 'Changing board preferences', + 'CHANGING_PROFILE' => 'Changing profile settings', + 'CHARACTERS' => array( + 1 => '%d character', + 2 => '%d characters', + ), + 'COLLAPSE_VIEW' => 'Collapse view', + 'CLOSE_WINDOW' => 'Close window', + 'COLOUR_SWATCH' => 'Colour swatch', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Comma used to join lists into a single string, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirm', + 'CONFIRM_CODE' => 'Confirmation code', + 'CONFIRM_CODE_EXPLAIN' => 'Enter the code exactly as it appears. All letters are case insensitive.', + 'CONFIRM_CODE_WRONG' => 'The confirmation code you entered was incorrect.', + 'CONFIRM_OPERATION' => 'Are you sure you wish to carry out this operation?', + 'CONFIRM_AVATAR_DELETE' => 'Are you sure you wish to delete this avatar?', + 'CONGRATULATIONS' => 'Congratulations to', + 'CONNECTION_FAILED' => 'Connection failed.', + 'CONNECTION_SUCCESS' => 'Connection was successful!', + 'CONTACT' => 'Contact', + 'CONTACT_USER' => 'Contact %s', + 'CONTACT_US' => 'Contact us', + 'COOKIE_CONSENT_INFO' => 'Learn more', + 'COOKIE_CONSENT_MSG' => 'This website uses cookies to ensure you get the best experience on our website.', + 'COOKIE_CONSENT_OK' => 'Got it!', + 'COOKIE_CONSENT_HREF' => 'http://cookiesandyou.com', + 'COOKIES_DELETED' => 'All board cookies successfully deleted.', + 'CURRENT_TIME' => 'It is currently %s', + + 'DAY' => 'Day', + 'DAYS' => 'Days', + 'DELETE' => 'Delete', + 'DELETE_ALL' => 'Delete all', + 'DELETE_COOKIES' => 'Delete all board cookies', + 'DELETE_MARKED' => 'Delete marked', + 'DELETE_POST' => 'Delete post', + 'DELIMITER' => 'Delimiter', + 'DESCENDING' => 'Descending', + 'DISABLED' => 'Disabled', + 'DISPLAY' => 'Display', + 'DISPLAY_GUESTS' => 'Display guests', + 'DISPLAY_MESSAGES' => 'Display messages from previous', + 'DISPLAY_POSTS' => 'Display posts from previous', + 'DISPLAY_TOPICS' => 'Display topics from previous', + 'DOWNLOADED' => 'Downloaded', + 'DOWNLOADING_FILE' => 'Downloading file', + 'DOWNLOAD_COUNTS' => array( + 0 => 'Not downloaded yet', + 1 => 'Downloaded %d time', + 2 => 'Downloaded %d times', + ), + + 'EDIT_POST' => 'Edit post', + 'ELLIPSIS' => '…', + 'EMAIL' => 'Email', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Email address', + 'EMAIL_INVALID_EMAIL' => 'The email address you entered is invalid.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Ran into problems sending email at Line %1$s. Response: %2$s.', + 'EMPTY_SUBJECT' => 'You must specify a subject when posting a new topic.', + 'EMPTY_MESSAGE_SUBJECT' => 'You must specify a subject when composing a new message.', + 'ENABLED' => 'Enabled', + 'ENCLOSURE' => 'Enclosure', + 'ENTER_USERNAME' => 'Enter username', + 'ERR_CHANGING_DIRECTORY' => 'Unable to change directory.', + 'ERR_CONNECTING_SERVER' => 'Error connecting to the server.', + 'ERR_JAB_AUTH' => 'Could not authorise on Jabber server.', + 'ERR_JAB_CONNECT' => 'Could not connect to Jabber server.', + 'ERR_UNABLE_TO_LOGIN' => 'The specified username or password is incorrect.', + 'ERR_UNWATCHING' => 'An error occurred while trying to unsubscribe.', + 'ERR_WATCHING' => 'An error occurred while trying to subscribe.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'The phpBB path specified appears to be invalid.', + 'ERROR' => 'Error', + 'EXPAND_VIEW' => 'Expand view', + 'EXTENSION' => 'Extension', + 'EXTENSION_DISABLED' => 'The extension %s is not enabled.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'The extension %s has been deactivated and can no longer be displayed.', + 'EXTENSION_DOES_NOT_EXIST' => 'The extension %s does not exist.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'Frequently Asked Questions', + 'FEATURE_NOT_AVAILABLE' => 'The requested feature is not available on this board.', + 'FILENAME' => 'Filename', + 'FILESIZE' => 'File size', + 'FILEDATE' => 'File date', + 'FILE_COMMENT' => 'File comment', + 'FILE_CONTENT_ERR' => 'Could not read the contents of file: %s', + 'FILE_JSON_DECODE_ERR' => 'Failed to decode json file: %s', + 'FILE_NOT_FOUND' => 'The requested file could not be found: %s', + 'FIND_USERNAME' => 'Find a member', + 'FOLDER' => 'Folder', + 'FORGOT_PASS' => 'I forgot my password', + 'FORM_INVALID' => 'The submitted form was invalid. Try submitting again.', + 'FORUM' => 'Forum', + 'FORUMS' => 'Forums', + 'FORUMS_MARKED' => 'Forums have been marked read.', + 'FORUM_CAT' => 'Forum category', + 'FORUM_INDEX' => 'Board index', + 'FORUM_LINK' => 'Forum link', + 'FORUM_LOCATION' => 'Forum location', + 'FORUM_LOCKED' => 'Forum locked', + 'FORUM_RULES' => 'Forum rules', + 'FORUM_RULES_LINK' => 'Please click here to view the forum rules', + 'FROM' => 'from', + 'FSOCK_DISABLED' => 'The operation could not be completed because the fsockopen function has been disabled or the server being queried could not be found.', + 'FSOCK_TIMEOUT' => 'A timeout occurred while reading from the network stream.', + + 'FTP_FSOCK_HOST' => 'FTP host', + 'FTP_FSOCK_HOST_EXPLAIN' => 'FTP server used to connect your site.', + 'FTP_FSOCK_PASSWORD' => 'FTP password', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Password for your FTP username.', + 'FTP_FSOCK_PORT' => 'FTP port', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Port used to connect to your server.', + 'FTP_FSOCK_ROOT_PATH' => 'Path to phpBB', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Path from the root to your phpBB board.', + 'FTP_FSOCK_TIMEOUT' => 'FTP timeout', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'The amount of time, in seconds, that the system will wait for a reply from your server.', + 'FTP_FSOCK_USERNAME' => 'FTP username', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Username used to connect to your server.', + + 'FTP_HOST' => 'FTP host', + 'FTP_HOST_EXPLAIN' => 'FTP server used to connect your site.', + 'FTP_PASSWORD' => 'FTP password', + 'FTP_PASSWORD_EXPLAIN' => 'Password for your FTP username.', + 'FTP_PORT' => 'FTP port', + 'FTP_PORT_EXPLAIN' => 'Port used to connect to your server.', + 'FTP_ROOT_PATH' => 'Path to phpBB', + 'FTP_ROOT_PATH_EXPLAIN' => 'Path from the root to your phpBB board.', + 'FTP_TIMEOUT' => 'FTP timeout', + 'FTP_TIMEOUT_EXPLAIN' => 'The amount of time, in seconds, that the system will wait for a reply from your server.', + 'FTP_USERNAME' => 'FTP username', + 'FTP_USERNAME_EXPLAIN' => 'Username used to connect to your server.', + + 'GENERAL_ERROR' => 'General Error', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GO' => 'Go', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Go to first post', + 'GOTO_LAST_POST' => 'Go to last post', + 'GOTO_PAGE' => 'Go to page', + 'GROUP' => 'Group', + 'GROUPS' => 'Groups', + 'GROUP_ERR_TYPE' => 'Inappropriate group type specified.', + 'GROUP_ERR_USERNAME' => 'No group name specified.', + 'GROUP_ERR_USER_LONG' => 'Group names cannot exceed 60 characters. The specified group name is too long.', + 'GUEST' => 'Guest', + 'GUEST_USERS_ONLINE' => array( + 1 => 'There is %d guest user online', + 2 => 'There are %d guest users online', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d guest', + 2 => '%d guests', + ), + 'G_ADMINISTRATORS' => 'Administrators', + 'G_BOTS' => 'Bots', + 'G_GUESTS' => 'Guests', + 'G_REGISTERED' => 'Registered users', + 'G_REGISTERED_COPPA' => 'Registered COPPA users', + 'G_GLOBAL_MODERATORS' => 'Global moderators', + 'G_NEWLY_REGISTERED' => 'Newly registered users', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d hidden user', + 2 => '%d hidden users', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d hidden', + 2 => '%d hidden', + ), + 'HIDE_GUESTS' => 'Hide guests', + 'HIDE_ME' => 'Hide my online status this session', + 'HOURS' => 'Hours', + 'HOME' => 'Home', + + 'ICQ' => 'ICQ', + 'IF' => 'If', + 'IMAGE' => 'Image', + 'IMAGE_FILETYPE_INVALID' => 'Image file type %d for mimetype %s not supported.', + 'IMAGE_FILETYPE_MISMATCH' => 'Image file type mismatch: expected extension %1$s but extension %2$s given.', + 'IN' => 'in', + 'INACTIVE' => 'Inactive', + 'INDEX' => 'Index page', + 'INFORMATION' => 'Information', + 'INSECURE_REDIRECT' => 'Tried to redirect to potentially insecure url.', + 'INTERESTS' => 'Interests', + 'INVALID_DIGEST_CHALLENGE' => 'Invalid digest challenge.', + 'INVALID_EMAIL_LOG' => '%s possibly an invalid email address?', + 'INVALID_FEED_ATTACHMENTS' => 'The selected feed tried fetching attachments with invalid constraints.', + 'INVALID_PLURAL_RULE' => 'The chosen plural rule is invalid. Valid values are integers between 0 and 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'Your IP %1$s has been blocked because it is blacklisted. For details please see %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Joined', + 'JUMP_PAGE' => 'Enter the page number you wish to go to', + 'JUMP_TO' => 'Jump to', + 'JUMP_TO_PAGE' => 'Jump to page', + 'JUMP_TO_PAGE_CLICK' => 'Click to jump to page…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Last post', + 'LAST_UPDATED' => 'Last updated', + 'LAST_VISIT' => 'Last visit', + 'LDAP_NO_LDAP_EXTENSION' => 'LDAP extension not available.', + 'LDAP_NO_SERVER_CONNECTION' => 'Could not connect to LDAP server.', + 'LDAP_SEARCH_FAILED' => 'An error occurred while searching the LDAP directory.', + 'LEGEND' => 'Legend', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Live searches are not allowed.', + 'LOADING' => 'Loading...', + 'LOCATION' => 'Location', + 'LOCK_POST' => 'Lock post', + 'LOCK_POST_EXPLAIN' => 'Prevent editing', + 'LOCK_TOPIC' => 'Lock topic', + 'LOGIN' => 'Login', + 'LOGIN_CHECK_PM' => 'Log in to check your private messages.', + 'LOGIN_CONFIRMATION' => 'Confirmation of login', + 'LOGIN_CONFIRM_EXPLAIN' => 'To prevent brute forcing accounts the board requires you to enter a confirmation code after a maximum amount of failed logins. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.', // unused + 'LOGIN_ERROR_ATTEMPTS' => 'You exceeded the maximum allowed number of login attempts. In addition to your username and password you now also have to solve the CAPTCHA below.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'You have not been authenticated by Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'A non-existant OAuth service has been requested.', + 'LOGIN_ERROR_PASSWORD' => 'You have specified an incorrect password. Please check your password and try again. If you continue to have problems please contact the %sBoard Administrator%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'It was not possible to convert your password when updating this bulletin board’s software. Please %srequest a new password%s. If you continue to have problems please contact the %sBoard Administrator%s.', + 'LOGIN_ERROR_USERNAME' => 'You have specified an incorrect username. Please check your username and try again. If you continue to have problems please contact the %sBoard Administrator%s.', + 'LOGIN_FORUM' => 'To view or post in this forum you must enter its password.', + 'LOGIN_INFO' => 'In order to login you must be registered. Registering takes only a few moments but gives you increased capabilities. The board administrator may also grant additional permissions to registered users. Before you register please ensure you are familiar with our terms of use and related policies. Please ensure you read any forum rules as you navigate around the board.', + 'LOGIN_VIEWFORUM' => 'The board requires you to be registered and logged in to view this forum.', + 'LOGIN_EXPLAIN_EDIT' => 'In order to edit posts in this forum you have to be registered and logged in.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'In order to view the online list you have to be registered and logged in.', + 'LOGIN_REQUIRED' => 'You need to login to perform this action.', + 'LOGOUT' => 'Logout', + 'LOGOUT_USER' => 'Logout [ %s ]', + 'LOG_ME_IN' => 'Remember me', + + 'MAIN' => 'Main', + 'MARK' => 'Mark', + 'MARK_ALL' => 'Mark all', + 'MARK_ALL_READ' => 'Mark all read', + 'MARK_FORUMS_READ' => 'Mark forums read', + 'MARK_READ' => 'Mark read', + 'MARK_SUBFORUMS_READ' => 'Mark subforums read', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Moderator Control Panel', + 'MCP_SHORT' => 'MCP', + 'MEMBERLIST' => 'Members', + 'MEMBERLIST_EXPLAIN' => 'View complete list of members', + 'MERGE' => 'Merge', + 'MERGE_POSTS' => 'Move posts', + 'MERGE_TOPIC' => 'Merge topic', + 'MESSAGE' => 'Message', + 'MESSAGES' => 'Messages', + 'MESSAGES_COUNT' => array( + 1 => '%d message', + 2 => '%d messages', + ), + 'MESSAGE_BODY' => 'Message body', + 'MINUTES' => 'Minutes', + 'MODERATE' => 'Moderate', + 'MODERATOR' => 'Moderator', + 'MODERATORS' => 'Moderators', + 'MODULE_NOT_ACCESS' => 'Module not accessible', + 'MODULE_NOT_FIND' => 'Cannot find module %s', + 'MODULE_FILE_INCORRECT_CLASS' => 'Module file %s does not contain correct class [%s]', + 'MONTH' => 'Month', + 'MOVE' => 'Move', + + 'NA' => 'N/A', + 'NEWEST_USER' => 'Our newest member %s', + 'NEW_MESSAGE' => 'New message', + 'NEW_MESSAGES' => 'New messages', + 'NEW_POST' => 'New post', // Not used anymore + 'NEW_POSTS' => 'New posts', // Not used anymore + 'NEXT' => 'Next', // Used in pagination + 'NEXT_STEP' => 'Next', + 'NEVER' => 'Never', + 'NO' => 'No', + 'NO_NOTIFICATIONS' => 'You have no notifications', + 'NOT_ALLOWED_MANAGE_GROUP' => 'You are not allowed to manage this group.', + 'NOT_AUTHORISED' => 'You are not authorised to access this area.', + 'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.', + 'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.', + 'NOTIFICATIONS' => 'Notifications', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Reply from %1$s in bookmarked topic:', + ), + 'NOTIFICATION_FORUM' => 'Forum: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Group request from %1$s to join the group %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Group request approved to join the group %1$s.', + 'NOTIFICATION_METHOD_INVALID' => 'The method "%s" does not refer to a valid notification method.', + 'NOTIFICATION_PM' => 'Private Message from %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Reply from %1$s in topic:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Post approved:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Post disapproved:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Post approval request by %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Quoted by %1$s in:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Reason: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'Private Message reported by %1$s:', + 'NOTIFICATION_REPORT_POST' => 'Post reported by %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Report closed by %1$s for:', + 'NOTIFICATION_TOPIC' => 'New topic by %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Topic approved:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Topic disapproved:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Topic approval request by %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'The notification type "%s" is missing from the file system.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Activation required for deactivated or newly registered user: “%1$sâ€', + // Used in conjunction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'others', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d others', + ), + 'NOTIFY_ADMIN' => 'Please notify the board administrator or webmaster.', + 'NOTIFY_ADMIN_EMAIL' => 'Please notify the board administrator or webmaster: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'You are not allowed to access this file.', + 'NO_ACTION' => 'No action specified.', + 'NO_ADMINISTRATORS' => 'There are no administrators.', + 'NO_AUTH_ADMIN' => 'Access to the Administration Control Panel is not allowed as you do not have administrative permissions.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'You are not able to re-authenticate as a different user.', + 'NO_AUTH_OPERATION' => 'You do not have the necessary permissions to complete this operation.', + 'NO_AVATARS' => 'No avatars currently available', + 'NO_CONNECT_TO_SMTP_HOST' => 'Could not connect to smtp host : %1$s : %2$s', + 'NO_BIRTHDAYS' => 'No birthdays today', + 'NO_EMAIL_MESSAGE' => 'Email message was blank.', + 'NO_EMAIL_RESPONSE_CODE' => 'Could not get mail server response codes.', + 'NO_EMAIL_SUBJECT' => 'No email subject specified.', + 'NO_FORUM' => 'The forum you selected does not exist.', + 'NO_FORUMS' => 'This board has no forums.', + 'NO_GROUP' => 'The requested usergroup does not exist.', + 'NO_GROUP_MEMBERS' => 'This group currently has no members.', + 'NO_IPS_DEFINED' => 'No IP addresses or hostnames defined', + 'NO_MEMBERS' => 'No members found for this search criterion.', + 'NO_MESSAGES' => 'No messages', + 'NO_MODE' => 'No mode specified.', + 'NO_MODERATORS' => 'There are no moderators.', + 'NO_NEW_MESSAGES' => 'No new messages', + 'NO_NEW_POSTS' => 'No new posts', // Not used anymore + 'NO_ONLINE_USERS' => 'No registered users', + 'NO_POSTS' => 'No posts', + 'NO_POSTS_TIME_FRAME' => 'No posts exist inside this topic for the selected time frame.', + 'NO_FEED_ENABLED' => 'Feeds are not available on this board.', + 'NO_FEED' => 'The requested feed is not available.', + 'NO_STYLE_DATA' => 'Could not get style data', + 'NO_SUBJECT' => 'No subject specified', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'The specified search backend doesn’t exist.', + 'NO_SUPPORTED_AUTH_METHODS' => 'No supported authentication methods.', + 'NO_TOPIC' => 'The requested topic does not exist.', + 'NO_TOPIC_FORUM' => 'The topic or forum no longer exists.', + 'NO_TOPICS' => 'There are no topics or posts in this forum.', + 'NO_TOPICS_TIME_FRAME' => 'No topics exist inside this forum for the selected time frame.', + 'NO_UNREAD_POSTS' => 'No unread posts', + 'NO_UPLOAD_FORM_FOUND' => 'Upload initiated but no valid file upload form found.', + 'NO_USER' => 'The requested user does not exist.', + 'NO_USERS' => 'The requested users do not exist.', + 'NO_USER_SPECIFIED' => 'No username was specified.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d attachment', + 2 => '%d attachments', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'No posts in queue', // 0 + 1 => '1 post in queue', // 1 + 2 => '%d posts in queue', // 2+ + ), + + 'OCCUPATION' => 'Occupation', + 'OFFLINE' => 'Offline', + 'ONLINE' => 'Online', + 'ONLINE_BUDDIES' => 'Online friends', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'In total there is %1$d user online :: %2$s and %3$s', + 2 => 'In total there are %1$d users online :: %2$s and %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'In total there is %1$d user online :: %2$s, %3$s and %4$s', + 2 => 'In total there are %1$d users online :: %2$s, %3$s and %4$s', + ), + 'OPTIONS' => 'Options', + + 'PAGE_NOT_FOUND' => 'The requested page could not be found.', + 'PAGE_OF' => 'Page %1$d of %2$d', + 'PAGE_TITLE_NUMBER' => 'Page %s', + 'PASSWORD' => 'Password', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d pixel', + 2 => '%d pixels', + ), + 'PLEASE_WAIT' => 'Please wait.', + 'PM' => 'PM', + 'PM_REPORTED' => 'Click to view report', + 'POSTING_MESSAGE' => 'Posting message in %s', + 'POSTING_PRIVATE_MESSAGE' => 'Composing private message', + 'POST' => 'Post', + 'POST_ANNOUNCEMENT' => 'Announce', + 'POST_STICKY' => 'Sticky', + 'POSTED' => 'Posted', + 'POSTED_IN_FORUM' => 'in', + 'POSTED_ON_DATE' => 'on', + 'POSTS' => 'Posts', + 'POSTS_UNAPPROVED' => 'At least one post in this topic has not been approved.', + 'POSTS_UNAPPROVED_FORUM'=> 'At least one post in this forum has not been approved.', + 'POST_BY_AUTHOR' => 'by', + 'POST_BY_FOE' => '%1$s, who is currently on your ignore list, made this post.', + 'POST_DISPLAY' => '%1$sDisplay this post%2$s.', + 'POST_DAY' => '%.2f posts per day', + 'POST_DELETED_ACTION' => 'Deleted post:', + 'POST_DELETED' => 'This post has been deleted.', + 'POST_DELETED_BY' => '%2$s deleted the post by %1$s on %3$s.', + 'POST_DELETED_BY_REASON'=> '%2$s deleted the post by %1$s on %3$s for the following reason: %4$s', + 'POST_DETAILS' => 'Post details', + 'POST_NEW_TOPIC' => 'Post new topic', + 'POST_PCT' => '%.2f%% of all posts', + 'POST_PCT_ACTIVE' => '%.2f%% of user’s posts', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% of your posts', + 'POST_REPLY' => 'Post a reply', + 'POST_REPORTED' => 'Click to view report', + 'POST_SUBJECT' => 'Post subject', + 'POST_TIME' => 'Post time', + 'POST_TOPIC' => 'Post a new topic', + 'POST_UNAPPROVED_ACTION' => 'Post awaiting approval:', + 'POST_UNAPPROVED' => 'This post has not been approved.', + 'POWERED_BY' => 'Powered by %s', + 'PREVIEW' => 'Preview', + 'PREVIOUS' => 'Previous', // Used in pagination + 'PREVIOUS_STEP' => 'Previous', + 'PRIVACY' => 'Privacy policy', + 'PRIVATE_MESSAGE' => 'Private message', + 'PRIVATE_MESSAGES' => 'Private messages', + 'PRIVATE_MESSAGING' => 'Private messaging', + 'PROFILE' => 'User Control Panel', + + 'QUICK_LINKS' => 'Quick links', + + 'RANK' => 'Rank', + 'READING_FORUM' => 'Viewing topics in %s', + 'READING_GLOBAL_ANNOUNCE' => 'Reading global announcement', + 'READING_LINK' => 'Following forum link %s', + 'READING_TOPIC' => 'Reading topic in %s', + 'READ_PROFILE' => 'Profile', + 'REASON' => 'Reason', + 'RECORD_ONLINE_USERS' => 'Most users ever online was %1$s on %2$s', + 'REDIRECT' => 'Redirect', + 'REDIRECTS' => 'Total redirects', + 'REGISTER' => 'Register', + 'REGISTERED_USERS' => 'Registered users:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'There is %1$d registered user and %2$s online', + 2 => 'There are %1$d registered users and %2$s online', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d registered', + 2 => '%d registered', + ), + 'REMOVE' => 'Remove', + 'REMOVE_INSTALL' => 'Please delete, move or rename the install directory before you use your board. If this directory is still present, only the Administration Control Panel (ACP) will be accessible.', + 'REPLIES' => 'Replies', + 'REPLY_WITH_QUOTE' => 'Reply with quote', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Replying to global announcement', + 'REPLYING_MESSAGE' => 'Replying to message in %s', + 'REPORT_BY' => 'Report by', + 'REPORT_POST' => 'Report this post', + 'REPORTING_POST' => 'Reporting post', + 'RESEND_ACTIVATION' => 'Resend activation email', + 'RESET' => 'Reset', + 'RESTORE_PERMISSIONS' => 'Restore permissions', + 'RETURN_INDEX' => '%sReturn to the index page%s', + 'RETURN_FORUM' => '%sReturn to the forum last visited%s', + 'RETURN_PAGE' => '%sReturn to the previous page%s', + 'RETURN_TOPIC' => '%sReturn to the topic last visited%s', + 'RETURN_TO' => 'Return to “%sâ€', + 'RETURN_TO_INDEX' => 'Return to Board Index', + 'FEED' => 'Feed', + 'FEED_NEWS' => 'News', + 'FEED_TOPICS_ACTIVE' => 'Active Topics', + 'FEED_TOPICS_NEW' => 'New Topics', + 'RULES_ATTACH_CAN' => 'You can post attachments in this forum', + 'RULES_ATTACH_CANNOT' => 'You cannot post attachments in this forum', + 'RULES_DELETE_CAN' => 'You can delete your posts in this forum', + 'RULES_DELETE_CANNOT' => 'You cannot delete your posts in this forum', + 'RULES_DOWNLOAD_CAN' => 'You can download attachments in this forum', + 'RULES_DOWNLOAD_CANNOT' => 'You cannot download attachments in this forum', + 'RULES_EDIT_CAN' => 'You can edit your posts in this forum', + 'RULES_EDIT_CANNOT' => 'You cannot edit your posts in this forum', + 'RULES_LOCK_CAN' => 'You can lock your topics in this forum', + 'RULES_LOCK_CANNOT' => 'You cannot lock your topics in this forum', + 'RULES_POST_CAN' => 'You can post new topics in this forum', + 'RULES_POST_CANNOT' => 'You cannot post new topics in this forum', + 'RULES_REPLY_CAN' => 'You can reply to topics in this forum', + 'RULES_REPLY_CANNOT' => 'You cannot reply to topics in this forum', + 'RULES_VOTE_CAN' => 'You can vote in polls in this forum', + 'RULES_VOTE_CANNOT' => 'You cannot vote in polls in this forum', + + 'SEARCH' => 'Search', + 'SEARCH_MINI' => 'Search…', + 'SEARCH_ADV' => 'Advanced search', + 'SEARCH_ADV_EXPLAIN' => 'View the advanced search options', + 'SEARCH_KEYWORDS' => 'Search for keywords', + 'SEARCHING_FORUMS' => 'Searching forums', + 'SEARCH_ACTIVE_TOPICS' => 'Active topics', + 'SEARCH_FOR' => 'Search for', + 'SEARCH_FORUM' => 'Search this forum…', + 'SEARCH_NEW' => 'New posts', + 'SEARCH_POSTS_BY' => 'Search posts by', + 'SEARCH_SELF' => 'Your posts', + 'SEARCH_TOPIC' => 'Search this topic…', + 'SEARCH_UNANSWERED' => 'Unanswered topics', + 'SEARCH_UNREAD' => 'Unread posts', + 'SEARCH_USER_POSTS' => 'Search user’s posts', + 'SECONDS' => 'Seconds', + 'SEE_ALL' => 'See All', + 'SELECT' => 'Select', + 'SELECT_ALL_CODE' => 'Select all', + 'SELECT_DESTINATION_FORUM' => 'Please select a destination forum', + 'SELECT_FORUM' => 'Select a forum', + 'SEND_EMAIL' => 'Send email', // Used for submit buttons + 'SEND_EMAIL_USER' => 'Send email to %s', + 'SEND_PRIVATE_MESSAGE' => 'Send private message', + 'SETTINGS' => 'Settings', + 'SIGNATURE' => 'Signature', + 'SKIP' => 'Skip to content', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'SMTP server does not support authentication.', + 'SORRY_AUTH_READ' => 'You are not authorised to read this forum.', + 'SORRY_AUTH_READ_TOPIC' => 'You are not authorised to read this topic.', + 'SORRY_AUTH_VIEW_ATTACH' => 'You are not authorised to download this attachment.', + 'SORT_BY' => 'Sort by', + 'SORT_DIRECTION' => 'Direction', + 'SORT_JOINED' => 'Joined date', + 'SORT_LOCATION' => 'Location', + 'SORT_OPTIONS' => 'Display and sorting options', + 'SORT_RANK' => 'Rank', + 'SORT_POSTS' => 'Posts', + 'SORT_TOPIC_TITLE' => 'Topic title', + 'SORT_USERNAME' => 'Username', + 'SPLIT_TOPIC' => 'Split topic', + 'SQL_ERROR_OCCURRED' => 'An SQL error occurred while fetching this page. Please contact the %sBoard Administrator%s if this problem persists.', + 'STATISTICS' => 'Statistics', + 'START_WATCHING_FORUM' => 'Subscribe forum', + 'START_WATCHING_TOPIC' => 'Subscribe topic', + 'STOP_WATCHING_FORUM' => 'Unsubscribe forum', + 'STOP_WATCHING_TOPIC' => 'Unsubscribe topic', + 'STRING_LIST_MULTI' => '%1$s, and %2$s', + 'STRING_LIST_SIMPLE' => '%1$s and %2$s', + 'SUBFORUM' => 'Subforum', + 'SUBFORUMS' => 'Subforums', + 'SUBJECT' => 'Subject', + 'SUBMIT' => 'Submit', + + 'STORAGE_ADAPTER_NOT_AVAILABLE' => 'Selected storage is not available.', + 'STORAGE_FILE_EXISTS' => 'File already exists.', + 'STORAGE_FILE_NO_EXIST' => 'File does not exist.', + 'STORAGE_CANNOT_WRITE_FILE' => 'Can not write to file.', + 'STORAGE_CANNOT_READ_FILE' => 'Can not read file.', + 'STORAGE_CANNOT_DELETE' => 'Can not delete file or folder.', + 'STORAGE_CANNOT_RENAME' => 'Can not rename file or folder.', + 'STORAGE_CANNOT_COPY' => 'Can not copy file or folder.', + 'STORAGE_CANNOT_COPY_RESOURCE' => 'Can not copy resource.', + 'STORAGE_CANNOT_CREATE_DIR' => 'Can not create directory.', + 'STORAGE_CANNOT_OPEN_FILE' => 'Can not open file.', + 'STORAGE_CANNOT_CREATE_FILE' => 'Can not create file.', + + 'TB' => 'TB', + 'TERMS_USE' => 'Terms of use', + 'TEST_CONNECTION' => 'Test connection', + 'THE_TEAM' => 'The team', + 'TIB' => 'TiB', + 'TIME' => 'Time', + 'TIMEOUT_PROCESSING_REQ' => 'Request timed out.', + + 'TOO_LARGE' => 'The value you entered is too large.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'The value of Maximum number of allowed recipients per private message setting you entered is too large.', + + 'TOO_LONG' => 'The value you entered is too long.', + + 'TOO_LONG_CONFIRM_CODE' => 'The confirm code you entered is too long.', + 'TOO_LONG_DATEFORMAT' => 'The date format you entered is too long.', + 'TOO_LONG_JABBER' => 'The Jabber account name you entered is too long.', + 'TOO_LONG_NEW_PASSWORD' => 'The password you entered is too long.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'The password confirmation you entered is too long.', + 'TOO_LONG_USER_PASSWORD' => 'The password you entered is too long.', + 'TOO_LONG_USERNAME' => 'The username you entered is too long.', + 'TOO_LONG_EMAIL' => 'The email address you entered is too long.', + + 'TOO_MANY_VOTE_OPTIONS' => 'You have tried to vote for too many options.', + + 'TOO_SHORT' => 'The value you entered is too short.', + + 'TOO_SHORT_CONFIRM_CODE' => 'The confirm code you entered is too short.', + 'TOO_SHORT_DATEFORMAT' => 'The date format you entered is too short.', + 'TOO_SHORT_JABBER' => 'The Jabber account name you entered is too short.', + 'TOO_SHORT_NEW_PASSWORD' => 'The password you entered is too short.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'The password confirmation you entered is too short.', + 'TOO_SHORT_USER_PASSWORD' => 'The password you entered is too short.', + 'TOO_SHORT_USERNAME' => 'The username you entered is too short.', + 'TOO_SHORT_EMAIL' => 'The email address you entered is too short.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'The email address confirmation you entered is too short.', + 'TOO_SMALL' => 'The value you entered is too small.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'The value of Maximum number of allowed recipients per private message setting you entered is too small.', + + 'TOPIC' => 'Topic', + 'TOPICS' => 'Topics', + 'TOPICS_UNAPPROVED' => 'At least one topic in this forum has not been approved.', + 'TOPIC_ICON' => 'Topic icon', + 'TOPIC_LOCKED' => 'This topic is locked, you cannot edit posts or make further replies.', + 'TOPIC_LOCKED_SHORT'=> 'Topic locked', + 'TOPIC_MOVED' => 'Moved topic', + 'TOPIC_REVIEW' => 'Topic review', + 'TOPIC_TITLE' => 'Topic title', + 'TOPIC_UNAPPROVED' => 'This topic has not been approved.', + 'TOPIC_DELETED' => 'This topic has been deleted.', + 'TOTAL_ATTACHMENTS' => 'Attachment(s)', + 'TOTAL_LOGS' => array( + 1 => '%d log', + 2 => '%d logs', + ), + 'TOTAL_PMS' => array( + 1 => '%d private message in total', + 2 => '%d private messages in total', + ), + 'TOPIC_POLL' => 'This topic has a poll.', + 'TOTAL_POSTS' => 'Total posts', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Total posts %d', + ), + 'TOPIC_REPORTED' => 'This topic has been reported', + 'TOTAL_TOPICS' => array( + 2 => 'Total topics %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Total members %d', + ), + 'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'It was not possible to determine the dimensions of the image. Please verify that the URL you entered is correct.', + 'UNABLE_TO_DELIVER_FILE'=> 'Unable to deliver file.', + 'UNKNOWN_BROWSER' => 'Unknown browser', + 'UNMARK_ALL' => 'Unmark all', + 'UNREAD_MESSAGES' => 'Unread messages', + 'UNREAD_POST' => 'Unread post', + 'UNREAD_POSTS' => 'Unread posts', + 'UNWATCH_FORUM_CONFIRM' => 'Are you sure you wish to unsubscribe from this forum?', + 'UNWATCH_FORUM_DETAILED' => 'Are you sure you wish to unsubscribe from the forum “%sâ€?', + 'UNWATCH_TOPIC_CONFIRM' => 'Are you sure you wish to unsubscribe from this topic?', + 'UNWATCH_TOPIC_DETAILED' => 'Are you sure you wish to unsubscribe from the topic “%sâ€?', + 'UNWATCHED_FORUMS' => 'You are no longer subscribed to the selected forums.', + 'UNWATCHED_TOPICS' => 'You are no longer subscribed to the selected topics.', + 'UNWATCHED_FORUMS_TOPICS' => 'You are no longer subscribed to the selected entries.', + 'UPDATE' => 'Update', + 'UPLOAD_IN_PROGRESS' => 'The upload is currently in progress.', + 'URL_REDIRECT' => 'If your browser does not support meta redirection %splease click HERE to be redirected%s.', + 'USERGROUPS' => 'Groups', + 'USERNAME' => 'Username', + 'USERNAMES' => 'Usernames', + 'USER_AVATAR' => 'User avatar', + 'USER_CANNOT_READ' => 'You cannot read posts in this forum.', + 'USER_POSTS' => array( + 1 => '%d Post', + 2 => '%d Posts', + ), + 'USERS' => 'Users', + 'USE_PERMISSIONS' => 'Test out user’s permissions', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'We are sorry, but you are not authorised to use this feature. You may have just registered here and may need to participate more in discussions to be able to use this feature.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'Viewed', + 'VIEWED_COUNTS' => array( + 0 => 'Not viewed yet', + 1 => 'Viewed %d time', + 2 => 'Viewed %d times', + ), + 'VIEWING_CONTACT_ADMIN' => 'Viewing contact page', + 'VIEWING_FAQ' => 'Viewing FAQ', + 'VIEWING_MEMBERS' => 'Viewing member details', + 'VIEWING_ONLINE' => 'Viewing who is online', + 'VIEWING_MCP' => 'Viewing moderator control panel', + 'VIEWING_MEMBER_PROFILE' => 'Viewing member profile', + 'VIEWING_PRIVATE_MESSAGES' => 'Viewing private messages', + 'VIEWING_REGISTER' => 'Registering account', + 'VIEWING_UCP' => 'Viewing user control panel', + 'VIEWS' => 'Views', + 'VIEW_BOOKMARKS' => 'View bookmarks', + 'VIEW_FORUM_LOGS' => 'View Logs', + 'VIEW_LATEST_POST' => 'View the latest post', + 'VIEW_NEWEST_POST' => 'View first unread post', + 'VIEW_NOTES' => 'View user notes', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'based on users active over the past %d minute', + 2 => 'based on users active over the past %d minutes', + ), + 'VIEW_TOPIC' => 'View topic', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'Announcement: ', + 'VIEW_TOPIC_GLOBAL' => 'Global Announcement: ', + 'VIEW_TOPIC_LOCKED' => 'Locked: ', + 'VIEW_TOPIC_LOGS' => 'View logs', + 'VIEW_TOPIC_MOVED' => 'Moved: ', + 'VIEW_TOPIC_POLL' => 'Poll: ', + 'VIEW_TOPIC_STICKY' => 'Sticky: ', + 'VISIT_WEBSITE' => 'Visit website', + + 'WARNINGS' => 'Warnings', + 'WARN_USER' => 'Warn user', + 'WATCH_FORUM_CONFIRM' => 'Are you sure you wish to subscribe to this forum?', + 'WATCH_FORUM_DETAILED' => 'Are you sure you wish to subscribe to the forum “%sâ€?', + 'WATCH_TOPIC_CONFIRM' => 'Are you sure you wish to subscribe to this topic?', + 'WATCH_TOPIC_DETAILED' => 'Are you sure you wish to subscribe to the topic “%sâ€?', + 'WELCOME_SUBJECT' => 'Welcome to %s forums', + 'WEBSITE' => 'Website', + 'WHOIS' => 'Whois', + 'WHO_IS_ONLINE' => 'Who is online', + 'WRONG_PASSWORD' => 'You entered an incorrect password.', + + 'WRONG_DATA_COLOUR' => 'The colour value you entered is invalid.', + 'WRONG_DATA_JABBER' => 'The name you entered is not a valid Jabber account name.', + 'WRONG_DATA_LANG' => 'The language you specified is not valid.', + 'WRONG_DATA_POST_SD' => 'The post sort direction you specified is not valid.', + 'WRONG_DATA_POST_SK' => 'The post sort option you specified is not valid.', + 'WRONG_DATA_TOPIC_SD' => 'The topic sort direction you specified is not valid.', + 'WRONG_DATA_TOPIC_SK' => 'The topic sort option you specified is not valid.', + 'WROTE' => 'wrote', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'Year', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'Yes', + 'YOU_LAST_VISIT' => 'Last visit was: %s', + + 'datetime' => array( + 'TODAY' => 'Today', + 'TOMORROW' => 'Tomorrow', + 'YESTERDAY' => 'Yesterday', + 'AGO' => array( + 0 => 'less than a minute ago', + 1 => '%d minute ago', + 2 => '%d minutes ago', + ), + + 'Sunday' => 'Sunday', + 'Monday' => 'Monday', + 'Tuesday' => 'Tuesday', + 'Wednesday' => 'Wednesday', + 'Thursday' => 'Thursday', + 'Friday' => 'Friday', + 'Saturday' => 'Saturday', + + 'Sun' => 'Sun', + 'Mon' => 'Mon', + 'Tue' => 'Tue', + 'Wed' => 'Wed', + 'Thu' => 'Thu', + 'Fri' => 'Fri', + 'Sat' => 'Sat', + + 'January' => 'January', + 'February' => 'February', + 'March' => 'March', + 'April' => 'April', + 'May' => 'May', + 'June' => 'June', + 'July' => 'July', + 'August' => 'August', + 'September' => 'September', + 'October' => 'October', + 'November' => 'November', + 'December' => 'December', + + 'Jan' => 'Jan', + 'Feb' => 'Feb', + 'Mar' => 'Mar', + 'Apr' => 'Apr', + 'May_short' => 'May', // Short representation of "May". May_short used because in English the short and long date are the same for May. + 'Jun' => 'Jun', + 'Jul' => 'Jul', + 'Aug' => 'Aug', + 'Sep' => 'Sep', + 'Oct' => 'Oct', + 'Nov' => 'Nov', + 'Dec' => 'Dec', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + 'Africa/Abidjan' => 'Africa/Abidjan', + 'Africa/Accra' => 'Africa/Accra', + 'Africa/Addis_Ababa' => 'Africa/Addis Ababa', + 'Africa/Algiers' => 'Africa/Algiers', + 'Africa/Asmara' => 'Africa/Asmara', + 'Africa/Bamako' => 'Africa/Bamako', + 'Africa/Bangui' => 'Africa/Bangui', + 'Africa/Banjul' => 'Africa/Banjul', + 'Africa/Bissau' => 'Africa/Bissau', + 'Africa/Blantyre' => 'Africa/Blantyre', + 'Africa/Brazzaville' => 'Africa/Brazzaville', + 'Africa/Bujumbura' => 'Africa/Bujumbura', + 'Africa/Cairo' => 'Africa/Cairo', + 'Africa/Casablanca' => 'Africa/Casablanca', + 'Africa/Ceuta' => 'Africa/Ceuta', + 'Africa/Conakry' => 'Africa/Conakry', + 'Africa/Dakar' => 'Africa/Dakar', + 'Africa/Dar_es_Salaam' => 'Africa/Dar es Salaam', + 'Africa/Djibouti' => 'Africa/Djibouti', + 'Africa/Douala' => 'Africa/Douala', + 'Africa/El_Aaiun' => 'Africa/El Aaiun', + 'Africa/Freetown' => 'Africa/Freetown', + 'Africa/Gaborone' => 'Africa/Gaborone', + 'Africa/Harare' => 'Africa/Harare', + 'Africa/Johannesburg' => 'Africa/Johannesburg', + 'Africa/Juba' => 'Africa/Juba', + 'Africa/Kampala' => 'Africa/Kampala', + 'Africa/Khartoum' => 'Africa/Khartoum', + 'Africa/Kigali' => 'Africa/Kigali', + 'Africa/Kinshasa' => 'Africa/Kinshasa', + 'Africa/Lagos' => 'Africa/Lagos', + 'Africa/Libreville' => 'Africa/Libreville', + 'Africa/Lome' => 'Africa/Lome', + 'Africa/Luanda' => 'Africa/Luanda', + 'Africa/Lubumbashi' => 'Africa/Lubumbashi', + 'Africa/Lusaka' => 'Africa/Lusaka', + 'Africa/Malabo' => 'Africa/Malabo', + 'Africa/Maputo' => 'Africa/Maputo', + 'Africa/Maseru' => 'Africa/Maseru', + 'Africa/Mbabane' => 'Africa/Mbabane', + 'Africa/Mogadishu' => 'Africa/Mogadishu', + 'Africa/Monrovia' => 'Africa/Monrovia', + 'Africa/Nairobi' => 'Africa/Nairobi', + 'Africa/Ndjamena' => 'Africa/Ndjamena', + 'Africa/Niamey' => 'Africa/Niamey', + 'Africa/Nouakchott' => 'Africa/Nouakchott', + 'Africa/Ouagadougou' => 'Africa/Ouagadougou', + 'Africa/Porto-Novo' => 'Africa/Porto-Novo', + 'Africa/Sao_Tome' => 'Africa/Sao Tome', + 'Africa/Tripoli' => 'Africa/Tripoli', + 'Africa/Tunis' => 'Africa/Tunis', + 'Africa/Windhoek' => 'Africa/Windhoek', + + 'America/Adak' => 'America/Adak', + 'America/Anchorage' => 'America/Anchorage', + 'America/Anguilla' => 'America/Anguilla', + 'America/Antigua' => 'America/Antigua', + 'America/Araguaina' => 'America/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'America/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'America/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'America/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'America/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'America/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'America/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'America/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'America/Argentina/Salta', + 'America/Argentina/San_Juan' => 'America/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'America/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'America/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'America/Argentina/Ushuaia', + + 'America/Aruba' => 'America/Aruba', + 'America/Asuncion' => 'America/Asuncion', + 'America/Atikokan' => 'America/Atikokan', + 'America/Bahia' => 'America/Bahia', + 'America/Bahia_Banderas' => 'America/Bahia Banderas', + 'America/Barbados' => 'America/Barbados', + 'America/Belem' => 'America/Belem', + 'America/Belize' => 'America/Belize', + 'America/Blanc-Sablon' => 'America/Blanc-Sablon', + 'America/Boa_Vista' => 'America/Boa Vista', + 'America/Bogota' => 'America/Bogota', + 'America/Boise' => 'America/Boise', + 'America/Cambridge_Bay' => 'America/Cambridge Bay', + 'America/Campo_Grande' => 'America/Campo Grande', + 'America/Cancun' => 'America/Cancun', + 'America/Caracas' => 'America/Caracas', + 'America/Cayenne' => 'America/Cayenne', + 'America/Cayman' => 'America/Cayman', + 'America/Chicago' => 'America/Chicago', + 'America/Chihuahua' => 'America/Chihuahua', + 'America/Costa_Rica' => 'America/Costa Rica', + 'America/Creston' => 'America/Creston', + 'America/Cuiaba' => 'America/Cuiaba', + 'America/Curacao' => 'America/Curacao', + 'America/Danmarkshavn' => 'America/Danmarkshavn', + 'America/Dawson' => 'America/Dawson', + 'America/Dawson_Creek' => 'America/Dawson Creek', + 'America/Denver' => 'America/Denver', + 'America/Detroit' => 'America/Detroit', + 'America/Dominica' => 'America/Dominica', + 'America/Edmonton' => 'America/Edmonton', + 'America/Eirunepe' => 'America/Eirunepe', + 'America/El_Salvador' => 'America/El Salvador', + 'America/Fortaleza' => 'America/Fortaleza', + 'America/Glace_Bay' => 'America/Glace Bay', + 'America/Godthab' => 'America/Godthab', + 'America/Goose_Bay' => 'America/Goose Bay', + 'America/Grand_Turk' => 'America/Grand Turk', + 'America/Grenada' => 'America/Grenada', + 'America/Guadeloupe' => 'America/Guadeloupe', + 'America/Guatemala' => 'America/Guatemala', + 'America/Guayaquil' => 'America/Guayaquil', + 'America/Guyana' => 'America/Guyana', + 'America/Halifax' => 'America/Halifax', + 'America/Havana' => 'America/Havana', + 'America/Hermosillo' => 'America/Hermosillo', + 'America/Indiana/Indianapolis' => 'America/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'America/Indiana/Knox', + 'America/Indiana/Marengo' => 'America/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'America/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'America/Indiana/Tell City', + 'America/Indiana/Vevay' => 'America/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'America/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'America/Indiana/Winamac', + 'America/Inuvik' => 'America/Inuvik', + 'America/Iqaluit' => 'America/Iqaluit', + 'America/Jamaica' => 'America/Jamaica', + 'America/Juneau' => 'America/Juneau', + 'America/Kentucky/Louisville' => 'America/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'America/Kentucky/Monticello', + 'America/Kralendijk' => 'America/Kralendijk', + 'America/La_Paz' => 'America/La Paz', + 'America/Lima' => 'America/Lima', + 'America/Los_Angeles' => 'America/Los Angeles', + 'America/Lower_Princes' => 'America/Lower Princes', + 'America/Maceio' => 'America/Maceio', + 'America/Managua' => 'America/Managua', + 'America/Manaus' => 'America/Manaus', + 'America/Marigot' => 'America/Marigot', + 'America/Martinique' => 'America/Martinique', + 'America/Matamoros' => 'America/Matamoros', + 'America/Mazatlan' => 'America/Mazatlan', + 'America/Menominee' => 'America/Menominee', + 'America/Merida' => 'America/Merida', + 'America/Metlakatla' => 'America/Metlakatla', + 'America/Mexico_City' => 'America/Mexico City', + 'America/Miquelon' => 'America/Miquelon', + 'America/Moncton' => 'America/Moncton', + 'America/Monterrey' => 'America/Monterrey', + 'America/Montevideo' => 'America/Montevideo', + 'America/Montreal' => 'America/Montreal', + 'America/Montserrat' => 'America/Montserrat', + 'America/Nassau' => 'America/Nassau', + 'America/New_York' => 'America/New York', + 'America/Nipigon' => 'America/Nipigon', + 'America/Nome' => 'America/Nome', + 'America/Noronha' => 'America/Noronha', + 'America/North_Dakota/Beulah' => 'America/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'America/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'America/North Dakota/New Salem', + 'America/Ojinaga' => 'America/Ojinaga', + 'America/Panama' => 'America/Panama', + 'America/Pangnirtung' => 'America/Pangnirtung', + 'America/Paramaribo' => 'America/Paramaribo', + 'America/Phoenix' => 'America/Phoenix', + 'America/Port-au-Prince' => 'America/Port-au-Prince', + 'America/Port_of_Spain' => 'America/Port of Spain', + 'America/Porto_Velho' => 'America/Porto Velho', + 'America/Puerto_Rico' => 'America/Puerto Rico', + 'America/Rainy_River' => 'America/Rainy River', + 'America/Rankin_Inlet' => 'America/Rankin Inlet', + 'America/Recife' => 'America/Recife', + 'America/Regina' => 'America/Regina', + 'America/Resolute' => 'America/Resolute', + 'America/Rio_Branco' => 'America/Rio Branco', + 'America/Santa_Isabel' => 'America/Santa Isabel', + 'America/Santarem' => 'America/Santarem', + 'America/Santiago' => 'America/Santiago', + 'America/Santo_Domingo' => 'America/Santo Domingo', + 'America/Sao_Paulo' => 'America/Sao Paulo', + 'America/Scoresbysund' => 'America/Scoresbysund', + 'America/Shiprock' => 'America/Shiprock', + 'America/Sitka' => 'America/Sitka', + 'America/St_Barthelemy' => 'America/St. Barthelemy', + 'America/St_Johns' => 'America/St. Johns', + 'America/St_Kitts' => 'America/St. Kitts', + 'America/St_Lucia' => 'America/St. Lucia', + 'America/St_Thomas' => 'America/St. Thomas', + 'America/St_Vincent' => 'America/St. Vincent', + 'America/Swift_Current' => 'America/Swift Current', + 'America/Tegucigalpa' => 'America/Tegucigalpa', + 'America/Thule' => 'America/Thule', + 'America/Thunder_Bay' => 'America/Thunder Bay', + 'America/Tijuana' => 'America/Tijuana', + 'America/Toronto' => 'America/Toronto', + 'America/Tortola' => 'America/Tortola', + 'America/Vancouver' => 'America/Vancouver', + 'America/Whitehorse' => 'America/Whitehorse', + 'America/Winnipeg' => 'America/Winnipeg', + 'America/Yakutat' => 'America/Yakutat', + 'America/Yellowknife' => 'America/Yellowknife', + + 'Antarctica/Casey' => 'Antarctica/Casey', + 'Antarctica/Davis' => 'Antarctica/Davis', + 'Antarctica/DumontDUrville' => 'Antarctica/DumontDUrville', + 'Antarctica/Macquarie' => 'Antarctica/Macquarie', + 'Antarctica/Mawson' => 'Antarctica/Mawson', + 'Antarctica/McMurdo' => 'Antarctica/McMurdo', + 'Antarctica/Palmer' => 'Antarctica/Palmer', + 'Antarctica/Rothera' => 'Antarctica/Rothera', + 'Antarctica/South_Pole' => 'Antarctica/South Pole', + 'Antarctica/Syowa' => 'Antarctica/Syowa', + 'Antarctica/Vostok' => 'Antarctica/Vostok', + + 'Arctic/Longyearbyen' => 'Arctic/Longyearbyen', + + 'Asia/Aden' => 'Asia/Aden', + 'Asia/Almaty' => 'Asia/Almaty', + 'Asia/Amman' => 'Asia/Amman', + 'Asia/Anadyr' => 'Asia/Anadyr', + 'Asia/Aqtau' => 'Asia/Aqtau', + 'Asia/Aqtobe' => 'Asia/Aqtobe', + 'Asia/Ashgabat' => 'Asia/Ashgabat', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Bahrain' => 'Asia/Bahrain', + 'Asia/Baku' => 'Asia/Baku', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Beirut' => 'Asia/Beirut', + 'Asia/Bishkek' => 'Asia/Bishkek', + 'Asia/Brunei' => 'Asia/Brunei', + 'Asia/Choibalsan' => 'Asia/Choibalsan', + 'Asia/Chongqing' => 'Asia/Chongqing', + 'Asia/Colombo' => 'Asia/Colombo', + 'Asia/Damascus' => 'Asia/Damascus', + 'Asia/Dhaka' => 'Asia/Dhaka', + 'Asia/Dili' => 'Asia/Dili', + 'Asia/Dubai' => 'Asia/Dubai', + 'Asia/Dushanbe' => 'Asia/Dushanbe', + 'Asia/Gaza' => 'Asia/Gaza', + 'Asia/Harbin' => 'Asia/Harbin', + 'Asia/Hebron' => 'Asia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Asia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Asia/Hong Kong', + 'Asia/Hovd' => 'Asia/Hovd', + 'Asia/Irkutsk' => 'Asia/Irkutsk', + 'Asia/Jakarta' => 'Asia/Jakarta', + 'Asia/Jayapura' => 'Asia/Jayapura', + 'Asia/Jerusalem' => 'Asia/Jerusalem', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Kamchatka' => 'Asia/Kamchatka', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kashgar' => 'Asia/Kashgar', + 'Asia/Kathmandu' => 'Asia/Kathmandu', + 'Asia/Khandyga' => 'Asia/Khandyga', + 'Asia/Kolkata' => 'Asia/Kolkata', + 'Asia/Krasnoyarsk' => 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Asia/Kuala Lumpur', + 'Asia/Kuching' => 'Asia/Kuching', + 'Asia/Kuwait' => 'Asia/Kuwait', + 'Asia/Macau' => 'Asia/Macau', + 'Asia/Magadan' => 'Asia/Magadan', + 'Asia/Makassar' => 'Asia/Makassar', + 'Asia/Manila' => 'Asia/Manila', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Nicosia' => 'Asia/Nicosia', + 'Asia/Novokuznetsk' => 'Asia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Asia/Novosibirsk', + 'Asia/Omsk' => 'Asia/Omsk', + 'Asia/Oral' => 'Asia/Oral', + 'Asia/Phnom_Penh' => 'Asia/Phnom Penh', + 'Asia/Pontianak' => 'Asia/Pontianak', + 'Asia/Pyongyang' => 'Asia/Pyongyang', + 'Asia/Qatar' => 'Asia/Qatar', + 'Asia/Qyzylorda' => 'Asia/Qyzylorda', + 'Asia/Rangoon' => 'Asia/Rangoon', + 'Asia/Riyadh' => 'Asia/Riyadh', + 'Asia/Sakhalin' => 'Asia/Sakhalin', + 'Asia/Samarkand' => 'Asia/Samarkand', + 'Asia/Seoul' => 'Asia/Seoul', + 'Asia/Shanghai' => 'Asia/Shanghai', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Taipei' => 'Asia/Taipei', + 'Asia/Tashkent' => 'Asia/Tashkent', + 'Asia/Tbilisi' => 'Asia/Tbilisi', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Thimphu' => 'Asia/Thimphu', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Asia/Ulaanbaatar' => 'Asia/Ulaanbaatar', + 'Asia/Urumqi' => 'Asia/Urumqi', + 'Asia/Ust-Nera' => 'Asia/Ust-Nera', + 'Asia/Vientiane' => 'Asia/Vientiane', + 'Asia/Vladivostok' => 'Asia/Vladivostok', + 'Asia/Yakutsk' => 'Asia/Yakutsk', + 'Asia/Yekaterinburg' => 'Asia/Yekaterinburg', + 'Asia/Yerevan' => 'Asia/Yerevan', + + 'Atlantic/Azores' => 'Atlantic/Azores', + 'Atlantic/Bermuda' => 'Atlantic/Bermuda', + 'Atlantic/Canary' => 'Atlantic/Canary', + 'Atlantic/Cape_Verde' => 'Atlantic/Cape Verde', + 'Atlantic/Faroe' => 'Atlantic/Faroe', + 'Atlantic/Madeira' => 'Atlantic/Madeira', + 'Atlantic/Reykjavik' => 'Atlantic/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlantic/South Georgia', + 'Atlantic/St_Helena' => 'Atlantic/St. Helena', + 'Atlantic/Stanley' => 'Atlantic/Stanley', + + 'Australia/Adelaide' => 'Australia/Adelaide', + 'Australia/Brisbane' => 'Australia/Brisbane', + 'Australia/Broken_Hill' => 'Australia/Broken Hill', + 'Australia/Currie' => 'Australia/Currie', + 'Australia/Darwin' => 'Australia/Darwin', + 'Australia/Eucla' => 'Australia/Eucla', + 'Australia/Hobart' => 'Australia/Hobart', + 'Australia/Lindeman' => 'Australia/Lindeman', + 'Australia/Lord_Howe' => 'Australia/Lord Howe', + 'Australia/Melbourne' => 'Australia/Melbourne', + 'Australia/Perth' => 'Australia/Perth', + 'Australia/Sydney' => 'Australia/Sydney', + + 'Europe/Amsterdam' => 'Europe/Amsterdam', + 'Europe/Andorra' => 'Europe/Andorra', + 'Europe/Athens' => 'Europe/Athens', + 'Europe/Belgrade' => 'Europe/Belgrade', + 'Europe/Berlin' => 'Europe/Berlin', + 'Europe/Bratislava' => 'Europe/Bratislava', + 'Europe/Brussels' => 'Europe/Brussels', + 'Europe/Bucharest' => 'Europe/Bucharest', + 'Europe/Budapest' => 'Europe/Budapest', + 'Europe/Busingen' => 'Europe/Busingen', + 'Europe/Chisinau' => 'Europe/Chisinau', + 'Europe/Copenhagen' => 'Europe/Copenhagen', + 'Europe/Dublin' => 'Europe/Dublin', + 'Europe/Gibraltar' => 'Europe/Gibraltar', + 'Europe/Guernsey' => 'Europe/Guernsey', + 'Europe/Helsinki' => 'Europe/Helsinki', + 'Europe/Isle_of_Man' => 'Europe/Isle of Man', + 'Europe/Istanbul' => 'Europe/Istanbul', + 'Europe/Jersey' => 'Europe/Jersey', + 'Europe/Kaliningrad' => 'Europe/Kaliningrad', + 'Europe/Kiev' => 'Europe/Kiev', + 'Europe/Lisbon' => 'Europe/Lisbon', + 'Europe/Ljubljana' => 'Europe/Ljubljana', + 'Europe/London' => 'Europe/London', + 'Europe/Luxembourg' => 'Europe/Luxembourg', + 'Europe/Madrid' => 'Europe/Madrid', + 'Europe/Malta' => 'Europe/Malta', + 'Europe/Mariehamn' => 'Europe/Mariehamn', + 'Europe/Minsk' => 'Europe/Minsk', + 'Europe/Monaco' => 'Europe/Monaco', + 'Europe/Moscow' => 'Europe/Moscow', + 'Europe/Oslo' => 'Europe/Oslo', + 'Europe/Paris' => 'Europe/Paris', + 'Europe/Podgorica' => 'Europe/Podgorica', + 'Europe/Prague' => 'Europe/Prague', + 'Europe/Riga' => 'Europe/Riga', + 'Europe/Rome' => 'Europe/Rome', + 'Europe/Samara' => 'Europe/Samara', + 'Europe/San_Marino' => 'Europe/San Marino', + 'Europe/Sarajevo' => 'Europe/Sarajevo', + 'Europe/Simferopol' => 'Europe/Simferopol', + 'Europe/Skopje' => 'Europe/Skopje', + 'Europe/Sofia' => 'Europe/Sofia', + 'Europe/Stockholm' => 'Europe/Stockholm', + 'Europe/Tallinn' => 'Europe/Tallinn', + 'Europe/Tirane' => 'Europe/Tirane', + 'Europe/Uzhgorod' => 'Europe/Uzhgorod', + 'Europe/Vaduz' => 'Europe/Vaduz', + 'Europe/Vatican' => 'Europe/Vatican', + 'Europe/Vienna' => 'Europe/Vienna', + 'Europe/Vilnius' => 'Europe/Vilnius', + 'Europe/Volgograd' => 'Europe/Volgograd', + 'Europe/Warsaw' => 'Europe/Warsaw', + 'Europe/Zagreb' => 'Europe/Zagreb', + 'Europe/Zaporozhye' => 'Europe/Zaporozhye', + 'Europe/Zurich' => 'Europe/Zurich', + + 'Indian/Antananarivo' => 'Indian/Antananarivo', + 'Indian/Chagos' => 'Indian/Chagos', + 'Indian/Christmas' => 'Indian/Christmas', + 'Indian/Cocos' => 'Indian/Cocos', + 'Indian/Comoro' => 'Indian/Comoro', + 'Indian/Kerguelen' => 'Indian/Kerguelen', + 'Indian/Mahe' => 'Indian/Mahe', + 'Indian/Maldives' => 'Indian/Maldives', + 'Indian/Mauritius' => 'Indian/Mauritius', + 'Indian/Mayotte' => 'Indian/Mayotte', + 'Indian/Reunion' => 'Indian/Reunion', + + 'Pacific/Apia' => 'Pacific/Apia', + 'Pacific/Auckland' => 'Pacific/Auckland', + 'Pacific/Chatham' => 'Pacific/Chatham', + 'Pacific/Chuuk' => 'Pacific/Chuuk', + 'Pacific/Easter' => 'Pacific/Easter', + 'Pacific/Efate' => 'Pacific/Efate', + 'Pacific/Enderbury' => 'Pacific/Enderbury', + 'Pacific/Fakaofo' => 'Pacific/Fakaofo', + 'Pacific/Fiji' => 'Pacific/Fiji', + 'Pacific/Funafuti' => 'Pacific/Funafuti', + 'Pacific/Galapagos' => 'Pacific/Galapagos', + 'Pacific/Gambier' => 'Pacific/Gambier', + 'Pacific/Guadalcanal' => 'Pacific/Guadalcanal', + 'Pacific/Guam' => 'Pacific/Guam', + 'Pacific/Honolulu' => 'Pacific/Honolulu', + 'Pacific/Johnston' => 'Pacific/Johnston', + 'Pacific/Kiritimati' => 'Pacific/Kiritimati', + 'Pacific/Kosrae' => 'Pacific/Kosrae', + 'Pacific/Kwajalein' => 'Pacific/Kwajalein', + 'Pacific/Majuro' => 'Pacific/Majuro', + 'Pacific/Marquesas' => 'Pacific/Marquesas', + 'Pacific/Midway' => 'Pacific/Midway', + 'Pacific/Nauru' => 'Pacific/Nauru', + 'Pacific/Niue' => 'Pacific/Niue', + 'Pacific/Norfolk' => 'Pacific/Norfolk', + 'Pacific/Noumea' => 'Pacific/Noumea', + 'Pacific/Pago_Pago' => 'Pacific/Pago Pago', + 'Pacific/Palau' => 'Pacific/Palau', + 'Pacific/Pitcairn' => 'Pacific/Pitcairn', + 'Pacific/Pohnpei' => 'Pacific/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacific/Port Moresby', + 'Pacific/Rarotonga' => 'Pacific/Rarotonga', + 'Pacific/Saipan' => 'Pacific/Saipan', + 'Pacific/Tahiti' => 'Pacific/Tahiti', + 'Pacific/Tarawa' => 'Pacific/Tarawa', + 'Pacific/Tongatapu' => 'Pacific/Tongatapu', + 'Pacific/Wake' => 'Pacific/Wake', + 'Pacific/Wallis' => 'Pacific/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Jan 2007, 13:37', + 'd M Y H:i' => '01 Jan 2007 13:37', + 'M jS, \'y, H:i' => 'Jan 1st, \'07, 13:37', + 'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm', + 'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm', + '|d M Y|, H:i' => 'Today, 13:37 / 01 Jan 2007, 13:37', + '|F jS, Y|, g:i a' => 'Today, 1:37 pm / January 1st, 2007, 1:37 pm', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D M d, Y g:i a', // Mon Jan 01, 2007 1:37 pm + +)); diff --git a/includes/shared/phpbb3/language/lang_english/index.htm b/includes/shared/phpbb3/language/lang_english/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_english/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_english/ucp.php b/includes/shared/phpbb3/language/lang_english/ucp.php new file mode 100644 index 00000000..5056e23d --- /dev/null +++ b/includes/shared/phpbb3/language/lang_english/ucp.php @@ -0,0 +1,659 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// Privacy policy and T&C +$lang = array_merge($lang, array( + 'TERMS_OF_USE_CONTENT' => 'By accessing “%1$s†(hereinafter “weâ€, “usâ€, “ourâ€, “%1$sâ€, “%2$sâ€), you agree to be legally bound by the following terms. If you do not agree to be legally bound by all of the following terms then please do not access and/or use “%1$sâ€. We may change these at any time and we’ll do our utmost in informing you, though it would be prudent to review this regularly yourself as your continued usage of “%1$s†after changes mean you agree to be legally bound by these terms as they are updated and/or amended.
    +
    + Our forums are powered by phpBB (hereinafter “theyâ€, “themâ€, “theirâ€, “phpBB softwareâ€, “www.phpbb.comâ€, “phpBB Limitedâ€, “phpBB Teamsâ€) which is a bulletin board solution released under the “GNU General Public License v2†(hereinafter “GPLâ€) and can be downloaded from www.phpbb.com. The phpBB software only facilitates internet based discussions; phpBB Limited is not responsible for what we allow and/or disallow as permissible content and/or conduct. For further information about phpBB, please see: https://www.phpbb.com/.
    +
    + You agree not to post any abusive, obscene, vulgar, slanderous, hateful, threatening, sexually-orientated or any other material that may violate any laws be it of your country, the country where “%1$s†is hosted or International Law. Doing so may lead to you being immediately and permanently banned, with notification of your Internet Service Provider if deemed required by us. The IP address of all posts are recorded to aid in enforcing these conditions. You agree that “%1$s†have the right to remove, edit, move or close any topic at any time should we see fit. As a user you agree to any information you have entered to being stored in a database. While this information will not be disclosed to any third party without your consent, neither “%1$s†nor phpBB shall be held responsible for any hacking attempt that may lead to the data being compromised. + ', + + 'PRIVACY_POLICY' => 'This policy explains in detail how “%1$s†along with its affiliated companies (hereinafter “weâ€, “usâ€, “ourâ€, “%1$sâ€, “%2$sâ€) and phpBB (hereinafter “theyâ€, “themâ€, “theirâ€, “phpBB softwareâ€, “www.phpbb.comâ€, “phpBB Limitedâ€, “phpBB Teamsâ€) use any information collected during any session of usage by you (hereinafter “your informationâ€).
    +
    + Your information is collected via two ways. Firstly, by browsing “%1$s†will cause the phpBB software to create a number of cookies, which are small text files that are downloaded on to your computer’s web browser temporary files. The first two cookies just contain a user identifier (hereinafter “user-idâ€) and an anonymous session identifier (hereinafter “session-idâ€), automatically assigned to you by the phpBB software. A third cookie will be created once you have browsed topics within “%1$s†and is used to store which topics have been read, thereby improving your user experience.
    +
    + We may also create cookies external to the phpBB software whilst browsing “%1$sâ€, though these are outside the scope of this document which is intended to only cover the pages created by the phpBB software. The second way in which we collect your information is by what you submit to us. This can be, and is not limited to: posting as an anonymous user (hereinafter “anonymous postsâ€), registering on “%1$s†(hereinafter “your accountâ€) and posts submitted by you after registration and whilst logged in (hereinafter “your postsâ€).
    +
    + Your account will at a bare minimum contain a uniquely identifiable name (hereinafter “your user nameâ€), a personal password used for logging into your account (hereinafter “your passwordâ€) and a personal, valid email address (hereinafter “your emailâ€). Your information for your account at “%1$s†is protected by data-protection laws applicable in the country that hosts us. Any information beyond your user name, your password, and your email address required by “%1$s†during the registration process is either mandatory or optional, at the discretion of “%1$sâ€. In all cases, you have the option of what information in your account is publicly displayed. Furthermore, within your account, you have the option to opt-in or opt-out of automatically generated emails from the phpBB software.
    +
    + Your password is ciphered (a one-way hash) so that it is secure. However, it is recommended that you do not reuse the same password across a number of different websites. Your password is the means of accessing your account at “%1$sâ€, so please guard it carefully and under no circumstance will anyone affiliated with “%1$sâ€, phpBB or another 3rd party, legitimately ask you for your password. Should you forget your password for your account, you can use the “I forgot my password†feature provided by the phpBB software. This process will ask you to submit your user name and your email, then the phpBB software will generate a new password to reclaim your account.
    + ', +)); + +// Common language entries +$lang = array_merge($lang, array( + 'ACCOUNT_ACTIVE' => 'Your account has now been activated. Thank you for registering.', + 'ACCOUNT_ACTIVE_ADMIN' => 'The account has now been activated.', + 'ACCOUNT_ACTIVE_PROFILE' => 'Your account has now been successfully reactivated.', + 'ACCOUNT_ADDED' => 'Thank you for registering, your account has been created. You may now login with your username and password.', + 'ACCOUNT_COPPA' => 'Your account has been created but has to be approved, please check your email for details.', + 'ACCOUNT_EMAIL_CHANGED' => 'Your account has been updated. However, this board requires account reactivation on email changes. An activation key has been sent to the new email address you provided. Please check your email for further information.', + 'ACCOUNT_EMAIL_CHANGED_ADMIN' => 'Your account has been updated. However, this board requires account reactivation by the administrators on email changes. An email has been sent to them and you will be informed when your account has been reactivated.', + 'ACCOUNT_INACTIVE' => 'Your account has been created. However, this board requires account activation. An activation key has been sent to the email address you provided. Please check your email for further information and also be sure to check your junk mail box. It may take a while to get the email depending on your email provider.', + 'ACCOUNT_INACTIVE_ADMIN' => 'Your account has been created. However, this board requires account activation by the administrator group. An email has been sent to them and you will be informed when your account has been activated.', + 'ACTIVATION_EMAIL_SENT' => 'The activation email has been sent to your email address.', + 'ACTIVATION_EMAIL_SENT_ADMIN' => 'The activation email has been sent to the administrators email addresses.', + 'ADD' => 'Add', + 'ADD_BCC' => 'Add [BCC]', + 'ADD_FOES' => 'Add new foes', + 'ADD_FOES_EXPLAIN' => 'You may enter several usernames each on a different line.', + 'ADD_FOLDER' => 'Add folder', + 'ADD_FRIENDS' => 'Add new friends', + 'ADD_FRIENDS_EXPLAIN' => 'You may enter several usernames each on a different line.', + 'ADD_NEW_RULE' => 'Add new rule', + 'ADD_RULE' => 'Add rule', + 'ADD_TO' => 'Add [To]', + 'ADD_USERS_UCP_EXPLAIN' => 'Here you can add new users to the group. You may select whether this group becomes the new default for the selected users. Please enter each username on a separate line.', + 'ADMIN_EMAIL' => 'Administrators can email me information', + 'AGREE' => 'I agree to these terms', + 'ALLOW_PM' => 'Allow users to send you private messages', + 'ALLOW_PM_EXPLAIN' => 'Note that administrators and moderators will always be able to send you messages.', + 'ALREADY_ACTIVATED' => 'You have already activated your account.', + 'ATTACHMENTS_EXPLAIN' => 'This is a list of attachments you have made in posts to this board.', + 'ATTACHMENTS_DELETED' => 'Attachments successfully deleted.', + 'ATTACHMENT_DELETED' => 'Attachment successfully deleted.', + 'AUTOLOGIN_SESSION_KEYS_DELETED'=> 'The selected "Remember Me" login keys were successfully deleted.', + 'AVATAR_CATEGORY' => 'Category', + 'AVATAR_DRIVER_GRAVATAR_TITLE' => 'Gravatar', + 'AVATAR_DRIVER_GRAVATAR_EXPLAIN'=> 'Gravatar is a service that allows you to maintain the same avatar across multiple websites. Visit Gravatar for more information.', + 'AVATAR_DRIVER_LOCAL_TITLE' => 'Gallery avatar', + 'AVATAR_DRIVER_LOCAL_EXPLAIN' => 'You can choose your avatar from a locally available set of avatars.', + 'AVATAR_DRIVER_REMOTE_TITLE' => 'Remote avatar', + 'AVATAR_DRIVER_REMOTE_EXPLAIN' => 'Link to avatar images from another website.', + 'AVATAR_DRIVER_UPLOAD_TITLE' => 'Upload avatar', + 'AVATAR_DRIVER_UPLOAD_EXPLAIN' => 'Upload your own custom avatar.', + 'AVATAR_EXPLAIN' => 'Maximum dimensions; width: %1$s, height: %2$s, file size: %3$.2f KiB.', + 'AVATAR_EXPLAIN_NO_FILESIZE' => 'Maximum dimensions; width: %1$s, height: %2$s.', + 'AVATAR_FEATURES_DISABLED' => 'The avatar functionality is currently disabled.', + 'AVATAR_GALLERY' => 'Local gallery', + 'AVATAR_GENERAL_UPLOAD_ERROR' => 'Could not upload avatar to %s.', + 'AVATAR_NOT_ALLOWED' => 'Your avatar cannot be displayed because avatars have been disallowed.', + 'AVATAR_PAGE' => 'Page', + 'AVATAR_SELECT' => 'Select your avatar', + 'AVATAR_TYPE' => 'Avatar type', + 'AVATAR_TYPE_NOT_ALLOWED' => 'Your current avatar cannot be displayed because its type has been disallowed.', + + 'BACK_TO_DRAFTS' => 'Back to saved drafts', + 'BACK_TO_LOGIN' => 'Back to login screen', + 'BIRTHDAY' => 'Birthday', + 'BIRTHDAY_EXPLAIN' => 'Setting a year will list your age when it is your birthday.', + 'BOARD_DATE_FORMAT' => 'My date format', + 'BOARD_DATE_FORMAT_EXPLAIN' => 'The syntax used is identical to the PHP date() function.', + 'BOARD_LANGUAGE' => 'My language', + 'BOARD_STYLE' => 'My board style', + 'BOARD_TIMEZONE' => 'My timezone', + 'BOOKMARKS' => 'Bookmarks', + 'BOOKMARKS_EXPLAIN' => 'You can bookmark topics for future reference. Select the checkbox for any bookmark you wish to delete, then press the Remove marked bookmarks button.', + 'BOOKMARKS_DISABLED' => 'Bookmarks are disabled on this board.', + 'BOOKMARKS_REMOVED' => 'Bookmarks removed successfully.', + + 'CANNOT_EDIT_MESSAGE_TIME' => 'You can no longer edit or delete that message.', + 'CANNOT_MOVE_TO_SAME_FOLDER'=> 'Messages cannot be moved to the folder you want to remove.', + 'CANNOT_MOVE_FROM_SPECIAL' => 'Messages cannot be moved from the outbox.', + 'CANNOT_RENAME_FOLDER' => 'This folder cannot be renamed.', + 'CANNOT_REMOVE_FOLDER' => 'This folder cannot be removed.', + 'CHANGE_DEFAULT_GROUP' => 'Change default group', + 'CHANGE_PASSWORD' => 'Change password', + 'CLICK_GOTO_FOLDER' => '%1$sGo to your “%3$s†folder%2$s', + 'CLICK_RETURN_FOLDER' => '%1$sReturn to your “%3$s†folder%2$s', + 'CONFIRMATION' => 'Confirmation of registration', + 'CONFIRM_CHANGES' => 'Confirm changes', + 'CONFIRM_EXPLAIN' => 'To prevent automated registrations the board requires you to enter a confirmation code. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.', + 'VC_REFRESH' => 'Refresh confirmation code', + 'VC_REFRESH_EXPLAIN' => 'If you cannot read the code you can request a new one by clicking the button.', + + 'CONFIRM_PASSWORD' => 'Confirm password', + 'CONFIRM_PASSWORD_EXPLAIN' => 'You only need to confirm your password if you changed it above.', + 'COPPA_BIRTHDAY' => 'To continue with the registration procedure please tell us when you were born.', + 'COPPA_COMPLIANCE' => 'COPPA compliance', + 'COPPA_EXPLAIN' => 'Please note that clicking submit will create your account. However it cannot be activated until a parent or guardian approves your registration. You will be emailed a copy of the necessary form with details of where to send it.', + 'CREATE_FOLDER' => 'Add folder…', + 'CURRENT_IMAGE' => 'Current image', + 'CURRENT_PASSWORD' => 'Current password', + 'CURRENT_PASSWORD_EXPLAIN' => 'You must enter your current password if you wish to alter your email address or username.', + 'CURRENT_CHANGE_PASSWORD_EXPLAIN' => 'To change your password, your email address, or your username, you must enter your current password.', + 'CUR_PASSWORD_EMPTY' => 'You did not enter your current password.', + 'CUR_PASSWORD_ERROR' => 'The current password you entered is incorrect.', + 'CUSTOM_DATEFORMAT' => 'Custom…', + + 'DEFAULT_ACTION' => 'Default action', + 'DEFAULT_ACTION_EXPLAIN' => 'This action will be triggered if none of the above is applicable.', + 'DEFAULT_ADD_SIG' => 'Attach my signature by default', + 'DEFAULT_BBCODE' => 'Enable BBCode by default', + 'DEFAULT_NOTIFY' => 'Notify me upon replies by default', + 'DEFAULT_SMILIES' => 'Enable smilies by default', + 'DEFINED_RULES' => 'Defined rules', + 'DELETED_TOPIC' => 'Topic has been removed.', + 'DELETE_ATTACHMENT' => 'Delete attachment', + 'DELETE_ATTACHMENTS' => 'Delete attachments', + 'DELETE_ATTACHMENT_CONFIRM' => 'Are you sure you want to delete this attachment?', + 'DELETE_ATTACHMENTS_CONFIRM'=> 'Are you sure you want to delete these attachments?', + 'DELETE_AVATAR' => 'Delete image', + 'DELETE_COOKIES_CONFIRM' => 'Are you sure you want to delete all cookies set by this board?', + 'DELETE_MARKED_PM' => 'Delete marked messages', + 'DELETE_MARKED_PM_CONFIRM' => 'Are you sure you want to delete all marked messages?', + 'DELETE_OLDEST_MESSAGES' => 'Delete oldest messages', + 'DELETE_MESSAGE' => 'Delete message', + 'DELETE_MESSAGE_CONFIRM' => 'Are you sure you want to delete this private message?', + 'DELETE_MESSAGES_IN_FOLDER' => 'Delete all messages within removed folder', + 'DELETE_RULE' => 'Delete rule', + 'DELETE_RULE_CONFIRM' => 'Are you sure you want to delete this rule?', + 'DEMOTE_SELECTED' => 'Demote selected', + 'DISABLE_CENSORS' => 'Enable word censoring', + 'DISPLAY_GALLERY' => 'Display gallery', + 'DOMAIN_NO_MX_RECORD_EMAIL' => 'The entered email domain has no valid MX record.', + 'DOWNLOADS' => 'Downloads', + 'DRAFTS_DELETED' => 'All selected drafts were successfully deleted.', + 'DRAFTS_EXPLAIN' => 'Here you can view, edit and delete your saved drafts.', + 'DRAFT_UPDATED' => 'Draft successfully updated.', + + 'EDIT_DRAFT_EXPLAIN' => 'Here you are able to edit your draft. Drafts do not contain attachment and poll information.', + 'EMAIL_BANNED_EMAIL' => 'The email address you entered is not allowed to be used.', + 'EMAIL_REMIND' => 'This must be the email address associated with your account. If you have not changed this via your user control panel then it is the email address you registered your account with.', + 'EMAIL_TAKEN_EMAIL' => 'The entered email address is already in use.', + 'EMPTY_DRAFT' => 'You must enter a message to submit your changes.', + 'EMPTY_DRAFT_TITLE' => 'You must enter a draft title.', + 'EXPORT_AS_XML' => 'Export as XML', + 'EXPORT_AS_CSV' => 'Export as CSV', + 'EXPORT_AS_CSV_EXCEL' => 'Export as CSV (Excel)', + 'EXPORT_AS_TXT' => 'Export as TXT', + 'EXPORT_AS_MSG' => 'Export as MSG', + 'EXPORT_FOLDER' => 'Export this view', + + 'FIELD_REQUIRED' => 'The field “%s†must be completed.', + 'FIELD_TOO_SHORT' => array( + 1 => 'The field “%2$s†is too short, a minimum of %1$d character is required.', + 2 => 'The field “%2$s†is too short, a minimum of %1$d characters is required.', + ), + 'FIELD_TOO_LONG' => array( + 1 => 'The field “%2$s†is too long, a maximum of %1$d character is allowed.', + 2 => 'The field “%2$s†is too long, a maximum of %1$d characters is allowed.', + ), + 'FIELD_TOO_SMALL' => 'The value of “%2$s†is too small, a minimum value of %1$d is required.', + 'FIELD_TOO_LARGE' => 'The value of “%2$s†is too large, a maximum value of %1$d is allowed.', + 'FIELD_INVALID_CHARS_INVALID' => 'The field “%s†has invalid characters.', + 'FIELD_INVALID_CHARS_NUMBERS_ONLY' => 'The field “%s†has invalid characters, only numbers are allowed.', + 'FIELD_INVALID_CHARS_ALPHA_DOTS' => 'The field “%s†has invalid characters, only alphanumeric or . characters are allowed.', + 'FIELD_INVALID_CHARS_ALPHA_ONLY' => 'The field “%s†has invalid characters, only alphanumeric characters are allowed.', + 'FIELD_INVALID_CHARS_ALPHA_PUNCTUATION' => 'The field “%s†has invalid characters, only alphanumeric or _,-. characters are allowed and the first character must be alphabetic.', + 'FIELD_INVALID_CHARS_ALPHA_SPACERS' => 'The field “%s†has invalid characters, only alphanumeric, space or -+_[] characters are allowed.', + 'FIELD_INVALID_CHARS_ALPHA_UNDERSCORE' => 'The field “%s†has invalid characters, only alphanumeric or _ characters are allowed.', + 'FIELD_INVALID_CHARS_LETTER_NUM_DOTS' => 'The field “%s†has invalid characters, only letter, number or . characters are allowed.', + 'FIELD_INVALID_CHARS_LETTER_NUM_ONLY' => 'The field “%s†has invalid characters, only letter and number characters are allowed.', + 'FIELD_INVALID_CHARS_LETTER_NUM_PUNCTUATION' => 'The field “%s†has invalid characters, only letter, number or _,-. characters are allowed and the first character must be alphabetic.', + 'FIELD_INVALID_CHARS_LETTER_NUM_SPACERS' => 'The field “%s†has invalid characters, only letter, number, space or -+_[] characters are allowed.', + 'FIELD_INVALID_CHARS_LETTER_NUM_UNDERSCORE' => 'The field “%s†has invalid characters, only letter, number or _ characters are allowed.', + 'FIELD_INVALID_DATE' => 'The field “%s†has an invalid date.', + 'FIELD_INVALID_URL' => 'The field “%s†has an invalid url.', + 'FIELD_INVALID_VALUE' => 'The field “%s†has an invalid value.', + + 'FOE_MESSAGE' => 'Message from foe', + 'FOES_EXPLAIN' => 'Foes are users which will be ignored by default. Posts by these users will not be fully visible. Personal messages from foes are still permitted. Please note that you cannot ignore moderators or administrators.', + 'FOES_UPDATED' => 'Your foes list has been updated successfully.', + 'FOLDER_ADDED' => 'Folder successfully added.', + 'FOLDER_MESSAGE_STATUS' => array( + 1 => '%2$d out of %1$s stored', + 2 => '%2$d out of %1$s stored', + ), + 'FOLDER_NAME_EMPTY' => 'You must enter a name for this folder.', + 'FOLDER_NAME_EXIST' => 'Folder %s already exists.', + 'FOLDER_OPTIONS' => 'Folder options', + 'FOLDER_RENAMED' => 'Folder successfully renamed.', + 'FOLDER_REMOVED' => 'Folder successfully removed.', + 'FOLDER_STATUS_MSG' => array( + 1 => 'Folder is %3$d%% full (%2$d out of %1$s stored)', + 2 => 'Folder is %3$d%% full (%2$d out of %1$s stored)', + ), + 'FORWARD_PM' => 'Forward PM', + 'FORCE_PASSWORD_EXPLAIN' => 'Before you may continue browsing the board you are required to change your password.', + 'FRIEND_MESSAGE' => 'Message from friend', + 'FRIENDS' => 'Friends', + 'FRIENDS_EXPLAIN' => 'Friends enable you quick access to members you communicate with frequently. If the template has relevant support any posts made by a friend may be highlighted.', + 'FRIENDS_OFFLINE' => 'Offline', + 'FRIENDS_ONLINE' => 'Online', + 'FRIENDS_UPDATED' => 'Your friends list has been updated successfully.', + 'FULL_FOLDER_OPTION_CHANGED'=> 'The action to take when a folder is full has been changed successfully.', + 'FWD_ORIGINAL_MESSAGE' => '-------- Original Message --------', + 'FWD_SUBJECT' => 'Subject: %s', + 'FWD_DATE' => 'Date: %s', + 'FWD_FROM' => 'From: %s', + 'FWD_TO' => 'To: %s', + + 'GLOBAL_ANNOUNCEMENT' => 'Global announcement', + + 'GRAVATAR_AVATAR_EMAIL' => 'Gravatar email', + 'GRAVATAR_AVATAR_EMAIL_EXPLAIN' => 'Enter the email address you used for registering your account on Gravatar.', + 'GRAVATAR_AVATAR_SIZE' => 'Avatar dimensions', + 'GRAVATAR_AVATAR_SIZE_EXPLAIN' => 'Specify the width and height of the avatar, leave blank to attempt automatic verification.', + + 'HIDE_ONLINE' => 'Hide my online status', + 'HIDE_ONLINE_EXPLAIN' => 'Changing this setting won’t become effective until your next visit to the board.', + 'HOLD_NEW_MESSAGES' => 'Do not accept new messages (New messages will be held back until enough space is available)', + 'HOLD_NEW_MESSAGES_SHORT' => 'New messages will be held back', + + 'IF_FOLDER_FULL' => 'If folder is full', + 'IMPORTANT_NEWS' => 'Important announcements', + 'INVALID_USER_BIRTHDAY' => 'The entered birthday is not a valid date.', + 'INVALID_CHARS_USERNAME' => 'The username contains forbidden characters.', + 'INVALID_CHARS_NEW_PASSWORD'=> 'The password does not contain the required characters.', + 'ITEMS_REQUIRED' => 'The items marked with * are required profile fields and need to be filled out.', + + 'JOIN_SELECTED' => 'Join selected', + + 'LANGUAGE' => 'Language', + 'LINK_REMOTE_AVATAR' => 'Link off-site', + 'LINK_REMOTE_AVATAR_EXPLAIN'=> 'Enter the URL of the location containing the avatar image you wish to link to.', + 'LINK_REMOTE_SIZE' => 'Avatar dimensions', + 'LINK_REMOTE_SIZE_EXPLAIN' => 'Specify the width and height of the avatar, leave blank to attempt automatic verification.', + 'LOGIN_EXPLAIN_UCP' => 'Please login in order to access the User Control Panel.', + 'LOGIN_LINK' => 'Link or register your account on an external service with your board account', + 'LOGIN_LINK_EXPLAIN' => 'You have attempted to login with an external service that is not yet connected to an account on this board. You must now either link this account to an existing account or create a new account.', + 'LOGIN_LINK_MISSING_DATA' => 'Data that is necessary to link your account with an external service is not available. Please restart the login process.', + 'LOGIN_LINK_NO_DATA_PROVIDED' => 'No data has been provided to this page to link an external account to a forum account. Please contact the board administrator if you continue to experience problems.', + 'LOGIN_KEY' => 'Login Key', + 'LOGIN_TIME' => 'Login Time', + 'LOGIN_REDIRECT' => 'You have been successfully logged in.', + 'LOGOUT_FAILED' => 'You were not logged out, as the request did not match your session. Please contact the board administrator if you continue to experience problems.', + 'LOGOUT_REDIRECT' => 'You have been successfully logged out.', + + 'MARK_IMPORTANT' => 'Mark/Unmark as important', + 'MARKED_MESSAGE' => 'Marked message', + 'MAX_FOLDER_REACHED' => 'Maximum number of allowed user defined folders reached.', + 'MESSAGE_BY_AUTHOR' => 'by', + 'MESSAGE_COLOURS' => 'Message colours', + 'MESSAGE_DELETED' => 'Message successfully deleted.', + 'MESSAGE_EDITED' => 'Message successfully edited.', + 'MESSAGE_HISTORY' => 'Message history', + 'MESSAGE_REMOVED_FROM_OUTBOX' => 'This message was deleted by its author.', + 'MESSAGE_SENT_ON' => 'on', + 'MESSAGE_STORED' => 'This message has been sent successfully.', + 'MESSAGE_TO' => 'To', + 'MESSAGES_DELETED' => 'Messages successfully deleted', + 'MOVE_DELETED_MESSAGES_TO' => 'Move messages from removed folder to', + 'MOVE_DOWN' => 'Move down', + 'MOVE_MARKED_TO_FOLDER' => 'Move marked to %s', + 'MOVE_PM_ERROR' => array( + 1 => 'An error occurred while moving the messages to the new folder, only %2$d out of %1$s was moved.', + 2 => 'An error occurred while moving the messages to the new folder, only %2$d out of %1$s were moved.', + ), + 'MOVE_TO_FOLDER' => 'Move to folder', + 'MOVE_UP' => 'Move up', + + 'NEW_FOLDER_NAME' => 'New folder name', + 'NEW_PASSWORD' => 'New password', + 'NEW_PASSWORD_CONFIRM_EMPTY' => 'You did not enter a confirm password.', + 'NEW_PASSWORD_ERROR' => 'The passwords you entered do not match.', + + 'NOTIFICATIONS_MARK_ALL_READ' => 'Mark all notifications read', + 'NOTIFICATIONS_MARK_ALL_READ_CONFIRM' => 'Are you sure you want to mark all notifications read?', + 'NOTIFICATIONS_MARK_ALL_READ_SUCCESS' => 'All notifications have been marked read.', + 'NOTIFICATION_GROUP_MISCELLANEOUS' => 'Miscellaneous Notifications', + 'NOTIFICATION_GROUP_MODERATION' => 'Moderation Notifications', + 'NOTIFICATION_GROUP_ADMINISTRATION' => 'Administration Notifications', + 'NOTIFICATION_GROUP_POSTING' => 'Posting Notifications', + 'NOTIFICATION_METHOD_BOARD' => 'Notifications', + 'NOTIFICATION_METHOD_EMAIL' => 'Email', + 'NOTIFICATION_METHOD_JABBER' => 'Jabber', + 'NOTIFICATION_TYPE' => 'Notification type', + 'NOTIFICATION_TYPE_BOOKMARK' => 'Someone replies to a topic you have bookmarked', + 'NOTIFICATION_TYPE_GROUP_REQUEST' => 'Someone requests to join a group you lead', + 'NOTIFICATION_TYPE_IN_MODERATION_QUEUE' => 'A post or topic needs approval', + 'NOTIFICATION_TYPE_MODERATION_QUEUE' => 'Your topics/posts are approved or disapproved by a moderator', + 'NOTIFICATION_TYPE_PM' => 'Someone sends you a private message', + 'NOTIFICATION_TYPE_POST' => 'Someone replies to a topic to which you are subscribed', + 'NOTIFICATION_TYPE_QUOTE' => 'Someone quotes you in a post', + 'NOTIFICATION_TYPE_REPORT' => 'Someone reports a post', + 'NOTIFICATION_TYPE_TOPIC' => 'Someone creates a topic in a forum to which you are subscribed', + 'NOTIFICATION_TYPE_ADMIN_ACTIVATE_USER' => 'User requiring activation', + + 'NOTIFY_METHOD' => 'Notification method', + 'NOTIFY_METHOD_BOTH' => 'Both', + 'NOTIFY_METHOD_EMAIL' => 'Email only', + 'NOTIFY_METHOD_EXPLAIN' => 'Method for sending messages sent via this board.', + 'NOTIFY_METHOD_IM' => 'Jabber only', + 'NOTIFY_ON_PM' => 'Notify me on new private messages', + 'NOT_ADDED_FRIENDS_ANONYMOUS' => 'You cannot add the anonymous user to your friends list.', + 'NOT_ADDED_FRIENDS_BOTS' => 'You cannot add bots to your friends list.', + 'NOT_ADDED_FRIENDS_FOES' => 'You cannot add users to your friends list who are on your foes list.', + 'NOT_ADDED_FRIENDS_SELF' => 'You cannot add yourself to the friends list.', + 'NOT_ADDED_FOES_MOD_ADMIN' => 'You cannot add administrators and moderators to your foes list.', + 'NOT_ADDED_FOES_ANONYMOUS' => 'You cannot add the anonymous user to your foes list.', + 'NOT_ADDED_FOES_BOTS' => 'You cannot add bots to your foes list.', + 'NOT_ADDED_FOES_FRIENDS' => 'You cannot add users to your foes list who are on your friends list.', + 'NOT_ADDED_FOES_SELF' => 'You cannot add yourself to the foes list.', + 'NOT_AGREE' => 'I do not agree to these terms', + 'NOT_ENOUGH_SPACE_FOLDER' => 'The destination folder “%s†seems to be full. The requested action has not been taken.', + 'NOT_MOVED_MESSAGES' => array( + 1 => 'You have %d private message currently on hold because of full folder.', + 2 => 'You have %d private messages currently on hold because of full folder.', + ), + 'NO_ACTION_MODE' => 'No message action specified.', + 'NO_AUTHOR' => 'No author defined for this message', + 'NO_AVATAR' => 'No avatar selected', + 'NO_AVATAR_CATEGORY' => 'None', + + 'NO_AUTH_DELETE_MESSAGE' => 'You are not authorised to delete private messages.', + 'NO_AUTH_EDIT_MESSAGE' => 'You are not authorised to edit private messages.', + 'NO_AUTH_FORWARD_MESSAGE' => 'You are not authorised to forward private messages.', + 'NO_AUTH_GROUP_MESSAGE' => 'You are not authorised to send private messages to groups.', + 'NO_AUTH_PASSWORD_REMINDER' => 'You are not authorised to request a new password.', + 'NO_AUTH_PROFILEINFO' => 'You are not authorised to change your profile information.', + 'NO_AUTH_READ_HOLD_MESSAGE' => 'You are not authorised to read private messages that are on hold.', + 'NO_AUTH_READ_MESSAGE' => 'You are not authorised to read private messages.', + 'NO_AUTH_READ_REMOVED_MESSAGE' => 'You are not able to read this message because it was removed by the author.', + 'NO_AUTH_SEND_MESSAGE' => 'You are not authorised to send private messages.', + 'NO_AUTH_SIGNATURE' => 'You are not authorised to define a signature.', + + 'NO_BCC_RECIPIENT' => 'None', + 'NO_BOOKMARKS' => 'You have no bookmarks.', + 'NO_BOOKMARKS_SELECTED' => 'You have selected no bookmarks.', + 'NO_EDIT_READ_MESSAGE' => 'Private message cannot be edited because it has already been read.', + 'NO_EMAIL_USER' => 'The email/username information submitted could not be found.', + 'NO_FOES' => 'No foes currently defined', + 'NO_FRIENDS' => 'No friends currently defined', + 'NO_FRIENDS_OFFLINE' => 'No friends offline', + 'NO_FRIENDS_ONLINE' => 'No friends online', + 'NO_GROUP_SELECTED' => 'No group specified.', + 'NO_IMPORTANT_NEWS' => 'No important announcements present.', + 'NO_MESSAGE' => 'Private message could not be found.', + 'NO_NEW_FOLDER_NAME' => 'You have to specify a new folder name.', + 'NO_NEWER_PM' => 'No newer messages.', + 'NO_OLDER_PM' => 'No older messages.', + 'NO_PASSWORD_SUPPLIED' => 'You cannot login without a password.', + 'NO_RECIPIENT' => 'No recipient defined.', + 'NO_RULES_DEFINED' => 'No rules defined.', + 'NO_SAVED_DRAFTS' => 'No drafts saved.', + 'NO_TO_RECIPIENT' => 'None', + 'NO_WATCHED_FORUMS' => 'You are not subscribed to any forums.', + 'NO_WATCHED_SELECTED' => 'You have not selected any subscribed topics or forums.', + 'NO_WATCHED_TOPICS' => 'You are not subscribed to any topics.', + + 'PASS_TYPE_ALPHA_EXPLAIN' => 'Password must be between %1$s and %2$s long, must contain letters in mixed case and must contain numbers.', + 'PASS_TYPE_ANY_EXPLAIN' => 'Must be between %1$s and %2$s.', + 'PASS_TYPE_CASE_EXPLAIN' => 'Password must be between %1$s and %2$s long and must contain letters in mixed case.', + 'PASS_TYPE_SYMBOL_EXPLAIN' => 'Password must be between %1$s and %2$s long, must contain letters in mixed case, must contain numbers and must contain symbols.', + 'PASSWORD' => 'Password', + 'PASSWORD_ACTIVATED' => 'Your new password has been activated.', + 'PASSWORD_UPDATED' => 'A new password was sent to your registered email address.', + 'PERMISSIONS_RESTORED' => 'Successfully restored original permissions.', + 'PERMISSIONS_TRANSFERRED' => 'Successfully transferred permissions from %s, you are now able to browse the board with this user’s permissions.
    Please note that admin permissions were not transferred. You are able to revert to your permission set at any time.', + 'PM_DISABLED' => 'Private messaging has been disabled on this board.', + 'PM_FROM' => 'From', + 'PM_FROM_REMOVED_AUTHOR' => 'This message was sent by a user no longer registered.', + 'PM_ICON' => 'PM icon', + 'PM_INBOX' => 'Inbox', + 'PM_MARK_ALL_READ' => 'Mark all messages read', + 'PM_MARK_ALL_READ_SUCCESS' => 'All private messages in this folder have been marked read', + 'PM_NO_USERS' => 'The requested users to be added do not exist.', + 'PM_OUTBOX' => 'Outbox', + 'PM_SENTBOX' => 'Sent messages', + 'PM_SUBJECT' => 'Message subject', + 'PM_TO' => 'Send to', + 'PM_TOOLS' => 'Message tools', + 'PM_USERS_REMOVED_NO_PERMISSION' => 'Some users couldn’t be added as they do not have permission to read private messages.', + 'PM_USERS_REMOVED_NO_PM' => 'Some users couldn’t be added as they have disabled private message receipt.', + 'POST_EDIT_PM' => 'Edit message', + 'POST_FORWARD_PM' => 'Forward message', + 'POST_NEW_PM' => 'Compose message', + 'POST_PM_LOCKED' => 'Private messaging is locked.', + 'POST_PM_POST' => 'Quote post', + 'POST_QUOTE_PM' => 'Quote message', + 'POST_REPLY_PM' => 'Reply to message', + 'PRINT_PM' => 'Print view', + 'PREFERENCES_UPDATED' => 'Your preferences have been updated.', + 'PROFILE_INFO_NOTICE' => 'Please note that this information may be viewable to other members. Be careful when including any personal details. Any fields marked with a * must be completed.', + 'PROFILE_UPDATED' => 'Your profile has been updated.', + 'PROFILE_AUTOLOGIN_KEYS' => 'The "Remember Me" login keys automatically log you in when you visit the board. If you logout, the remember me login key is deleted only on the computer you are using to logout. Here you can see remember login keys created on other computers you used to access this site.', + 'PROFILE_NO_AUTOLOGIN_KEYS' => 'There are no saved "Remember Me" login keys.', + + 'RECIPIENT' => 'Recipient', + 'RECIPIENTS' => 'Recipients', + 'REGISTRATION' => 'Registration', + 'RELEASE_MESSAGES' => '%sRelease all on-hold messages%s… they will be re-sorted into the appropriate folder if enough space is made available.', + 'REMOVE_ADDRESS' => 'Remove address', + 'REMOVE_SELECTED_BOOKMARKS' => 'Remove selected bookmarks', + 'REMOVE_SELECTED_BOOKMARKS_CONFIRM' => 'Are you sure you want to delete all selected bookmarks?', + 'REMOVE_BOOKMARK_MARKED' => 'Remove marked bookmarks', + 'REMOVE_FOLDER' => 'Remove folder', + 'REMOVE_FOLDER_CONFIRM' => 'Are you sure you want to remove this folder?', + 'RENAME' => 'Rename', + 'RENAME_FOLDER' => 'Rename folder', + 'REPLIED_MESSAGE' => 'Replied to message', + 'REPLY_TO_ALL' => 'Reply to sender and all recipients.', + 'REPORT_PM' => 'Report private message', + 'RESIGN_SELECTED' => 'Resign selected', + 'RETURN_FOLDER' => '%1$sReturn to previous folder%2$s', + 'RETURN_UCP' => '%sReturn to the User Control Panel%s', + 'RULE_ADDED' => 'Rule successfully added.', + 'RULE_ALREADY_DEFINED' => 'This rule was defined previously.', + 'RULE_DELETED' => 'Rule successfully removed.', + 'RULE_LIMIT_REACHED' => 'You cannot add more PM rules. You have reached the maximum number of rules.', + 'RULE_NOT_DEFINED' => 'Rule not correctly specified.', + 'RULE_REMOVED_MESSAGES' => array( + 1 => '%d private message was removed due to private message filters.', + 2 => '%d private messages were removed due to private message filters.', + ), + + 'SAME_PASSWORD_ERROR' => 'The new password you entered is the same as your current password.', + 'SEARCH_YOUR_POSTS' => 'Show your posts', + 'SEND_PASSWORD' => 'Send password', + 'SENT_AT' => 'Sent', // Used before dates in private messages + 'SHOW_EMAIL' => 'Users can contact me by email', + 'SIGNATURE_EXPLAIN' => 'This is a block of text that can be added to posts you make. There is a %d character limit.', + 'SIGNATURE_PREVIEW' => 'Your signature will appear like this in posts', + 'SIGNATURE_TOO_LONG' => 'Your signature is too long.', + 'SELECT_CURRENT_TIME' => 'Select current time', + 'SELECT_TIMEZONE' => 'Select timezone', + 'SORT' => 'Sort', + 'SORT_COMMENT' => 'File comment', + 'SORT_DOWNLOADS' => 'Downloads', + 'SORT_EXTENSION' => 'Extension', + 'SORT_FILENAME' => 'Filename', + 'SORT_POST_TIME' => 'Post time', + 'SORT_SIZE' => 'File size', + + 'TIMEZONE' => 'Timezone', + 'TIMEZONE_DATE_SUGGESTION' => 'Suggestion: %s', + 'TIMEZONE_INVALID' => 'The timezone you selected is invalid.', + 'TO' => 'Recipient', + 'TO_MASS' => 'Recipients', + 'TO_ADD' => 'Add recipient', + 'TO_ADD_MASS' => 'Add recipients', + 'TO_ADD_GROUPS' => 'Add groups', + 'TOO_MANY_RECIPIENTS' => 'You tried to send a private message to too many recipients.', + 'TOO_MANY_REGISTERS' => 'You have exceeded the maximum number of registration attempts for this session. Please try again later.', + + 'UCP' => 'User Control Panel', + 'UCP_ACTIVATE' => 'Activate account', + 'UCP_ADMIN_ACTIVATE' => 'Please note that you will need to enter a valid email address before your account is activated. The administrator will review your account and if approved you will receive an email at the address you specified.', + 'UCP_ATTACHMENTS' => 'Attachments', + 'UCP_AUTH_LINK' => 'External accounts', + 'UCP_AUTH_LINK_ASK' => 'You currently have no account associated with this external service. Click the button below to link your board account to an account with this external service.', + 'UCP_AUTH_LINK_ID' => 'Unique identifier', + 'UCP_AUTH_LINK_LINK' => 'Link', + 'UCP_AUTH_LINK_MANAGE' => 'Manage external account associations', + 'UCP_AUTH_LINK_NOT_SUPPORTED' => 'Linking board accounts to external services is not supported by this board’s current authentication method.', + 'UCP_AUTH_LINK_TITLE' => 'Manage your external account associations', + 'UCP_AUTH_LINK_UNLINK' => 'Unlink', + 'UCP_COPPA_BEFORE' => 'Before %s', + 'UCP_COPPA_ON_AFTER' => 'On or after %s', + 'UCP_EMAIL_ACTIVATE' => 'Please note that you will need to enter a valid email address before your account is activated. You will receive an email at the address you provide that contains an account activation link.', + 'UCP_JABBER' => 'Jabber address', + 'UCP_LOGIN_LINK' => 'Set up an external account association', + + 'UCP_MAIN' => 'Overview', + 'UCP_MAIN_ATTACHMENTS' => 'Manage attachments', + 'UCP_MAIN_BOOKMARKS' => 'Manage bookmarks', + 'UCP_MAIN_DRAFTS' => 'Manage drafts', + 'UCP_MAIN_FRONT' => 'Front page', + 'UCP_MAIN_SUBSCRIBED' => 'Manage subscriptions', + + 'UCP_NO_ATTACHMENTS' => 'You have posted no files.', + + 'UCP_NOTIFICATION_LIST' => 'Manage notifications', + 'UCP_NOTIFICATION_LIST_EXPLAIN' => 'Here you may view all past notifications.', + 'UCP_NOTIFICATION_OPTIONS' => 'Edit notification options', + 'UCP_NOTIFICATION_OPTIONS_EXPLAIN' => 'Here you can set your preferred notification methods for the board.', + + 'UCP_PREFS' => 'Board preferences', + 'UCP_PREFS_PERSONAL' => 'Edit global settings', + 'UCP_PREFS_POST' => 'Edit posting defaults', + 'UCP_PREFS_VIEW' => 'Edit display options', + + 'UCP_PM' => 'Private messages', + 'UCP_PM_COMPOSE' => 'Compose message', + 'UCP_PM_DRAFTS' => 'Manage PM drafts', + 'UCP_PM_OPTIONS' => 'Rules, folders & settings', + 'UCP_PM_UNREAD' => 'Unread messages', + 'UCP_PM_VIEW' => 'View messages', + + 'UCP_PROFILE' => 'Profile', + 'UCP_PROFILE_AVATAR' => 'Edit avatar', + 'UCP_PROFILE_PROFILE_INFO' => 'Edit profile', + 'UCP_PROFILE_REG_DETAILS' => 'Edit account settings', + 'UCP_PROFILE_SIGNATURE' => 'Edit signature', + 'UCP_PROFILE_AUTOLOGIN_KEYS'=> 'Manage “Remember Me†login keys', + + 'UCP_USERGROUPS' => 'Usergroups', + 'UCP_USERGROUPS_MEMBER' => 'Edit memberships', + 'UCP_USERGROUPS_MANAGE' => 'Manage groups', + + 'UCP_PASSWORD_RESET_DISABLED' => 'The password reset functionality has been disabled. If you need help accessing your account, please contact the %sBoard Administrator%s', + 'UCP_REGISTER_DISABLE' => 'Creating a new account is currently not possible.', + 'UCP_REMIND' => 'Send password', + 'UCP_RESEND' => 'Send activation email', + 'UCP_WELCOME' => 'Welcome to the User Control Panel. From here you can monitor, view and update your profile, preferences, subscribed forums and topics. You can also send messages to other users (if permitted). Please ensure you read any announcements before continuing.', + 'UCP_ZEBRA' => 'Friends & Foes', + 'UCP_ZEBRA_FOES' => 'Manage foes', + 'UCP_ZEBRA_FRIENDS' => 'Manage friends', + 'UNDISCLOSED_RECIPIENT' => 'Undisclosed Recipient', + 'UNKNOWN_FOLDER' => 'Unknown folder', + 'UNWATCH_MARKED' => 'Unwatch marked', + 'UPLOAD_AVATAR_FILE' => 'Upload from your machine', + 'UPLOAD_AVATAR_URL' => 'Upload from a URL', + 'UPLOAD_AVATAR_URL_EXPLAIN' => 'Enter the URL of the location containing the image. The image will be copied to this site.', + 'USERNAME_ALPHA_ONLY_EXPLAIN' => 'Username must be between %1$s and %2$s long and use only alphanumeric characters.', + 'USERNAME_ALPHA_SPACERS_EXPLAIN'=> 'Username must be between %1$s and %2$s long and use alphanumeric, space or -+_[] characters.', + 'USERNAME_ASCII_EXPLAIN' => 'Username must be between %1$s and %2$s long and use only ASCII characters, so no special symbols.', + 'USERNAME_LETTER_NUM_EXPLAIN' => 'Username must be between %1$s and %2$s long and use only letter or number characters.', + 'USERNAME_LETTER_NUM_SPACERS_EXPLAIN'=> 'Username must be between %1$s and %2$s long and use letter, number, space or -+_[] characters.', + 'USERNAME_CHARS_ANY_EXPLAIN' => 'Length must be between %1$s and %2$s.', + 'USERNAME_TAKEN_USERNAME' => 'The username you entered is already in use, please select an alternative.', + 'USERNAME_DISALLOWED_USERNAME' => 'The username you entered has been disallowed or contains a disallowed word. Please choose a different name.', + 'USER_NOT_FOUND_OR_INACTIVE' => 'The usernames you specified could either not be found or are not activated users.', + + 'VIEW_AVATARS' => 'Display avatars', + 'VIEW_EDIT' => 'View/Edit', + 'VIEW_FLASH' => 'Display Flash animations', + 'VIEW_IMAGES' => 'Display images within posts', + 'VIEW_NEXT_HISTORY' => 'Next PM in history', + 'VIEW_NEXT_PM' => 'Next PM', + 'VIEW_PM' => 'View message', + 'VIEW_PM_INFO' => 'Message details', + 'VIEW_PM_MESSAGES' => array( + 1 => '%d message', + 2 => '%d messages', + ), + 'VIEW_PREVIOUS_HISTORY' => 'Previous PM in history', + 'VIEW_PREVIOUS_PM' => 'Previous PM', + 'VIEW_PROFILE' => 'View profile', + 'VIEW_SIGS' => 'Display signatures', + 'VIEW_SMILIES' => 'Display smilies as images', + 'VIEW_TOPICS_DAYS' => 'Display topics from previous days', + 'VIEW_TOPICS_DIR' => 'Display topic order direction', + 'VIEW_TOPICS_KEY' => 'Display topics ordering by', + 'VIEW_POSTS_DAYS' => 'Display posts from previous days', + 'VIEW_POSTS_DIR' => 'Display post order direction', + 'VIEW_POSTS_KEY' => 'Display posts ordering by', + + 'WATCHED_EXPLAIN' => 'Below is a list of forums and topics you are subscribed to. You will be notified of new posts in either. To unsubscribe mark the forum or topic and then press the Unwatch marked button.', + 'WATCHED_FORUMS' => 'Watched forums', + 'WATCHED_TOPICS' => 'Watched topics', + 'WRONG_ACTIVATION' => 'The activation key you supplied does not match any in the database.', + + 'YOUR_DETAILS' => 'Your activity', + 'YOUR_FOES' => 'Your foes', + 'YOUR_FOES_EXPLAIN' => 'To remove usernames select them and click submit.', + 'YOUR_FRIENDS' => 'Your friends', + 'YOUR_FRIENDS_EXPLAIN' => 'To remove usernames select them and click submit.', + 'YOUR_WARNINGS' => 'Your warning level', + + 'PM_ACTION' => array( + 'PLACE_INTO_FOLDER' => 'Place into folder', + 'MARK_AS_READ' => 'Mark as read', + 'MARK_AS_IMPORTANT' => 'Mark message', + 'DELETE_MESSAGE' => 'Delete message', + ), + 'PM_CHECK' => array( + 'SUBJECT' => 'Subject', + 'SENDER' => 'Sender', + 'MESSAGE' => 'Message', + 'STATUS' => 'Message status', + 'TO' => 'Sent To', + ), + 'PM_RULE' => array( + 'IS_LIKE' => 'is like', + 'IS_NOT_LIKE' => 'is not like', + 'IS' => 'is', + 'IS_NOT' => 'is not', + 'BEGINS_WITH' => 'begins with', + 'ENDS_WITH' => 'ends with', + 'IS_FRIEND' => 'is friend', + 'IS_FOE' => 'is foe', + 'IS_USER' => 'is user', + 'IS_GROUP' => 'is in usergroup', + 'ANSWERED' => 'answered', + 'FORWARDED' => 'forwarded', + 'TO_GROUP' => 'to my default usergroup', + 'TO_ME' => 'to me', + ), + + 'GROUPS_EXPLAIN' => 'Usergroups enable board admins to better administer users. By default you will be placed in a specific group, this is your default group. This group defines how you may appear to other users, for example your username colouration, avatar, rank, etc. Depending on whether the administrator allows it you may be allowed to change your default group. You may also be placed in or allowed to join other groups. Some groups may give you additional permissions to view content or increase your capabilities in other areas.', + 'GROUP_LEADER' => 'Leaderships', + 'GROUP_MEMBER' => 'Memberships', + 'GROUP_PENDING' => 'Pending memberships', + 'GROUP_NONMEMBER' => 'Non-memberships', + 'GROUP_DETAILS' => 'Group details', + + 'NO_LEADER' => 'No group leaderships', + 'NO_MEMBER' => 'No group memberships', + 'NO_PENDING' => 'No pending memberships', + 'NO_NONMEMBER' => 'No non-member groups', +)); diff --git a/includes/shared/phpbb3/language/lang_french/common.php b/includes/shared/phpbb3/language/lang_french/common.php new file mode 100644 index 00000000..c2aaf4dd --- /dev/null +++ b/includes/shared/phpbb3/language/lang_french/common.php @@ -0,0 +1,914 @@ + and phpBB.biz +* +* @package language +* @version $Id: common.php 79 2013-10-01 00:10:32Z Skouat $ +* @copyright (c) 2005 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ « » “ †… +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Traduction par phpBB-fr.com', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'USER_LANG' => 'fr', + + '1_DAY' => '1 jour', + '1_MONTH' => '1 mois', + '1_YEAR' => '1 an', + '2_WEEKS' => '2 semaines', + '3_MONTHS' => '3 mois', + '6_MONTHS' => '6 mois', + '7_DAYS' => '7 jours', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Votre compte est déjà activé.', + 'ACCOUNT_DEACTIVATED' => 'Votre compte a été désactivé manuellement et n’est réactivable que par un administrateur.', + 'ACCOUNT_NOT_ACTIVATED' => 'Votre compte n’a pas encore été activé.', + 'ACP' => 'Panneau d’administration', + 'ACTIVE' => 'Actif', + 'ACTIVE_ERROR' => 'Le nom d’utilisateur indiqué est actuellement inactif. Si vous avez des problèmes pour activer votre compte, contactez l’administrateur du forum.', + 'ADMINISTRATOR' => 'Administrateur', + 'ADMINISTRATORS' => 'Administrateurs', + 'AGE' => 'Âge', + 'AIM' => 'AIM', + 'ALLOWED' => 'Autorisé', + 'ALL_FILES' => 'Tous les fichiers', + 'ALL_FORUMS' => 'Tous les forums', + 'ALL_MESSAGES' => 'Tous les messages', + 'ALL_POSTS' => 'Tous', + 'ALL_TIMES' => 'Heures au format %1$s %2$s', + 'ALL_TOPICS' => 'Tous', + 'AND' => 'et', + 'ARE_WATCHING_FORUM' => 'Vous surveillez maintenant les nouveaux messages de ce forum.', + 'ARE_WATCHING_TOPIC' => 'Vous surveillez maintenant les nouveaux messages de ce sujet.', + 'ASCENDING' => 'Croissant', + 'ATTACHMENTS' => 'Fichiers joints', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'Le fichier image que vous essayez de joindre n’est pas valide.', + 'AUTHOR' => 'Auteur', + 'AUTH_NO_PROFILE_CREATED' => 'Impossible de créer le nouveau profil de l’utilisateur.', + 'AVATAR_DISALLOWED_CONTENT' => 'Le chargement a été rejeté car le fichier chargé a été identifié comme un vecteur éventuel d’attaque.', + 'AVATAR_DISALLOWED_EXTENSION' => 'Ce fichier ne peut pas être affiché car l’extension %s n’est pas autorisée.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'L’avatar indiqué n’a pas pu être chargé car les données distantes semblent être invalides ou corrompues.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'Le fichier avatar chargé est vide.', + 'AVATAR_INVALID_FILENAME' => '%s est un nom de fichier invalide.', + 'AVATAR_NOT_UPLOADED' => 'L’avatar n’a pas pu être chargé.', + 'AVATAR_NO_SIZE' => 'Impossible de déterminer la largeur ou la hauteur de l’avatar lié, entrez-les manuellement', + 'AVATAR_PARTIAL_UPLOAD' => 'Le fichier n’a pu être que partiellement chargé.', + 'AVATAR_PHP_SIZE_NA' => 'La taille de l’avatar est trop importante.
    La taille maximum réglée dans php.ini n’a pas pu être déterminée.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'La taille de l’avatar est trop importante. La taille maximum de chargement autorisée est %1$d %2$s.
    Notez que ce paramètre est inscrit dans php.ini et ne peut pas être dépassé.', + 'AVATAR_URL_INVALID' => 'L’URL indiquée est invalide.', + 'AVATAR_URL_NOT_FOUND' => 'Le fichier indiqué est introuvable.', + 'AVATAR_WRONG_FILESIZE' => 'La taille de l’avatar doit être comprise entre 0 et %1d %2s.', + 'AVATAR_WRONG_SIZE' => 'L’avatar envoyé a une largeur de %5$d pixels et une hauteur de %6$d pixels. Les avatars doivent faire au moins %1$d pixels de large et %2$d pixels de haut, mais au plus %3$d pixels de large et %4$d pixels de haut.', + + 'BACK_TO_TOP' => 'Haut', + 'BACK_TO_PREV' => 'Retour à la page précédente', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Votre adresse e-mail a été bannie.', + 'BAN_TRIGGERED_BY_IP' => 'Votre adresse IP a été bannie.', + 'BAN_TRIGGERED_BY_USER' => 'Votre nom d’utilisateur a été banni.', + 'BBCODE_GUIDE' => 'Guide du BBCode', + 'BCC' => 'CCI', + 'BIRTHDAYS' => 'Anniversaires', + 'BOARD_BAN_PERM' => 'Vous avez été banni définitivement de ce forum.

    Contactez l’%2$sAdministrateur du forum%3$s pour plus d’informations.', + 'BOARD_BAN_REASON' => 'Raison du bannissement: %s', + 'BOARD_BAN_TIME' => 'Vous avez été banni de ce forum jusqu’au %1$s.

    Contactez l’%2$sAdministrateur du forum%3$s pour plus d’informations.', + 'BOARD_DISABLE' => 'Désolé, mais ce forum est actuellement indisponible.', + 'BOARD_DISABLED' => 'Ce forum est actuellement désactivé.', + 'BOARD_UNAVAILABLE' => 'Désolé, mais le forum est temporairement indisponible, réessayez dans quelques minutes.', + 'BROWSING_FORUM' => 'Utilisateurs parcourant ce forum: %1$s', + 'BROWSING_FORUM_GUEST' => 'Utilisateurs parcourant ce forum: %1$s et %2$d invité', + 'BROWSING_FORUM_GUESTS' => 'Utilisateurs parcourant ce forum: %1$s et %2$d invités', + 'BYTES' => 'Octets', + + 'CANCEL' => 'Annuler', + 'CHANGE' => 'Valider', + 'CHANGE_FONT_SIZE' => 'Modifier la taille de la police', + 'CHANGING_PREFERENCES' => 'Modifie les préférences du forum', + 'CHANGING_PROFILE' => 'Modifie son profil', + 'CLICK_VIEW_PRIVMSG' => '%sAller à votre boîte de réception%s', + 'COLLAPSE_VIEW' => 'Réduire la vue', + 'CLOSE_WINDOW' => 'Fermer la fenêtre', + 'COLOUR_SWATCH' => 'Palette de couleurs', + 'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirmer', + 'CONFIRM_CODE' => 'Code de confirmation', + 'CONFIRM_CODE_EXPLAIN' => 'Entrez le code exactement comme vous le voyez dans l’image. Notez que le code n’est pas sensible à la casse.', + 'CONFIRM_CODE_WRONG' => 'Le code de confirmation que vous avez entré est incorrect.', + 'CONFIRM_OPERATION' => 'Êtes-vous sûr de vouloir effectuer cette opération ?', + 'CONGRATULATIONS' => 'Félicitations à', + 'CONNECTION_FAILED' => 'La connexion a échouée.', + 'CONNECTION_SUCCESS' => 'Vous êtes connecté !', + 'COOKIES_DELETED' => 'Tous les cookies du forum ont été supprimés.', + 'CURRENT_TIME' => 'Nous sommes le %s', + + 'DAY' => 'Jour', + 'DAYS' => 'jours', + 'DELETE' => 'Supprimer', + 'DELETE_ALL' => 'Tout supprimer', + 'DELETE_COOKIES' => 'Supprimer les cookies du forum', + 'DELETE_MARKED' => 'Supprimer la sélection', + 'DELETE_POST' => 'Supprimer le message', + 'DELIMITER' => 'Séparateur', + 'DESCENDING' => 'Décroissant', + 'DISABLED' => 'Désactivé', + 'DISPLAY' => 'Afficher', + 'DISPLAY_GUESTS' => 'Afficher les invités', + 'DISPLAY_MESSAGES' => 'Afficher les messages postés depuis', + 'DISPLAY_POSTS' => 'Afficher les messages postés depuis', + 'DISPLAY_TOPICS' => 'Afficher les sujets postés depuis', + 'DOWNLOADED' => 'Téléchargé', + 'DOWNLOADING_FILE' => 'Téléchargement en cours', + 'DOWNLOAD_COUNT' => 'Téléchargé %d fois', + 'DOWNLOAD_COUNTS' => 'Téléchargé %d fois', + 'DOWNLOAD_COUNT_NONE' => 'Pas encore téléchargé', + 'VIEWED_COUNT' => 'Vu %d fois', + 'VIEWED_COUNTS' => 'Vu %d fois', + 'VIEWED_COUNT_NONE' => 'Pas encore vu', + + 'EDIT_POST' => 'Éditer le message', + 'EMAIL' => 'E-mail', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Adresse e-mail', + 'EMAIL_INVALID_EMAIL' => 'L’adresse e-mail que vous avez saisie est invalide.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Un problème est survenu lors de l’envoi de l’e-mail à la ligne %1$s. Réponse: %2$s.', + 'EMPTY_SUBJECT' => 'Vous devez indiquer un titre pour poster un nouveau sujet.', + 'EMPTY_MESSAGE_SUBJECT' => 'Vous devez indiquer un sujet quand vous envoyez un nouveau message.', + 'ENABLED' => 'Activé', + 'ENCLOSURE' => 'Clôture', + 'ENTER_USERNAME' => 'Entrer le nom d’utilisateur', + 'ERR_CHANGING_DIRECTORY' => 'Impossible de changer de répertoire.', + 'ERR_CONNECTING_SERVER' => 'Erreur de connexion au serveur.', + 'ERR_JAB_AUTH' => 'Impossible de s’authentifier sur le serveur Jabber.', + 'ERR_JAB_CONNECT' => 'Impossible de se connecter sur le serveur Jabber.', + 'ERR_UNABLE_TO_LOGIN' => 'Le nom d’utilisateur ou le mot de passe indiqué est incorrect.', + 'ERR_UNWATCHING' => 'Une erreur est survenue pendant la tentative de désinscription.', + 'ERR_WATCHING' => 'Une erreur est survenue pendant la tentative d’inscription.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'Le chemin phpBB indiqué ne semble pas être valide.', + 'EXPAND_VIEW' => 'Étendre la vue', + 'EXTENSION' => 'Extension', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'L’extension %s a été désactivée et ne peut plus être affichée.', + + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'Foire aux questions (Questions posées fréquemment)', + 'FILENAME' => 'Nom', + 'FILESIZE' => 'Taille', + 'FILEDATE' => 'Date', + 'FILE_COMMENT' => 'Commentaire', + 'FILE_NOT_FOUND' => 'Le fichier recherché est introuvable.', + 'FIND_USERNAME' => 'Rechercher un membre', + 'FOLDER' => 'Dossier', + 'FORGOT_PASS' => 'J’ai oublié mon mot de passe', + 'FORM_INVALID' => 'Le formulaire envoyé est invalide. Essayez à nouveau.', + 'FORUM' => 'Forums', + 'FORUMS' => 'Forums', + 'FORUMS_MARKED' => 'Les forums ont été marqués comme lus.', + 'FORUM_CAT' => 'Catégorie du forum', + 'FORUM_INDEX' => 'Index du forum', + 'FORUM_LINK' => 'Forum-lien', + 'FORUM_LOCATION' => 'Localisation sur le forum', + 'FORUM_LOCKED' => 'Forum verrouillé', + 'FORUM_RULES' => 'Règles du forum', + 'FORUM_RULES_LINK' => 'Cliquez pour voir les règles du forum', + 'FROM' => 'de', + 'FSOCK_DISABLED' => 'Impossible de finir cette opération car la fonction fsockopen est désactivée ou le serveur requis n’a pas pu être trouvé.', + 'FSOCK_TIMEOUT' => 'Le temps d’attente a été dépassé lors de la lecture du flux réseau.', + + 'FTP_FSOCK_HOST' => 'Serveur FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Serveur FTP utilisé pour se connecter à votre site.', + 'FTP_FSOCK_PASSWORD' => 'Mot de passe FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Mot de passe pour votre compte FTP.', + 'FTP_FSOCK_PORT' => 'Port FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Port utilisé pour se connecter à votre serveur.', + 'FTP_FSOCK_ROOT_PATH' => 'Chemin vers phpBB', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Chemin depuis la racine vers votre forum phpBB.', + 'FTP_FSOCK_TIMEOUT' => 'Temps d’attente FTP', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'La durée en secondes que le système attendra pour une réponse de votre serveur.', + 'FTP_FSOCK_USERNAME' => 'Nom d’utilisateur FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Nom d’utilisateur utilisé pour se connecter à votre serveur.', + + 'FTP_HOST' => 'Serveur FTP', + 'FTP_HOST_EXPLAIN' => 'Serveur FTP utilisé pour se connecter à votre site.', + 'FTP_PASSWORD' => 'Mot de passe FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Mot de passe pour votre compte FTP.', + 'FTP_PORT' => 'Port FTP', + 'FTP_PORT_EXPLAIN' => 'Port utilisé pour se connecter à votre serveur.', + 'FTP_ROOT_PATH' => 'Chemin vers phpBB', + 'FTP_ROOT_PATH_EXPLAIN' => 'Chemin depuis la racine vers votre forum phpBB.', + 'FTP_TIMEOUT' => 'Temps d’attente FTP', + 'FTP_TIMEOUT_EXPLAIN' => 'La durée en secondes que le système attendra pour une réponse de votre serveur.', + 'FTP_USERNAME' => 'Nom d’utilisateur FTP', + 'FTP_USERNAME_EXPLAIN' => 'Nom d’utilisateur utilisé pour se connecter à votre serveur.', + + 'GENERAL_ERROR' => 'Erreur générale', + 'GB' => 'Go', + 'GIB' => 'Gio', + 'GO' => 'Aller', + 'GOTO_PAGE' => 'Aller à la page', + 'GROUP' => 'Groupe', + 'GROUPS' => 'Groupes', + 'GROUP_ERR_TYPE' => 'Le type de groupe indiqué est inapproprié.', + 'GROUP_ERR_USERNAME' => 'Aucun nom de groupe indiqué.', + 'GROUP_ERR_USER_LONG' => 'Les noms de groupe ne peuvent pas dépasser 60 caractères. Le nom du groupe indiqué est trop long.', + 'GUEST' => 'Invité', + 'GUEST_USERS_ONLINE' => 'Il y a %d invités en ligne', + 'GUEST_USERS_TOTAL' => '%d invités', + 'GUEST_USERS_ZERO_ONLINE' => '0 invité en ligne', + 'GUEST_USERS_ZERO_TOTAL' => '0 invité', + 'GUEST_USER_ONLINE' => 'Il y a %d invité en ligne', + 'GUEST_USER_TOTAL' => '%d invité', + 'G_ADMINISTRATORS' => 'Administrateurs', + 'G_BOTS' => 'Robots', + 'G_GUESTS' => 'Invités', + 'G_REGISTERED' => 'Utilisateurs enregistrés', + 'G_REGISTERED_COPPA' => 'Utilisateurs COPPA enregistrés', + 'G_GLOBAL_MODERATORS' => 'Modérateurs globaux', + 'G_NEWLY_REGISTERED' => 'Nouveaux utilisateurs enregistrés', + + 'HIDDEN_USERS_ONLINE' => '%d utilisateurs invisibles en ligne', + 'HIDDEN_USERS_TOTAL' => '%d invisibles', + 'HIDDEN_USERS_TOTAL_AND' => '%d invisibles et ', + 'HIDDEN_USERS_ZERO_ONLINE' => '0 utilisateur invisible en ligne', + 'HIDDEN_USERS_ZERO_TOTAL' => '0 invisible', + 'HIDDEN_USERS_ZERO_TOTAL_AND' => '0 invisible et ', + 'HIDDEN_USER_ONLINE' => '%d utilisateur invisible en ligne', + 'HIDDEN_USER_TOTAL' => '%d invisible', + 'HIDDEN_USER_TOTAL_AND' => '%d invisible et ', + 'HIDE_GUESTS' => 'Masquer les invités', + 'HIDE_ME' => 'Cacher mon statut en ligne pour cette session', + 'HOURS' => 'Heures', + 'HOME' => 'Accueil', + + 'ICQ' => 'ICQ', + 'ICQ_STATUS' => 'Statut ICQ', + 'IF' => 'Si', + 'IMAGE' => 'Image', + 'IMAGE_FILETYPE_INVALID' => 'Le type de fichier image %d pour le type mime %s n’est pas supporté.', + 'IMAGE_FILETYPE_MISMATCH' => 'Type de fichier image incorrect: l’extension %1$s était attendue mais l’extension %2$s a été trouvée.', + 'IN' => 'dans', + 'INDEX' => 'Page d’index', + 'INFORMATION' => 'Informations', + 'INTERESTS' => 'Centres d’intérêt', + 'INVALID_DIGEST_CHALLENGE' => 'Défi invalide.', + 'INVALID_EMAIL_LOG' => '%s est peut-être une adresse invalide ?', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'Votre IP %1$s a été bloquée car elle est dans la liste noire. Pour plus d’informations, consultez %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Inscription', + 'JUMP_PAGE' => 'Entrer le numéro de page où vous souhaitez aller.', + 'JUMP_TO' => 'Aller à', + 'JUMP_TO_PAGE' => 'Cliquer pour aller à la page…', + + 'KB' => 'Ko', + 'KIB' => 'Kio', + + 'LAST_POST' => 'Dernier message', + 'LAST_UPDATED' => 'Dernière mise à jour', + 'LAST_VISIT' => 'Dernière visite', + 'LDAP_NO_LDAP_EXTENSION' => 'Extension LDAP indisponible.', + 'LDAP_NO_SERVER_CONNECTION' => 'Impossible de se connecter au serveur LDAP.', + 'LDAP_SEARCH_FAILED' => 'Une erreur est survenue pendant la recherche du répertoire LDAP.', + 'LEGEND' => 'Légende', + 'LOCATION' => 'Localisation', + 'LOCK_POST' => 'Verrouiller le message', + 'LOCK_POST_EXPLAIN' => 'Empêche l’édition du message', + 'LOCK_TOPIC' => 'Verrouiller le sujet', + 'LOGIN' => 'Connexion', + 'LOGIN_CHECK_PM' => 'Se connecter pour vérifier ses messages privés.', + 'LOGIN_CONFIRMATION' => 'Confirmation de connexion', + 'LOGIN_CONFIRM_EXPLAIN' => 'Pour éviter une usurpation des comptes, l’administrateur du forum exige que vous entriez un code de confirmation visuelle après un certain nombre d’échecs. Le code est indiqué dans l’image que vous devez voir ci-dessous. Si vous êtes déficient visuel ou que vous ne pouvez pas lire ce code, contactez %sl’administrateur%s du forum.', // unused + 'LOGIN_ERROR_ATTEMPTS' => 'Vous avez dépassé le maximum autorisé de tentatives de connexion. En plus de vos nom d’utilisateur et mot de passe, vous devez maintenant résoudre le CAPTCHA ci-dessous.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Vous n’avez pas été authentifié par Apache.', + 'LOGIN_ERROR_PASSWORD' => 'Vous avez indiqué un mot de passe incorrect. Vérifiez votre mot de passe et réessayez. Si vous continuez à rencontrer des problèmes, contactez l’%sadministrateur du forum%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Il n’a pas été possible de convertir votre mot de passe lors de la mise à jour du forum. %sRedemandez un mot de passe%s. Si le problème persiste, contactez l’%sadministrateur du forum%s.', + 'LOGIN_ERROR_USERNAME' => 'Vous avez indiqué un nom d’utilisateur incorrect. Vérifiez votre nom d’utilisateur et réessayez. Si vous continuez à rencontrer des problèmes, contactez l’%sadministrateur du forum%s.', + 'LOGIN_FORUM' => 'Pour lire ou poster dans ce forum, vous devez entrer son mot de passe.', + 'LOGIN_INFO' => 'Vous devez être enregistré pour vous connecter. L’enregistrement ne prend que quelques secondes et augmente vos possibilités. L’administrateur du forum peut également accorder des permissions additionnelles aux utilisateurs enregistrés. Avant de vous enregistrer, assurez-vous d’avoir pris connaissance de nos conditions d’utilisation et de notre politique de vie privée. Assurez-vous de bien lire tout le règlement du forum.', + 'LOGIN_VIEWFORUM' => 'L’administrateur du forum exige que vous soyez enregistré et connecté pour lire ce forum.', + 'LOGIN_EXPLAIN_EDIT' => 'Pour éditer des messages dans ce forum, vous devez être enregistré et connecté.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Pour consulter la liste des utilisateurs en ligne, vous devez être enregistré et connecté.', + 'LOGOUT' => 'Déconnexion', + 'LOGOUT_USER' => 'Déconnexion [ %s ]', + 'LOG_ME_IN' => 'Me connecter automatiquement à chaque visite', + + 'MARK' => 'Cocher', + 'MARK_ALL' => 'Tout cocher', + 'MARK_FORUMS_READ' => 'Marquer tous les forums comme lus', + 'MARK_SUBFORUMS_READ' => 'Marquer tous les sous-forums comme lus', + 'MB' => 'Mo', + 'MIB' => 'Mio', + 'MCP' => 'Panneau de modération', + 'MEMBERLIST' => 'Membres', + 'MEMBERLIST_EXPLAIN' => 'Voir la liste complète des membres', + 'MERGE' => 'Fusionner', + 'MERGE_POSTS' => 'Déplacer les messages', + 'MERGE_TOPIC' => 'Fusionner le sujet', + 'MESSAGE' => 'Message', + 'MESSAGES' => 'Messages', + 'MESSAGE_BODY' => 'Corps du message', + 'MINUTES' => 'Minutes', + 'MODERATE' => 'Modérer', + 'MODERATOR' => 'Modérateur', + 'MODERATORS' => 'Modérateurs', + 'MONTH' => 'Mois', + 'MOVE' => 'Déplacer', + 'MSNM' => 'WLM', + + 'NA' => 'N/A', + 'NEWEST_USER' => 'L’utilisateur enregistré le plus récent est %s', + 'NEW_MESSAGE' => 'Nouveau message', + 'NEW_MESSAGES' => 'Nouveaux messages', + 'NEW_PM' => '%d nouveau message privé', + 'NEW_PMS' => '%d nouveaux messages privés', + 'NEW_POST' => 'Nouveau message', // Not used anymore + 'NEW_POSTS' => 'Nouveaux messages', // Not used anymore + 'NEXT' => 'Suivante', // Used in pagination + 'NEXT_STEP' => 'Suivant', + 'NEVER' => 'Jamais', + 'NO' => 'Non', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Vous n’êtes pas autorisé à gérer ce groupe.', + 'NOT_AUTHORISED' => 'Vous n’êtes pas autorisé à accéder à cette partie du forum.', + 'NOT_WATCHING_FORUM' => 'Vous ne surveillez plus ce forum.', + 'NOT_WATCHING_TOPIC' => 'Vous ne surveillez plus ce sujet.', + 'NOTIFY_ADMIN' => 'Contactez l’administrateur du forum ou le webmaster.', + 'NOTIFY_ADMIN_EMAIL' => 'Contactez l’administrateur du forum ou le webmaster: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Vous n’êtes pas autorisé à accéder à ce fichier.', + 'NO_ACTION' => 'Aucune action indiquée.', + 'NO_ADMINISTRATORS' => 'Il n’existe aucun administrateur.', + 'NO_AUTH_ADMIN' => 'Vous n’avez pas les permissions d’administration et ne pouvez donc pas accéder au panneau d’administration.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Vous ne pouvez pas vous ré-authentifier avec un compte différent.', + 'NO_AUTH_OPERATION' => 'Vous n’avez pas les permissions nécessaires pour accomplir cette opération.', + 'NO_CONNECT_TO_SMTP_HOST' => 'Impossible de se connecter au serveur smtp : %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Pas d’anniversaire à fêter aujourd’hui', + 'NO_EMAIL_MESSAGE' => 'Le contenu de cet e-mail est vide.', + 'NO_EMAIL_RESPONSE_CODE' => 'Impossible de récupérer les codes de réponse du serveur.', + 'NO_EMAIL_SUBJECT' => 'Aucun sujet n’a été indiqué.', + 'NO_FORUM' => 'Le forum que vous avez tenté d’atteindre n’existe pas.', + 'NO_FORUMS' => 'Aucun forum.', + 'NO_GROUP' => 'Le groupe demandé n’existe pas.', + 'NO_GROUP_MEMBERS' => 'Aucun membre dans ce groupe.', + 'NO_IPS_DEFINED' => 'Aucune IP ou nom d’hôte', + 'NO_MEMBERS' => 'Aucun membre trouvé pour ce critère de recherche.', + 'NO_MESSAGES' => 'Pas de message', + 'NO_MODE' => 'Pas de mode indiqué.', + 'NO_MODERATORS' => 'Il n’existe aucun modérateur.', + 'NO_NEW_MESSAGES' => 'Pas de nouveau message', + 'NO_NEW_PM' => '0 nouveau message privé', + 'NO_NEW_POSTS' => 'Pas de nouveau message', // Not used anymore + 'NO_ONLINE_USERS' => 'Aucun utilisateur enregistré', + 'NO_POSTS' => 'Pas de message', + 'NO_POSTS_TIME_FRAME' => 'Aucun message n’a été posté dans ce sujet pour la période indiquée.', + 'NO_FEED_ENABLED' => 'Les flux ne sont pas disponibles sur ce forum.', + 'NO_FEED' => 'Le flux demandé n’est pas disponible.', + 'NO_STYLE_DATA' => 'Impossible de récupérer les données de style', + 'NO_SUBJECT' => 'Aucun sujet indiqué', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'La recherche indiquée n’existe pas.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Aucune méthode d’authentification supportée.', + 'NO_TOPIC' => 'Le sujet demandé n’existe pas.', + 'NO_TOPIC_FORUM' => 'Le sujet ou le forum n’existe plus.', + 'NO_TOPICS' => 'Il n’y a aucun sujet ou message dans ce forum.', + 'NO_TOPICS_TIME_FRAME' => 'Aucun sujet n’a été posté dans ce forum pour la période indiquée.', + 'NO_UNREAD_PM' => '0 message non lu', + 'NO_UNREAD_POSTS' => 'Aucun message non lu', + 'NO_UPLOAD_FORM_FOUND' => 'Le chargement a commencé mais aucun fichier valide n’a été trouvé.', + 'NO_USER' => 'L’utilisateur demandé n’existe pas.', + 'NO_USERS' => 'Les utilisateurs demandés n’existent pas.', + 'NO_USER_SPECIFIED' => 'Aucun nom d’utilisateur indiqué.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Aucun message en attente', // 0 + 1 => '1 message en attente', // 1 + 2 => '%d messages en attente', // 2+ + ), + + 'OCCUPATION' => 'Emploi', + 'OFFLINE' => 'Hors ligne', + 'ONLINE' => 'En ligne', + 'ONLINE_BUDDIES' => 'Amis en ligne', + 'ONLINE_USERS_TOTAL' => 'Au total il y a %d utilisateurs en ligne :: ', + 'ONLINE_USERS_ZERO_TOTAL' => 'Au total il y a 0 utilisateur en ligne :: ', + 'ONLINE_USER_TOTAL' => 'Au total il y a %d utilisateur en ligne :: ', + 'OPTIONS' => 'Options', + + 'PAGE_OF' => 'Page %1$d sur %2$d', + 'PASSWORD' => 'Mot de passe', + 'PIXEL' => 'px', + 'PLAY_QUICKTIME_FILE' => 'Jouer le fichier Quicktime', + 'PM' => 'MP', + 'PM_REPORTED' => 'Cliquer pour voir le rapport', + 'POSTING_MESSAGE' => 'Poste un message dans %s', + 'POSTING_PRIVATE_MESSAGE' => 'Rédige un message privé', + 'POST' => 'Message', + 'POST_ANNOUNCEMENT' => 'Annonce', + 'POST_STICKY' => 'Post-it', + 'POSTED' => 'Posté', + 'POSTED_IN_FORUM' => 'Dans', + 'POSTED_ON_DATE' => 'le', + 'POSTS' => 'Messages', + 'POSTS_UNAPPROVED' => 'Au moins un message de ce sujet n’a pas été approuvé.', + 'POST_BY_AUTHOR' => 'par', + 'POST_BY_FOE' => 'Ce message a été rédigé par %1$s qui est actuellement sur votre liste de membres ignorés. %2$sAfficher le message%3$s.', + 'POST_DAY' => '%.2f messages par jour', + 'POST_DETAILS' => 'Détails', + 'POST_NEW_TOPIC' => 'Poster un nouveau sujet', + 'POST_PCT' => '%.2f%% de tous les messages', + 'POST_PCT_ACTIVE' => '%.2f%% des messages de l’utilisateur', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% de vos messages', + 'POST_REPLY' => 'Répondre', + 'POST_REPORTED' => 'Cliquer pour voir le rapport', + 'POST_SUBJECT' => 'Sujet du message', + 'POST_TIME' => 'Date', + 'POST_TOPIC' => 'Écrire un nouveau sujet', + 'POST_UNAPPROVED' => 'Ce message est en attente d’approbation', + 'POWERED_BY' => 'Développé par %s', + 'PREVIEW' => 'Aperçu', + 'PREVIOUS' => 'Précédente', // Used in pagination + 'PREVIOUS_STEP' => 'Précédente', + 'PRIVACY' => 'Politique de vie privée', + 'PRIVATE_MESSAGE' => 'Message privé', + 'PRIVATE_MESSAGES' => 'Messages privés', + 'PRIVATE_MESSAGING' => 'Messagerie privée', + 'PROFILE' => 'Panneau de l’utilisateur', + + 'RANK' => 'Rang', + 'READING_FORUM' => 'Consulte les sujets dans %s', + 'READING_GLOBAL_ANNOUNCE' => 'Consulte une annonce globale', + 'READING_LINK' => 'Consulte le lien du forum %s', + 'READING_TOPIC' => 'Consulte un sujet dans %s', + 'READ_PROFILE' => 'Profil', + 'REASON' => 'Raison', + 'RECORD_ONLINE_USERS' => 'Le record du nombre d’utilisateurs en ligne est de %1$s, le %2$s', + 'REDIRECT' => 'Rediriger', + 'REDIRECTS' => 'Nombre de redirections', + 'REGISTER' => 'M’enregistrer', + 'REGISTERED_USERS' => 'Utilisateurs enregistrés:', + 'REG_USERS_ONLINE' => 'Il y a %d utilisateurs enregistrés et ', + 'REG_USERS_TOTAL' => '%d enregistrés, ', + 'REG_USERS_TOTAL_AND' => '%d enregistrés et ', + 'REG_USERS_ZERO_ONLINE' => 'Il y a 0 utilisateur enregistré et ', + 'REG_USERS_ZERO_TOTAL' => '0 enregistré, ', + 'REG_USERS_ZERO_TOTAL_AND' => '0 enregistré et ', + 'REG_USER_ONLINE' => 'Il y a %d utilisateur enregistré et ', + 'REG_USER_TOTAL' => '%d enregistré, ', + 'REG_USER_TOTAL_AND' => '%d enregistré et ', + 'REMOVE' => 'Supprimer', + 'REMOVE_INSTALL' => 'Pour finaliser l’installation du forum, supprimez, déplacez ou renommez le dossier install de votre espace FTP. Si ce dossier est toujours présent, seul le panneau d’administration (ACP) sera accessible.', + 'REPLIES' => 'Réponses', + 'REPLY_WITH_QUOTE' => 'Répondre en citant le message', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Répond à une annonce globale', + 'REPLYING_MESSAGE' => 'Répond à un message dans %s', + 'REPORT_BY' => 'Rapporté par', + 'REPORT_POST' => 'Rapporter le message', + 'REPORTING_POST' => 'Rapporter un message', + 'RESEND_ACTIVATION' => 'Renvoyer l’e-mail de confirmation', + 'RESET' => 'Réinitialiser', + 'RESTORE_PERMISSIONS' => 'Rétablir les permissions', + 'RETURN_INDEX' => '%sRetourner à l’index du forum%s', + 'RETURN_FORUM' => '%sRetourner au dernier forum visité%s', + 'RETURN_PAGE' => '%sRetourner à la page précédente%s', + 'RETURN_TOPIC' => '%sRetourner au dernier sujet visité%s', + 'RETURN_TO' => 'Retourner vers', + 'FEED' => 'Flux', + 'FEED_NEWS' => 'Nouvelles informations', + 'FEED_TOPICS_ACTIVE' => 'Sujets actifs', + 'FEED_TOPICS_NEW' => 'Nouveaux sujets', + 'RULES_ATTACH_CAN' => 'Vous pouvez joindre des fichiers', + 'RULES_ATTACH_CANNOT' => 'Vous ne pouvez pas joindre des fichiers', + 'RULES_DELETE_CAN' => 'Vous pouvez supprimer vos messages', + 'RULES_DELETE_CANNOT' => 'Vous ne pouvez pas supprimer vos messages', + 'RULES_DOWNLOAD_CAN' => 'Vous pouvez télécharger des fichiers joints', + 'RULES_DOWNLOAD_CANNOT' => 'Vous ne pouvez pas télécharger des fichiers joints', + 'RULES_EDIT_CAN' => 'Vous pouvez éditer vos messages', + 'RULES_EDIT_CANNOT' => 'Vous ne pouvez pas éditer vos messages', + 'RULES_LOCK_CAN' => 'Vous pouvez verrouiller vos sujets', + 'RULES_LOCK_CANNOT' => 'Vous ne pouvez pas verrouiller vos sujets', + 'RULES_POST_CAN' => 'Vous pouvez poster de nouveaux sujets', + 'RULES_POST_CANNOT' => 'Vous ne pouvez pas poster de nouveaux sujets', + 'RULES_REPLY_CAN' => 'Vous pouvez répondre aux sujets', + 'RULES_REPLY_CANNOT' => 'Vous ne pouvez pas répondre aux sujets', + 'RULES_VOTE_CAN' => 'Vous pouvez participer aux votes', + 'RULES_VOTE_CANNOT' => 'Vous ne pouvez pas participer aux votes', + + 'SEARCH' => 'Rechercher', + 'SEARCH_MINI' => 'Recherche…', + 'SEARCH_ADV' => 'Recherche avancée', + 'SEARCH_ADV_EXPLAIN' => 'Voir les options de recherche avancée', + 'SEARCH_KEYWORDS' => 'Recherche par mots-clés', + 'SEARCHING_FORUMS' => 'Recherche dans les forums', + 'SEARCH_ACTIVE_TOPICS' => 'Voir les sujets actifs', + 'SEARCH_FOR' => 'Rechercher', + 'SEARCH_FORUM' => 'Dans ce forum…', + 'SEARCH_NEW' => 'Voir les nouveaux messages', + 'SEARCH_POSTS_BY' => 'Rechercher les messages de', + 'SEARCH_SELF' => 'Voir mes messages', + 'SEARCH_TOPIC' => 'Dans ce sujet…', + 'SEARCH_UNANSWERED' => 'Voir les messages sans réponses', + 'SEARCH_UNREAD' => 'Voir les messages non lus', + 'SEARCH_USER_POSTS' => 'Rechercher les messages de l’utilisateur', + 'SECONDS' => 'secondes', + 'SELECT' => 'Sélectionner', + 'SELECT_ALL_CODE' => 'Tout sélectionner', + 'SELECT_DESTINATION_FORUM' => 'Choisissez un forum de destination', + 'SELECT_FORUM' => 'Sélectionner un forum', + 'SEND_EMAIL' => 'Envoyer un e-mail', // Used for submit buttons + 'SEND_EMAIL_USER' => 'Envoyer un e-mail à', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX + 'SEND_PRIVATE_MESSAGE' => 'Envoyer un message privé', + 'SETTINGS' => 'Paramètres', + 'SIGNATURE' => 'Signature', + 'SKIP' => 'Vers le contenu', + 'SMTP_NO_AUTH_SUPPORT' => 'Le serveur SMTP ne peut pas vous identifier.', + 'SORRY_AUTH_READ' => 'Vous n’êtes pas autorisé à lire ce forum.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Vous n’êtes pas autorisé à télécharger ce fichier joint.', + 'SORT_BY' => 'Trier par', + 'SORT_JOINED' => 'Date d’inscription', + 'SORT_LOCATION' => 'Localisation', + 'SORT_RANK' => 'Rang', + 'SORT_POSTS' => 'Messages', + 'SORT_TOPIC_TITLE' => 'Titre du sujet', + 'SORT_USERNAME' => 'Nom d’utilisateur', + 'SPLIT_TOPIC' => 'Diviser le sujet', + 'SQL_ERROR_OCCURRED' => 'Une erreur SQL est arrivée en chargeant cette page. Contactez l’%sadministrateur du forum%s si ce problème persiste.', + 'STATISTICS' => 'Statistiques', + 'START_WATCHING_FORUM' => 'Surveiller ce forum', + 'START_WATCHING_TOPIC' => 'Surveiller ce sujet', + 'STOP_WATCHING_FORUM' => 'Arrêter de surveiller ce forum', + 'STOP_WATCHING_TOPIC' => 'Arrêter de surveiller ce sujet', + 'SUBFORUM' => 'Sous-forum', + 'SUBFORUMS' => 'Sous-forums', + 'SUBJECT' => 'Sujet', + 'SUBMIT' => 'Envoyer', + + 'TB' => 'To', // téraoctet + 'TERMS_USE' => 'Conditions d’utilisation', + 'TEST_CONNECTION' => 'Test de connexion', + 'THE_TEAM' => 'L’équipe du forum', + 'TIB' => 'Tio', // tébioctect + 'TIME' => 'Date', + + 'TOO_LARGE' => 'La valeur saisie est trop grande.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'La valeur du réglage Nombre maximum autorisé de destinataires par message privé que vous avez saisie est trop grande.', + + 'TOO_LONG' => 'La valeur saisie est trop longue.', + + 'TOO_LONG_AIM' => 'Le pseudonyme AIM indiqué est trop long.', + 'TOO_LONG_CONFIRM_CODE' => 'Le code de confirmation indiqué est trop long.', + 'TOO_LONG_DATEFORMAT' => 'Le format de la date indiquée est trop long.', + 'TOO_LONG_ICQ' => 'Le numéro ICQ indiqué est trop long.', + 'TOO_LONG_INTERESTS' => 'Les centres d’intérêts indiqués sont trop longs.', + 'TOO_LONG_JABBER' => 'Le nom de compte Jabber indiqué est trop long.', + 'TOO_LONG_LOCATION' => 'La localisation indiquée est trop longue.', + 'TOO_LONG_MSN' => 'Le compte WLM indiqué est trop long.', + 'TOO_LONG_NEW_PASSWORD' => 'Le mot de passe indiqué est trop long.', + 'TOO_LONG_OCCUPATION' => 'Les loisirs indiqués sont trop longs.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'Le mot de passe de confirmation indiqué est trop long.', + 'TOO_LONG_USER_PASSWORD' => 'Le mot de passe indiqué est trop long.', + 'TOO_LONG_USERNAME' => 'Le nom d’utilisateur indiqué est trop long.', + 'TOO_LONG_EMAIL' => 'L’adresse e-mail indiquée est trop longue.', + 'TOO_LONG_EMAIL_CONFIRM' => 'L’adresse e-mail de confirmation indiquée est trop longue.', + 'TOO_LONG_WEBSITE' => 'L’adresse du site Internet indiquée est trop longue.', + 'TOO_LONG_YIM' => 'Le nom Yahoo! Messenger indiqué est trop long.', + + 'TOO_MANY_VOTE_OPTIONS' => 'Vous avez sélectionné trop d’options de vote.', + + 'TOO_SHORT' => 'La valeur saisie est trop courte.', + + 'TOO_SHORT_AIM' => 'Le pseudonyme AIM indiqué est trop court.', + 'TOO_SHORT_CONFIRM_CODE' => 'Le code de confirmation indiqué est trop court.', + 'TOO_SHORT_DATEFORMAT' => 'Le format de la date indiquée est trop courte.', + 'TOO_SHORT_ICQ' => 'Le numéro ICQ indiqué est trop court.', + 'TOO_SHORT_INTERESTS' => 'Les centres d’intérêts indiqués sont trop courts.', + 'TOO_SHORT_JABBER' => 'Le nom de compte Jabber indiqué est trop court.', + 'TOO_SHORT_LOCATION' => 'La localisation indiquée est trop courte.', + 'TOO_SHORT_MSN' => 'Le compte WLM indiqué est trop court.', + 'TOO_SHORT_NEW_PASSWORD' => 'Le mot de passe indiqué est trop court.', + 'TOO_SHORT_OCCUPATION' => 'Les loisirs indiqués sont trop courts.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'Le mot de passe de confirmation indiqué est trop court.', + 'TOO_SHORT_USER_PASSWORD' => 'Le mot de passe indiqué est trop court.', + 'TOO_SHORT_USERNAME' => 'Le nom d’utilisateur indiqué est trop court.', + 'TOO_SHORT_EMAIL' => 'L’adresse e-mail indiquée est trop courte.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'L’adresse e-mail de confirmation indiquée est trop courte.', + 'TOO_SHORT_WEBSITE' => 'L’adresse du site Internet indiquée est trop courte.', + 'TOO_SHORT_YIM' => 'Le nom Yahoo! Messenger indiqué est trop court.', + + 'TOO_SMALL' => 'La valeur saisie est trop petite.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'La valeur du réglage Nombre maximum autorisé de destinataires par message privé que vous avez saisie est trop petite.', + + 'TOPIC' => 'Sujet', + 'TOPICS' => 'Sujets', + 'TOPICS_UNAPPROVED' => 'Au moins un sujet dans ce forum n’est pas approuvé.', + 'TOPIC_ICON' => 'Icône de sujet', + 'TOPIC_LOCKED' => 'Ce sujet est verrouillé, vous ne pouvez pas éditer de messages ou poster d’autres réponses.', + 'TOPIC_LOCKED_SHORT'=> 'Sujet verrouillé', + 'TOPIC_MOVED' => 'Sujet déplacé', + 'TOPIC_REVIEW' => 'Revue du sujet', + 'TOPIC_TITLE' => 'Titre du sujet', + 'TOPIC_UNAPPROVED' => 'Ce sujet n’a pas été approuvé', + 'TOTAL_ATTACHMENTS' => 'Fichier(s) joint(s)', + 'TOTAL_LOG' => '1 entrée', + 'TOTAL_LOGS' => '%d entrées', + 'TOTAL_NO_PM' => '0 message privé', + 'TOTAL_PM' => '1 message privé', + 'TOTAL_PMS' => '%d messages privés', + 'TOTAL_POSTS' => 'Messages', + 'TOTAL_POSTS_OTHER' => '%d message(s)', + 'TOTAL_POSTS_ZERO' => '0 message', + 'TOPIC_REPORTED' => 'Ce sujet a été rapporté', + 'TOTAL_TOPICS_OTHER'=> '%d sujet(s)', + 'TOTAL_TOPICS_ZERO' => '0 sujet', + 'TOTAL_USERS_OTHER' => '%d membre(s)', + 'TOTAL_USERS_ZERO' => '0 membre', + 'TRACKED_PHP_ERROR' => 'Suivi des erreurs PHP: %s', + + 'UNABLE_GET_IMAGE_SIZE' => 'Impossible de déterminer les dimensions de l’image.', + 'UNABLE_TO_DELIVER_FILE'=> 'Impossible de charger l’image.', + 'UNKNOWN_BROWSER' => 'Navigateur inconnu', + 'UNMARK_ALL' => 'Tout décocher', + 'UNREAD_MESSAGES' => 'Messages non lus', + 'UNREAD_PM' => '%d message non lu', + 'UNREAD_PMS' => '%d messages non lus', + 'UNREAD_POST' => 'Message non lu', + 'UNREAD_POSTS' => 'Messages non lus', + 'UNWATCH_FORUM_CONFIRM' => 'Êtes-vous sûr de ne plus vouloir surveiller ce forum ?', + 'UNWATCH_FORUM_DETAILED' => 'Êtes-vous sûr de ne plus vouloir surveiller le forum « %s » ?', + 'UNWATCH_TOPIC_CONFIRM' => 'Êtes-vous sûr de ne plus vouloir surveiller ce sujet ?', + 'UNWATCH_TOPIC_DETAILED' => 'Êtes-vous sûr de ne plus vouloir surveiller le sujet « %s » ?', + 'UNWATCHED_FORUMS' => 'Vous ne surveillez plus les forums sélectionnés.', + 'UNWATCHED_TOPICS' => 'Vous ne surveillez plus les sujets sélectionnés.', + 'UNWATCHED_FORUMS_TOPICS' => 'Vous ne surveillez plus les entrées sélectionnées.', + 'UPDATE' => 'Mise à jour', + 'UPLOAD_IN_PROGRESS' => 'Le chargement est actuellement en cours.', + 'URL_REDIRECT' => 'Si votre navigateur ne vous redirige pas automatiquement dans quelques instants, %scliquez ici pour être redirigé%s.', + 'USERGROUPS' => 'Groupes d’utilisateurs', + 'USERNAME' => 'Nom d’utilisateur', + 'USERNAMES' => 'Noms des utilisateurs', + 'USER_AVATAR' => 'Avatar de l’utilisateur', + 'USER_CANNOT_READ' => 'Vous ne pouvez pas lire les messages de ce forum.', + 'USER_POST' => '%d Message', + 'USER_POSTS' => '%d Messages', + 'USERS' => 'Utilisateurs', + 'USE_PERMISSIONS' => 'Tester les permissions de l’utilisateur', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Nous sommes désolés, mais vous n’êtes pas autorisé à utiliser cette fonctionnalité. Vous venez juste de vous inscrire, et il vous est nécessaire de participer plus pour utiliser cette fonctionnalité.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'Vu', + 'VIEWING_FAQ' => 'Consulte la FAQ', + 'VIEWING_MEMBERS' => 'Consulte les informations d’un utilisateur', + 'VIEWING_ONLINE' => 'Regarde qui est en ligne', + 'VIEWING_MCP' => 'Consulte le panneau de modération', + 'VIEWING_MEMBER_PROFILE' => 'Consulte le profil d’un utilisateur', + 'VIEWING_PRIVATE_MESSAGES' => 'Lit ses messages privés', + 'VIEWING_REGISTER' => 'S’enregistre', + 'VIEWING_UCP' => 'Consulte son panneau de l’utilisateur', + 'VIEWS' => 'Vus', + 'VIEW_BOOKMARKS' => 'Afficher les favoris', + 'VIEW_FORUM_LOGS' => 'Afficher le journal', + 'VIEW_LATEST_POST' => 'Voir le dernier message', + 'VIEW_NEWEST_POST' => 'Voir le premier message non lu', + 'VIEW_NOTES' => 'Notes sur l’utilisateur', + 'VIEW_ONLINE_TIME' => 'd’après le nombre d’utilisateurs actifs cette dernière minute', + 'VIEW_ONLINE_TIMES' => 'd’après le nombre d’utilisateurs actifs ces %d dernières minutes', + 'VIEW_TOPIC' => 'Afficher le sujet', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'Annonce: ', + 'VIEW_TOPIC_GLOBAL' => 'Annonce globale: ', + 'VIEW_TOPIC_LOCKED' => 'Verrouillé: ', + 'VIEW_TOPIC_LOGS' => 'Voir les journaux', + 'VIEW_TOPIC_MOVED' => 'Déplacé: ', + 'VIEW_TOPIC_POLL' => 'Sondage: ', + 'VIEW_TOPIC_STICKY' => 'Post-it: ', + 'VISIT_WEBSITE' => 'Visiter le site Internet', + + 'WARNINGS' => 'Avertissements', + 'WARN_USER' => 'Avertir l’utilisateur', + 'WATCH_FORUM_CONFIRM' => 'Êtes-vous sûr de vouloir surveiller ce forum ?', + 'WATCH_FORUM_DETAILED' => 'Êtes-vous sûr de vouloir surveiller le forum « %s » ?', + 'WATCH_TOPIC_CONFIRM' => 'Êtes-vous sûr de vouloir surveiller ce sujet ?', + 'WATCH_TOPIC_DETAILED' => 'Êtes-vous sûr de vouloir surveiller le sujet « %s » ?', + 'WELCOME_SUBJECT' => 'Bienvenue sur les forums %s', + 'WEBSITE' => 'Site Internet', + 'WHOIS' => 'Whois', + 'WHO_IS_ONLINE' => 'Qui est en ligne', + 'WRONG_PASSWORD' => 'Vous avez entré un mot de passe incorrect.', + + 'WRONG_DATA_COLOUR' => 'La valeur saisie pour la couleur est invalide.', + 'WRONG_DATA_ICQ' => 'Le numéro que vous avez entré n’est pas un numéro ICQ valide.', + 'WRONG_DATA_JABBER' => 'Le nom que vous avez entré n’est pas un nom de compte Jabber valide.', + 'WRONG_DATA_LANG' => 'La langue que vous avez indiquée n’est pas valide.', + 'WRONG_DATA_WEBSITE' => 'L’adresse de site Internet doit être une URL valide, incluant le protocole. Par exemple http://www.exemple.com/.', + 'WROTE' => 'a écrit', + + 'YEAR' => 'Année', + 'YEAR_MONTH_DAY' => '(AAAA-MM-JJ)', + 'YES' => 'Oui', + 'YIM' => 'YIM', + 'YOU_LAST_VISIT' => 'Dernière visite: %s', + 'YOU_NEW_PM' => 'Un nouveau message privé vous attend dans votre boîte de réception.', + 'YOU_NEW_PMS' => 'De nouveaux messages privés vous attendent dans votre boîte de réception.', + 'YOU_NO_NEW_PM' => 'Aucun nouveau message privé en attente.', + + 'datetime' => array( + 'TODAY' => 'Aujourd’hui', + 'TOMORROW' => 'Demain', + 'YESTERDAY' => 'Hier', + 'AGO' => array( + 0 => 'il y a moins d’une minute', + 1 => 'il y a %d minute', + 2 => 'il y a %d minutes', + 60 => 'il y a 1 heure', + ), + + 'Sunday' => 'Dimanche', + 'Monday' => 'Lundi', + 'Tuesday' => 'Mardi', + 'Wednesday' => 'Mercredi', + 'Thursday' => 'Jeudi', + 'Friday' => 'Vendredi', + 'Saturday' => 'Samedi', + + 'Sun' => 'Dim', + 'Mon' => 'Lun', + 'Tue' => 'Mar', + 'Wed' => 'Mer', + 'Thu' => 'Jeu', + 'Fri' => 'Ven', + 'Sat' => 'Sam', + + 'January' => 'Janvier', + 'February' => 'Février', + 'March' => 'Mars', + 'April' => 'Avril', + 'May' => 'Mai', + 'June' => 'Juin', + 'July' => 'Juillet', + 'August' => 'Août', + 'September' => 'Septembre', + 'October' => 'Octobre', + 'November' => 'Novembre', + 'December' => 'Décembre', + + 'Jan' => 'Jan', + 'Feb' => 'Fév', + 'Mar' => 'Mar', + 'Apr' => 'Avr', + 'May_short' => 'Mai', // Short representation of "May". May_short used because in English the short and long date are the same for May. + 'Jun' => 'Juin', + 'Jul' => 'Juil', + 'Aug' => 'Aoû', + 'Sep' => 'Sep', + 'Oct' => 'Oct', + 'Nov' => 'Nov', + 'Dec' => 'Déc', + ), + + 'tz' => array( + '-12' => 'UTC - 12 heures', + '-11' => 'UTC - 11 heures', + '-10' => 'UTC - 10 heures', + '-9.5' => 'UTC - 9:30 heures', + '-9' => 'UTC - 9 heures', + '-8' => 'UTC - 8 heures', + '-7' => 'UTC - 7 heures', + '-6' => 'UTC - 6 heures', + '-5' => 'UTC - 5 heures', + '-4.5' => 'UTC - 4:30 heures', + '-4' => 'UTC - 4 heures', + '-3.5' => 'UTC - 3:30 heures', + '-3' => 'UTC - 3 heures', + '-2' => 'UTC - 2 heures', + '-1' => 'UTC - 1 heure', + '0' => 'UTC', + '1' => 'UTC + 1 heure', + '2' => 'UTC + 2 heures', + '3' => 'UTC + 3 heures', + '3.5' => 'UTC + 3:30 heures', + '4' => 'UTC + 4 heures', + '4.5' => 'UTC + 4:30 heures', + '5' => 'UTC + 5 heures', + '5.5' => 'UTC + 5:30 heures', + '5.75' => 'UTC + 5:45 heures', + '6' => 'UTC + 6 heures', + '6.5' => 'UTC + 6:30 heures', + '7' => 'UTC + 7 heures', + '8' => 'UTC + 8 heures', + '8.75' => 'UTC + 8:45 heures', + '9' => 'UTC + 9 heures', + '9.5' => 'UTC + 9:30 heures', + '10' => 'UTC + 10 heures', + '10.5' => 'UTC + 10:30 heures', + '11' => 'UTC + 11 heures', + '11.5' => 'UTC + 11:30 heures', + '12' => 'UTC + 12 heures', + '12.75' => 'UTC + 12:45 heures', + '13' => 'UTC + 13 heures', + '14' => 'UTC + 14 heures', + 'dst' => '[ Heure d’été ]', + ), + + 'tz_zones' => array( + '-12' => '[UTC - 12] ÃŽle Baker', + '-11' => '[UTC - 11] Niue, Samoa', + '-10' => '[UTC - 10] Hawaii-Aleutian, ÃŽle Cook', + '-9.5' => '[UTC - 9:30] ÃŽles Marquises', + '-9' => '[UTC - 9] Alaska, ÃŽle Gambier', + '-8' => '[UTC - 8] Pacifique', + '-7' => '[UTC - 7] Montagnes Rocheuses', + '-6' => '[UTC - 6] Centre', + '-5' => '[UTC - 5] Est', + '-4.5' => '[UTC - 4:30] Venezuela', + '-4' => '[UTC - 4] Atlantique', + '-3.5' => '[UTC - 3:30] Terre-Neuve', + '-3' => '[UTC - 3] Amazonie, Groenland Central', + '-2' => '[UTC - 2] Fernando de Noronha, Géorgie du Sud et les ÃŽles Sandwich du Sud', + '-1' => '[UTC - 1] Açores, Cap-Vert, Groenland de l’Est', + '0' => '[UTC] Europe de l’Ouest, Méridien de Greenwich', + '1' => '[UTC + 1] Europe Centrale, Afrique de l’Ouest', + '2' => '[UTC + 2] Europe de l’Est, Afrique Centrale', + '3' => '[UTC + 3] Moscou, Afrique de l’Est', + '3.5' => '[UTC + 3:30] Iran', + '4' => '[UTC + 4] Gulf, Samara', + '4.5' => '[UTC + 4:30] Afghanistan', + '5' => '[UTC + 5] Pakistan, Iekaterinbourg', + '5.5' => '[UTC + 5:30] Inde, Sri Lanka', + '5.75' => '[UTC + 5:45] Népal', + '6' => '[UTC + 6] Bangladesh, Bhoutan, Novosibirsk', + '6.5' => '[UTC + 6:30] ÃŽles Cocos, Myanmar', + '7' => '[UTC + 7] Indochine, Krasnoyarsk', + '8' => '[UTC + 8] Chine, Australie de l’Ouest, Irkutsk', + '8.75' => '[UTC + 8:45] Australie du Sud-Est', + '9' => '[UTC + 9] Japon, Corée, Chita', + '9.5' => '[UTC + 9:30] Australie Centrale', + '10' => '[UTC + 10] Australie de l’Est, Vladivostok', + '10.5' => '[UTC + 10:30] Lord Howe', + '11' => '[UTC + 11] ÃŽle Solomon, Magadan', + '11.5' => '[UTC + 11:30] ÃŽle Norfolk', + '12' => '[UTC + 12] Nouvelle Zélande, Fiji, Kamchatka', + '12.75' => '[UTC + 12:45] ÃŽles Chatham', + '13' => '[UTC + 13] Tongo, ÃŽles Phoenix', + '14' => '[UTC + 14] ÃŽle de Wight', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Jan 2007, 13:37', + 'd M Y H:i' => '01 Jan 2007 13:37', + 'M j, \'y, H:i' => 'Jan 10, \'07, 13:37', + 'D M d, Y g:i a' => 'Lun Jan 01, 2007 1:37 pm', + 'F j, Y, g:i a' => 'Janvier 10, 2007, 1:37 pm', + '|d M Y|, H:i' => '[Jours relatifs], 13:37 / 10 Jan 2007, 13:37', + '|F j, Y|, g:i a' => '[Jours relatifs], 1:37 pm / Janvier 10, 2007, 1:37 pm' + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D j M Y H:i', // Lun 10 Jan 2007 13:37 + +)); +// www.phpBB-SEO.com SEO TOOLKIT BEGIN - TITLE +$lang['Page'] = 'Page '; +// www.phpBB-SEO.com SEO TOOLKIT END - TITLE +// www.phpBB-SEO.com SEO TOOLKIT BEGIN -> GYM Sitemaps +$lang = array_merge($lang, array( + 'GYM_LINKS' => 'Liens', + 'GYM_LINK' => 'Lien', + 'GYM_RSS_SLIDE_START' => 'Lancer', + 'GYM_RSS_SLIDE_STOP' => 'Stopper', + 'GYM_RSS_SOURCE' => 'Source', +)); +// www.phpBB-SEO.com SEO TOOLKIT END -> GYM Sitemaps +// www.phpBB-SEO.com SEO TOOLKIT BEGIN - Related Topics +$lang['RELATED_TOPICS'] = 'Articles en relation'; +// www.phpBB-SEO.com SEO TOOLKIT END - Related Topics +?> \ No newline at end of file diff --git a/includes/shared/phpbb3/language/lang_french/index.htm b/includes/shared/phpbb3/language/lang_french/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_french/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_greek/common.php b/includes/shared/phpbb3/language/lang_greek/common.php new file mode 100644 index 00000000..b6bcae91 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_greek/common.php @@ -0,0 +1,1433 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +* Ελληνική μετάφÏαση από την ομάδα του phpbbgr.com +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » “ †… +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => '
    Ελληνική μετάφÏαση από το phpbbgr.com', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Ιαν 2007 (με τα σχετικά στοιχεία) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (σχετική με την ημέÏα ενεÏγοποιημένη) + 'USER_LANG' => 'el', + + // You can define different rules for the determination of plural forms here. + // See https://area51.phpbb.com/docs/dev/32x/language/plurals.html for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 1, + + '1_DAY' => '1 ημέÏα', + '1_MONTH' => '1 μήνα', + '1_YEAR' => '1 χÏόνο', + '2_WEEKS' => '2 εβδομάδες', + '3_MONTHS' => '3 μήνες', + '6_MONTHS' => '6 μήνες', + '7_DAYS' => '7 ημέÏες', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Ο λογαÏιασμός σας έχει ήδη ενεÏγοποιηθεί.', + 'ACCOUNT_DEACTIVATED' => 'Ο λογαÏιασμός σας έχει απενεÏγοποιηθεί χειÏοκίνητα και μποÏεί να επανενεÏγοποιηθεί μόνον από έναν διαχειÏιστή.', + 'ACCOUNT_NOT_ACTIVATED' => 'Ο λογαÏιασμός σας δεν έχει ενεÏγοποιηθεί ακόμη.', + 'ACP' => 'Πίνακας Ελέγχου ΔιαχειÏιστή', + 'ACP_SHORT' => 'ΠΕΔ', + 'ACTIVE' => 'ενεÏγό', + 'ACTIVE_ERROR' => 'Το συγκεκÏιμένο όνομα μέλους είναι Ï€Ïος το παÏόν ανενεÏγό. Εάν αντιμετωπίζετε Ï€Ïοβλήματα με την ενεÏγοποίηση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚, παÏακαλώ επικοινωνήστε με κάποιον διαχειÏιστή του συστήματος συζητήσεων.', + 'ADMINISTRATOR' => 'ΔιαχειÏιστής', + 'ADMINISTRATORS' => 'ΔιαχειÏιστές', + 'AGE' => 'Ηλικία', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'Σφάλμα AJAX', + 'AJAX_ERROR_TEXT' => 'Κάτι πήγε στÏαβά κατά την επεξεÏγασία του αιτήματός σας.', + 'AJAX_ERROR_TEXT_ABORT' => 'Το αίτημα ακυÏώθηκε από μέλος.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'Εξαντλήθηκε το χÏονικό ÏŒÏιο του αιτήματός σας. ΠαÏακαλώ Ï€Ïοσπαθήστε εκ νέου.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Κάτι πήγε στÏαβά με το αίτημα και ο διακομιστής επέστÏεψε μια άκυÏη απάντηση.', + 'ALLOWED' => 'ΕπιτÏέπεται', + 'ALL_FILES' => 'Όλα τα αÏχεία', + 'ALL_FORUMS' => 'Όλες τις Δ. Συζητήσεις', + 'ALL_MESSAGES' => 'Όλα τα μηνÏματα', + 'ALL_POSTS' => 'Όλες τις δημοσιεÏσεις', + 'ALL_TIMES' => 'Όλοι οι χÏόνοι είναι %1$s', + 'ALL_TOPICS' => 'Όλα τα θέματα', + 'ALT_TEXT' => 'Εναλλακτικό κείμενο', + 'AND' => 'Και', + 'ARE_WATCHING_FORUM' => 'Έχετε επιλέξει να ενημεÏώνεστε για νέες δημοσιεÏσεις σε αυτή τη Δ. Συζήτηση.', + 'ARE_WATCHING_TOPIC' => 'Έχετε επιλέξει να ενημεÏώνεστε για νέες δημοσιεÏσεις σε αυτό το θέμα.', + 'ASCENDING' => 'ΑÏξουσα', + 'ATTACHMENTS' => 'Συνημμένα', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'Το αÏχείο εικόνας που Ï€Ïοσπαθήσατε να επισυνάψετε είναι άκυÏο.', + 'AUTHOR' => 'ΣυγγÏαφέας', + 'AUTH_NO_PROFILE_CREATED' => 'Η δημιουÏγία του Ï€Ïοφίλ μέλους ήταν ανεπιτυχής.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'ΆκυÏη καταχώÏηση στη βάση δεδομένων.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'ΆκυÏος Ï„Ïπος υπηÏεσίας που παÏέχεται στο χειÏιστή υπηÏεσίας OAuth.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'Η υπηÏεσία OAuth δεν δημιουÏγήθηκε', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_SERVICE_TWITTER' => 'Twitter', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'Το διακÏιτικό OAuth δεν αποθηκεÏτηκε.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'Το διακÏιτικό OAuth αποθηκεÏτηκε εσφαλμένα.', + 'AVATAR_DISALLOWED_CONTENT' => 'Η φόÏτωση αποÏÏίφθηκε επειδή το αÏχείο Ï€Ïος φόÏτωση Ï€ÏοσδιοÏίστηκε ως πιθανό διάνυσμα επίθεσης.', + 'AVATAR_DISALLOWED_EXTENSION' => 'Αυτό το αÏχείο δεν μποÏεί να εμφανιστεί επειδή η επέκταση %s δεν επιτÏέπεται.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Το συγκεκÏιμένο Î¬Î²Î±Ï„Î±Ï Î´ÎµÎ½ μποÏεί να φοÏτωθεί επειδή το απομακÏυσμένο στοιχείο φαίνεται να είναι άκυÏο ή αλλοιωμένο.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'Το φοÏτωμένο αÏχείο Î¬Î²Î±Ï„Î±Ï ÎµÎ¯Î½Î±Î¹ κενό.', + 'AVATAR_INVALID_FILENAME' => 'Το %s είναι ένα άκυÏο όνομα αÏχείου.', + 'AVATAR_NOT_UPLOADED' => 'Το Î¬Î²Î±Ï„Î±Ï Î´ÎµÎ½ μποÏεί να φοÏτωθεί.', + 'AVATAR_NO_TEMP_DIR' => 'Ο Ï€ÏοσωÏινός φάκελος δεν μποÏεί να βÏεθεί ή δεν είναι εγγÏάψιμος.', + 'AVATAR_NO_SIZE' => 'Το πλάτος ή το Ïψος του Î¬Î²Î±Ï„Î±Ï Î´ÎµÎ½ μποÏεί να καθοÏιστεί. ΠαÏακαλώ εισάγετέ το χειÏοκἰνητα.', + 'AVATAR_PARTIAL_UPLOAD' => 'Το συγκεκÏιμένο αÏχείο φοÏτώθηκε μόνο εν μέÏει.', + 'AVATAR_PHP_SIZE_NA' => 'Το μέγεθος αÏχείου Î¬Î²Î±Ï„Î±Ï ÎµÎ¯Î½Î±Î¹ Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿.
    Το μέγιστο επιτÏεπτό μέγεθος στο php.ini δεν μποÏεί να Ï€ÏοσδιοÏιστεί.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Το μέγεθος του αÏχείου Î¬Î²Î±Ï„Î±Ï ÎµÎ¯Î½Î±Î¹ πάÏα Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿. Το μέγιστο επιτÏεπτό μέγεθος αÏχείου φόÏτωσης είναι %1$d %2$s.
    ΠαÏακαλώ σημειώστε ότι αυτό έχει Ïυθμιστεί στο php.ini και δεν μποÏεί να παÏακαμφθεί', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'Το καθοÏισμένο Î¬Î²Î±Ï„Î±Ï Î´ÎµÎ½ ήταν δυνατόν να φοÏτωθεί επειδή εξαντλήθηκε το χÏονικό ÏŒÏιο του αιτήματος.', + 'AVATAR_PHP_UPLOAD_STOPPED' => 'Μια επέκταση PHP διέκοψε το ανέβασμα του αÏχείου.', + 'AVATAR_URL_INVALID' => 'Η διεÏθυνση συνδέσμου (URL) που καθοÏίσατε είναι άκυÏη.', + 'AVATAR_URL_NOT_FOUND' => 'Το συγκεκÏιμένο αÏχείο δεν μποÏεί να βÏεθεί.', + 'AVATAR_WRONG_FILESIZE' => 'Το μέγεθος του αÏχείου Î¬Î²Î±Ï„Î±Ï Ï€Ïέπει να κυμαίνεται Î¼ÎµÏ„Î±Î¾Ï 0 και %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'Το συγκεκÏιμένο Î¬Î²Î±Ï„Î±Ï ÎµÎ¯Î½Î±Î¹ %5$s πλάτος και %6$s Ïψος. Τα Î¬Î²Î±Ï„Î±Ï Ï€Ïέπει να είναι τουλάχιστον %1$s πλάτος και %2$s Ïψος, αλλά όχι μεγαλÏτεÏα από %3$s πλάτος και %4$s Ïψος.', + + 'BACK_TO_TOP' => 'ΚοÏυφή', + 'BACK_TO_PREV' => 'ΕπιστÏοφή στην Ï€ÏοηγοÏμενη σελίδα', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Μια απαγόÏευση έχει εκδοθεί για τη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου σας.', + 'BAN_TRIGGERED_BY_IP' => 'Μια απαγόÏευση έχει εκδοθεί για τη διεÏθυνση IP σας.', + 'BAN_TRIGGERED_BY_USER' => 'Μια απαγόÏευση έχει εκδοθεί για το όνομα μέλους σας.', + 'BBCODE_GUIDE' => 'Οδηγίες BBCode', + 'BCC' => 'Κοιν.', + 'BIRTHDAYS' => 'Γενέθλια', + 'BOARD_BAN_PERM' => 'Έχετε αποκλειστεί οÏιστικά από αυτό το σÏστημα συζητήσεων.

    ΠαÏακαλώ επικοινωνήστε με τον %2$sΔιαχειÏιστή του συστήματος συζητήσεων%3$s για πεÏισσότεÏες πληÏοφοÏίες.', + 'BOARD_BAN_REASON' => 'Λόγος που δόθηκε για αποκλεισμό: %s', + 'BOARD_BAN_TIME' => 'Έχετε αποκλειστεί από αυτό το σÏστημα συζητήσεων μέχÏι %1$s.

    ΠαÏακαλώ επικοινωνήστε με τον %2$sΔιαχειÏιστή του συστήματος συζητήσεων%3$s για πεÏισσότεÏες πληÏοφοÏίες.', + 'BOARD_DISABLE' => 'Συγγνώμη αλλά το σÏστημα συζητήσεων είναι Ï€Ïος το παÏόν μη διαθέσιμο.', + 'BOARD_DISABLED' => 'Το σÏστημα συζητήσεων είναι Ï€Ïος το παÏόν εκτός λειτουÏγίας.', + 'BOARD_UNAVAILABLE' => 'Συγγνώμη αλλά το σÏστημα συζητήσεων είναι Ï€ÏοσωÏινά μη διαθέσιμο, παÏακαλώ Ï€Ïοσπαθήστε πάλι σε μεÏικά λεπτά.', + 'BROWSING_FORUM' => 'Μέλη σε αυτή τη Δ. Συζήτηση: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Μέλη σε αυτήν τη Δ. Συζήτηση: %2$s και %1$d επισκέπτης', + 2 => 'Μέλη σε αυτήν τη Δ. Συζήτηση: %2$s και %1$d επισκέπτες', + ), + 'BUTTON_EDIT' => 'ΕπεξεÏγασία', + 'BUTTON_FORUM_LOCKED' => 'Κλειδωμένο', + 'BUTTON_NEW_TOPIC' => 'Îέο Θέμα', + 'BUTTON_PM' => 'ΠΜ', + 'BUTTON_PM_FORWARD' => 'ΠÏοώθηση', + 'BUTTON_PM_NEW' => 'Îέο ΠΜ', + 'BUTTON_PM_REPLY' => 'Αποστολή απάντησης', + 'BUTTON_PM_REPLY_ALL' => 'Απάντηση Όλα', + 'BUTTON_POST_REPLY' => 'Απάντηση', + 'BUTTON_QUOTE' => 'ΠαÏάθεση', + 'BUTTON_TOPIC_LOCKED' => 'Κλειδωμένο', + 'BYTES' => 'Ψηφιολέξεις', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'ΑκÏÏωση', + 'CHANGE' => 'Αλλαγή', + 'CHANGE_FONT_SIZE' => 'Αλλαγή γÏαμματοσειÏάς', + 'CHANGING_PREFERENCES' => 'Αλλάζει Ï€Ïοτιμήσεις Δ. Συζήτησης', + 'CHANGING_PROFILE' => 'Αλλάζει Ïυθμίσεις Ï€Ïοφίλ', + 'CHARACTERS' => array( + 1 => '%d χαÏακτήÏας', + 2 => '%d χαÏακτήÏες', + ), + 'COLLAPSE_VIEW' => 'Συμπτυγμένη Ï€Ïοβολή', + 'CLOSE_WINDOW' => 'Κλείσιμο παÏαθÏÏου', + 'COLOUR_SWATCH' => 'Πίνακας χÏωμάτων', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Comma used to join lists into a single string, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Επιβεβαίωση', + 'CONFIRM_CODE' => 'Κώδικας επιβεβαίωσης', + 'CONFIRM_CODE_EXPLAIN' => 'ΠληκτÏολογήστε τον κώδικα ακÏιβώς όπως εμφανίζεται. Όλα τα γÏάμματα είναι πεζά ή κεφαλαία.', + 'CONFIRM_CODE_WRONG' => 'Ο κώδικας επιβεβαίωσης που εισάγατε ήταν λανθασμένος.', + 'CONFIRM_OPERATION' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε να διενεÏγήσετε αυτή τη λειτουÏγία;', + 'CONFIRM_AVATAR_DELETE' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε να διαγÏάψετε αυτό το άβαταÏ;', + 'CONGRATULATIONS' => 'ΣυγχαÏητήÏια', + 'CONNECTION_FAILED' => 'Η σÏνδεση απέτυχε.', + 'CONNECTION_SUCCESS' => 'Η σÏνδεση ήταν επιτυχής!', + 'CONTACT' => 'Επικοινωνία', + 'CONTACT_USER' => 'Επικοινωνία %s', + 'CONTACT_US' => 'Επικοινωνήστε μαζί μας', + 'COOKIE_CONSENT_INFO' => 'Μάθετε πεÏισσότεÏα', + 'COOKIE_CONSENT_MSG' => 'Αυτή η ιστοσελίδα χÏησιμοποιεί cookies για να επιβεβαιώσει ότι θα έχετε την καλÏτεÏη δυνατή εμπειÏία χÏήσης.', + 'COOKIE_CONSENT_OK' => 'Το κατάλαβα!', + 'COOKIE_CONSENT_HREF' => 'http://cookiesandyou.com', + 'COOKIES_DELETED' => 'Όλα τα cookies του συστήματος συζητήσεων διαγÏάφηκαν με επιτυχία.', + 'CURRENT_TIME' => 'ΤώÏα είναι %s', + + 'DAY' => 'ΗμέÏα', + 'DAYS' => 'ΗμέÏες', + 'DELETE' => 'ΔιαγÏαφή', + 'DELETE_ALL' => 'ΔιαγÏαφή όλων', + 'DELETE_COOKIES' => 'ΔιαγÏαφή όλων των cookies Δ. Συζήτησης', + 'DELETE_MARKED' => 'ΔιαγÏαφή σημειωμένων', + 'DELETE_POST' => 'ΔιαγÏαφή δημοσίευσης', + 'DELIMITER' => 'ΟÏιοθέτης', + 'DESCENDING' => 'Φθίνουσα ', + 'DISABLED' => 'ΑπενεÏγοποιημένο', + 'DISPLAY' => 'Εμφάνιση', + 'DISPLAY_GUESTS' => 'Εμφάνιση επισκεπτών', + 'DISPLAY_MESSAGES' => 'Τελευταία μηνÏματα Ï€Ïιν από', + 'DISPLAY_POSTS' => 'Τελευταίες δημοσιεÏσεις Ï€Ïιν από', + 'DISPLAY_TOPICS' => 'Τελευταία θέματα Ï€Ïιν από', + 'DOWNLOADED' => 'ΜεταφοÏτώθηκε', + 'DOWNLOADING_FILE' => 'ΜεταφόÏτωση αÏχείου', + 'DOWNLOAD_COUNTS' => array( + 0 => 'Καμία μεταφόÏτωση ακόμη', + 1 => 'ΜεταφοÏτώθηκε %d φοÏά', + 2 => 'ΜεταφοÏτώθηκε %d φοÏές', + ), + + 'EDIT_POST' => 'ΕπεξεÏγασία δημοσίευσης', + 'ELLIPSIS' => '…', + 'EMAIL' => 'ΗλεκτÏονικό ταχυδÏομείο',// Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου', + 'EMAIL_INVALID_EMAIL' => 'Η διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου που εισάγατε είναι άκυÏη.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'ΥπάÏχει Ï€Ïόβλημα κατά την αποστολή ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου στην ΓÏαμμή %1$s. ΑπόκÏιση: %2$s.', + 'EMPTY_SUBJECT' => 'ΠÏέπει να διευκÏινίσετε ένα θέμα κατά τη δημοσίευση ενός νέου θέματος.', + 'EMPTY_MESSAGE_SUBJECT' => 'ΠÏέπει να διευκÏινίσετε ένα θέμα κατά τη δημιουÏγία ενός νέου μηνÏματος.', + 'ENABLED' => 'ΕνεÏγοποιημένο', + 'ENCLOSURE' => 'Συνημμένο', + 'ENTER_USERNAME' => 'Εισάγετε όνομα μέλους', + 'ERR_CHANGING_DIRECTORY' => 'Ο κατάλογος δεν μποÏεί να αλλάξει.', + 'ERR_CONNECTING_SERVER' => 'Σφάλμα κατά τη σÏνδεση με τον διακομιστή.', + 'ERR_JAB_AUTH' => 'Δεν έχετε εξουσιοδότηση για τον διακομιστή Jabber.', + 'ERR_JAB_CONNECT' => 'Δεν ήταν δυνατή η σÏνδεση με τον διακομιστή Jabber', + 'ERR_UNABLE_TO_LOGIN' => 'Το καθοÏισμένο όνομα χÏήστη ή ο κωδικός Ï€Ïόσβασης είναι λάθος.', + 'ERR_UNWATCHING' => 'Ένα σφάλμα Ï€Ïοέκυψε κατά την Ï€Ïοσπάθεια διακοπής συνδÏομής.', + 'ERR_WATCHING' => 'Ένα σφάλμα Ï€Ïοέκυψε κατά την Ï€Ïοσπάθεια έναÏξης συνδÏομής.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'Η καθοÏισμένη διαδÏομή του φακέλου phpBB φαίνεται να είναι άκυÏη.', + 'ERROR' => 'Λάθος', + 'EXPAND_VIEW' => 'Αναπτυγμένη Ï€Ïοβολή', + 'EXTENSION' => 'Επέκταση', + 'EXTENSION_DISABLED' => 'Η επέκταση %s δεν είναι ενεÏγοποιημένη.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'Η επέκταση %s έχει απενεÏγοποιηθεί και δεν μποÏεί πλέον να εμφανιστεί.', + 'EXTENSION_DOES_NOT_EXIST' => 'Η επέκταση %s δεν υπάÏχει.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'Συχνές εÏωτήσεις', + 'FAQ_EXPLAIN' => 'Συνήθεις εÏωτήσεις', + 'FEATURE_NOT_AVAILABLE' => 'Η αιτοÏμενη λειτουÏγία δεν είναι διαθέσιμη σε αυτό το σÏστημα συζητήσεων.', + 'FILENAME' => 'Όνομα αÏχείου', + 'FILESIZE' => 'Μέγεθος αÏχείου', + 'FILEDATE' => 'ΗμεÏομηνία αÏχείου', + 'FILE_COMMENT' => 'Σχόλιο αÏχείου', + 'FILE_CONTENT_ERR' => 'Δεν ήταν δυνατή η ανάγνωση των πεÏιεχομένων του αÏχείου: %s', + 'FILE_JSON_DECODE_ERR' => 'Απέτυχε η αποκωδικοποίηση του αÏχείου json: %s', + 'FILE_NOT_FOUND' => 'Το αÏχείο που ζητήθηκε δεν μποÏεί να βÏεθεί: %s', + 'FIND_USERNAME' => 'ΕÏÏεση μέλους', + 'FOLDER' => 'Φάκελος', + 'FORGOT_PASS' => 'Ξέχασα τον κωδικό μου', + 'FORM_INVALID' => 'Η υποβληθείσα μοÏφή ήταν άκυÏη. ΠÏοσπαθήστε πάλι.', + 'FORUM' => 'Δ. Συζήτηση', + 'FORUMS' => 'Δ. Συζητήσεις', + 'FORUMS_MARKED' => 'Οι Δ. Συζητήσεις έχουν επισημανθεί ως αναγνωσμένες.', + 'FORUM_CAT' => 'ΚατηγοÏία Δ. Συζήτησης', + 'FORUM_INDEX' => 'ΕυÏετήÏιο Δ. Συζήτησης', + 'FORUM_LINK' => 'ΣÏνδεσμος Δ. Συζήτησης', + 'FORUM_LOCATION' => 'Τοποθεσία Δ. Συζήτησης', + 'FORUM_LOCKED' => 'Κλειδωμένη Δ. Συζήτηση', + 'FORUM_RULES' => 'Κανόνες Δ. Συζήτησης', + 'FORUM_RULES_LINK' => 'ΠαÏακαλώ πατήστε εδώ για να δείτε τους κανόνες της Δ. Συζήτησης', + 'FROM' => 'από', + 'FSOCK_DISABLED' => 'Αυτή η λειτουÏγία δεν μποÏεί να ολοκληÏωθεί επειδή η λειτουÏγία fsockopen έχει απενεÏγοποιηθεί ή ο διακομιστής στον οποίο υποβλήθηκε το εÏώτημα δεν μποÏεί να βÏεθεί.', + 'FSOCK_TIMEOUT' => 'Μια υπέÏβαση χÏÎ¿Î½Î¹ÎºÎ¿Ï Î¿Ïίου Ï€Ïοέκυψε κατά την ανάγνωση από τη Ïοή του δικτÏου', + + 'FTP_FSOCK_HOST' => 'Κόμβος FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Ο διακομιστής FTP που χÏησιμοποιείται για να συνδεθείτε στην ιστοσελίδα σας.', + 'FTP_FSOCK_PASSWORD' => 'Κωδικός FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Ο κωδικός Ï€Ïόσβασης για το FTP όνομα χÏήστη σας.', + 'FTP_FSOCK_PORT' => 'ΘÏÏα FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Η θÏÏα που χÏησιμοποιείται για να συνδεθείτε στον διακομιστή σας.', + 'FTP_FSOCK_ROOT_PATH' => 'ΔιαδÏομή του phpBB', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Η διαδÏομή του ÏÎ¹Î¶Î¹ÎºÎ¿Ï Ï†Î±ÎºÎ­Î»Î¿Ï… phpBB του συστήματος συζητήσεών σας.', + 'FTP_FSOCK_TIMEOUT' => 'Λήξη χÏόνου αναμονής FTP', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Το χÏονικό διάστημα, σε δευτεÏόλεπτα, που το σÏστημα θα πεÏιμένει μια απάντηση από τον διακομιστή σας.', + 'FTP_FSOCK_USERNAME' => 'Όνομα χÏήστη FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Το όνομα χÏήστη FTP που χÏησιμοποιείται για να συνδεθείτε στον διακομιστή σας.', + + 'FTP_HOST' => 'Κόμβος FTP', + 'FTP_HOST_EXPLAIN' => 'Ο διακομιστής FTP που χÏησιμοποιείται για να συνδεθείτε στην ιστοσελίδα σας.', + 'FTP_PASSWORD' => 'Κωδικός FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Ο κωδικός Ï€Ïόσβασης για το FTP όνομα χÏήστη σας.', + 'FTP_PORT' => 'θÏÏα FTP', + 'FTP_PORT_EXPLAIN' => 'Η θÏÏα που χÏησιμοποιείται για να συνδεθείτε στον διακομιστή σας.', + 'FTP_ROOT_PATH' => 'ΔιαδÏομή του phpBB', + 'FTP_ROOT_PATH_EXPLAIN' => 'Η διαδÏομή του ÏÎ¹Î¶Î¹ÎºÎ¿Ï Ï†Î±ÎºÎ­Î»Î¿Ï… phpBB του συστήματος συζητήσεων σας.', + 'FTP_TIMEOUT' => 'Λήξη χÏόνου αναμονής FTP', + 'FTP_TIMEOUT_EXPLAIN' => 'Το χÏονικό διάστημα, σε δευτεÏόλεπτα, που το σÏστημα θα πεÏιμένει μια απάντηση από τον διακομιστή σας.', + 'FTP_USERNAME' => 'Όνομα χÏήστη FTP', + 'FTP_USERNAME_EXPLAIN' => 'Το όνομα χÏήστη που χÏησιμοποιείται για να συνδεθείτε στον διακομιστή σας.', + + 'GENERAL_ERROR' => 'Γενικό σφάλμα', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GO' => 'Μετάβαση', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Μετάβαση στην Ï€Ïώτη δημοσίευση', + 'GOTO_LAST_POST' => 'Μετάβαση στην τελευταία δημοσίευση', + 'GOTO_PAGE' => 'Μετάβαση στη σελίδα', + 'GROUP' => 'Ομάδα', + 'GROUPS' => 'Ομάδες', + 'GROUP_ERR_TYPE' => 'ΠÏοσδιοÏίστηκε ένας ακατάλληλος Ï„Ïπος ομάδας.', + 'GROUP_ERR_USERNAME' => 'Δεν έχει Ï€ÏοσδιοÏιστεί κανένα όνομα ομάδας.', + 'GROUP_ERR_USER_LONG' => 'Ονόματα ομάδας δεν μποÏοÏν να υπεÏβαίνουν το μήκος 60 χαÏακτήÏων. Το καθοÏισμένο όνομα ομάδας είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿.', + 'GUEST' => 'Επισκέπτης', + 'GUEST_USERS_ONLINE' => array( + 1 => 'ΥπάÏχει %d επισκέπτης σε σÏνδεση', + 2 => 'ΥπάÏχουν %d επισκέπτες σε σÏνδεση', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d επισκέπτης', + 2 => '%d επισκέπτες', + ), + 'G_ADMINISTRATORS' => 'ΔιαχειÏιστές', + 'G_BOTS' => 'Bots', + 'G_GUESTS' => 'Επισκέπτες', + 'G_REGISTERED' => 'ΕγγεγÏαμμένα μέλη ', + 'G_REGISTERED_COPPA' => 'ΕγγεγÏαμμένα μέλη COPPA', + 'G_GLOBAL_MODERATORS' => 'Καθολικοί συντονιστές', + 'G_NEWLY_REGISTERED' => 'ΠÏόσφατα εγγεγÏαμμένα μέλη', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d μέλος με απόκÏυψη', + 2 => '%d μέλη με απόκÏυψη', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d με απόκÏυψη', + 2 => '%d με απόκÏυψη', + ), + 'HIDE_GUESTS' => 'ΑπόκÏυψη επισκεπτών', + 'HIDE_ME' => 'ΑπόκÏυψη των στοιχείων μου κατά τη διάÏκεια της σÏνδεσης', + 'HOURS' => 'ÎÏες', + 'HOME' => 'ΑÏχική σελίδα', + + 'ICQ' => 'ICQ', + 'IF' => 'Εάν', + 'IMAGE' => 'Εικόνα', + 'IMAGE_FILETYPE_INVALID' => 'Ο Ï„Ïπος αÏχείου εικόνας %d για το mimetype %s δεν υποστηÏίζεται.', + 'IMAGE_FILETYPE_MISMATCH' => 'ΑνακÏιβής Ï„Ïπος αÏχείου: αναμενόμενη επέκταση %1$s όμως δίνετε η επέκταση %2$s.', + 'IN' => 'σε', + 'INACTIVE' => 'ΑνενεÏγό', + 'INDEX' => 'ΕυÏετήÏιο σελίδας', + 'INFORMATION' => 'ΠληÏοφοÏίες', + 'INSECURE_REDIRECT' => 'ΠÏοσπάθεια ανακατεÏθυνσης σε δυνητικά ανασφαλή διεÏθυνση URL.', + 'INTERESTS' => 'ΕνδιαφέÏοντα', + 'INVALID_DIGEST_CHALLENGE' => 'ΆκυÏη Ï€Ïόκληση αφομοιώσεων.', + 'INVALID_EMAIL_LOG' => '%s πιθανόν μία άκυÏη ηλεκτÏονική διεÏθυνση;', + 'INVALID_FEED_ATTACHMENTS' => 'Η επιλεγμένη Ï„Ïοφοδότηση Ï€Ïοσπάθησε να αντλήσει συνημμένα με μη έγκυÏες παÏαμέτÏους.', + 'INVALID_PLURAL_RULE' => 'Ο επιλεγμένος πολλαπλός κανόνας είναι άκυÏος. Οι έγκυÏες τιμές είναι ακέÏαιοι αÏιθμοί Î¼ÎµÏ„Î±Î¾Ï 0 και 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'Η διεÏθυνση IP σας %1$s έχει αποκλειστεί επειδή βÏίσκεται στη μαÏÏη λίστα. Για πεÏισσότεÏες λεπτομέÏειες δείτε %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'ΕγγÏαφή', + 'JUMP_PAGE' => 'Εισάγετε τον αÏιθμό σελίδας στην οποία θέλετε να μεταβείτε.', + 'JUMP_TO' => 'Μετάβαση σε', + 'JUMP_TO_PAGE' => 'Μετάβαση στη σελίδα', + 'JUMP_TO_PAGE_CLICK' => 'Πατήστε για μετάβαση στη σελίδα…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Τελευταία δημοσίευση', + 'LAST_UPDATED' => 'Τελευταία ενημέÏωση', + 'LAST_VISIT' => 'Τελευταία επίσκεψη', + 'LDAP_NO_LDAP_EXTENSION' => 'Η επέκταση LDAP δεν είναι διαθέσιμη.', + 'LDAP_NO_SERVER_CONNECTION' => 'Δεν ήταν δυνατή η σÏνδεση με τον διακομιστή LDAP.', + 'LDAP_SEARCH_FAILED' => 'Ένα σφάλμα Ï€Ïοέκυψε κατά την αναζήτηση στον κατάλογο LDAP.', + 'LEGEND' => 'Υπόμνημα', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Ζωντανές αναζητήσεις δεν επιτÏέπονται.', + 'LOADING' => 'ΦόÏτωση', + 'LOCATION' => 'Τοποθεσία', + 'LOCK_POST' => 'Κλείδωμα δημοσίευσης', + 'LOCK_POST_EXPLAIN' => 'ΑποτÏοπή επεξεÏγασίας', + 'LOCK_TOPIC' => 'Κλείδωμα θέματος', + 'LOGIN' => 'ΣÏνδεση', + 'LOGIN_CHECK_PM' => 'Συνδεθείτε, για να ελέγξετε την αλληλογÏαφία σας.', + 'LOGIN_CONFIRMATION' => 'Επιβεβαίωση σÏνδεσης', + 'LOGIN_CONFIRM_EXPLAIN' => 'Για την αποτÏοπή επιθέσεων Ï‰Î¼Î¿Ï ÎµÎ¾Î±Î½Î±Î³ÎºÎ±ÏƒÎ¼Î¿Ï Ï€Ïος τον λογαÏιασμό σας το σÏστημα συζητήσεων απαιτεί από εσάς να εισάγετε ένα κωδικό επιβεβαίωσης μετά από έναν αÏιθμό αποτυχημένων Ï€Ïοσπαθειών σÏνδεσης. Ο κώδικας εμφανίζεται στην εικόνα που θα Ï€Ïέπει να βλέπετε παÏακάτω. Αν είστε άτομα με Ï€Ïοβλήματα ÏŒÏασης ή δεν μποÏείτε να διαβάσετε διαφοÏετικά αυτό τον κώδικα, παÏακαλώ επικοινωνήστε με τον %sΔιαχειÏιστή της Δ. Συζήτησης%s.', // unused + 'LOGIN_ERROR_ATTEMPTS' => 'Έχετε υπεÏβεί το μέγιστο αÏιθμό Ï€Ïοσπαθειών σÏνδεσης. Εκτός από το όνομα μέλους και τον κωδικό Ï€Ïόσβασής σας Ï€Ïέπει επίσης επιλÏσετε το CAPTCHA παÏακάτω.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Δεν έχετε πιστοποιηθεί από τον Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'Μιας ανÏπαÏκτης OAuth υπηÏεσίας έγινε αίτημα.', + 'LOGIN_ERROR_PASSWORD' => 'Έχετε καθοÏίσει έναν άκυÏο κωδικό Ï€Ïόσβασης. ΠαÏακαλώ ελέγξτε τον κωδικό Ï€Ïόσβασης και Ï€Ïοσπαθήστε εκ νέου. Εάν συνεχίσετε να έχετε Ï€Ïοβλήματα επικοινωνήστε με τον %sΔιαχειÏιστή της Δ. Συζήτησης%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Δεν ήταν δυνατή η μετατÏοπή του ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης σας κατά την ενημέÏωση του Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… συστήματος συζητήσεων. ΠαÏακαλώ %sζητήστε ένα νέο κωδικό%s. Εάν συνεχίσετε να έχετε Ï€Ïοβλήματα επικοινωνήστε με τον %sΔιαχειÏιστή του συστήματος συζητήσεων%s.', + 'LOGIN_ERROR_USERNAME' => 'Έχετε καθοÏίσει ένα λανθασμένο όνομα μέλους. ΠαÏακαλώ ελέγξτε το όνομα μέλους και Ï€Ïοσπαθήστε εκ νέου. Εάν συνεχίσετε να έχετε Ï€Ïοβλήματα επικοινωνήστε με τον %sΔιαχειÏιστή της Δ. Συζήτησης%s.', + 'LOGIN_FORUM' => 'Για να Ï€Ïοβάλετε ή να δημοσιεÏσετε σε αυτή τη Δ. Συζήτηση Ï€Ïέπει να εισάγετε τον κωδικό της.', + 'LOGIN_INFO' => 'ΠÏοκειμένου να συνδεθείτε Ï€Ïέπει να είστε εγγεγÏαμμένο μέλος. Η εγγÏαφή γίνεται σε λίγα μόνο λεπτά, αλλά σας παÏέχει αυξημένες δυνατότητες. Οι διαχειÏιστές του συστήματος συζητήσεων μποÏεί επίσης να χοÏηγοÏν επιπÏόσθετα δικαιώματα στα εγγεγÏαμμένα μέλη. ΠÏιν συνδεθείτε, σιγουÏευτείτε ότι γνωÏίζετε τους ÏŒÏους χÏήσης και τις σχετικές πολιτικές. ΠαÏακαλώ να διαβάσετε τους κανόνες κάθε Δ. Συζήτησης κατά την πλοήγησή σας σε αυτό το σÏστημα συζητήσεων.', + 'LOGIN_VIEWFORUM' => 'Το σÏστημα συζητήσεων απαιτεί ότι Ï€Ïέπει να είστε εγγεγÏαμμένο μέλος και να έχετε συνδεθεί για να δείτε τις δημοσιεÏσεις σε αυτή τη Δ. Συζήτηση', + 'LOGIN_EXPLAIN_EDIT' => 'ΠÏοκειμένου να κάνετε επεξεÏγασία δημοσιεÏσεων σε αυτή τη Δ. Συζήτηση Ï€Ïέπει να είστε εγγεγÏαμμένο μέλος και να έχετε συνδεθεί.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'ΠÏοκειμένου να δείτε τη λίστα «ποιος είναι σε σÏνδεση» Ï€Ïέπει να είστε εγγεγÏαμμένο μέλος και να έχετε συνδεθεί.', + 'LOGIN_REQUIRED' => 'ΠÏέπει να συνδεθείτε για να κάνετε αυτή την ενέÏγεια.', + 'LOGOUT' => 'ΑποσÏνδεση', + 'LOGOUT_USER' => 'ΑποσÏνδεση [ %s ]', + 'LOG_ME_IN' => 'Îα με θυμάσαι', + + 'MAIN' => 'ΚÏÏια', + 'MARK' => 'Επισήμανση', + 'MARK_ALL' => 'Επισήμανση όλων', + 'MARK_ALL_READ' => 'Επισήμανση όλων ως αναγνωσμένες', + 'MARK_FORUMS_READ' => 'Επισήμανση Δ. Συζητήσεων ως αναγνωσμένες', + 'MARK_READ' => 'Επισήμανση ως αναγνωσμένα', + 'MARK_SUBFORUMS_READ' => 'Επισήμανση υπο-συζητήσεων ως αναγνωσμένες', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Πίνακας Ελέγχου Συντονιστών', + 'MCP_SHORT' => 'ΠΕΣ', + 'MEMBERLIST' => 'Μέλη', + 'MEMBERLIST_EXPLAIN' => 'ΠÏοβολή πλήÏους λίστας μελών', + 'MERGE' => 'Συγχώνευση', + 'MERGE_POSTS' => 'Μετακίνηση δημοσιεÏσεων', + 'MERGE_TOPIC' => 'Συγχώνευση θέματος', + 'MESSAGE' => 'Μήνυμα', + 'MESSAGES' => 'ΜηνÏματα', + 'MESSAGES_COUNT' => array( + 1 => '%d μήνυμα', + 2 => '%d μηνÏματα', + ), + 'MESSAGE_BODY' => 'Κείμενο μηνÏματος', + 'MINUTES' => 'Λεπτά', + 'MODERATE' => 'Συντονίστε', + 'MODERATOR' => 'Συντονιστής', + 'MODERATORS' => 'Συντονιστές', + 'MODULE_NOT_ACCESS' => 'Η μονάδα δεν είναι Ï€Ïοσβάσιμη', + 'MODULE_NOT_FIND' => 'Δεν μποÏεί να βÏεθεί η μονάδα %s', + 'MODULE_FILE_INCORRECT_CLASS' => 'Το αÏχείο μονάδας %s δεν πεÏιέχει σωστή κατηγοÏία [%s]', + 'MONTH' => 'Μήνας', + 'MOVE' => 'Μετακίνηση', + + 'NA' => 'Δ/Î¥', + 'NEWEST_USER' => 'Το νεότεÏο μέλος μας %s', + 'NEW_MESSAGE' => 'Îέο μήνυμα', + 'NEW_MESSAGES' => 'Îέα μηνÏματα', + 'NEW_POST' => 'Îέα δημοσίευση', // Not used anymore + 'NEW_POSTS' => 'Îέες δημοσιεÏσεις', // Not used anymore + 'NEXT' => 'Επόμενη', // Used in pagination + 'NEXT_STEP' => 'Επόμενο βήμα', + 'NEVER' => 'Ποτέ', + 'NO' => 'Όχι', + 'NO_NOTIFICATIONS' => 'Δεν έχετε ειδοποιήσεις', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Δεν σας επιτÏέπεται να διαχειÏιστείτε αυτή την ομάδα.', + 'NOT_AUTHORISED' => 'Δεν είστε εξουσιοδοτημένοι για Ï€Ïόσβαση σε αυτή την πεÏιοχή.', + 'NOT_WATCHING_FORUM' => 'Δεν είστε πλέον συνδÏομητής για ενημεÏώσεις σε αυτή τη Δ. Συζήτηση.', + 'NOT_WATCHING_TOPIC' => 'Δεν είστε πλέον συνδÏομητής σε αυτό το θέμα.', + 'NOTIFICATIONS' => 'Ειδοποιήσεις', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Απάντηση από %1$s σε θέμα σελιδοδείκτη:', + ), + 'NOTIFICATION_FORUM' => 'Δ. Συζήτηση: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Αίτημα ομάδας από %1$s για ένταξη στην ομάδα %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'ΕγκÏίθηκε το αίτημα ομάδας για ένταξη στην ομάδα %1$s.', + 'NOTIFICATION_METHOD_INVALID' => 'Η μέθοδος "%s" δεν ανταποκÏίνεται σε έγκυÏη μέθοδο ειδοποίησης.', + 'NOTIFICATION_PM' => 'ΠÏοσωπικό μήνυμα από %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Απάντηση από %1$s στο θέμα:', + ), + 'NOTIFICATION_POST_APPROVED' => 'ΕγκÏίθηκε δημοσίευση:', + 'NOTIFICATION_POST_DISAPPROVED' => 'ΑποÏÏίφθηκε δημοσίευση:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Αίτημα έγκÏισης δημοσίευσης από %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'ΠαÏάθεση από %1$s σε:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Λόγος: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'ΑναφοÏά Ï€ÏÎ¿ÏƒÏ‰Ï€Î¹ÎºÎ¿Ï Î¼Î·Î½Ïματος από %1$s:', + 'NOTIFICATION_REPORT_POST' => 'ΑναφοÏά δημοσίευσης από %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Κλείσιμο αναφοÏά από %1$s για:', + 'NOTIFICATION_TOPIC' => 'Îέο θέμα από %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'ΈγκÏιση θέματος:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'ΑπόÏÏιψη θέματος:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Αίτημα έγκÏισης θέματος από %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'Ο Ï„Ïπος ειδοποίησης "%s" λείπει από το σÏστημα αÏχείων.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Απαιτείται ενεÏγοποίηση για απενεÏγοποιημένο ή Ï€Ïόσφατο εγγεγÏαμμένο μέλος: “%1$sâ€', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'άλλα', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d άλλα', + ), + 'NOTIFY_ADMIN' => 'ΠαÏακαλώ ενημεÏώστε τον ΔιαχειÏιστή του συστήματος συζητήσεων ή τον webmaster.', + 'NOTIFY_ADMIN_EMAIL' => 'ΠαÏακαλώ ενημεÏώστε τον ΔιαχειÏιστή του συστήματος συζητήσεων ή τον webmaster: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Δεν σας επιτÏέπεται η Ï€Ïόσβαση σε αυτό το αÏχείο.', + 'NO_ACTION' => 'Δεν καθοÏίστηκε ενέÏγεια.', + 'NO_ADMINISTRATORS' => 'Δεν υπάÏχουν διαχειÏιστές.', + 'NO_AUTH_ADMIN' => 'Η Ï€Ïόσβαση στον Πίνακα Ελέγχου ΔιαχειÏιστή δεν σας επιτÏέπεται διότι δεν έχετε τα δικαιώματα ενός διαχειÏιστή.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Δεν μποÏείτε να επαναπιστοποιηθείτε ως ένα διαφοÏετικός μέλος.', + 'NO_AUTH_OPERATION' => 'Δεν έχετε τα απαÏαίτητα δικαιώματα για να ολοκληÏώσετε αυτή τη λειτουÏγία.', + 'NO_AVATARS' => 'Δεν υπάÏχουν διαθέσιμα Î¬Î²Î±Ï„Î±Ï Ï€Ïος το παÏόν', + 'NO_CONNECT_TO_SMTP_HOST' => 'Δεν ήταν δυνατή η σÏνδεση με διακομιστή smtp : %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Κανένα μέλος δεν έχει γενέθλια σήμεÏα', + 'NO_EMAIL_MESSAGE' => 'Το μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείο ήταν κενό.', + 'NO_EMAIL_RESPONSE_CODE' => 'Δεν ήταν δυνατόν να ληφθοÏν οι κώδικες απόκÏισης του διακομιστή ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου.', + 'NO_EMAIL_SUBJECT' => 'Δεν έχετε καθοÏίσει κανένα θέμα στο μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου.', + 'NO_FORUM' => 'Η Δ. Συζήτηση που επιλέξατε δεν υπάÏχει.', + 'NO_FORUMS' => 'Αυτό το σÏστημα συζητήσεων δεν έχει Δ. Συζητήσεις.', + 'NO_GROUP' => 'Η ομάδα μελών που ζητήθηκε δεν υπάÏχει.', + 'NO_GROUP_MEMBERS' => 'Αυτή η ομάδα δεν έχει μέλη Ï€Ïος το παÏόν.', + 'NO_IPS_DEFINED' => 'Δεν Ï€ÏοσδιοÏίστηκαν διευθÏνσεις IP ή ονόματα εξυπηÏετητών', + 'NO_MEMBERS' => 'Δεν βÏέθηκαν μέλη με αυτά τα κÏιτήÏια.', + 'NO_MESSAGES' => 'Δεν υπάÏχουν μηνÏματα', + 'NO_MODE' => 'Κανένας Ï„Ïόπος δεν έχει καθοÏιστεί.', + 'NO_MODERATORS' => 'Δεν υπάÏχουν συντονιστές.', + 'NO_NEW_MESSAGES' => 'Δεν υπάÏχουν νέα μηνÏματα', + 'NO_NEW_POSTS' => 'Δεν υπάÏχουν νέες δημοσιεÏσεις', // Not used anymore + 'NO_ONLINE_USERS' => 'Δεν υπάÏχουν εγγεγÏαμμένα μέλη', + 'NO_POSTS' => 'Δεν υπάÏχουν δημοσιεÏσεις', + 'NO_POSTS_TIME_FRAME' => 'Δεν υπάÏχουν νέες δημοσιεÏσεις μέσα σε αυτό το θέμα για το επιλεγμένο χÏονικό διάστημα.', + 'NO_FEED_ENABLED' => 'Οι Ï„Ïοφοδοσίες δεν είναι διαθέσιμες σε αυτό το σÏστημα συζητήσεων.', + 'NO_FEED' => 'Η ζητοÏμενη Ï„Ïοφοδοσία δεν είναι διαθέσιμη.', + 'NO_STYLE_DATA' => 'Δεν ήταν δυνατή η λήψη δεδομένων στυλ', + 'NO_SUBJECT' => 'Δεν καθοÏίστηκε κανένα θέμα', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'Το συγκεκÏιμένο σÏστημα υποστήÏιξης αναζήτησης δεν υπάÏχει.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Δεν υπάÏχουν υποστηÏιζόμενοι μέθοδοι πιστοποίησης.', + 'NO_TOPIC' => 'Το θέμα που ζητήθηκε δεν υπάÏχει.', + 'NO_TOPIC_FORUM' => 'Το θέμα ή η Δ. Συζήτηση δεν υπάÏχει πλέον.', + 'NO_TOPICS' => 'Δεν υπάÏχουν θέματα ή δημοσιεÏσεις σε αυτή τη Δ. Συζήτηση.', + 'NO_TOPICS_TIME_FRAME' => 'Δεν υπάÏχουν θέματα μέσα σε αυτή τη Δ. Συζήτηση για το επιλεγμένο χÏονικό διάστημα.', + 'NO_UNREAD_POSTS' => 'Δεν υπάÏχουν μη αναγνωσμένες δημοσιεÏσεις', + 'NO_UPLOAD_FORM_FOUND' => 'Η αποστολή του αÏχείου ξεκίνησε αλλά βÏέθηκε μη έγκυÏη φόÏμα αποστολής αÏχείου.', + 'NO_USER' => 'Το μέλος που ζητήθηκε δεν υπάÏχει.', + 'NO_USERS' => 'Τα μέλη που ζητήθηκαν δεν υπάÏχουν.', + 'NO_USER_SPECIFIED' => 'Δεν Ï€ÏοσδιοÏίστηκε όνομα μέλους.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d συνημμένο', + 2 => '%d συνημμένα', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Καμία δημοσίευση σε αναμονή', // 0 + 1 => '1 δημοσίευση σε αναμονή', // 1 + 2 => '%d δημοσιεÏσεις σε αναμονή', // 2+ + ), + + 'OCCUPATION' => 'Επάγγελμα', + 'OFFLINE' => 'ΧωÏίς σÏνδεση', + 'ONLINE' => 'Σε σÏνδεση', + 'ONLINE_BUDDIES' => 'Σε σÏνδεση φίλοι', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'Συνολικά υπάÏχει %1$d μέλος σε σÏνδεση: %2$s και %3$s', + 2 => 'Συνολικά υπάÏχουν %1$d μέλη σε σÏνδεση: %2$s και %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'Συνολικά υπάÏχει %1$d μέλος σε σÏνδεση: %2$s, %3$s και %4$s', + 2 => 'Συνολικά υπάÏχουν %1$d μέλη σε σÏνδεση: %2$s, %3$s και %4$s', + ), + 'OPTIONS' => 'Επιλογές', + + 'PAGE_NOT_FOUND' => 'Η σελίδα που ζητήσατε δε μποÏεί να βÏεθεί.', + 'PAGE_OF' => 'Σελίδα %1$d από %2$d', + 'PAGE_TITLE_NUMBER' => 'Σελίδα %s', + 'PASSWORD' => 'Κωδικός', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d εικονοστοιχείο', + 2 => '%d εικονοστοιχεία', + ), + 'PLEASE_WAIT' => 'ΠαÏακαλώ πεÏιμένετε.', + 'PM' => 'ΠΜ', + 'PM_REPORTED' => 'Πατήστε για Ï€Ïοβολή αναφοÏάς', + 'POSTING_MESSAGE' => 'ΔημοσιεÏει μήνυμα σε %s', + 'POSTING_PRIVATE_MESSAGE' => 'Συντάσσει ένα Ï€Ïοσωπικό μήνυμα', + 'POST' => 'Δημοσίευση', + 'POST_ANNOUNCEMENT' => 'Ανακοίνωση', + 'POST_STICKY' => 'Σημείωση', + 'POSTED' => 'ΔημοσιεÏτηκε', + 'POSTED_IN_FORUM' => 'σε', + 'POSTED_ON_DATE' => 'την', + 'POSTS' => 'ΔημοσιεÏσεις', + 'POSTS_UNAPPROVED' => 'Τουλάχιστον μια δημοσίευση σε αυτό το θέμα δεν έχει εγκÏιθεί.', + 'POSTS_UNAPPROVED_FORUM'=> 'Τουλάχιστον μια δημοσίευση σε αυτή τη Δ. Συζήτηση δεν έχει εγκÏιθεί.', + 'POST_BY_AUTHOR' => 'από', + 'POST_BY_FOE' => 'Το μέλος %1$s, που είναι Ï€Ïος το παÏόν στη λίστα εχθÏών σας, έκανε αυτή τη δημοσίευση.', + 'POST_DISPLAY' => '%1$sΕμφάνιση αυτής της δημοσίευσης%2$s.', + 'POST_DAY' => '%.2f δημοσιεÏσεις ανά ημέÏα', + 'POST_DELETED_ACTION' => 'ΔιαγÏαμμένη δημοσίευση:', + 'POST_DELETED' => 'Αυτή η δημοσίευση διαγÏάφηκε.', + 'POST_DELETED_BY' => 'Το μέλος %2$s διέγÏαψε τη δημοσίευση από %1$s την %3$s.', + 'POST_DELETED_BY_REASON'=> 'Το μέλος %2$s διέγÏαψε τη δημοσίευση από %1$s την %3$s για τον παÏακάτω λόγο: %4$s', + 'POST_DETAILS' => 'ΛεπτομέÏειες δημοσίευσης', + 'POST_NEW_TOPIC' => 'ΔημιουÏγία νέου θέματος', + 'POST_PCT' => '%.2f%% επί συνόλου ', + 'POST_PCT_ACTIVE' => '%.2f%% των δημοσιεÏσεων των μελών', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% των δημοσιεÏσεων σας', + 'POST_REPLY' => 'ΔημιουÏγία απάντησης', + 'POST_REPORTED' => 'Πατήστε για Ï€Ïοβολή αναφοÏάς', + 'POST_SUBJECT' => 'Θέμα δημοσίευσης', + 'POST_TIME' => 'ÎÏα δημοσίευσης', + 'POST_TOPIC' => 'ΔημιουÏγία νέου θέματος', + 'POST_UNAPPROVED_ACTION' => 'Δημοσίευση σε αναμονή έγκÏισης:', + 'POST_UNAPPROVED' => 'Αυτή η δημοσίευση δεν έχει εγκÏιθεί.', + 'POWERED_BY' => 'ΔημιουÏγήθηκε από %s', + 'PREVIEW' => 'ΠÏοεπισκόπηση', + 'PREVIOUS' => 'ΠÏοηγοÏμενη', // Used in pagination + 'PREVIOUS_STEP' => 'ΠÏοηγοÏμενο βήμα', + 'PRIVACY' => 'ΠÏοσωπικό απόÏÏητο', + 'PRIVATE_MESSAGE' => 'ΠÏοσωπικό μήνυμα', + 'PRIVATE_MESSAGES' => 'ΠÏοσωπικά μηνÏματα', + 'PRIVATE_MESSAGING' => 'Ανταλλαγή Ï€Ïοσωπικών μηνυμάτων', + 'PROFILE' => 'Πίνακας Ελέγχου Μέλους', + + 'QUICK_LINKS' => 'ΓÏήγοÏες συνδέσεις', + + 'RANK' => 'Βαθμός', + 'READING_FORUM' => 'Διαβάζει τα θέματα στο %s', + 'READING_GLOBAL_ANNOUNCE' => 'Διαβάζει γενική ανακοίνωση', + 'READING_LINK' => 'Ακολουθεί σÏνδεσμο της Δ. Συζήτησης %s', + 'READING_TOPIC' => 'Διαβάζει θέμα στο %s', + 'READ_PROFILE' => 'ΠÏοφίλ', + 'REASON' => 'Λόγος', + 'RECORD_ONLINE_USERS' => 'ΠεÏισσότεÏα μέλη σε σÏνδεση %1$s την %2$s', + 'REDIRECT' => 'ΑνακατεÏθυνση', + 'REDIRECTS' => 'ΣÏνολο ανακατευθÏνσεων', + 'REGISTER' => 'ΕγγÏαφή', + 'REGISTERED_USERS' => 'ΕγγεγÏαμμένα μέλη:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'ΥπάÏχει %1$d εγγεγÏαμμένο μέλος και %2$s σε σÏνδεση', + 2 => 'ΥπάÏχουν %1$d εγγεγÏαμμένα μέλη και %2$s σε σÏνδεση', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d εγγεγÏαμμένο', + 2 => '%d εγγεγÏαμμένα', + ), + 'REMOVE' => 'ΔιαγÏαφή', + 'REMOVE_INSTALL' => 'ΠαÏακαλώ να διαγÏάψετε, να μετακινήσετε ή να μετονομάσετε τον κατάλογο εγκατάστασης (install) Ï€Ïιν χÏησιμοποιήσετε το σÏστημα συζητήσεών σας. Εάν αυτός ο κατάλογος εξακολουθεί να υπάÏχει, θα είναι Ï€Ïοσβάσιμος μόνο ο Πίνακας Ελέγχου ΔιαχείÏισης (ΠΕΔ).', + 'REPLIES' => 'Απαντήσεις', + 'REPLY_WITH_QUOTE' => 'Απάντηση με παÏάθεση', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Απαντάει σε γενική ανακοίνωση', + 'REPLYING_MESSAGE' => 'Απαντάει σε μήνυμα στο %s', + 'REPORT_BY' => 'ΑναφοÏά από', + 'REPORT_POST' => 'ΑναφέÏετε αυτή τη δημοσίευση', + 'REPORTING_POST' => 'ΑναφέÏει μια δημοσίευση', + 'RESEND_ACTIVATION' => 'Αποστολή μηνÏματος ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου ενεÏγοποίησης πάλι', + 'RESET' => 'ΕπαναφοÏά', + 'RESTORE_PERMISSIONS' => 'ΕπαναφοÏά δικαιωμάτων', + 'RETURN_INDEX' => '%sΕπιστÏοφή στη σελίδα ευÏετηÏίου%s', + 'RETURN_FORUM' => '%sΕπιστÏοφή στη Δ. Συζήτηση, που επισκεφτήκατε τελευταία%s', + 'RETURN_PAGE' => '%sΕπιστÏοφή στην Ï€ÏοηγοÏμενη σελίδα%s', + 'RETURN_TOPIC' => '%sΕπιστÏοφή στο θέμα που επισκεφτήκατε τελευταία%s', + 'RETURN_TO' => 'ΕπιστÏοφή στο “%sâ€', + 'RETURN_TO_INDEX' => 'ΕπιστÏοφή στο ευÏετήÏιο', + 'FEED' => 'ΤÏοφοδοσία', + 'FEED_NEWS' => 'Îέα', + 'FEED_TOPICS_ACTIVE' => 'ΕνεÏγά Θέματα', + 'FEED_TOPICS_NEW' => 'Îέα Θέματα', + 'RULES_ATTACH_CAN' => 'ΜποÏείτε να επισυνάπτετε αÏχεία σε αυτή τη Δ. Συζήτηση', + 'RULES_ATTACH_CANNOT' => 'Δεν μποÏείτε να επισυνάπτετε αÏχεία σε αυτή τη Δ. Συζήτηση', + 'RULES_DELETE_CAN' => 'ΜποÏείτε να διαγÏάφετε τις δημοσιεÏσεις σας σε αυτή τη Δ. Συζήτηση', + 'RULES_DELETE_CANNOT' => 'Δεν μποÏείτε να διαγÏάφετε τις δημοσιεÏσεις σας σε αυτή τη Δ. Συζήτηση', + 'RULES_DOWNLOAD_CAN' => 'ΜποÏείτε να μεταφοÏτώνετε συνημμένα αÏχεία σε αυτή τη Δ. Συζήτηση', + 'RULES_DOWNLOAD_CANNOT' => 'Δεν μποÏείτε να μεταφοÏτώνετε συνημμένα αÏχεία σε αυτή τη Δ. Συζήτηση', + 'RULES_EDIT_CAN' => 'ΜποÏείτε να επεξεÏγάζεστε τις δημοσιεÏσεις σας σε αυτή τη Δ. Συζήτηση', + 'RULES_EDIT_CANNOT' => 'Δεν μποÏείτε να επεξεÏγάζεστε τις δημοσιεÏσεις σας σε αυτή τη Δ. Συζήτηση', + 'RULES_LOCK_CAN' => 'ΜποÏείτε να κλειδώνετε τα θέματά σας σε αυτή τη Δ. Συζήτηση', + 'RULES_LOCK_CANNOT' => 'Δεν μποÏείτε να κλειδώνετε τα θέματά σας σε αυτή τη Δ. Συζήτηση', + 'RULES_POST_CAN' => 'ΜποÏείτε να δημοσιεÏετε νέα θέματα σε αυτή τη Δ. Συζήτηση', + 'RULES_POST_CANNOT' => 'Δεν μποÏείτε να δημοσιεÏετε νέα θέματα σε αυτή τη Δ. Συζήτηση', + 'RULES_REPLY_CAN' => 'ΜποÏείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση', + 'RULES_REPLY_CANNOT' => 'Δεν μποÏείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση', + 'RULES_VOTE_CAN' => 'ΜποÏείτε να ψηφίζετε σε δημοψηφίσματα σε αυτή τη Δ. Συζήτηση', + 'RULES_VOTE_CANNOT' => 'Δεν μποÏείτε να ψηφίζετε σε δημοψηφίσματα σε αυτή τη Δ. Συζήτηση', + + 'SEARCH' => 'Αναζήτηση', + 'SEARCH_MINI' => 'Αναζήτηση…', + 'SEARCH_ADV' => 'Ειδική αναζήτηση', + 'SEARCH_ADV_EXPLAIN' => 'Δείτε τις επιλογές ειδικής αναζήτησης', + 'SEARCH_KEYWORDS' => 'Αναζήτηση για λέξεις-κλειδιά', + 'SEARCHING_FORUMS' => 'Αναζήτηση στις Δ. Συζητήσεις', + 'SEARCH_ACTIVE_TOPICS' => 'ΕνεÏγά θέματα', + 'SEARCH_FOR' => 'Αναζήτηση για', + 'SEARCH_FORUM' => 'Αναζητήστε σε αυτή τη Δ. Συζήτηση…', + 'SEARCH_NEW' => 'Îέες δημοσιεÏσεις', + 'SEARCH_POSTS_BY' => 'Αναζητήστε δημοσιεÏσεις από', + 'SEARCH_SELF' => 'Οι δημοσιεÏσεις σας', + 'SEARCH_TOPIC' => 'Αναζητήστε στο θέμα…', + 'SEARCH_UNANSWERED' => 'Αναπάντητα θέματα', + 'SEARCH_UNREAD' => 'Μη αναγνωσμένες δημοσιεÏσεις', + 'SEARCH_USER_POSTS' => 'Αναζήτηση δημοσιεÏσεων μέλους', + 'SECONDS' => 'ΔευτεÏόλεπτα', + 'SEE_ALL' => 'ΠÏοβολή όλων', + 'SELECT' => 'Επιλογή', + 'SELECT_ALL_CODE' => 'Επιλογή όλων', + 'SELECT_DESTINATION_FORUM' => 'ΠαÏακαλώ επιλέξτε τη Δ. Συζήτηση Ï€ÏοοÏισμοÏ', + 'SELECT_FORUM' => 'Επιλέξτε μια Δ. Συζήτηση', + 'SEND_EMAIL' => 'Αποστολή μηνÏματος ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου', // Used for submit buttons + 'SEND_EMAIL_USER' => 'Αποστολή μηνÏματος ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου Ï€Ïος %s', + 'SEND_PRIVATE_MESSAGE' => 'Αποστολή Ï€ÏÎ¿ÏƒÏ‰Ï€Î¹ÎºÎ¿Ï Î¼Î·Î½Ïματος', + 'SETTINGS' => 'Ρυθμίσεις', + 'SIGNATURE' => 'ΥπογÏαφή', + 'SKIP' => 'Μετάβαση στο πεÏιεχόμενο', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'Ο διακομιστής SMTP δεν υποστηÏίζει πιστοποίηση.', + 'SORRY_AUTH_READ' => 'Δεν είστε εξουσιοδοτημένος (-η) να αναγνώσετε αυτή τη Δ. Συζήτηση.', + 'SORRY_AUTH_READ_TOPIC' => 'Δεν είστε εξουσιοδοτημένος (-η) να αναγνώσετε αυτό το θέμα.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Δεν είστε εξουσιοδοτημένος (-η) να μεταφοÏτώσετε αυτό το συνημμένο.', + 'SORT_BY' => 'Ταξινόμηση κατά', + 'SORT_DIRECTION' => 'ΚατεÏθυνση', + 'SORT_JOINED' => 'ΗμεÏομηνία ένταξης', + 'SORT_LOCATION' => 'Τοποθεσία', + 'SORT_OPTIONS' => 'Επιλογές εμφάνισης και ταξινόμησης', + 'SORT_RANK' => 'Βαθμός', + 'SORT_POSTS' => 'ΔημοσιεÏσεις', + 'SORT_TOPIC_TITLE' => 'Τίτλος θέματος', + 'SORT_USERNAME' => 'Όνομα μέλους', + 'SPLIT_TOPIC' => 'ΔιαχωÏισμός θέματος', + 'SQL_ERROR_OCCURRED' => 'Ένα λάθος στη βάση δεδομένων παÏουσιάστηκε κατά την ανάκτηση αυτής της σελίδας. ΠαÏακαλώ ενημεÏώστε τον %sΔιαχειÏιστή της Δ. Συζήτησης%s εάν το Ï€Ïόβλημα εξακολουθεί να υφίσταται.', + 'STATISTICS' => 'Στατιστικά', + 'START_WATCHING_FORUM' => 'ΈναÏξη συνδÏομής Δ. Συζήτησης', + 'START_WATCHING_TOPIC' => 'ΈναÏξη συνδÏομής θέματος', + 'STOP_WATCHING_FORUM' => 'Διακοπή συνδÏομής Δ. Συζήτησης', + 'STOP_WATCHING_TOPIC' => 'Διακοπή συνδÏομής θέματος', + 'STRING_LIST_MULTI' => '%1$s, και %2$s', + 'STRING_LIST_SIMPLE' => '%1$s και %2$s', + 'SUBFORUM' => 'Υπο-συζήτηση', + 'SUBFORUMS' => 'Υπο-συζητήσεις', + 'SUBJECT' => 'Θέμα', + 'SUBMIT' => 'Υποβολή', + + 'TB' => 'TB', + 'TERMS_USE' => 'ÎŒÏοι χÏήσης', + 'TEST_CONNECTION' => 'Έλεγχος σÏνδεσης', + 'THE_TEAM' => 'Η ομάδα', + 'TIB' => 'TiB', + 'TIME' => 'ÎÏα', + 'TIMEOUT_PROCESSING_REQ' => 'Λήξη χÏόνου αιτήματος.', + + 'TOO_LARGE' => 'Η τιμή που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î·.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'Η τιμή της ÏÏθμισης Μέγιστος αÏιθμός παÏαληπτών ανά Ï€Ïοσωπικό μήνυμα που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î·.', + + 'TOO_LONG' => 'Η τιμή που εισάγατε είναι μεγάλη.', + + 'TOO_LONG_CONFIRM_CODE' => 'Ο κωδικός επιβεβαίωσης που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿Ï‚.', + 'TOO_LONG_DATEFORMAT' => 'Η μοÏφή ημεÏομηνίας που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î·.', + 'TOO_LONG_JABBER' => 'Το όνομα λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Jabber που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿.', + 'TOO_LONG_NEW_PASSWORD' => 'Ο κωδικός Ï€Ïόσβασης που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿Ï‚.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'Η επιβεβαίωση του ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î·.', + 'TOO_LONG_USER_PASSWORD' => 'Ο κωδικός Ï€Ïόσβασης που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿Ï‚.', + 'TOO_LONG_USERNAME' => 'Το όνομα μέλους που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿.', + 'TOO_LONG_EMAIL' => 'Η διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου που εισάγατε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î·.', + + 'TOO_MANY_VOTE_OPTIONS' => 'ΠÏοσπαθήσατε να ψηφίσετε για πάÏα πολλές επιλογές.', + + 'TOO_SHORT' => 'Η τιμή που εισάγατε είναι μικÏή.', + + 'TOO_SHORT_CONFIRM_CODE' => 'Ο κωδικός επιβεβαίωσης που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏός.', + 'TOO_SHORT_DATEFORMAT' => 'Η μοÏφή ημεÏομηνίας που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏή.', + 'TOO_SHORT_JABBER' => 'Το όνομα λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Jabber που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏÏŒ.', + 'TOO_SHORT_NEW_PASSWORD' => 'Ο κωδικός Ï€Ïόσβασης που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏός.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'Η επιβεβαίωση του ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏή.', + 'TOO_SHORT_USER_PASSWORD' => 'Ο κωδικός Ï€Ïόσβασης που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏός.', + 'TOO_SHORT_USERNAME' => 'Το όνομα μέλους που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏÏŒ.', + 'TOO_SHORT_EMAIL' => 'Η διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏή.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'Η επιβεβαίωση της διεÏθυνσης ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏή.', + 'TOO_SMALL' => 'Η τιμή που εισάγατε είναι μικÏή.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'Η τιμή της ÏÏθμισης Μέγιστος αÏιθμός παÏαληπτών ανά Ï€Ïοσωπικό μήνυμα που εισάγατε είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏή.', + + 'TOPIC' => 'Θέμα', + 'TOPICS' => 'Θέματα', + 'TOPICS_UNAPPROVED' => 'Τουλάχιστον ένα θέμα σε αυτή τη Δ. Συζήτηση δεν έχει εγκÏιθεί.', + 'TOPIC_ICON' => 'Εικονίδιο θέματος', + 'TOPIC_LOCKED' => 'Αυτό το θέμα είναι κλειδωμένο, δεν μποÏείτε να επεξεÏγαστείτε δημοσιεÏσεις ή να Ï€Ïοβείτε σε πεÏαιτέÏω απαντήσεις.', + 'TOPIC_LOCKED_SHORT'=> 'Το θέμα κλειδώθηκε', + 'TOPIC_MOVED' => 'Το Θέμα μετακινήθηκε', + 'TOPIC_REVIEW' => 'ΠεÏίληψη Θέματος', + 'TOPIC_TITLE' => 'Τίτλος θέματος', + 'TOPIC_UNAPPROVED' => 'Αυτό το θέμα δεν εγκÏίθηκε', + 'TOPIC_DELETED' => 'Αυτή η δημοσίευση διαγÏάφηκε.', + 'TOTAL_ATTACHMENTS' => 'Συνημμένο(α)', + 'TOTAL_LOGS' => array( + 1 => '%d αÏχείο ιστοÏικοÏ', + 2 => '%d αÏχεία ιστοÏικοÏ', + ), + 'TOTAL_PMS' => array( + 1 => '%d Ï€Ïοσωπικό μήνυμα συνολικά', + 2 => '%d Ï€Ïοσωπικά μηνÏματα συνολικά', + ), + 'TOPIC_POLL' => 'Αυτή η δημοσίευση έχει δημοψήφισμα.', + 'TOTAL_POSTS' => 'Συνολικές δημοσιεÏσεις', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Συνολικές δημοσιεÏσεις %d', + ), + 'TOPIC_REPORTED' => 'Αυτό το θέμα έχει αναφεÏθεί', + 'TOTAL_TOPICS' => array( + 2 => 'ΣÏνολο θεμάτων %d', + ), + 'TOTAL_USERS' => array( + 2 => 'ΣÏνολο μελών %d', + ), + 'TRACKED_PHP_ERROR' => 'Εντοπισμένα σφάλματα PHP: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'Δεν ήταν δυνατόν να Ï€ÏοσδιοÏιστοÏν οι διαστάσεις της εικόνας. ΠαÏακαλώ επαληθεÏστε ότι ο σÏνδεσμος (URL) που εισάγατε είναι σωστός.', + 'UNABLE_TO_DELIVER_FILE' => 'Αδυναμία παÏάδοσης αÏχείου.', + 'UNKNOWN_BROWSER' => 'Άγνωστο Ï€ÏόγÏαμμα πεÏιήγησης', + 'UNMARK_ALL' => 'ΕξαίÏεση όλων', + 'UNREAD_MESSAGES' => 'Μη αναγνωσμένα μηνÏματα', + 'UNREAD_POST' => 'Μη αναγνωσμένη δημοσίευση', + 'UNREAD_POSTS' => 'Μη αναγνωσμένες δημοσιεÏσεις', + 'UNWATCH_FORUM_CONFIRM' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε να διακόψετε τη συνδÏομή από αυτή τη Δ. Συζήτηση;', + 'UNWATCH_FORUM_DETAILED' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε να διακόψετε τη συνδÏομή από τη Δ. Συζήτηση “%sâ€;', + 'UNWATCH_TOPIC_CONFIRM' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε να διακόψετε τη συνδÏομή από αυτό το θέμα;', + 'UNWATCH_TOPIC_DETAILED' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε να διακόψετε τη συνδÏομή από το θέμα “%sâ€;', + 'UNWATCHED_FORUMS' => 'Δεν είστε πλέον συνδÏομητής στις επιλεγμένες Δ. Συζητήσεις.', + 'UNWATCHED_TOPICS' => 'Δεν είστε πλέον συνδÏομητής στα επιλεγμένα θέματα.', + 'UNWATCHED_FORUMS_TOPICS' => 'Δεν είστε πλέον συνδÏομητής στις επιλεγμένες καταχωÏήσεις.', + 'UPDATE' => 'ΕνημέÏωση', + 'UPLOAD_IN_PROGRESS' => 'Η αποστολή του αÏχείου βÏίσκεται σε εξέλιξη.', + 'URL_REDIRECT' => 'Εάν το Ï€ÏόγÏαμμα πεÏιήγησής σας δεν υποστηÏίζει ανακατεÏθυνση meta %sπαÏακαλώ πατήστε ΕΔΩ για να μεταφεÏθείτε%s.', + 'USERGROUPS' => 'Ομάδες', + 'USERNAME' => 'Όνομα μέλους', + 'USERNAMES' => 'Ονόματα μελών', + 'USER_AVATAR' => 'Î†Î²Î±Ï„Î±Ï Î¼Î­Î»Î¿Ï…Ï‚', + 'USER_CANNOT_READ' => 'Δεν μποÏείτε να αναγνώσετε δημοσιεÏσεις σε αυτή τη Δ. Συζήτηση', + 'USER_POSTS' => array( + 1 => '%d δημοσίευση', + 2 => '%d δημοσιεÏσεις', + ), + 'USERS' => 'Μέλη', + 'USE_PERMISSIONS' => 'Δοκιμάστε τα δικαιώματα του μέλους', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Λυπόμαστε, αλλά δεν έχετε εξουσιοδότηση για να χÏησιμοποιήσετε αυτό το χαÏακτηÏιστικό. ΜποÏεί να έχετε μόλις εγγÏαφεί εδώ και Ï€Ïέπει να συμμετέχετε πεÏισσότεÏο στις συζητήσεις για να είστε σε θέση να χÏησιμοποιήσετε αυτό το χαÏακτηÏιστικό.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'ΠÏοβολές', + 'VIEWED_COUNTS' => array( + 0 => 'Καμία Ï€Ïοβολή ακόμη', + 1 => 'ΠÏοβλήθηκε %d φοÏά', + 2 => 'ΠÏοβλήθηκε %d φοÏές', + ), + 'VIEWING_CONTACT_ADMIN' => 'Βλέπει τη σελίδα επικοινωνίας', + 'VIEWING_FAQ' => 'Βλέπει τις Συχνές εÏωτήσεις', + 'VIEWING_MEMBERS' => 'Βλέπει τις λεπτομέÏειες μέλους', + 'VIEWING_ONLINE' => 'Βλέπει τα μέλη σε σÏνδεση', + 'VIEWING_MCP' => 'Βλέπει τον πίνακα ελέγχου συντονιστή', + 'VIEWING_MEMBER_PROFILE' => 'Βλέπει το Ï€Ïοφίλ μέλους', + 'VIEWING_PRIVATE_MESSAGES' => 'Βλέπει τα Ï€Ïοσωπικά μηνÏματα', + 'VIEWING_REGISTER' => 'ΔημιουÏγεί λογαÏιασμό', + 'VIEWING_UCP' => 'Βλέπει τον πίνακα ελέγχου μέλους', + 'VIEWS' => 'ΠÏοβολές', + 'VIEW_BOOKMARKS' => 'ΠÏοβολή σελιδοδεικτών,', + 'VIEW_FORUM_LOGS' => 'ΠÏοβολή ιστοÏÎ¹ÎºÎ¿Ï Î”. Συζήτησης', + 'VIEW_LATEST_POST' => 'ΠÏοβολή της τελευταίας δημοσίευσης', + 'VIEW_NEWEST_POST' => 'ΠÏοβολή Ï€Ïώτης μη αναγνωσμένης δημοσίευσης', + 'VIEW_NOTES' => 'ΠÏοβολή σημειώσεων μέλους', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'με βάση τα μέλη που ήταν ενεÏγά το τελευταίο %d λεπτό', + 2 => 'με βάση τα μέλη που ήταν ενεÏγά τα τελευταία %d λεπτά', + ), + 'VIEW_TOPIC' => 'ΠÏοβολή θέματος', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'Ανακοίνωση: ', + 'VIEW_TOPIC_GLOBAL' => 'Γενική ανακοίνωση: ', + 'VIEW_TOPIC_LOCKED' => 'Κλειδωμένο: ', + 'VIEW_TOPIC_LOGS' => 'ΠÏοβολή ιστοÏικοÏ', + 'VIEW_TOPIC_MOVED' => 'Μετακινήθηκε ', + 'VIEW_TOPIC_POLL' => 'Δημοψήφισμα: ', + 'VIEW_TOPIC_STICKY' => 'Σημείωση: ', + 'VISIT_WEBSITE' => 'Επίσκεψη ιστοσελίδας', + + 'WARNINGS' => 'ΠÏοειδοποιήσεις', + 'WARN_USER' => 'ΠÏοειδοποιήστε μέλος', + 'WATCH_FORUM_CONFIRM' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε συνδÏομή σε αυτή τη Δ. Συζήτηση;', + 'WATCH_FORUM_DETAILED' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε συνδÏομή στη Δ. Συζήτηση “%sâ€;', + 'WATCH_TOPIC_CONFIRM' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε συνδÏομή σε αυτό το θέμα;', + 'WATCH_TOPIC_DETAILED' => 'Είστε σίγουÏος (-η) ότι επιθυμείτε συνδÏομή στο θέμα “%sâ€;', + 'WELCOME_SUBJECT' => 'Καλώς ήÏθατε στο %s', + 'WEBSITE' => 'Ιστοσελίδα', + 'WHOIS' => 'Ποιος', + 'WHO_IS_ONLINE' => 'Μέλη σε σÏνδεση', + 'WRONG_PASSWORD' => 'Ο κωδικός Ï€Ïόσβασης που εισάγατε είναι λάθος.', + + 'WRONG_DATA_COLOUR' => 'Η τιμή του χÏώματος που εισάγατε είναι άκυÏη.', + 'WRONG_DATA_JABBER' => 'Το όνομα που εισάγατε δεν είναι ένα έγκυÏο όνομα λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Jabber.', + 'WRONG_DATA_LANG' => 'Η γλώσσα που καθοÏίσατε δεν είναι έγκυÏη.', + 'WRONG_DATA_POST_SD' => 'Η κατεÏθυνση ταξινόμησης δημοσίευσης που καθοÏίσατε δεν είναι έγκυÏη.', + 'WRONG_DATA_POST_SK' => 'Η επιλογή ταξινόμησης δημοσίευσης που καθοÏίσατε δεν είναι έγκυÏη.', + 'WRONG_DATA_TOPIC_SD' => 'Η κατεÏθυνση ταξινόμησης θέματος που καθοÏίσατε δεν είναι έγκυÏη.', + 'WRONG_DATA_TOPIC_SK' => 'Η επιλογή ταξινόμησης θέματος που καθοÏίσατε δεν είναι έγκυÏη.', + 'WROTE' => 'έγÏαψε', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'ΧÏόνος', + 'YEAR_MONTH_DAY' => '(ΕΕΕΕ-ΜΜ-ΗΗ)', + 'YES' => 'Îαι', + 'YOU_LAST_VISIT' => 'Τελευταία επίσκεψη: %s', + + 'datetime' => array( + 'TODAY' => 'ΣήμεÏα', + 'TOMORROW' => 'ΑÏÏιο', + 'YESTERDAY' => 'Χθες', + 'AGO' => array( + 0 => 'λιγότεÏο από 1 λεπτό Ï€Ïιν', + 1 => '%d λεπτό Ï€Ïιν', + 2 => '%d λεπτά Ï€Ïιν', + ), + + 'Sunday' => 'ΚυÏιακή', + 'Monday' => 'ΔευτέÏα', + 'Tuesday' => 'ΤÏίτη', + 'Wednesday' => 'ΤετάÏτη', + 'Thursday' => 'Πέμπτη', + 'Friday' => 'ΠαÏασκευή', + 'Saturday' => 'Σάββατο', + + 'Sun' => 'ΚυÏ', + 'Mon' => 'Δευ', + 'Tue' => 'ΤÏί', + 'Wed' => 'Τετ', + 'Thu' => 'Πέμ', + 'Fri' => 'ΠαÏ', + 'Sat' => 'Σάβ', + + 'January' => 'ΙανουάÏιος', + 'February' => 'ΦεβÏουάÏιος', + 'March' => 'ΜάÏτιος', + 'April' => 'ΑπÏίλιος', + 'May' => 'Μάιος', + 'June' => 'ΙοÏνιος', + 'July' => 'ΙοÏλιος', + 'August' => 'ΑÏγουστος', + 'September' => 'ΣεπτέμβÏιος', + 'October' => 'ΟκτώβÏιος', + 'November' => 'ÎοέμβÏιος', + 'December' => 'ΔεκέμβÏιος', + + 'Jan' => 'Ιαν', + 'Feb' => 'Φεβ', + 'Mar' => 'ΜαÏ', + 'Apr' => 'ΑπÏ', + 'May_short' => 'Μάιος', // Short representation of "May". May_short used because in English the short and long date are the same for May. + 'Jun' => 'Ιουν', + 'Jul' => 'ΙοÏλ', + 'Aug' => 'ΑÏγ', + 'Sep' => 'Σεπ', + 'Oct' => 'Οκτ', + 'Nov' => 'Îοέμ', + 'Dec' => 'Δεκ', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'GMT+12', + 'Etc/GMT-11' => 'GMT+11', + 'Etc/GMT-10' => 'GMT+10', + 'Etc/GMT-9' => 'GMT+9', + 'Etc/GMT-8' => 'GMT+8', + 'Etc/GMT-7' => 'GMT+7', + 'Etc/GMT-6' => 'GMT+6', + 'Etc/GMT-5' => 'GMT+5', + 'Etc/GMT-4' => 'GMT+4', + 'Etc/GMT-3' => 'GMT+3', + 'Etc/GMT-2' => 'GMT+2', + 'Etc/GMT-1' => 'GMT+1', + 'Etc/GMT+1' => 'GMT-1', + 'Etc/GMT+2' => 'GMT-2', + 'Etc/GMT+3' => 'GMT-3', + 'Etc/GMT+4' => 'GMT-4', + 'Etc/GMT+5' => 'GMT-5', + 'Etc/GMT+6' => 'GMT-6', + 'Etc/GMT+7' => 'GMT-7', + 'Etc/GMT+8' => 'GMT-8', + 'Etc/GMT+9' => 'GMT-9', + 'Etc/GMT+10' => 'GMT-10', + 'Etc/GMT+11' => 'GMT-11', + 'Etc/GMT+12' => 'GMT-12', + + 'Africa/Abidjan' => 'Africa/Abidjan', + 'Africa/Accra' => 'Africa/Accra', + 'Africa/Addis_Ababa' => 'Africa/Addis Ababa', + 'Africa/Algiers' => 'Africa/Algiers', + 'Africa/Asmara' => 'Africa/Asmara', + 'Africa/Bamako' => 'Africa/Bamako', + 'Africa/Bangui' => 'Africa/Bangui', + 'Africa/Banjul' => 'Africa/Banjul', + 'Africa/Bissau' => 'Africa/Bissau', + 'Africa/Blantyre' => 'Africa/Blantyre', + 'Africa/Brazzaville' => 'Africa/Brazzaville', + 'Africa/Bujumbura' => 'Africa/Bujumbura', + 'Africa/Cairo' => 'Africa/Cairo', + 'Africa/Casablanca' => 'Africa/Casablanca', + 'Africa/Ceuta' => 'Africa/Ceuta', + 'Africa/Conakry' => 'Africa/Conakry', + 'Africa/Dakar' => 'Africa/Dakar', + 'Africa/Dar_es_Salaam' => 'Africa/Dar es Salaam', + 'Africa/Djibouti' => 'Africa/Djibouti', + 'Africa/Douala' => 'Africa/Douala', + 'Africa/El_Aaiun' => 'Africa/El Aaiun', + 'Africa/Freetown' => 'Africa/Freetown', + 'Africa/Gaborone' => 'Africa/Gaborone', + 'Africa/Harare' => 'Africa/Harare', + 'Africa/Johannesburg' => 'Africa/Johannesburg', + 'Africa/Juba' => 'Africa/Juba', + 'Africa/Kampala' => 'Africa/Kampala', + 'Africa/Khartoum' => 'Africa/Khartoum', + 'Africa/Kigali' => 'Africa/Kigali', + 'Africa/Kinshasa' => 'Africa/Kinshasa', + 'Africa/Lagos' => 'Africa/Lagos', + 'Africa/Libreville' => 'Africa/Libreville', + 'Africa/Lome' => 'Africa/Lome', + 'Africa/Luanda' => 'Africa/Luanda', + 'Africa/Lubumbashi' => 'Africa/Lubumbashi', + 'Africa/Lusaka' => 'Africa/Lusaka', + 'Africa/Malabo' => 'Africa/Malabo', + 'Africa/Maputo' => 'Africa/Maputo', + 'Africa/Maseru' => 'Africa/Maseru', + 'Africa/Mbabane' => 'Africa/Mbabane', + 'Africa/Mogadishu' => 'Africa/Mogadishu', + 'Africa/Monrovia' => 'Africa/Monrovia', + 'Africa/Nairobi' => 'Africa/Nairobi', + 'Africa/Ndjamena' => 'Africa/Ndjamena', + 'Africa/Niamey' => 'Africa/Niamey', + 'Africa/Nouakchott' => 'Africa/Nouakchott', + 'Africa/Ouagadougou' => 'Africa/Ouagadougou', + 'Africa/Porto-Novo' => 'Africa/Porto-Novo', + 'Africa/Sao_Tome' => 'Africa/Sao Tome', + 'Africa/Tripoli' => 'Africa/Tripoli', + 'Africa/Tunis' => 'Africa/Tunis', + 'Africa/Windhoek' => 'Africa/Windhoek', + + 'America/Adak' => 'America/Adak', + 'America/Anchorage' => 'America/Anchorage', + 'America/Anguilla' => 'America/Anguilla', + 'America/Antigua' => 'America/Antigua', + 'America/Araguaina' => 'America/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'America/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'America/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'America/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'America/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'America/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'America/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'America/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'America/Argentina/Salta', + 'America/Argentina/San_Juan' => 'America/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'America/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'America/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'America/Argentina/Ushuaia', + + 'America/Aruba' => 'America/Aruba', + 'America/Asuncion' => 'America/Asuncion', + 'America/Atikokan' => 'America/Atikokan', + 'America/Bahia' => 'America/Bahia', + 'America/Bahia_Banderas' => 'America/Bahia Banderas', + 'America/Barbados' => 'America/Barbados', + 'America/Belem' => 'America/Belem', + 'America/Belize' => 'America/Belize', + 'America/Blanc-Sablon' => 'America/Blanc-Sablon', + 'America/Boa_Vista' => 'America/Boa Vista', + 'America/Bogota' => 'America/Bogota', + 'America/Boise' => 'America/Boise', + 'America/Cambridge_Bay' => 'America/Cambridge Bay', + 'America/Campo_Grande' => 'America/Campo Grande', + 'America/Cancun' => 'America/Cancun', + 'America/Caracas' => 'America/Caracas', + 'America/Cayenne' => 'America/Cayenne', + 'America/Cayman' => 'America/Cayman', + 'America/Chicago' => 'America/Chicago', + 'America/Chihuahua' => 'America/Chihuahua', + 'America/Costa_Rica' => 'America/Costa Rica', + 'America/Creston' => 'America/Creston', + 'America/Cuiaba' => 'America/Cuiaba', + 'America/Curacao' => 'America/Curacao', + 'America/Danmarkshavn' => 'America/Danmarkshavn', + 'America/Dawson' => 'America/Dawson', + 'America/Dawson_Creek' => 'America/Dawson Creek', + 'America/Denver' => 'America/Denver', + 'America/Detroit' => 'America/Detroit', + 'America/Dominica' => 'America/Dominica', + 'America/Edmonton' => 'America/Edmonton', + 'America/Eirunepe' => 'America/Eirunepe', + 'America/El_Salvador' => 'America/El Salvador', + 'America/Fortaleza' => 'America/Fortaleza', + 'America/Glace_Bay' => 'America/Glace Bay', + 'America/Godthab' => 'America/Godthab', + 'America/Goose_Bay' => 'America/Goose Bay', + 'America/Grand_Turk' => 'America/Grand Turk', + 'America/Grenada' => 'America/Grenada', + 'America/Guadeloupe' => 'America/Guadeloupe', + 'America/Guatemala' => 'America/Guatemala', + 'America/Guayaquil' => 'America/Guayaquil', + 'America/Guyana' => 'America/Guyana', + 'America/Halifax' => 'America/Halifax', + 'America/Havana' => 'America/Havana', + 'America/Hermosillo' => 'America/Hermosillo', + 'America/Indiana/Indianapolis' => 'America/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'America/Indiana/Knox', + 'America/Indiana/Marengo' => 'America/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'America/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'America/Indiana/Tell City', + 'America/Indiana/Vevay' => 'America/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'America/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'America/Indiana/Winamac', + 'America/Inuvik' => 'America/Inuvik', + 'America/Iqaluit' => 'America/Iqaluit', + 'America/Jamaica' => 'America/Jamaica', + 'America/Juneau' => 'America/Juneau', + 'America/Kentucky/Louisville' => 'America/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'America/Kentucky/Monticello', + 'America/Kralendijk' => 'America/Kralendijk', + 'America/La_Paz' => 'America/La Paz', + 'America/Lima' => 'America/Lima', + 'America/Los_Angeles' => 'America/Los Angeles', + 'America/Lower_Princes' => 'America/Lower Princes', + 'America/Maceio' => 'America/Maceio', + 'America/Managua' => 'America/Managua', + 'America/Manaus' => 'America/Manaus', + 'America/Marigot' => 'America/Marigot', + 'America/Martinique' => 'America/Martinique', + 'America/Matamoros' => 'America/Matamoros', + 'America/Mazatlan' => 'America/Mazatlan', + 'America/Menominee' => 'America/Menominee', + 'America/Merida' => 'America/Merida', + 'America/Metlakatla' => 'America/Metlakatla', + 'America/Mexico_City' => 'America/Mexico City', + 'America/Miquelon' => 'America/Miquelon', + 'America/Moncton' => 'America/Moncton', + 'America/Monterrey' => 'America/Monterrey', + 'America/Montevideo' => 'America/Montevideo', + 'America/Montreal' => 'America/Montreal', + 'America/Montserrat' => 'America/Montserrat', + 'America/Nassau' => 'America/Nassau', + 'America/New_York' => 'America/New York', + 'America/Nipigon' => 'America/Nipigon', + 'America/Nome' => 'America/Nome', + 'America/Noronha' => 'America/Noronha', + 'America/North_Dakota/Beulah' => 'America/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'America/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'America/North Dakota/New Salem', + 'America/Ojinaga' => 'America/Ojinaga', + 'America/Panama' => 'America/Panama', + 'America/Pangnirtung' => 'America/Pangnirtung', + 'America/Paramaribo' => 'America/Paramaribo', + 'America/Phoenix' => 'America/Phoenix', + 'America/Port-au-Prince' => 'America/Port-au-Prince', + 'America/Port_of_Spain' => 'America/Port of Spain', + 'America/Porto_Velho' => 'America/Porto Velho', + 'America/Puerto_Rico' => 'America/Puerto Rico', + 'America/Rainy_River' => 'America/Rainy River', + 'America/Rankin_Inlet' => 'America/Rankin Inlet', + 'America/Recife' => 'America/Recife', + 'America/Regina' => 'America/Regina', + 'America/Resolute' => 'America/Resolute', + 'America/Rio_Branco' => 'America/Rio Branco', + 'America/Santa_Isabel' => 'America/Santa Isabel', + 'America/Santarem' => 'America/Santarem', + 'America/Santiago' => 'America/Santiago', + 'America/Santo_Domingo' => 'America/Santo Domingo', + 'America/Sao_Paulo' => 'America/Sao Paulo', + 'America/Scoresbysund' => 'America/Scoresbysund', + 'America/Shiprock' => 'America/Shiprock', + 'America/Sitka' => 'America/Sitka', + 'America/St_Barthelemy' => 'America/St. Barthelemy', + 'America/St_Johns' => 'America/St. Johns', + 'America/St_Kitts' => 'America/St. Kitts', + 'America/St_Lucia' => 'America/St. Lucia', + 'America/St_Thomas' => 'America/St. Thomas', + 'America/St_Vincent' => 'America/St. Vincent', + 'America/Swift_Current' => 'America/Swift Current', + 'America/Tegucigalpa' => 'America/Tegucigalpa', + 'America/Thule' => 'America/Thule', + 'America/Thunder_Bay' => 'America/Thunder Bay', + 'America/Tijuana' => 'America/Tijuana', + 'America/Toronto' => 'America/Toronto', + 'America/Tortola' => 'America/Tortola', + 'America/Vancouver' => 'America/Vancouver', + 'America/Whitehorse' => 'America/Whitehorse', + 'America/Winnipeg' => 'America/Winnipeg', + 'America/Yakutat' => 'America/Yakutat', + 'America/Yellowknife' => 'America/Yellowknife', + + 'Antarctica/Casey' => 'Antarctica/Casey', + 'Antarctica/Davis' => 'Antarctica/Davis', + 'Antarctica/DumontDUrville' => 'Antarctica/DumontDUrville', + 'Antarctica/Macquarie' => 'Antarctica/Macquarie', + 'Antarctica/Mawson' => 'Antarctica/Mawson', + 'Antarctica/McMurdo' => 'Antarctica/McMurdo', + 'Antarctica/Palmer' => 'Antarctica/Palmer', + 'Antarctica/Rothera' => 'Antarctica/Rothera', + 'Antarctica/South_Pole' => 'Antarctica/South Pole', + 'Antarctica/Syowa' => 'Antarctica/Syowa', + 'Antarctica/Vostok' => 'Antarctica/Vostok', + + 'Arctic/Longyearbyen' => 'Arctic/Longyearbyen', + + 'Asia/Aden' => 'Asia/Aden', + 'Asia/Almaty' => 'Asia/Almaty', + 'Asia/Amman' => 'Asia/Amman', + 'Asia/Anadyr' => 'Asia/Anadyr', + 'Asia/Aqtau' => 'Asia/Aqtau', + 'Asia/Aqtobe' => 'Asia/Aqtobe', + 'Asia/Ashgabat' => 'Asia/Ashgabat', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Bahrain' => 'Asia/Bahrain', + 'Asia/Baku' => 'Asia/Baku', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Beirut' => 'Asia/Beirut', + 'Asia/Bishkek' => 'Asia/Bishkek', + 'Asia/Brunei' => 'Asia/Brunei', + 'Asia/Choibalsan' => 'Asia/Choibalsan', + 'Asia/Chongqing' => 'Asia/Chongqing', + 'Asia/Colombo' => 'Asia/Colombo', + 'Asia/Damascus' => 'Asia/Damascus', + 'Asia/Dhaka' => 'Asia/Dhaka', + 'Asia/Dili' => 'Asia/Dili', + 'Asia/Dubai' => 'Asia/Dubai', + 'Asia/Dushanbe' => 'Asia/Dushanbe', + 'Asia/Gaza' => 'Asia/Gaza', + 'Asia/Harbin' => 'Asia/Harbin', + 'Asia/Hebron' => 'Asia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Asia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Asia/Hong Kong', + 'Asia/Hovd' => 'Asia/Hovd', + 'Asia/Irkutsk' => 'Asia/Irkutsk', + 'Asia/Jakarta' => 'Asia/Jakarta', + 'Asia/Jayapura' => 'Asia/Jayapura', + 'Asia/Jerusalem' => 'Asia/Jerusalem', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Kamchatka' => 'Asia/Kamchatka', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kashgar' => 'Asia/Kashgar', + 'Asia/Kathmandu' => 'Asia/Kathmandu', + 'Asia/Khandyga' => 'Asia/Khandyga', + 'Asia/Kolkata' => 'Asia/Kolkata', + 'Asia/Krasnoyarsk' => 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Asia/Kuala Lumpur', + 'Asia/Kuching' => 'Asia/Kuching', + 'Asia/Kuwait' => 'Asia/Kuwait', + 'Asia/Macau' => 'Asia/Macau', + 'Asia/Magadan' => 'Asia/Magadan', + 'Asia/Makassar' => 'Asia/Makassar', + 'Asia/Manila' => 'Asia/Manila', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Nicosia' => 'Asia/Nicosia', + 'Asia/Novokuznetsk' => 'Asia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Asia/Novosibirsk', + 'Asia/Omsk' => 'Asia/Omsk', + 'Asia/Oral' => 'Asia/Oral', + 'Asia/Phnom_Penh' => 'Asia/Phnom Penh', + 'Asia/Pontianak' => 'Asia/Pontianak', + 'Asia/Pyongyang' => 'Asia/Pyongyang', + 'Asia/Qatar' => 'Asia/Qatar', + 'Asia/Qyzylorda' => 'Asia/Qyzylorda', + 'Asia/Rangoon' => 'Asia/Rangoon', + 'Asia/Riyadh' => 'Asia/Riyadh', + 'Asia/Sakhalin' => 'Asia/Sakhalin', + 'Asia/Samarkand' => 'Asia/Samarkand', + 'Asia/Seoul' => 'Asia/Seoul', + 'Asia/Shanghai' => 'Asia/Shanghai', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Taipei' => 'Asia/Taipei', + 'Asia/Tashkent' => 'Asia/Tashkent', + 'Asia/Tbilisi' => 'Asia/Tbilisi', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Thimphu' => 'Asia/Thimphu', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Asia/Ulaanbaatar' => 'Asia/Ulaanbaatar', + 'Asia/Urumqi' => 'Asia/Urumqi', + 'Asia/Ust-Nera' => 'Asia/Ust-Nera', + 'Asia/Vientiane' => 'Asia/Vientiane', + 'Asia/Vladivostok' => 'Asia/Vladivostok', + 'Asia/Yakutsk' => 'Asia/Yakutsk', + 'Asia/Yekaterinburg' => 'Asia/Yekaterinburg', + 'Asia/Yerevan' => 'Asia/Yerevan', + + 'Atlantic/Azores' => 'Atlantic/Azores', + 'Atlantic/Bermuda' => 'Atlantic/Bermuda', + 'Atlantic/Canary' => 'Atlantic/Canary', + 'Atlantic/Cape_Verde' => 'Atlantic/Cape Verde', + 'Atlantic/Faroe' => 'Atlantic/Faroe', + 'Atlantic/Madeira' => 'Atlantic/Madeira', + 'Atlantic/Reykjavik' => 'Atlantic/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlantic/South Georgia', + 'Atlantic/St_Helena' => 'Atlantic/St. Helena', + 'Atlantic/Stanley' => 'Atlantic/Stanley', + + 'Australia/Adelaide' => 'Australia/Adelaide', + 'Australia/Brisbane' => 'Australia/Brisbane', + 'Australia/Broken_Hill' => 'Australia/Broken Hill', + 'Australia/Currie' => 'Australia/Currie', + 'Australia/Darwin' => 'Australia/Darwin', + 'Australia/Eucla' => 'Australia/Eucla', + 'Australia/Hobart' => 'Australia/Hobart', + 'Australia/Lindeman' => 'Australia/Lindeman', + 'Australia/Lord_Howe' => 'Australia/Lord Howe', + 'Australia/Melbourne' => 'Australia/Melbourne', + 'Australia/Perth' => 'Australia/Perth', + 'Australia/Sydney' => 'Australia/Sydney', + + 'Europe/Amsterdam' => 'Europe/Amsterdam', + 'Europe/Andorra' => 'Europe/Andorra', + 'Europe/Athens' => 'Europe/Athens', + 'Europe/Belgrade' => 'Europe/Belgrade', + 'Europe/Berlin' => 'Europe/Berlin', + 'Europe/Bratislava' => 'Europe/Bratislava', + 'Europe/Brussels' => 'Europe/Brussels', + 'Europe/Bucharest' => 'Europe/Bucharest', + 'Europe/Budapest' => 'Europe/Budapest', + 'Europe/Busingen' => 'Europe/Busingen', + 'Europe/Chisinau' => 'Europe/Chisinau', + 'Europe/Copenhagen' => 'Europe/Copenhagen', + 'Europe/Dublin' => 'Europe/Dublin', + 'Europe/Gibraltar' => 'Europe/Gibraltar', + 'Europe/Guernsey' => 'Europe/Guernsey', + 'Europe/Helsinki' => 'Europe/Helsinki', + 'Europe/Isle_of_Man' => 'Europe/Isle of Man', + 'Europe/Istanbul' => 'Europe/Istanbul', + 'Europe/Jersey' => 'Europe/Jersey', + 'Europe/Kaliningrad' => 'Europe/Kaliningrad', + 'Europe/Kiev' => 'Europe/Kiev', + 'Europe/Lisbon' => 'Europe/Lisbon', + 'Europe/Ljubljana' => 'Europe/Ljubljana', + 'Europe/London' => 'Europe/London', + 'Europe/Luxembourg' => 'Europe/Luxembourg', + 'Europe/Madrid' => 'Europe/Madrid', + 'Europe/Malta' => 'Europe/Malta', + 'Europe/Mariehamn' => 'Europe/Mariehamn', + 'Europe/Minsk' => 'Europe/Minsk', + 'Europe/Monaco' => 'Europe/Monaco', + 'Europe/Moscow' => 'Europe/Moscow', + 'Europe/Oslo' => 'Europe/Oslo', + 'Europe/Paris' => 'Europe/Paris', + 'Europe/Podgorica' => 'Europe/Podgorica', + 'Europe/Prague' => 'Europe/Prague', + 'Europe/Riga' => 'Europe/Riga', + 'Europe/Rome' => 'Europe/Rome', + 'Europe/Samara' => 'Europe/Samara', + 'Europe/San_Marino' => 'Europe/San Marino', + 'Europe/Sarajevo' => 'Europe/Sarajevo', + 'Europe/Simferopol' => 'Europe/Simferopol', + 'Europe/Skopje' => 'Europe/Skopje', + 'Europe/Sofia' => 'Europe/Sofia', + 'Europe/Stockholm' => 'Europe/Stockholm', + 'Europe/Tallinn' => 'Europe/Tallinn', + 'Europe/Tirane' => 'Europe/Tirane', + 'Europe/Uzhgorod' => 'Europe/Uzhgorod', + 'Europe/Vaduz' => 'Europe/Vaduz', + 'Europe/Vatican' => 'Europe/Vatican', + 'Europe/Vienna' => 'Europe/Vienna', + 'Europe/Vilnius' => 'Europe/Vilnius', + 'Europe/Volgograd' => 'Europe/Volgograd', + 'Europe/Warsaw' => 'Europe/Warsaw', + 'Europe/Zagreb' => 'Europe/Zagreb', + 'Europe/Zaporozhye' => 'Europe/Zaporozhye', + 'Europe/Zurich' => 'Europe/Zurich', + + 'Indian/Antananarivo' => 'Indian/Antananarivo', + 'Indian/Chagos' => 'Indian/Chagos', + 'Indian/Christmas' => 'Indian/Christmas', + 'Indian/Cocos' => 'Indian/Cocos', + 'Indian/Comoro' => 'Indian/Comoro', + 'Indian/Kerguelen' => 'Indian/Kerguelen', + 'Indian/Mahe' => 'Indian/Mahe', + 'Indian/Maldives' => 'Indian/Maldives', + 'Indian/Mauritius' => 'Indian/Mauritius', + 'Indian/Mayotte' => 'Indian/Mayotte', + 'Indian/Reunion' => 'Indian/Reunion', + + 'Pacific/Apia' => 'Pacific/Apia', + 'Pacific/Auckland' => 'Pacific/Auckland', + 'Pacific/Chatham' => 'Pacific/Chatham', + 'Pacific/Chuuk' => 'Pacific/Chuuk', + 'Pacific/Easter' => 'Pacific/Easter', + 'Pacific/Efate' => 'Pacific/Efate', + 'Pacific/Enderbury' => 'Pacific/Enderbury', + 'Pacific/Fakaofo' => 'Pacific/Fakaofo', + 'Pacific/Fiji' => 'Pacific/Fiji', + 'Pacific/Funafuti' => 'Pacific/Funafuti', + 'Pacific/Galapagos' => 'Pacific/Galapagos', + 'Pacific/Gambier' => 'Pacific/Gambier', + 'Pacific/Guadalcanal' => 'Pacific/Guadalcanal', + 'Pacific/Guam' => 'Pacific/Guam', + 'Pacific/Honolulu' => 'Pacific/Honolulu', + 'Pacific/Johnston' => 'Pacific/Johnston', + 'Pacific/Kiritimati' => 'Pacific/Kiritimati', + 'Pacific/Kosrae' => 'Pacific/Kosrae', + 'Pacific/Kwajalein' => 'Pacific/Kwajalein', + 'Pacific/Majuro' => 'Pacific/Majuro', + 'Pacific/Marquesas' => 'Pacific/Marquesas', + 'Pacific/Midway' => 'Pacific/Midway', + 'Pacific/Nauru' => 'Pacific/Nauru', + 'Pacific/Niue' => 'Pacific/Niue', + 'Pacific/Norfolk' => 'Pacific/Norfolk', + 'Pacific/Noumea' => 'Pacific/Noumea', + 'Pacific/Pago_Pago' => 'Pacific/Pago Pago', + 'Pacific/Palau' => 'Pacific/Palau', + 'Pacific/Pitcairn' => 'Pacific/Pitcairn', + 'Pacific/Pohnpei' => 'Pacific/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacific/Port Moresby', + 'Pacific/Rarotonga' => 'Pacific/Rarotonga', + 'Pacific/Saipan' => 'Pacific/Saipan', + 'Pacific/Tahiti' => 'Pacific/Tahiti', + 'Pacific/Tarawa' => 'Pacific/Tarawa', + 'Pacific/Tongatapu' => 'Pacific/Tongatapu', + 'Pacific/Wake' => 'Pacific/Wake', + 'Pacific/Wallis' => 'Pacific/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Ιαν 2007, 13:37', + 'd M Y H:i' => '01 Ιαν 2007 13:37', + 'M jS, \'y, H:i' => 'Ιαν 1η, \'07, 13:37', + 'D M d, Y g:i a' => 'Δευ Ιαν 01, 2007 1:37 πμ', + 'D d M Y, g:i a' => 'Δευ 01 Ιαν 2007 1:37 πμ', + 'D d M Y, H:i' => 'Δευ 01 Ιαν 2007 13:37', + 'F jS, Y, g:i a' => 'ΙανουαÏίου 1η, 2007, 1:37 πμ', + '|d M Y|, H:i' => 'ΣήμεÏα, 13:37 / 01 Ιαν 2007, 13:37', + '|F jS, Y|, g:i a' => 'ΣήμεÏα, 1:37 πμ / ΙανουαÏίου 1η, 2007, 1:37πμ' + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D M d, Y g:i a', // Mon Jan 01, 2007 1:37 pm + +)); diff --git a/includes/shared/phpbb3/language/lang_greek/index.htm b/includes/shared/phpbb3/language/lang_greek/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_greek/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_hungarian/acp/board.php b/includes/shared/phpbb3/language/lang_hungarian/acp/board.php new file mode 100644 index 00000000..0f45787d --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/acp/board.php @@ -0,0 +1,642 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +* Magyar fordítás (c) 2007-2018 „Magyar phpBB Közösség fordítókâ€, +* http://phpbb.hu +* +* $Id$ +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// Board Settings +$lang = array_merge($lang, array( + 'ACP_BOARD_SETTINGS_EXPLAIN' => 'Itt a fórumod alapvetÅ‘ működését tudod meghatározni, adhatsz neki egy hozzáillÅ‘ nevet és leírást, valamint többek között beállíthatod az alapértelmezett nyelvet és idÅ‘zónát.', + 'BOARD_INDEX_TEXT' => 'Fórum kezdÅ‘lap megnevezése', + 'BOARD_INDEX_TEXT_EXPLAIN' => 'Ez a szöveg lesz megjelenítve a navigációs sávban a fórum kezdÅ‘lapjaként. Ha nincs megadva, “Fórum kezdÅ‘lap†lesz.', + 'BOARD_STYLE' => 'Fórum megjelenés', + 'CUSTOM_DATEFORMAT' => 'Egyéni…', + 'DEFAULT_DATE_FORMAT' => 'Dátum formátum', + 'DEFAULT_DATE_FORMAT_EXPLAIN' => 'A formátum megegyezik a PHP date függvényéjével.', + 'DEFAULT_LANGUAGE' => 'Alapértelmezett nyelv', + 'DEFAULT_STYLE' => 'Alapértelmezett megjelenés', + 'DEFAULT_STYLE_EXPLAIN' => 'Az új felhasználók megjelenése.', + 'DISABLE_BOARD' => 'Fórum kikapcsolása', + 'DISABLE_BOARD_EXPLAIN' => 'Ennek igenre állításával a fórum nem lesz elérhetÅ‘ azon felhasználók számára, akik nem adminisztrátorok vagy moderátorok. Egy rövid üzenetet is megadhatsz (legfeljebb 255 karakter), mely meg fog jelenni a felhasználóknak.', + 'DISPLAY_LAST_SUBJECT' => 'Utolsó hozzászólás témájának megjelenítése a fórumok listáján', + 'DISPLAY_LAST_SUBJECT_EXPLAIN' => 'Az utoljára beküldött hozzászólás témája megjelenítésre kerül a fórumok listáján egy a hozzászólásra mutató hivatkozással. Azok a hozzászólások, amelyek jelszóval védett vagy olyan fórumokban keletkeztek, amelyekre a felhasználónak nincs jogosultsága nem kerülnek megjelenítésre.', + 'GUEST_STYLE' => 'Vendég megjelenés', + 'GUEST_STYLE_EXPLAIN' => 'A vendégek által használt megjelenés.', //? használt? + 'OVERRIDE_STYLE' => 'Felhasználó megjelenésének felülírása', + 'OVERRIDE_STYLE_EXPLAIN' => 'Kicseréli a felhasználó (és a vendég) megjelenését az alapértelmezettre.', + 'SITE_DESC' => 'Oldal leírása', + 'SITE_HOME_TEXT' => 'Honlap megnevezése', + 'SITE_HOME_TEXT_EXPLAIN' => 'Ez a szöveg lesz megjelenítve a navigációs útvonalban honlapként. Ha nincs megadva, “KezdÅ‘lap†lesz.', + 'SITE_HOME_URL' => 'Honlap URL-je', + 'SITE_HOME_URL_EXPLAIN' => 'Ha meg van adva, egy erre a címre mutató link lesz elhelyezve a navigációs sávban és a fórum logója is ide fog mutatni a fórum kezdÅ‘lapja helyett. Egy teljes URL-t kell megadnod, pl. http://www.phpbb.com.', //??? + 'SITE_NAME' => 'Oldal neve', + 'SYSTEM_TIMEZONE' => 'Rendszer idÅ‘zóna', + 'SYSTEM_TIMEZONE_EXPLAIN' => 'A nem belépett felhasználók (vendégek, robotok) ezen idÅ‘zóna szerint fogják látni az idÅ‘pontokat. A belépett felhasználók a regisztráció során állítják be az idÅ‘zónájukat, és késÅ‘bb ezt a felhasználói vezérlÅ‘pultban tudják módosítani.', + 'WARNINGS_EXPIRE' => 'Figyelmeztetés idÅ‘tartama', + 'WARNINGS_EXPIRE_EXPLAIN' => 'Ennyi nap elteltével jár le a felhasználó figyelmeztetése. Ãllítsd 0-ra, hogy ne járjon le a figyelmeztetés.', +)); + +// Board Features +$lang = array_merge($lang, array( + 'ACP_BOARD_FEATURES_EXPLAIN' => 'Itt ki- illetve bekapcsolhatod a fórum különbözÅ‘ funkcióit.', + + // Nem lenne jobb a bekapcsolás jobb az engedélyezés helyett? + 'ALLOW_ATTACHMENTS' => 'Csatolmányok engedélyezése', + 'ALLOW_BIRTHDAYS' => 'Születésnapok engedélyezése', + 'ALLOW_BIRTHDAYS_EXPLAIN' => 'A születésnapok megadási és a profilban való megjelenési lehetÅ‘ségének engedélyezése. Kérjük, vedd figyelembe, hogy a születésnaposok fÅ‘oldalon való megjelenítését a terhelés beállításoknál tudod be- ill. kikapcsolni.', + 'ALLOW_BOOKMARKS' => 'Kedvencek engedélyezése', + 'ALLOW_BOOKMARKS_EXPLAIN' => 'A felhasználó eltárolhatja a kedvenc témáit.', + 'ALLOW_BBCODE' => 'BBCode engedélyezése', + 'ALLOW_FORUM_NOTIFY' => 'Fórumokra való feliratkozás engedélyezése', + 'ALLOW_NAME_CHANGE' => 'Felhasználónév-váltás engedélyezése', + 'ALLOW_NO_CENSORS' => 'Szócenzúra kikapcsolásának engedélyezése', + 'ALLOW_NO_CENSORS_EXPLAIN' => 'A felhasználók ha, szeretnék, kikapcsolhatják az automatikus szócenzúrát a hozzászólásokban és a privát üzenetekben.', + 'ALLOW_PM_ATTACHMENTS' => 'Csatolmányok engedélyezése privát üzenetekben', + 'ALLOW_PM_REPORT' => 'Privát üzenetek jelentésének engedélyezése a felhasználóknak', + 'ALLOW_PM_REPORT_EXPLAIN' => 'Ha ez a lehetÅ‘ség engedélyezve van, a felhasználók jelenthetik a fórum moderátorainak a nekik, ill. az általuk küldött privát üzeneteket. Ezek a privát üzenetek aztán láthatóak lesznek a moderátori vezérlÅ‘pultban.', + 'ALLOW_QUICK_REPLY' => 'Gyors válasz engedélyezése', + 'ALLOW_QUICK_REPLY_EXPLAIN' => 'Itt ki tudod kapcsolni a gyors válasz funkciót a teljes fórumon. Ha engedélyezve van, a fórum specifikus beállítások fogják megállapítani, hogy az egyes fórumokban megjelenik-e a gyors válasz doboz.', + 'ALLOW_QUICK_REPLY_BUTTON' => 'Elküldés és a gyors válasz engedélyezése az összes fórumban', + 'ALLOW_SIG' => 'Aláírás engedélyezése', + 'ALLOW_SIG_BBCODE' => 'BBCode engedélyezése aláírásban', + 'ALLOW_SIG_FLASH' => '[FLASH] BBCode címke használatának engedélyezése aláírásban', + 'ALLOW_SIG_IMG' => '[IMG] BBCode címke használatának engedélyezése aláírásban', + 'ALLOW_SIG_LINKS' => 'Linkek használatának engedélyezése aláírásban', + 'ALLOW_SIG_LINKS_EXPLAIN' => 'Ha nem engedélyezett, az [URL] BBCode címke nem használható, és az automatikus linkké alakítás ki van kapcsolva.', + 'ALLOW_SIG_SMILIES' => 'Emotikonok használatának engedélyezése az aláírásban', + 'ALLOW_SMILIES' => 'Emotikonok engedélyezése', + 'ALLOW_TOPIC_NOTIFY' => 'Témákra való feliratkozás engedélyezése', + 'BOARD_PM' => 'Privát üzenetek bekapcsolása', + 'BOARD_PM_EXPLAIN' => 'A privát üzenetküldÅ‘ rendszer bekapcsolása az összes felhasználó számára.', + 'ALLOW_BOARD_NOTIFICATIONS' => 'Értesítések engedélyezése', +)); + +// Avatar Settings +$lang = array_merge($lang, array( + 'ACP_AVATAR_SETTINGS_EXPLAIN' => 'Az avatarok általánosan kis, egyedi képek, melyeket a felhasználók magukhoz társítanak. A témák megtekintésénél általában a felhasználónév alatt jelennek meg a használt megjelenéstÅ‘l függÅ‘en. Ezen az oldalon meghatározhatod, hogy a felhasználók milyen módon adhatják meg az avatarukat. Kérjük, vedd figyelembe, hogy az avatarok feltöltésének működéséhez az alább megadott könyvtárnak léteznie kell, és meg kell gyÅ‘zÅ‘dnöd róla, hogy írható a webszerver által. Kérjük, azt is vedd figyelembe, hogy a maximális állomány méretek csak a feltöltött avatarokra vonatkoznak, a kívülrÅ‘l linkeltekre nem.', + + 'ALLOW_AVATARS' => 'Avatarok bekapcsolása', + 'ALLOW_AVATARS_EXPLAIN' => 'Avatarok használatának engedélyezése általánosságban.
    Amikor kikapcsolod az avatar funkciót vagy az egyes módon feltöltött avatar képeket, az érintett avatarok nem jelennek meg többet, de a felhasználók továbbra is le tudják tölteni a saját avatarukat a felhasználói vezérlőpultból.', + 'ALLOW_GRAVATAR' => 'Gravatar avatarok engedélyezése', + 'ALLOW_LOCAL' => 'Avatar galéria bekapcsolása', + 'ALLOW_REMOTE' => 'Külső avatarok engedélyezése', + 'ALLOW_REMOTE_EXPLAIN' => 'Olyan avatarok, melyek egy másik weboldalról vannak linkelve.', + 'ALLOW_REMOTE_UPLOAD' => 'Avatar feltöltésének engedélyezése külső helyről', + 'ALLOW_REMOTE_UPLOAD_EXPLAIN' => 'Lehetővé teszi avatar feltöltését egy másik weboldalról.', + 'ALLOW_UPLOAD' => 'Avatarfeltöltés engedélyezése', + 'AVATAR_GALLERY_PATH' => 'Avatar galéria elérési út', + 'AVATAR_GALLERY_PATH_EXPLAIN' => 'A phpBB-d gyökérkönyvtárától viszonyított elérési út az előre feltöltött képekhez, pl. images/avatars/gallery.
    Az elérési útban található dupla pontok (../) biztonsági okokból eltávolításra kerülnek.', + 'AVATAR_STORAGE_PATH' => 'Avatarok tárolási helyének elérési útja', + 'AVATAR_STORAGE_PATH_EXPLAIN' => 'A phpBB-d gyökérkönyvtárától viszonyított elérési út, pl. images/avatars/upload.
    Az avatar feltöltési lehetőség nem lesz elérhető, ha ez az elérési út nem írható.
    Az elérési útban található dupla pontok (../) biztonsági okokból eltávolításra kerülnek.', + 'MAX_AVATAR_SIZE' => 'Maximum avatar méret', + 'MAX_AVATAR_SIZE_EXPLAIN' => 'Szélesség x magasság pixelben.', + 'MAX_FILESIZE' => 'Maximum avatar állomány méret', + 'MAX_FILESIZE_EXPLAIN' => 'Csak a feltöltött avatarokra vonatkozik. A 0 érték megadásakor csak a PHP beállítások korlátoznak.', + 'MIN_AVATAR_SIZE' => 'Minimum avatar méret', + 'MIN_AVATAR_SIZE_EXPLAIN' => 'Szélesség x magasság pixelben.', +)); + +// Message Settings +$lang = array_merge($lang, array( + 'ACP_MESSAGE_SETTINGS_EXPLAIN' => 'Ezen az oldalon a privát üzenetekkel kapcsolatos beállításokat adhatod meg.', + + 'ALLOW_BBCODE_PM' => 'BBCode engedélyezése privát üzenetben', + 'ALLOW_FLASH_PM' => '[FLASH] BBCode címke használatának engedélyezése', + 'ALLOW_FLASH_PM_EXPLAIN' => 'Kérjük vedd figyelembe, hogy ha igenre van állítva, a beállítás még a jogosultságoktól is függ.', + 'ALLOW_FORWARD_PM' => 'Privát üzenetek továbbküldésének engedélyezése', + 'ALLOW_IMG_PM' => '[IMG] BBCode címke használatának engedélyezése', + 'ALLOW_MASS_PM' => 'Privát üzenet küldésének engedélyezése egyszerre több felhasználónak és csoportnak', + 'ALLOW_MASS_PM_EXPLAIN' => 'A csoport beállítások oldalon külön-külön meghatározható, hogy az adott csoportnak lehet-e küldeni.', + 'ALLOW_PRINT_PM' => 'Privát üzenetek nyomtatóbarát verziójának engedélyezése', + 'ALLOW_QUOTE_PM' => 'Idézetek engedélyezése privát üzenetekben', + 'ALLOW_SIG_PM' => 'Aláírás engedélyezése privát üzenetekhez', + 'ALLOW_SMILIES_PM' => 'Emotikonok engedélyezése privát üzenetekben', + 'BOXES_LIMIT' => 'Maximum privát üzenetek száma mappánként', + 'BOXES_LIMIT_EXPLAIN' => 'A felhasználók legfeljebb ennyi privát üzenetet kaphatnak az egyes mappájukba. Ãllítsd 0-ra, hogy ne legyen korlát.', + 'BOXES_MAX' => 'Maximum privát üzenet mappák száma', + 'BOXES_MAX_EXPLAIN' => 'Alapból a felhasználók ennyi személyes mappát hozhatnak létre a privát üzeneteiknek.', + 'ENABLE_PM_ICONS' => 'Téma ikonok használatának engedélyezése privát üzenetekben', + 'FULL_FOLDER_ACTION' => 'Alapértelmezett művelet egy mappa megtelése esetén', + 'FULL_FOLDER_ACTION_EXPLAIN'=> 'Ez a művelet kerül elvégzésre, ha egy mappa megtelik, és a felhasználó beállítása – ha egyáltalán megadta – nem alkalmazható. Az egyedüli kivétel az „Elküldött üzenetek†mappa, ahol mindig a régi üzenetek törlése az alapértelmezett.', + 'HOLD_NEW_MESSAGES' => 'Új üzenetek visszatartása', + 'PM_EDIT_TIME' => 'Szerkesztés idejének korlátozása', + 'PM_EDIT_TIME_EXPLAIN' => 'Korlátozza, hogy mennyi ideig lehet szerkeszteni a még nem kézbesített privát üzeneteket. A 0 érték megadásával kikapcsolható ez a viselkedés.', //? + 'PM_MAX_RECIPIENTS' => 'Engedélyezett címzettek maximum száma', + 'PM_MAX_RECIPIENTS_EXPLAIN' => 'Egy privát üzenetnek legfeljebb ennyi címzettje lehet. Ha 0-t adsz meg, nem lesz korlátozás. A beállítás a csoport beállítások oldalon csoportonként megváltoztatható.', +)); + +// Post Settings +$lang = array_merge($lang, array( + 'ACP_POST_SETTINGS_EXPLAIN' => 'Itt a hozzászólásküldéssel kapcsolatos beállításokat adhatod meg.', + 'ALLOW_POST_LINKS' => 'Linkek engedélyezése hozzászólásokban ill. privát üzenetekben', + 'ALLOW_POST_LINKS_EXPLAIN' => 'Ha nem engedélyezett, az [URL] BBCode címke nem használható, és az automatikus linkké alakítás ki van kapcsolva.', + 'ALLOWED_SCHEMES_LINKS' => 'Engedélyezett sémák a linkekben', + 'ALLOWED_SCHEMES_LINKS_EXPLAIN' => 'A felhasználók csak olyan URL-eket használhatnak, amik séma nélküliek vagy szerepelnek a vesszÅ‘vel elválasztott felsorolásban.', + 'ALLOW_POST_FLASH' => '[FLASH] BBCode címke használatának engedélyezése hozzászólásokban', + 'ALLOW_POST_FLASH_EXPLAIN' => 'Ha nem engedélyezett, a [FLASH] címke nem használható a hozzászólásokban. Máskülönben a jogosultságoktól függ, használható-e a [FLASH] BBCode címke.', + + 'BUMP_INTERVAL' => 'ElÅ‘reugrasztás idÅ‘köz', //? + 'BUMP_INTERVAL_EXPLAIN' => 'Az utolsó hozzászólás után ennyi idÅ‘ múlva lehet elÅ‘reugrasztani egy témát. A 0 érték teljesen kikapcsolja a téma elÅ‘reugrasztás funkciót.', + 'CHAR_LIMIT' => 'Hozzászólásonkénti maximum karakterszám', + 'CHAR_LIMIT_EXPLAIN' => 'Hány karakter engedélyezett egy hozzászólásban. Ãllítsd 0-ra a korlátozás megszüntetéséhez.', + 'DELETE_TIME' => 'Törlési idÅ‘korlát', + 'DELETE_TIME_EXPLAIN' => 'Korlátozza, hogy az elküldés után mennyi ideig lehet törölni a hozzászólást. 0 érték megadásával a korlátozás kikapcsolható.', + 'DISPLAY_LAST_EDITED' => 'Utolsó szerkesztés információk megjelenítése', + 'DISPLAY_LAST_EDITED_EXPLAIN' => 'Megjelenjen-e egy hozzászólásnál, hogy ki és mikor szerkesztette utoljára.', + 'EDIT_TIME' => 'Szerkesztési idÅ‘korlát', + 'EDIT_TIME_EXPLAIN' => 'Korlátozza, hogy az elküldés után mennyi ideig lehet szerkeszteni a hozzászólást. 0 érték megadásával a korlátozás kikapcsolható.', + 'FLOOD_INTERVAL' => 'Flood idÅ‘köz', //? + 'FLOOD_INTERVAL_EXPLAIN' => 'Ennyi másodpercet kell várnia a felhasználónak két hozzászólás elküldése között. A jogosultságok segítségével beállíthatod, hogy bizonyos felhasználókra ez ne vonatkozzon.', + 'HOT_THRESHOLD' => 'Népszerűségi küszöb', + 'HOT_THRESHOLD_EXPLAIN' => 'A legalább ennyi hozzászólást tartalmazó témák kerülnek népszerűként megjelölésre. A népszerű témák funkció kikapcsolásához állítsd ezt az értéket 0-ra.', + 'MAX_POLL_OPTIONS' => 'Maximum választási lehetÅ‘ségek száma szavazásoknál', + 'MAX_POST_FONT_SIZE' => 'Maximum betűméret egy hozzászólásban', + 'MAX_POST_FONT_SIZE_EXPLAIN' => 'Maximum betűméret, ami megengedett a hozzászólásokban. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MAX_POST_IMG_HEIGHT' => 'Maximum képmagasság egy hozzászólásban', + 'MAX_POST_IMG_HEIGHT_EXPLAIN' => 'Legfeljebb ilyen magas lehet egy kép/flash állomány. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MAX_POST_IMG_WIDTH' => 'Maximum képszélesség egy hozzászólásban', + 'MAX_POST_IMG_WIDTH_EXPLAIN' => 'Legfeljebb ilyen széles lehet egy kép/flash állomány. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MAX_POST_URLS' => 'Maximum linkszám egy hozzászólásban', + 'MAX_POST_URLS_EXPLAIN' => 'Legfeljebb ennyi URL-t tartalmazhat egy hozzászólás. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MIN_CHAR_LIMIT' => 'Hozzászólás/privát üzenet minimum hossza', + 'MIN_CHAR_LIMIT_EXPLAIN' => 'A felhasználók csak legalább ennyi karakterbÅ‘l álló hozzászólást, ill. privát üzenetet küldhetnek. A minimális megadható érték 1.', //? 'A felhasználók nem küldhetnek ennél kevesebb karaktert tartalmazó hozzászólást, ill. privát üzenetet.' + 'POSTING' => 'Hozzászólásküldés', + 'POSTS_PER_PAGE' => 'Hozzászólások száma oldalanként', + 'QUOTE_DEPTH_LIMIT' => 'Maximum egymásba ágyazott idézet egy hozzászólásban', + 'QUOTE_DEPTH_LIMIT_EXPLAIN' => 'Legfeljebb ennyi idézet lehet egymásba ágyazva egy hozzászólásban. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'SMILIES_LIMIT' => 'Maximum emotikonszám egy hozzászólásban', + 'SMILIES_LIMIT_EXPLAIN' => 'Legfeljebb ennyi emotikont tartalmazhat egy hozzászólás. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'SMILIES_PER_PAGE' => 'Egy oldalon megjelenítendÅ‘ emotikonok száma', //? 'Emotikonok oldalanként' + 'TOPICS_PER_PAGE' => 'Témák száma oldalanként', +)); + +// Signature Settings +$lang = array_merge($lang, array( + 'ACP_SIGNATURE_SETTINGS_EXPLAIN' => 'Itt az aláírással kapcsolatos beállításokat adhatod meg.', + + 'MAX_SIG_FONT_SIZE' => 'Maximum betűméret az aláírásban', + 'MAX_SIG_FONT_SIZE_EXPLAIN' => 'Legfeljebb ekkora betűméret használata engedélyezett az aláírásban. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MAX_SIG_IMG_HEIGHT' => 'Maximum képmagasság az aláírásban', + 'MAX_SIG_IMG_HEIGHT_EXPLAIN' => 'Legfeljebb ilyen magas kép/flash állomány engedélyezett az aláírásban. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MAX_SIG_IMG_WIDTH' => 'Maximum képszélesség az aláírásban', + 'MAX_SIG_IMG_WIDTH_EXPLAIN' => 'Legfeljebb ilyen széles kép/flash állomány engedélyezett az aláírásban. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MAX_SIG_LENGTH' => 'Maximum aláírás hossz', + 'MAX_SIG_LENGTH_EXPLAIN' => 'Legfeljebb ennyi karaktert tartalmazhat az aláírás.', + 'MAX_SIG_SMILIES' => 'Maximum emotikonszám az aláírásban', + 'MAX_SIG_SMILIES_EXPLAIN' => 'Legfeljebb ennyi emotikon engedélyezett az aláírásban. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'MAX_SIG_URLS' => 'Maximum linkszám az aláírásban', + 'MAX_SIG_URLS_EXPLAIN' => 'Legfeljebb ennyi link engedélyezett az aláírásban. Ãllítsd 0-ra, hogy ne legyen korlátozás.', +)); + +// Registration Settings +$lang = array_merge($lang, array( + 'ACP_REGISTER_SETTINGS_EXPLAIN' => 'Itt a regisztrációval és a profillal kapcsolatos beállításokat adhatsz meg.', + + 'ACC_ACTIVATION' => 'Azonosító aktiválása', + 'ACC_ACTIVATION_EXPLAIN' => 'Ez dönti el, hogy a felhasználók azonnal hozzáférnek-e a fórumhoz, vagy megerÅ‘sítés szükséges. A regisztrálás lehetÅ‘ségét teljesen ki is kapcsolhatod. A felhasználói vagy adminisztrátori aktiválás használatához a fórum e-mail küldés funkciójának engedélyezve kell lennie.', + 'ACC_ACTIVATION_WARNING' => 'Kérjük, vedd figyelembe, hogy a jelenleg kiválasztott azonosító aktiválási módhoz az e-mail küldésnek engedélyezve kell lennie, egyébként a regisztrálás lehetÅ‘sége le lesz tiltva. Javasoljuk, hogy válassz másik aktiválási módot vagy engedélyezd újra az e-mail küldést.', + 'NEW_MEMBER_POST_LIMIT' => 'Új tag hozzászólás határ', + 'NEW_MEMBER_POST_LIMIT_EXPLAIN' => 'Az új tagok az Újonnan regisztrált felhasználók csoportba kerülnek, amíg el nem érik az itt megadott hozzászólásszámot. Ennek a csoportnak a segítségével például meggátolhatod számukra privát üzenetek küldését, vagy moderátori jóváhagyáshoz kötheted a hozzászólásaikat. A 0 érték kikapcsolja ezt a funkciót.', + 'NEW_MEMBER_GROUP_DEFAULT' => 'Újonnan regisztrált felhasználók csoport elsÅ‘dlegessé tétele', + 'NEW_MEMBER_GROUP_DEFAULT_EXPLAIN' => 'Ha igent adsz meg, és az új tag hozzászólás határ is be van állítva, az újonnan regisztrált felhasználók nemcsak bekerülnek az Újonnan regisztrált felhasználók csoportba, de ez lesz az elsÅ‘dleges csoportjuk is. Ez hasznos lehet, ha meg szeretnél adni egy alapértelmezett csoport rangot és/vagy avatart, amit aztán a felhasználók örökölnek.', + + 'ACC_ADMIN' => 'Adminisztrátori', + 'ACC_DISABLE' => 'Regisztráció kikapcsolása', + 'ACC_NONE' => 'Nincs (azonnal bejelentkezhet)', + 'ACC_USER' => 'Felhasználói (e-mail megerÅ‘sítés)', +// 'ACC_USER_ADMIN' => 'Felhasználói + adminisztrátori', + 'ALLOW_EMAIL_REUSE' => 'E-mail címek újrahasználásának engedélyezése', + 'ALLOW_EMAIL_REUSE_EXPLAIN' => 'Több felhasználó is regisztrálhat ugyanazzal az e-mail címmel.', + 'COPPA' => 'COPPA', + 'COPPA_FAX' => 'COPPA fax szám', + 'COPPA_MAIL' => 'COPPA postai cím', + 'COPPA_MAIL_EXPLAIN' => 'Erre a címre küldik a szülÅ‘k a COPPA regisztrációs nyilatkozatot.', + 'ENABLE_COPPA' => 'COPPA engedélyezése', + 'ENABLE_COPPA_EXPLAIN' => 'A felhasználóknak nyilatkozniuk kell, hogy 13 év fölött vannak-e az amerikai COPPA törvény miatt. Más országokban nem szükséges bekapcsolni. Ha ki van kapcsolva, a COPPA-val kapcsolatos csoportok sem jelennek meg.', + 'MAX_CHARS' => 'legfeljebb', + 'MIN_CHARS' => 'legalább', + 'NO_AUTH_PLUGIN' => 'Nem található megfelelÅ‘ azonosítási bÅ‘vítmény.', + 'PASSWORD_LENGTH' => 'Jelszó hossza', + 'PASSWORD_LENGTH_EXPLAIN' => 'Minimum illetve maximum mennyi karakterbÅ‘l állhat a jelszó.', + 'REG_LIMIT' => 'Regisztrációs kísérletek', + 'REG_LIMIT_EXPLAIN' => 'Legfeljebb ennyi kísérletet tehet a felhasználó az anti-robot feladat megoldására, mielÅ‘tt ki lenne zárva arra a munkamenetre.', + 'USERNAME_ALPHA_ONLY' => 'Csak alfanumerikus', + 'USERNAME_ALPHA_SPACERS' => 'Alfanumerikus és térköz', + 'USERNAME_ASCII' => 'ASCII (nincsenek nemzetközi unicode karakterek)', + 'USERNAME_LETTER_NUM' => 'Bármilyen betű és szám', + 'USERNAME_LETTER_NUM_SPACERS' => 'Bármilyen betű, szám és térköz', + 'USERNAME_CHARS' => 'Felhasználónév karaktereinek korlátozása', + 'USERNAME_CHARS_ANY' => 'Bármilyen karakter', + 'USERNAME_CHARS_EXPLAIN' => 'A felhasználónévben használható karakterek típusának korlátozása; a térköz karakterek a következÅ‘k: szóköz, -, +, _, [ és ].', + 'USERNAME_LENGTH' => 'Felhasználónév hossza', + 'USERNAME_LENGTH_EXPLAIN' => 'Minimum illetve maximum mennyi karakterbÅ‘l állhat a felhasználónév.', +)); + +// Feeds +$lang = array_merge($lang, array( + 'ACP_FEED_MANAGEMENT' => 'Ãltalános ATOM csatorna beállítások', + 'ACP_FEED_MANAGEMENT_EXPLAIN' => 'Ez a modul különbözÅ‘ ATOM csatornákat tesz elérhetÅ‘vé. A hozzászólások BBCode-ja is feldolgozásra kerül, hogy a hozzászólások a külsÅ‘ olvasókban is úgy jelenjenek meg, mint egyébként.', + + 'ACP_FEED_GENERAL' => 'Ãltalános csatorna beállítások', + 'ACP_FEED_POST_BASED' => 'Hozzászólás csatorna beállítások', + 'ACP_FEED_TOPIC_BASED' => 'Téma csatorna beállítások', + 'ACP_FEED_SETTINGS_OTHER' => 'Más csatornák és beállítások', + + 'ACP_FEED_ENABLE' => 'Csatornák bekapcsolása', + 'ACP_FEED_ENABLE_EXPLAIN' => 'Az ATOM csatornák be- vagy kikapcsolása az egész fórumon.
    Ha kikapcsolod, az alábbi beállításoktól függetlenül, az összes csatorna kikapcsolásra kerül.', + 'ACP_FEED_LIMIT' => 'Bejegyzések száma', + 'ACP_FEED_LIMIT_EXPLAIN' => 'Legfeljebb ennyi bejegyzés kerül megjelenítésre a csatornákban.', + +/* 'ACP_FEED_OVERALL_FORUMS' => 'Fórum összesító csatorna bekapcsolása', //? "Enable overall forums feed" overall - összesítő? + 'ACP_FEED_OVERALL_FORUMS_EXPLAIN' => 'Ez a csatorna a legújabb hozzászólásokat jeleníti meg a fórum összes témájából.', + 'ACP_FEED_OVERALL_FORUMS_LIMIT' => 'Megjelenítendő bejegyzések száma oldalanként a fórumok csatorában', + + 'ACP_FEED_OVERALL_TOPIC' => 'Téma összesítő csatorna bekapcsolása', //? + 'ACP_FEED_OVERALL_TOPIC_EXPLAIN' => 'Bekapcsolja az „Összes téma†csatornát', + 'ACP_FEED_OVERALL_TOPIC_LIMIT' => 'Megjelenítendő bejegyzések száma oldalanként a témák csatorában',*/ + 'ACP_FEED_OVERALL' => 'Globális fórum csatorna bekapcsolása', + 'ACP_FEED_OVERALL_EXPLAIN' => 'Új hozzászólások az összes fórumból.', + 'ACP_FEED_FORUM' => 'Fórumonkénti csatornák bekapcsolása', + 'ACP_FEED_FORUM_EXPLAIN' => 'Az egyes fórumok új hozzászólásai a saját csatornájukban.', + 'ACP_FEED_TOPIC' => 'Témánkénti csatornák bekapcsolása', + 'ACP_FEED_TOPIC_EXPLAIN' => 'Az egyes témák új hozzászólásai a saját csatornájukban.', + + 'ACP_FEED_TOPICS_NEW' => 'Új témák csatorna bekapcsolása', + 'ACP_FEED_TOPICS_NEW_EXPLAIN' => 'Bekapcsolja az „Új témák†csatornát, amely az újonnan létrehozott témákat jeleníti meg az első hozzászólásukkal együtt.', + 'ACP_FEED_TOPICS_ACTIVE' => 'Aktív témák csatorna bekapcsolása', + 'ACP_FEED_TOPICS_ACTIVE_EXPLAIN' => 'Bekapcsolja az „Aktív témák†csatornát, amely az utoljára aktív témákat jeleníti meg az utolsó hozzászólásukkal együtt.', + 'ACP_FEED_NEWS' => 'Hírcsatorna', + 'ACP_FEED_NEWS_EXPLAIN' => 'A hírcsatorna ezen fórumok első hozzászólásait jeleníti meg. Ha ki szeretnéd kapcsolni, ne válassz ki egy fórumot se.
    Több fórumot a CTRL gomb nyomvatartásával tudsz kiválasztani.', + + 'ACP_FEED_OVERALL_FORUMS' => 'Fórum csatorna bekapcsolása', + 'ACP_FEED_OVERALL_FORUMS_EXPLAIN' => 'Bekapcsolja az „Összes fórum†csatornát, amely a fórumok listáját jeleníti meg..', + + 'ACP_FEED_HTTP_AUTH' => 'HTTP azonosítás engedélyezése', + 'ACP_FEED_HTTP_AUTH_EXPLAIN' => 'Engedélyezi a HTTP azonosítást, aminek segítségével a felhasználók a vendég felhasználók elől elzárt tartalmakhoz is hozzáférnek, ha a csatorna URL-jét kiegészítik a auth=http paraméterrel. Kérjük, vedd figyelembe, hogy egyes PHP környezetekben további változtatásokat kell elvégezni a .htaccess állományban. A teendők megtalálhatóak ebben az állományban.', + 'ACP_FEED_ITEM_STATISTICS' => 'Bejegyzés statisztikák', + 'ACP_FEED_ITEM_STATISTICS_EXPLAIN' => 'Különböző statisztikai adatokat jelenít meg a csatorna bejegyzései alatt.
    (Például szerző, dátum, válaszok száma, megtekintések száma)', + 'ACP_FEED_EXCLUDE_ID' => 'Kizárandó fórumok', + 'ACP_FEED_EXCLUDE_ID_EXPLAIN' => 'Ezen fórumok tartalma nem kerül megjelenítésre a csatornákban.
    Több fórumot kijelölni, illetve a kijelölést megszüntetni a CTRL gomb nyomvatartásával lehet.', +)); + +// Visual Confirmation Settings +$lang = array_merge($lang, array( + 'ACP_VC_SETTINGS_EXPLAIN' => 'Itt az anti-robot bÅ‘vítményeket tudod kezelni, melyek különbözÅ‘ módokon próbálják megakadályozni az ún. spamrobotok regisztrációját. Ezek a bÅ‘vítmények általában egy olyan feladat megoldását követelik meg a felhasználótól, melyek a robotok számára nehezek.', + 'ACP_VC_EXT_GET_MORE' => 'További anti-robot bÅ‘vítményekért látogasd meg a phpBB.com Extensions Database-t. A SPAM megelÅ‘zésével kapcsolatos további információkért látogasd meg a phpBB.com Knowledge Base-t.', //? + 'AVAILABLE_CAPTCHAS' => 'ElérhetÅ‘ bÅ‘vítmények', + 'CAPTCHA_UNAVAILABLE' => 'Ezt a bÅ‘vítményt nem lehet kiválasztani, mivel a működéséhez szükséges követelmények nem teljesülnek.', + 'CAPTCHA_GD' => 'GD kép', + 'CAPTCHA_GD_3D' => 'GD 3D kép', + 'CAPTCHA_GD_FOREGROUND_NOISE' => 'ElÅ‘téri zaj', + 'CAPTCHA_GD_EXPLAIN' => 'A GD-vel jobb anti-robot kép állítható elÅ‘.', + 'CAPTCHA_GD_FOREGROUND_NOISE_EXPLAIN' => 'Az elÅ‘téri zajosítás használatával nehezebben olvashatóvá lehet tenni a képet.', + 'CAPTCHA_GD_X_GRID' => 'Hátteri x-tengely zaj', + 'CAPTCHA_GD_X_GRID_EXPLAIN' => 'A kisebb értékek nehezebben olvashatóvá teszik a képet. A 0 kikapcsolja az x-tengelyi zajosítást.', + 'CAPTCHA_GD_Y_GRID' => 'Hátteri y-tengely zaj', + 'CAPTCHA_GD_Y_GRID_EXPLAIN' => 'A kisebb értékek nehezebben olvashatóvá teszik a képet. A 0 kikapcsolja az y-tengelyi zajosítást.', + 'CAPTCHA_GD_WAVE' => 'Hullámtorzítás', + 'CAPTCHA_GD_WAVE_EXPLAIN' => 'Ez a beállítás hullámszerűen eltorzítja a képet.', + 'CAPTCHA_GD_3D_NOISE' => '3D zajosítás', + 'CAPTCHA_GD_3D_NOISE_EXPLAIN' => 'A betűk fölé plusz 3D-s objektumok kerülnek.', + 'CAPTCHA_GD_FONTS' => 'KülönbözÅ‘ betűtípusok használata', + 'CAPTCHA_GD_FONTS_EXPLAIN' => 'Itt megadhatod, mennyi különbÅ‘zÅ‘ betűforma legyen használva. Használhatod csak az alap formákat, vagy bevezethetsz módosított betűket, illetve a kisbetűket is beállíthatod.', //? + 'CAPTCHA_FONT_DEFAULT' => 'Alap', + 'CAPTCHA_FONT_NEW' => 'Új formák', + 'CAPTCHA_FONT_LOWER' => 'Kisbetűk is', + 'CAPTCHA_NO_GD' => 'Egyszerű kép', + 'CAPTCHA_PREVIEW_MSG' => 'A beállításaid nem kerültek elmentésre, ez csak egy elÅ‘nézet.', + 'CAPTCHA_PREVIEW_EXPLAIN' => 'Ãgy nézne ki a bÅ‘vítmény a jelenlegi beállításokkal.', + + 'CAPTCHA_SELECT' => 'Telepített bÅ‘vítmények', + 'CAPTCHA_SELECT_EXPLAIN' => 'A legördülÅ‘ menü tartalmazza a fórum által felismert bÅ‘vítményeket. A szürkével írottak jelenleg nem érhetÅ‘ek el, és a használatba vételük elÅ‘tt lehet, hogy konfigurálni kell Å‘ket.', + 'CAPTCHA_CONFIGURE' => 'BÅ‘vítmények konfigurálása', + 'CAPTCHA_CONFIGURE_EXPLAIN' => 'A kiválasztott bÅ‘vítmény beállításainak megváltoztatása.', + 'CONFIGURE' => 'Konfiguráció', + 'CAPTCHA_NO_OPTIONS' => 'Ennek a bÅ‘vítménynek nincsenek beállítási lehetÅ‘ségei.', + + 'VISUAL_CONFIRM_POST' => 'Anti-robot bÅ‘vítmény használata vendég hozzászólásküldéskor', + 'VISUAL_CONFIRM_POST_EXPLAIN' => 'A tömeges hozzászólás elkerülése végett a nem regisztrált felhasználóknak teljesítenük kell az anti-robot bÅ‘vítmény által megszabott feladatot.', + 'VISUAL_CONFIRM_REG' => 'Anti-robot bÅ‘vítmény használata regisztrációnál', + 'VISUAL_CONFIRM_REG_EXPLAIN' => 'A tömeges regisztráció elkerülése végett az új felhasználóknak teljesítenük kell az anti-robot bÅ‘vítmény által megszabott feladatot.', + 'VISUAL_CONFIRM_REFRESH' => 'MegerÅ‘sítés kép frissítésének engedélyezése', + 'VISUAL_CONFIRM_REFRESH_EXPLAIN' => 'Ha a felhasználó nem tudja megoldani az anti-robot bÅ‘vítmény által generált feladatot, újat kérhet. Ezt a funkciót nem minden bÅ‘vítmény támogatja.', + +)); + +// Cookie Settings +$lang = array_merge($lang, array( + 'ACP_COOKIE_SETTINGS_EXPLAIN' => 'Ezek a beállítások határozzák meg, hogy a felhasználóid böngészÅ‘jének milyen sütik kerülnek elküldésre. A legtöbb esetben az alapbeállítások megfelelÅ‘ek. Ha mégis meg kell változtatnod egy beállítást, tedd figyelemmel, mivel a nem helyes beállítások következtében elÅ‘fordulhat, hogy a felhasználók nem tudnak majd belépni. Ha a felhasználóknak problémái vannak a fórumon való bejelentkezve maradással, akkor látogasd meg az angol nyelvű phpBB.com Knowledge Base - Fixing incorrect cookie settings oldalt.', + + 'COOKIE_DOMAIN' => 'Süti domain', + 'COOKIE_DOMAIN_EXPLAIN' => 'A legtöbb esetben a süti domaint nem kell megadni. Hagyd üresen, ha nem vagy biztos az értékében.

    Abban az esetben, ha a fórum integrálva van weboldallal vagy más programmal, esetleg több domain névrÅ‘l is elérhetÅ‘, akkor a következÅ‘ket kell tenned a megadandó érték eldöntésére. Ha van például egy example.com és egy forums.example.com címed, vagy forums.example.com és blog.example.com, akkor távolítsd el a címek elején lévÅ‘ aldomaineket addig, amíg meg nem kapod a közös domain nevet, ami ebben az esetben example.com. Most tegyél egy pontot a domain elé és add meg a .example.com címet (figyelj a cím elején lévÅ‘ pontra).', + 'COOKIE_NAME' => 'Süti név', + 'COOKIE_NAME_EXPLAIN' => 'Ez bármi lehet, amit szeretnél, legyen egyedi. Ha a süti beállítások változnak, a süti nevét is módosítani kell.', + 'COOKIE_NOTICE' => 'Süti használati figyelmeztetés', + 'COOKIE_NOTICE_EXPLAIN' => 'Ha engedélyezed, a látogatóidnak egy süti használati figyelmeztetés kerül megjelenítésre a fórumod felkeresésekor. Erre jogi okokból lehet szükség a fórumod tartalmától és az engedélyezett kiterjesztésektÅ‘l függÅ‘en.', //? "If enabled a cookie notice will be displayed to users when visiting your board. This might be required by law depending on the content of your board and enabled extensions." + 'COOKIE_PATH' => 'Süti elérési út', + 'COOKIE_PATH_EXPLAIN' => 'Ez általában ugyanaz lesz, mint a fórum elérési útja vagy egy perjel, ha a sütit az egész domainen elérhetÅ‘vé szeretnéd tenni.', // ? script path + 'COOKIE_SECURE' => 'Süti biztonság', + 'COOKIE_SECURE_EXPLAIN' => 'Ha a szervered SSL-en fut, kapcsold be, egyébként hagyd kikapcsolva. Ha be van állítva, de nincs SSL, az átirányítások során szerver hibák fognak fellépni.', + 'ONLINE_LENGTH' => 'Ki van itt megjelenési idÅ‘tartam', + 'ONLINE_LENGTH_EXPLAIN' => 'Ennyi perc után nem fognak az inaktív felhasználók megjelenni a „Ki van itt†listában. Minél nagyobb érték van megadva, annál több idÅ‘be telik a lista generálása.', + 'SESSION_LENGTH' => 'Munkamenet hossza', + 'SESSION_LENGTH_EXPLAIN' => 'A munkamenet ennyi idÅ‘ elteltével jár le, másodpercben.', +)); + +// Contact Settings +$lang = array_merge($lang, array( + 'ACP_CONTACT_SETTINGS_EXPLAIN' => 'Itt be- vagy kikapcsolhatod a fórum kapcsolat oldalát, valamint megadhatsz egy az oldalon megjelenÅ‘ üzenetet.', + + 'CONTACT_US_ENABLE' => 'Kapcsolat oldal engedélyezése', + 'CONTACT_US_ENABLE_EXPLAIN' => 'Ezen az oldalon a felhasználók e-mailt küldhetnek a fórum adminisztrátorainak. Kérjük, vedd figyelembe, hogy a fórum e-mail küldésnek bekapcsolva kell lennie az Ãltalános > Kommunikáció a kliensekkel > E-mail beállítások pontban.', + + 'CONTACT_US_INFO' => 'Kapcsolati információk', + 'CONTACT_US_INFO_EXPLAIN' => 'Ez az üzenet lesz megjelenítve a kapcsolat oldalon.', + 'CONTACT_US_INFO_PREVIEW' => 'Kapcsolati információük - ElÅ‘nézet', + 'CONTACT_US_INFO_UPDATED' => 'A kapcsolati információk sikeresen frissítésre kerültek.', +)); + +// Load Settings +$lang = array_merge($lang, array( + 'ACP_LOAD_SETTINGS_EXPLAIN' => 'Itt be- vagy kikapcsolhatod a fórum bizonyos funkcióit a jobb teljesítmény érdekében. A legtöbb szerveren nincs szükség semmilyen funkció kikapcsolására. Azonban egyes rendszereken vagy másokkal megosztott tárhelyszolgáltatás esetében elÅ‘nyös lehet kikapcsolni néhány igazából nem használt lehetÅ‘séget. Emellett korlátokat is meghatározhatsz a rendszer terhelésére vagy az aktív munkamenetek számára, melyek fölött a fórum automatikusan szünetelni fog.', + + 'ALLOW_CDN' => 'KülsÅ‘ CDN használata', + 'ALLOW_CDN_EXPLAIN' => 'Ha ez a beállítás engedélyezve van, akkor bizonyos fájlok harmadik fél által üzemeltetett Content Delivery Network-rÅ‘l kerülnek kiszolgálásra a szervered helyett. Ez csökkenti a szerver által igényelt sávszélességet, azonban adatvédelmi aggályokat vethet fel. Az alap phpBB telepítésben a “jQuery†függvénykönyvtár és az “Open Sans†betűtípus kerül kiszolgálásra a Google Content Delivery Network-rÅ‘l.', //? + 'ALLOW_LIVE_SEARCHES' => 'Azonnali keresési találatok engedélyezése', + 'ALLOW_LIVE_SEARCHES_EXPLAIN' => 'Ha ez a beállítás engedélyezve van, akkor a felhasználó a fórum bizonyos mezÅ‘iben gépelés közben keresési találatokat kap.', //? + 'CUSTOM_PROFILE_FIELDS' => 'Egyedi profil mezÅ‘k', + 'LIMIT_LOAD' => 'Rendszerterhelés korlátozása', + 'LIMIT_LOAD_EXPLAIN' => 'Ha a rendszer egy perces átlagos terhelése meghaladja ezt az értéket, a fórum automatikusan szünetelni fog. Az 1.0 érték megegyezik egy processzor ~100%-os használatával. A funkció csak UNIX alapú rendszereken működik, és akkor is csak akkor, ha elérhetÅ‘ ez az információ. Amennyiben a phpBB-nek nem sikerül meghatároznia a terheléskorlátot, ez az érték automatikusan 0-ra állítódik.', + 'LIMIT_SESSIONS' => 'Munkamenetek korlátozása', + 'LIMIT_SESSIONS_EXPLAIN' => 'Ha a munkamenetek száma egy perc alatt meghaladja ezt az értéket, a fórum automatikusan szünetelni fog. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'LOAD_CPF_MEMBERLIST' => 'Egyedi profil mezÅ‘k megjelenítése a taglistában', + 'LOAD_CPF_PM' => 'Egyedi profil mezÅ‘k megjelenítése a privát üzeneteknél', + 'LOAD_CPF_VIEWPROFILE' => 'Egyedi profil mezÅ‘k megjelenítése a felhasználók profiljában', + 'LOAD_CPF_VIEWTOPIC' => 'Egyedi profil mezÅ‘k megjelenítése a téma oldalakon', + 'LOAD_USER_ACTIVITY' => 'Felhasználó aktivitásának mutatása', + 'LOAD_USER_ACTIVITY_EXPLAIN' => 'Legaktívabb téma/fórum megjelenítése a felhasználók profiljában és a felhasználói vezérlÅ‘pultban. Több, mint egymillió hozzászólással rendelkezÅ‘ fórumoknál ajánlott kikapcsolni.', + 'LOAD_USER_ACTIVITY_LIMIT' => 'Felhasználó aktivitás mutatásának korlátja', + 'LOAD_USER_ACTIVITY_LIMIT_EXPLAIN' => 'A legaktívabb téma/fórum nem kerül megjelenítésre azkonál a felhasználóknál, akiknek a megadottnál több hozzászólásuk van. Ãllítsd 0-ra, hogy ne legyen korlátozás.', + 'READ_NOTIFICATION_EXPIRE_DAYS' => 'Olvasási értesítés lejárata', + 'READ_NOTIFICATION_EXPIRE_DAYS_EXPLAIN' => 'Az olvasási értesítések automatikus törlése elÅ‘tti napok száma. Ãllítsd 0-ra az automatikus törlés megszüntetéséhez.', + 'RECOMPILE_STYLES' => 'Elévült megjelenés komponensek újrafeldolgozása', + 'RECOMPILE_STYLES_EXPLAIN' => 'Megnézi, hogy frissült-e az adott megjelenés komponens, és ha igen, újra feldolgozza.', + 'YES_ACCURATE_PM_BUTTON' => 'JogosultságfüggÅ‘ PÃœ gomb a fórum témák oldalain', // ? Enable permission specific PM button in topic pages + 'YES_ACCURATE_PM_BUTTON_EXPLAIN' => 'Ha engedélyezve van, csak azoknak a felhasználóknak a hozzászólás melletti mini profiljában jelenik meg a privát üzenet küldése gomb, akiknek joguk van privát üzenetek olvasására.', // ? If this setting is enabled, only post profiles of users who are permitted to read private messages will have a private message button. + 'YES_ANON_READ_MARKING' => 'Olvasottságmegjelölés engedélyezése vendégeknek', + 'YES_ANON_READ_MARKING_EXPLAIN' => 'A vendégeknek is eltárolja az olvasott témákat/fórumokat. Kikapcsolt állapotban a vendégeknek minden hozzászólás olvasott.', + 'YES_BIRTHDAYS' => 'Születésnaposok kiírásának bekapcsolása', + 'YES_BIRTHDAYS_EXPLAIN' => 'Ha ki van kapcsolva, nem jelenik meg a kezdÅ‘oldalon a születésnaposok listája. A beállítás érvényesüléséhez a születésnaposok funkciónak is bekapcsolva kell lennie.', + 'YES_JUMPBOX' => 'Fórum ugrás doboz bekapcsolása', + 'YES_MODERATORS' => 'Moderátorok megjelenítésének bekapcsolása', + 'YES_ONLINE' => 'JelenlévÅ‘ felhasználók felsorolásának bekapcsolása', + 'YES_ONLINE_EXPLAIN' => 'Információ megjelenítése a jelen lévÅ‘ felhasználókról a kezdÅ‘oldalon és a fórum ill. téma oldalakon.', + 'YES_ONLINE_GUESTS' => 'Vendégek megjelenítésének bekapcsolása a jelenlévÅ‘k között', + 'YES_ONLINE_GUESTS_EXPLAIN' => 'Információ megjelenítése a jelen lévÅ‘ vendégekrÅ‘l a jelenlévÅ‘ felhasználóknál.', + 'YES_ONLINE_TRACK' => 'Felhasználó online/offline állapotának megjelenítésének bekapcsolása', + 'YES_ONLINE_TRACK_EXPLAIN' => 'A profilban és a téma oldalakon jelzi, hogy az adott felhasználó éppen online-e.', + 'YES_POST_MARKING' => 'Csillagozott témák bekapcsolása', + 'YES_POST_MARKING_EXPLAIN' => 'Jelzi, hogy a felhasználó hozzászólt-e a témához.', + 'YES_READ_MARKING' => 'Szerveroldali olvasottságmegjelölés bekapcsolása', + 'YES_READ_MARKING_EXPLAIN' => 'Az olvasott témákról/fórumokról az információt az adatbázisban tárolja süti helyett.', + 'YES_UNREAD_SEARCH' => 'Olvasatlan hozzászólások keresésének engedélyezése', +)); + +// Auth settings +$lang = array_merge($lang, array( + 'ACP_AUTH_SETTINGS_EXPLAIN' => 'A phpBB különbözÅ‘ azonosítási bÅ‘vítményeket vagy modulokat is támogat. Ezek határozzák meg, hogy mi történik, amikor egy felhasználó belép a fórumra. Alapból négy bÅ‘vítmény áll rendelkezésre: DB (adatbázis), LDAP, Apache és OAuth. Nem mindegyiknek van szüksége kiegészítÅ‘ információkra, így csak azokat a mezÅ‘ket töltsd ki, amelyek a kiválasztott bÅ‘vítményhez tartoznak.', + + 'AUTH_METHOD' => 'Azonosítási mód', + + 'AUTH_PROVIDER_OAUTH_ERROR_ELEMENT_MISSING' => 'A key-t és a secret-et is meg kell adnod minden engedélyezett OAuth szolgáltatáshoz, azonban te csak az egyiket adtad meg.', + 'AUTH_PROVIDER_OAUTH_EXPLAIN' => 'Minden OAuth szolgáltatónak szüksége van egy egyedi secret-re és egy key-re, hogy azonosítani tudja a felhasználót egy külsÅ‘ szerveren történÅ‘ belépéskor. Ezeket az OAuth szolgáltató adja meg a náluk történt regisztráció után, és pontosan abban a formában kell megadnod, ahogy azt a szolgáltató megadta.
    Azok a szolgáltatók, amelyekhez nincs megadva secret és key is, nem lesznek használhatóak. Megjegyzés: a felhasználók továbbra is tudnak regisztrálni és bejelentkezni a DB azonosítás használatával.', //? + 'AUTH_PROVIDER_OAUTH_KEY' => 'Key', + 'AUTH_PROVIDER_OAUTH_TITLE' => 'OAuth', + 'AUTH_PROVIDER_OAUTH_SECRET' => 'Secret', + + 'APACHE_SETUP_BEFORE_USE' => 'Az apache azonosítást előbb kell beállítanod, mint hogy a phpBB-t erre az azonosítási módra állítanád. Ne felejtesd el, hogy az apache azonosításhoz használt felhasználónévnek meg kell egyeznie a phpBB-beli felhasználónévvel. Az apache azonosítás csak mod_php-vel használható (CGI verzióval nem), és a safe_mode-nak kikapcsolva kell lennie.', + + 'LDAP' => 'LDAP', + 'LDAP_DN' => 'LDAP base dn', + 'LDAP_DN_EXPLAIN' => 'A felhasználóról információt tartalmazó Distinguished Name, pl. o=My Company,c=US.', + 'LDAP_EMAIL' => 'LDAP e-mail attribútum', + 'LDAP_EMAIL_EXPLAIN' => 'Add meg a felhasználók e-mail címét tartalmazó attribútum nevét (ha van), hogy az új felhasználók e-mail címe automatikusan beállításra kerüljön. Ha üresen hagyod, az első alkalommal belépő felhasználóknak üres lesz az e-mail címük.', + 'LDAP_INCORRECT_USER_PASSWORD' => 'Nem sikerült az LDAP szervert összekötni a megadott felhasználó/jelszó páros használatával.', + 'LDAP_NO_EMAIL' => 'A megadott e-mail paraméter nem létezik.', + 'LDAP_NO_IDENTITY' => 'Nem található belépési azonosító: %s.', + 'LDAP_PASSWORD' => 'LDAP jelszó', + 'LDAP_PASSWORD_EXPLAIN' => 'Névtelen hozzáférés használatához hagyd üresen, egyébként add meg a fenti felhasználóhoz tartozó jelszót. Active Directory szervereknél szükséges.
    Figyelmeztetés: Ez a jelszó az adatbázisban sima szövegként kerül tárolásra, így bárki által hozzáférhető, aki hozzáfér az adatbázishoz vagy látja ezt a beállítás oldalt.', + 'LDAP_PORT' => 'LDAP szerver port', + 'LDAP_PORT_EXPLAIN' => 'Ha kell, az alap 389-es helyett megadhatsz egy másik portot, mely használva lesz az LDAP szerverhez való kapcsolódáshoz.', + 'LDAP_SERVER' => 'LDAP szervernév', + 'LDAP_SERVER_EXPLAIN' => 'LDAP használata esetén a szerver neve vagy IP-címe. Megadhatsz egy URL-t is, mint például ldap://hosztnév:port/', + 'LDAP_UID' => 'LDAP uid', + 'LDAP_UID_EXPLAIN' => 'Ezzel a kulccsal történik a keresés az adott belépési azonosítóra, pl. uid, sn stb.', + 'LDAP_USER' => 'LDAP felhasználó dn', + 'LDAP_USER_EXPLAIN' => 'Névtelen hozzáférés használatához hagyd üresen. Ha ki van töltve, a phpBB belépéskor a megadott distinguished name-t fogja használni a megfelelő felhasználó megtalálásához, pl. uid=Username,ou=MyUnit,o=MyCompany,c=US. ', + 'LDAP_USER_FILTER' => 'LDAP felhasználószűrő', + 'LDAP_USER_FILTER_EXPLAIN' => 'Tetszőlegesen tovább korlátozhatod a keresett objektumokat további szűrőkkel. Például a objectClass=posixGroup megadása a (&(uid=$username)(objectClass=posixGroup)) használatát eredményezné.', +)); + +// Server Settings +$lang = array_merge($lang, array( + 'ACP_SERVER_SETTINGS_EXPLAIN' => 'Itt a szerverrel és a domainnel kapcsolatos beállításokat adhatod meg. Kérünk, győződj meg róla, hogy az adatok pontosak, mivel nem helyes megadás esetén az e-mailek hibás információt fognak tartalmazni. A domain név megadásánál ne felejtsd el, hogy a http:// vagy más protokollspecifikáció nem része a címnek. A portot csak akkor módosítsd, ha biztosan tudod, hogy a szerver egy másikat használ, a 80-as port a legtöbb esetben megfelelő.', + + 'ENABLE_GZIP' => 'GZip tömörítés bekapcsolása', + 'ENABLE_GZIP_EXPLAIN' => 'A generált tartalom a felhasználónak való elküldés előtt tömörítésre kerül. Ezzel csökkenteni lehet a hálózati forgalmat, ugyanakkor a CPU-igénybevétel nőni fog, mind a szerver-, mind a kliensoldalon. A működéséhez a zlib PHP bővítménynek betöltve kell lennie.', + 'FORCE_SERVER_VARS' => 'Szerver URL beállítások használata', //? force így kimaradt? van rá magyar megfelelő? + 'FORCE_SERVER_VARS_EXPLAIN' => 'Ha igenre van állítva, az itt megadott beállítások kerülnek használatra az automatikus megállapítás helyett.', + 'ICONS_PATH' => 'Hozzászólás ikonok elérési útja', + 'ICONS_PATH_EXPLAIN' => 'A phpBB-d gyökérkönyvtárától viszonyított elérési út, pl. images/icons.', + 'MOD_REWRITE_ENABLE' => 'URL átírás engedélyezése', + 'MOD_REWRITE_ENABLE_EXPLAIN' => 'Ha engedélyezve van, akkor az ’app.php’-t tartalmazó URL-ekből a fájlnév eltávolításra kerül (pl. app.php/valami-ből /valami lesz). A funkció használatához az Apache webszerver mod_rewrite modulja szükséges. Ha ennek megléte nélkül engedélyezed, a fórumod URL-jei hibásak lehetnek.', + 'MOD_REWRITE_DISABLED' => 'A mod_rewrite Apache webszerver modul le van tiltva. Engedélyezd a modult vagy lépj kapcsolatba a tárhelyszolgáltatóddal, ha használni szeretnéd ezt a funkciót.', + 'MOD_REWRITE_INFORMATION_UNAVAILABLE' => 'Nem sikerült megállapítani, hogy a szerver támogatja-e az URL átírást. Engedélyezheted ezt a beállítást, azonban ha az URL átírás a szerveren nem elérhető, a fórum által generált linkek hibásak lesznek. Lépj kapcsolatba a tárhelyszolgáltatóddal, ha nem vagy biztos abban, hogy ezt a funkciót biztonsággal engedélyezheted-e.', + 'PATH_SETTINGS' => 'Elérési utak', + 'RANKS_PATH' => 'Rang képek elérési útja', + 'RANKS_PATH_EXPLAIN' => 'A phpBB-d gyökérkönyvtárától viszonyított elérési út, pl. images/ranks.', + 'SCRIPT_PATH' => 'Szkript elérési út', + 'SCRIPT_PATH_EXPLAIN' => 'A phpBB relatív elérési útvonala a domainnévhez képest, pl. /phpBB3.', + 'SERVER_NAME' => 'Domainnév', + 'SERVER_NAME_EXPLAIN' => 'A fórum domainneve, amin fut (például: valami.hu).', + 'SERVER_PORT' => 'Szerver port', + 'SERVER_PORT_EXPLAIN' => 'Milyen porton fut a szerver, általában 80-as, csak akkor változtasd meg, ha más.', + 'SERVER_PROTOCOL' => 'Szerver protokoll', + 'SERVER_PROTOCOL_EXPLAIN' => 'Ez kerül használatra szerver protokollként, ha ezek a beállítások használva vannak. Ha a mező üres, vagy a beállítások nincsenek használva, a protokoll a „biztonságos süti†beállítás alapján kerül megállapításra (http:// vagy https://).', //? + 'SERVER_URL_SETTINGS' => 'Szerver URL beállítások', + 'SMILIES_PATH' => 'Emotikonok elérési útja', + 'SMILIES_PATH_EXPLAIN' => 'A phpBB-d gyökérkönyvtárától viszonyított elérési út, pl. images/smilies.', + 'UPLOAD_ICONS_PATH' => 'Kiterjesztéscsoport ikonok elérési útja', + 'UPLOAD_ICONS_PATH_EXPLAIN' => 'A phpBB-d gyökérkönyvtárától viszonyított elérési út, pl. images/upload_icons.', + 'USE_SYSTEM_CRON' => 'Ismétlődő feladtok futtatása a rendszer cron-ból', + 'USE_SYSTEM_CRON_EXPLAIN' => 'Ha ki van kapcsolva, a phpBB gondoskodik az ismétlődő feladatok rendszeres futtatásáról. Ha be van kapcsolva, a phpBB nem fog egy feladatot sem ütemezetten futtatni. Ekkor egy rendszer adminisztrátornak kell a bin/phpbbcli.php cron:run utasítást a rendszer feladatütemező eszközében rendszeres futtatásra beállítania (pl. minden 5 percben).', +)); + +// Security Settings +$lang = array_merge($lang, array( + 'ACP_SECURITY_SETTINGS_EXPLAIN' => 'Itt a munkamenetekkel és a belépéssel kapcsolatos beállításokat tudsz megadni.', + + 'ALL' => 'Teljes', + 'ALLOW_AUTOLOGIN' => 'Tartós bejelentkezés bejelentkezés engedélyezése', + 'ALLOW_AUTOLOGIN_EXPLAIN' => 'A felhasználók használhatják-e az automatikus bejelentkezést.', //?megjelenjen-e a "Tartós bejelentkezés" opció a fórum meglátogatásakor.' + 'ALLOW_PASSWORD_RESET' => 'Jelszó helyreállítás engedélyezése ("Elfelejtett jelszó")', + 'ALLOW_PASSWORD_RESET_EXPLAIN' => 'A felhasználóknak megjelenjen-e az "Elfelejtett jelszó" hivatkozás. Külső felhasználó azonosítási rendszer használatakor érdemes lehet letiltanod ezt a funkciót.', + 'AUTOLOGIN_LENGTH' => '“Emlékezz rám†bejelentkezési kulcs lejárati hossza', + 'AUTOLOGIN_LENGTH_EXPLAIN' => 'Ennyi nap elteltével törlésre kerülnek a “Emlékezz rám†bejelentkezési kulcsok. A 0 kikapcsolja ezt.', + 'BROWSER_VALID' => 'Böngésző ellenőrzése', //? + 'BROWSER_VALID_EXPLAIN' => 'A böngésző típusa ellenőrzésre kerül, ezáltal javítva a munkamenet biztonságát.', + 'CHECK_DNSBL' => 'IP összevetése a DNSBL feketelistával', + 'CHECK_DNSBL_EXPLAIN' => 'Ha be van kapcsolva, akkor a regisztrációkor vagy hozzászóláskor a felhasználó IP-címe összevetésre kerül a következő DNSBL-szolgáltatások adatbázisával: spamcop.net, dsbl.org és www.spamhaus.org. Ez a művelet a szervertől függően eltarthat egy ideig. Ha lassulások tapasztalhatók, vagy ha sok a téves tiltás, ajánlott ezt az ellenőrzést kikapcsolni.', + 'CLASS_B' => 'A.B', + 'CLASS_C' => 'A.B.C', + 'EMAIL_CHECK_MX' => 'Érvényes e-mail domain MX rekord létezésének ellenőrzése ', //? "Check e-mail domain for valid MX record" 'Érvényes MX bejegyzés létezésének ellenőrzése az e-mail domainhez' + 'EMAIL_CHECK_MX_EXPLAIN' => 'Ha be van kapcsolva, akkor a regisztrációkor vagy a profil megváltoztatásakor megadott e-mail cím domainje ellenőrzésre kerül, hogy van-e hozzá érvényes MX rekord.', + 'FORCE_PASS_CHANGE' => 'Kötelező jelszómegváltoztatás gyakorisága', //? + 'FORCE_PASS_CHANGE_EXPLAIN' => 'Megköveteli a felhasználótól, hogy bizonyos időközönként megváltoztassa a jelszavát. A 0 érték megadása kikapcsolja ezt.', + 'FORM_TIME_MAX' => 'Maximum idő űrlap elküldéséhez', //? 'Űrlap elküldéséhez rendelkezésre álló maximum idő' + 'FORM_TIME_MAX_EXPLAIN' => 'Ennyi időn belül a felhasználónak el kell küldenie az űrlapokat. A kikapcsoláshoz adj meg -1-et. Vedd figyelembe, hogy ettől a beállítástól függetlenül az űrlap a munkamenet lejártával is érvénytelenné válhat.', + 'FORM_SID_GUESTS' => 'Űrlapok hozzákötése vendég munkamenetekhez', + 'FORM_SID_GUESTS_EXPLAIN' => 'Ha be van kapcsolva, minden vendég munkamenethez külön űrlapazonosító lesz generálva. Ez néhány internetszolgáltatónál gondot okozhat.', //? token + 'FORWARDED_FOR_VALID' => 'X_FORWARDED_FOR fejléc ellenőrzése', + 'FORWARDED_FOR_VALID_EXPLAIN' => 'A munkamenetek csak akkor kerülnek folytatásra, ha a küldött X_FORWARDED_FOR fejléc megegyezik az előző kérés alkalmával küldöttel. Emellett az X_FORWARDED_FOR is összevetésre kerül a kitiltott IP-címekkel.', + 'IP_VALID' => 'Munkamenet IP ellenőrzés', + 'IP_VALID_EXPLAIN' => 'A felhasználó IP-címének mekkora része lesz használva a munkamenet érvényesítéséhez; a Teljes az egész címet összeveti, az A.B.C az első x.x.x részt, az A.B az első x.x részt, a Nincs pedig teljesen kikapcsolja az ellenőrzést. IPv6 címeknél az A.B.C az első 4 blokkot, az A.B pedig az első 3 blokkot veti össze.', + 'IP_LOGIN_LIMIT_MAX' => 'Egy IP-címről engedélyezett belépési kísérletek száma', + 'IP_LOGIN_LIMIT_MAX_EXPLAIN' => 'Ennyi IP-címenkénti sikertelen belépési kísérlet után a felhasználónak meg kell oldania az anti-robot bővítmény által megszabott feladatot. A 0 érték kikapcsolja az anti-robot feladat megjelenítését.', + 'IP_LOGIN_LIMIT_TIME' => 'IP-címenkénti belépési kísérletek lejárati ideje', + 'IP_LOGIN_LIMIT_TIME_EXPLAIN' => 'A belépési kísérletek ennyi idő elteltével évülnek el, másodpercben.', + 'IP_LOGIN_LIMIT_USE_FORWARDED' => 'Belépési kísérletek limitálása a X_FORWARDED_FOR fejléc alapján', + 'IP_LOGIN_LIMIT_USE_FORWARDED_EXPLAIN' => 'A belépési kísérletek IP-cím szerinti korlátozása helyett a fórum az X_FORWARDED_FOR HTTP fejléc értékét használja.
    Figyelem: Ezt a funkciót csak akkor kapcsold be, ha a fórumot egy olyan proxy szerveren keresztül lehet elérni, amely megbízhatóan állítja be ezt az értéket.', + 'MAX_LOGIN_ATTEMPTS' => 'Belépési kísérletek felhasználónevenkénti maximális száma', + 'MAX_LOGIN_ATTEMPTS_EXPLAIN' => 'Ennyi felhasználónevenkénti sikertelen belépési kísérlet után a felhasználónak meg kell oldania az anti-robot bővítmény által megszabott feladatot. A 0 érték kikapcsolja az anti-robot feladat megjelenítését.', + 'NO_IP_VALIDATION' => 'Nincs', + 'NO_REF_VALIDATION' => 'Nincs', + 'PASSWORD_TYPE' => 'Jelszóbonyolultság', + 'PASSWORD_TYPE_EXPLAIN' => 'Milyen bonyolultnak kell lennie egy jelszónak. A lejjebbi beállítási lehetőségek tartalmazzák az előzőket.', + 'PASS_TYPE_ALPHA' => 'Tartalmaznia kell betűket és számokat', + 'PASS_TYPE_ANY' => 'Nincs követelmény', + 'PASS_TYPE_CASE' => 'Tartalmaznia kell kis- és nagybetűket', + 'PASS_TYPE_SYMBOL' => 'Tartalmaznia kell szimbólumokat', + 'REF_HOST' => 'Csak hoszt ellenőrzése', + 'REF_PATH' => 'Elérési út ellenőrzése is', + 'REFERRER_VALID' => 'Hivatkozó oldal (referer) ellenőrzése', + 'REFERRER_VALID_EXPLAIN' => 'Ha be van kapcsolva, a POST kérések hivatkozó oldalainak címe (referer) összevetésre kerül a hoszt/szkript elérési út beállításokkal. Ez gondot okozhat egyszerre több domaint vagy külső bejelentkező oldalt használó fórumoknál.', + 'TPL_ALLOW_PHP' => 'Php engedélyezése sablonokban', + 'TPL_ALLOW_PHP_EXPLAIN' => 'Ha be van kapcsolva a beállítás, akkor a sablonokban a PHP és az INCLUDEPHP címkék is értelmezésre kerülnek.', + 'UPLOAD_CERT_VALID' => 'Külső feltöltés tanúsítványának ellenőrzése', + 'UPLOAD_CERT_VALID_EXPLAIN' => 'Ha be van kapcsolva, akkor a külső feltöltések tanúsítványa ellenőrizve lesz. Ehhez szükséges, hogy a CA bundle meg legyen adva a php.ini openssl.cafile vagy curl.cainfo beállításában.', +)); + +// Email Settings +$lang = array_merge($lang, array( + 'ACP_EMAIL_SETTINGS_EXPLAIN' => 'Az alábbi információkat használja a fórum e-mailek küldésekor. Kérünk, győződj meg róla, hogy az e-mail cím, amit megadsz, helyes, mivel minden nem kézbesíthető levél erre a címre fog menni. Ha a tárhelyszolgáltatód nem biztosítja a natív (PHP alapú) e-mail küldést, használhatsz helyette SMTP-t. Ehhez szükség van egy megfelelő szerver címére (ha szükséges, kérdezd meg a szolgáltatód). Ha (és csak ha) a szerver megköveteli az azonosítást, add meg a szükséges felhasználónevet, jelszót és azonosítási módot.', + + 'ADMIN_EMAIL' => 'Feladó e-mail cím', + 'ADMIN_EMAIL_EXPLAIN' => 'Ez a technikai kapcsolat cím. Mindig ez a cím kerül megadásra a levelek Sender (küldő) fejlécének.', + 'BOARD_EMAIL_FORM' => 'Felhasználói levélküldés a fórumon keresztül', + 'BOARD_EMAIL_FORM_EXPLAIN' => 'Ahelyett, hogy a felhasználók e-mail címe megjelenítésre kerülne, a felhasználók a fórumon keresztül küldhetnek egymásnak e-mailt.', + 'BOARD_HIDE_EMAILS' => 'E-mail címek elrejtése', + 'BOARD_HIDE_EMAILS_EXPLAIN' => 'Ez a funkció gondoskodik róla, hogy az e-mail címek teljesen privátak maradjanak.', + 'CONTACT_EMAIL' => 'Kapcsolat e-mail cím', + 'CONTACT_EMAIL_EXPLAIN' => 'Ez az e-mail cím kerül megadásra, ha szükség van bármilyen kapcsolatbalépési lehetőségre, pl. spam, hibaüzenet stb. Mindig ez a cím kerül megadásra a levelek From (feladó) és Reply-To (válaszcím) fejlécének.', + 'CONTACT_EMAIL_NAME' => 'Kapcsolat név', + 'CONTACT_EMAIL_NAME_EXPLAIN' => 'Ez az a kapcsolati név, amit az e-mailek címzettjei látni fognak. Ha nem szeretnél nevet megadni, hagyd üresen.', + 'EMAIL_FORCE_SENDER' => 'Feladó e-mail cím használata', // ? force email sender + 'EMAIL_FORCE_SENDER_EXPLAIN' => 'Beállítja a Return-Path (visszaküldési útvonal) értékének a feladó e-mail címet a szerver helyi felhasználója és hosztneve helyett. Ez a beállítás nincs figyelembe véve SMTP használatakor.
    Figyelmeztetés: A beállítás használatához szükséges, hogy a felhasználó, akinek a nevében a webszerver fut a megbízható felhasználók között szerepeljen a sendmail parancs beállításaiban.', // ? This will set the Return-Path to the from email address instead of using the local user and hostname of the server. This setting does not apply when using SMTP.
    Warning: Requires the user that the webserver runs as to be added as trusted user to the sendmail configuration. + 'EMAIL_PACKAGE_SIZE' => 'E-mail csomag mérete', + 'EMAIL_PACKAGE_SIZE_EXPLAIN' => 'Legfeljebb ennyi e-mail kerül kiküldésre egy csomagban. Ez a beállítás a belsÅ‘ várakozási sorra vonatkozik. Ha problémák lépnének föl nem megérkezÅ‘ értesítÅ‘ e-mailekkel kapcsolatban, állítsd ezt az értéket 0-ra.', + 'EMAIL_SIG' => 'E-mail aláírás', + 'EMAIL_SIG_EXPLAIN' => 'Ez a szöveg hozzáfűzésre kerül az összes fórum által küldött e-mailhez.', + 'ENABLE_EMAIL' => 'Fórum e-mail küldés bekapcsolása', + 'ENABLE_EMAIL_EXPLAIN' => 'Ha ki van kapcsolva, a fórum egyáltalán nem fog e-mailt küldeni. Kérjük, vedd figyelembe, hogy ebben az esetben a „felhasználóiâ€, ill. „adminisztrátori†azonosító aktiválási mód nem működik. Ha jelenleg ezen aktivális módok egyikét használod, és nemre állítod ezt a beállítást, az letiltja a regisztrálás lehetÅ‘ségét.', + 'SEND_TEST_EMAIL' => 'Teszt e-mail küldése', + 'SEND_TEST_EMAIL_EXPLAIN' => 'Egy teszt e-mailt küldhetsz a felhasználói fiókodban megadott e-mail címre.', + 'SMTP_ALLOW_SELF_SIGNED' => 'Önaláírt SSL tanúsítványok engedélyezése', + 'SMTP_ALLOW_SELF_SIGNED_EXPLAIN'=> 'Csatlakozás engedélyezése önaláírt (self-signed) tanúsítvánnyal rendelkezÅ‘ SMTP szerverekhez.
    Figyelmeztetés: Az önaláírt tanúsítványok használatának engedélyezése biztonsági következményekkel járhat.', + 'SMTP_AUTH_METHOD' => 'SMTP azonosítási mód', + 'SMTP_AUTH_METHOD_EXPLAIN' => 'Csak akkor van használva, ha egy felhasználónév/jelszó páros meg van adva. Ha nem vagy biztos benne, melyik módot használd, kérdezd meg a szolgáltatódat.', + 'SMTP_CRAM_MD5' => 'CRAM-MD5', + 'SMTP_DIGEST_MD5' => 'DIGEST-MD5', + 'SMTP_LOGIN' => 'LOGIN', + 'SMTP_PASSWORD' => 'SMTP jelszó', + 'SMTP_PASSWORD_EXPLAIN' => 'Csak akkor adj meg jelszót, ha a használt SMTP szerver megköveteli.
    Figyelmeztetés: Ez a jelszó az adatbázisban sima szövegként kerül tárolásra, így bárki által hozzáférhető, aki hozzáfér az adatbázishoz vagy látja ezt a beállítás oldalt.', + 'SMTP_PLAIN' => 'PLAIN', + 'SMTP_POP_BEFORE_SMTP' => 'POP-BEFORE-SMTP', + 'SMTP_PORT' => 'SMTP szerver port', + 'SMTP_PORT_EXPLAIN' => 'Csak akkor változtasd meg, ha tudod, hogy az SMTP szerver más porton van.', + 'SMTP_SERVER' => 'SMTP szerver cím és protokoll', + 'SMTP_SERVER_EXPLAIN' => 'Meg kell adnod a protokollt, amit a szerver használ. SSL használata esetén az "ssl://levelezo.szervered.com" formátumot kell használnod.', + 'SMTP_SETTINGS' => 'SMTP beállítások', + 'SMTP_USERNAME' => 'SMTP felhasználónév', + 'SMTP_USERNAME_EXPLAIN' => 'Csak akkor adj meg felhasználónevet, ha a használt SMTP szerver megköveteli.', + 'SMTP_VERIFY_PEER' => 'SSL tanúsítvány ellenőrzése', + 'SMTP_VERIFY_PEER_EXPLAIN' => 'Az SMTP szerver által használt tanúsítvány ellenőrzésének megkövetelése.
    Figyelmeztetés: Az ellenőrizetlen SSL tanúsítvánnyal rendelkező szerverekhez való kapcsolódás biztonsági következményekkel járhat.', + 'SMTP_VERIFY_PEER_NAME' => 'SMTP szervernév ellenőrzése', + 'SMTP_VERIFY_PEER_NAME_EXPLAIN' => 'Az SMTP szerver által használt gépnév ellenőrzésének megkövetelése SSL / TLS kapcsolatok használatakor.
    Figyelmeztetés: Az ellenőrizetlen SSL tanúsítvánnyal rendelkező szerverekhez való kapcsolódás biztonsági következményekkel járhat.', + 'TEST_EMAIL_SENT' => 'A teszt e-mail kiküldésre került.
    Ha nem érkezik meg, kérjük, ellenőrizd az e-mail küldési beállításokat.

    Ha segítségre van szükséged, kérjük, látogasd meg a phpBB angol nyelvű támogatási fórumát.', + 'USE_SMTP' => 'SMTP használata e-mail küldésére', + 'USE_SMTP_EXPLAIN' => 'Ãllítsd igenre, ha a helyi mail függvény helyett egy meghatározott szerveren keresztül szeretnéd az e-maileket kiküldeni.', +)); + +// Jabber settings +$lang = array_merge($lang, array( + 'ACP_JABBER_SETTINGS_EXPLAIN' => 'Itt bekapcsolhatod, illetve szabályozhatod a Jabber használatát azonnali üzenetküldésre és az értesítésekhez. A Jabber egy nyílt protokoll, így bárki által elérhetÅ‘. Néhány Jabber szerver lehetÅ‘vé teszi, hogy más hálózaton lévÅ‘ felhasználókat is elérj. Nem minden szerver teremt lehetÅ‘séget erre, és a protokollban történÅ‘ változások is megakadályozhatják ezt. Kérünk, gyÅ‘zÅ‘dj meg róla, hogy egy már létezÅ‘ azonosító adatait adod meg, mivel a phpBB további ellenÅ‘rzés nélkül fogja használni ezeket.', + + 'JAB_ALLOW_SELF_SIGNED' => 'Önaláírt SSL tanúsítványok engedélyezése', + 'JAB_ALLOW_SELF_SIGNED_EXPLAIN' => 'Önaláírt (self-signed) tanúsítvánnyal rendelkezÅ‘ Jabber szerverhez való kapcsolódás engedélyezése.
    Figyelmeztetés: Az önaláírt tanúsítványok használatának engedélyezése biztonsági következményekkel járhat.', + 'JAB_ENABLE' => 'Jabber bekapcsolása', + 'JAB_ENABLE_EXPLAIN' => 'A Jabber üzenet- és értesítőküldés bekapcsolása.', + 'JAB_GTALK_NOTE' => 'Kérjük, vedd figyelembe, hogy a GTalk nem fog működni, mivel a dns_get_record függvény nem található. Ez a függvény PHP4-ben nem elérhető, illetve nincs implementálva Windows rendszereken. Jelenleg BSD alapú rendszereken sem működik, beleértve a Mac OS-t is.', + 'JAB_PACKAGE_SIZE' => 'Jabber csomag méret', + 'JAB_PACKAGE_SIZE_EXPLAIN' => 'Egy csomagban ennyi üzenet kerül kiküldésre. 0-ra állítva az üzenetek azonnal kiküldésre kerülnek, és nem lesznek berakva egy sorba későbbi elküldéshez.', + 'JAB_PASSWORD' => 'Jabber jelszó', + 'JAB_PASSWORD_EXPLAIN' => '
    Figyelmeztetés: Ez a jelszó az adatbázisban sima szövegként kerül tárolásra, így bárki által hozzáférhető, aki hozzáfér az adatbázishoz vagy látja ezt a beállítás oldalt.', + 'JAB_PORT' => 'Jabber port', + 'JAB_PORT_EXPLAIN' => 'Hagyd üresen, hacsak nem tudod, hogy a port nem 5222.', + 'JAB_SERVER' => 'Jabber szerver', + 'JAB_SERVER_EXPLAIN' => 'A szerverek listájához lásd a %sjabber.org%s-ot.', + 'JAB_SETTINGS_CHANGED' => 'A Jabber beállítások sikeresen megváltoztatásra kerültek.', + 'JAB_USE_SSL' => 'SSL használata a kapcsolódáshoz', + 'JAB_USE_SSL_EXPLAIN' => 'Ha be van kapcsolva, egy biztonságos kapcsolat kerül kiépítésre. A Jabber portja 5223-ra lesz módosítva, ha az 5222-es port volt megadva.', + 'JAB_USERNAME' => 'Jabber felhasználónév vagy JID', + 'JAB_USERNAME_EXPLAIN' => 'Adj meg egy regisztrált felhasználónevet vagy egy valós JID-t. A felhasználónév létezése nem kerül ellenőrzésre. Ha csak egy felhasználónevet adsz meg, a JID a felhasználónév és a fent megadott szerver lesz. Ha nem ezt szeretnéd, adj meg egy helyes JID-t, pl. felhasznalo@jabber.org.', + 'JAB_VERIFY_PEER' => 'SSL tanúsítvány ellenőrzése', + 'JAB_VERIFY_PEER_EXPLAIN' => 'A Jabber szerver által használt tanúsítvány ellenőrzésének megkövetelése.
    Figyelmeztetés: Az ellenőrizetlen SSL tanúsítvánnyal rendelkező szerverekhez való kapcsolódás biztonsági következményekkel járhat.', + 'JAB_VERIFY_PEER_NAME' => 'Jabber szervernév ellenőrzése', + 'JAB_VERIFY_PEER_NAME_EXPLAIN' => 'A Jabber szerver által használt gépnév ellenőrzésének megkövetelése SSL / TLS kapcsolatok használatakor.
    Figyelmeztetés: Az ellenÅ‘rizetlen SSL tanúsítvánnyal rendelkezÅ‘ szerverekhez való kapcsolódás biztonsági következményekkel járhat.', +)); diff --git a/includes/shared/phpbb3/language/lang_hungarian/acp/common.php b/includes/shared/phpbb3/language/lang_hungarian/acp/common.php new file mode 100644 index 00000000..dc05b93a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/acp/common.php @@ -0,0 +1,838 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +* Magyar fordítás (c) 2007-2018 „Magyar phpBB Közösség fordítókâ€, +* http://phpbb.hu +* +* $Id$ +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// Common +$lang = array_merge($lang, array( + 'ACP_ADMINISTRATORS' => 'Adminisztrátorok', + 'ACP_ADMIN_LOGS' => 'Adminisztrátori napló', + 'ACP_ADMIN_ROLES' => 'Adminisztrátori szerepek', + 'ACP_ATTACHMENTS' => 'Csatolmányok', + 'ACP_ATTACHMENT_SETTINGS' => 'Csatolmány beállítások', + 'ACP_AUTH_SETTINGS' => 'Azonosítás', //? hitelesítéss + 'ACP_AUTOMATION' => 'Automatizálás', //? 'Automatizáció' + 'ACP_AVATAR_SETTINGS' => 'Avatar beállítások', + + 'ACP_BACKUP' => 'Kimentés', + 'ACP_BAN' => 'Kitiltások', //? "Banning" használják egyáltalán valahol (milyen értelemben)? + 'ACP_BAN_EMAILS' => 'E-mail címek kitiltása', + 'ACP_BAN_IPS' => 'IP-címek kitiltása', + 'ACP_BAN_USERNAMES' => 'Felhasználók kitiltása', + 'ACP_BBCODES' => 'BBCode-ok', + 'ACP_BOARD_CONFIGURATION' => 'Fórum konfiguráció', //? "Board configuration" 'Fórum beállítás' + 'ACP_BOARD_FEATURES' => 'Fórum funkciók', // szolgáltatások? + 'ACP_BOARD_MANAGEMENT' => 'Fórum kezelése', //? "Board management" használják egyáltalán valahol? + 'ACP_BOARD_SETTINGS' => 'Fórum beállítások', + 'ACP_BOTS' => '(KeresÅ‘)robotok', //? + + 'ACP_CAPTCHA' => 'Vizuális megerÅ‘sítés', //? 'CAPTCHA'? + + 'ACP_CAT_CUSTOMISE' => 'Testreszabás', + 'ACP_CAT_DATABASE' => 'Adatbázis', + 'ACP_CAT_DOT_MODS' => 'Kiterjesztések', //? + 'ACP_CAT_FORUMS' => 'Fórumok', + 'ACP_CAT_GENERAL' => 'Ãltalános', + 'ACP_CAT_MAINTENANCE' => 'Karbantartás', + 'ACP_CAT_PERMISSIONS' => 'Jogosultságok', + 'ACP_CAT_POSTING' => 'Ãœzenetküldés', //? 'Hozzászólások', 'Ãœzenetek', 'Hozzászólásküldés', 'Ãœzenetküldés' + 'ACP_CAT_STYLES' => 'Megjelenések', + 'ACP_CAT_SYSTEM' => 'Rendszer', + 'ACP_CAT_USERGROUP' => 'Felhasználók és csoportok', + 'ACP_CAT_USERS' => 'Felhasználók', + 'ACP_CLIENT_COMMUNICATION' => 'Kommunikáció a kliensekkel', //? 'Kapcsolat a kliensekkel', 'Kliens kommunikáció', 'Kommunikáció a kliensekkel' + 'ACP_COOKIE_SETTINGS' => 'Süti beállítások', + 'ACP_CONTACT' => 'Kapscolat oldal', + 'ACP_CONTACT_SETTINGS' => 'Kapcsolat oldal beállítások', + 'ACP_CRITICAL_LOGS' => 'Hibanapló', + 'ACP_CUSTOM_PROFILE_FIELDS' => 'Egyedi profil mezÅ‘k', + + 'ACP_DATABASE' => 'Adatbázis-kezelés', + 'ACP_DISALLOW' => 'Letiltás', + 'ACP_DISALLOW_USERNAMES' => 'Felhasználónevek letiltása', + + 'ACP_EMAIL_SETTINGS' => 'E-mail beállítások', + 'ACP_EXTENSION_GROUPS' => 'Csatolmány kiterjesztéscsoportok kezelése', + 'ACP_EXTENSION_MANAGEMENT' => 'Kiterjesztések kezelése', + 'ACP_EXTENSIONS' => 'Kiterjesztések', + + 'ACP_FORUM_BASED_PERMISSIONS' => 'Fórum alapú jogosultságok', //?? "Forum based permissions" a jogosultságokhoz ki kell találni egy terminológiát + 'ACP_FORUM_LOGS' => 'Fórum naplók', + 'ACP_FORUM_MANAGEMENT' => 'Fórumok kezelése', //? használják? + 'ACP_FORUM_MODERATORS' => 'Fórum moderátorok', + 'ACP_FORUM_PERMISSIONS' => 'Fórum jogosultságok', + 'ACP_FORUM_PERMISSIONS_COPY' => 'Fórum jogosultságok másolása', + 'ACP_FORUM_ROLES' => 'Fórum szerepek', + + 'ACP_GENERAL_CONFIGURATION' => 'Ãltalános konfiguráció', //? használják + 'ACP_GENERAL_TASKS' => 'Ãltalános dolgok', //?? "General tasks" 'Ãltalános feladatok' 'Ãltalános dolgok' + 'ACP_GLOBAL_MODERATORS' => 'Globális moderátorok', + 'ACP_GLOBAL_PERMISSIONS' => 'Globális jogosultságok', + 'ACP_GROUPS' => 'Csoportok', + 'ACP_GROUPS_FORUM_PERMISSIONS' => 'Csoport fórum jogosultságai', //? "Groups’ forum permissions" + 'ACP_GROUPS_MANAGE' => 'Csoportok kezelése', + 'ACP_GROUPS_MANAGEMENT' => 'Csoport-kezelés', + 'ACP_GROUPS_PERMISSIONS' => 'Csoport jogosultságai', + 'ACP_GROUPS_POSITION' => 'Csoport helyének kezelése', //? + + 'ACP_HELP_PHPBB' => 'Segítsd a phpBB-t', //? "Help support phpBB" + + 'ACP_ICONS' => 'Téma ikonok', + 'ACP_ICONS_SMILIES' => 'Téma ikonok/emotikonok', + 'ACP_INACTIVE_USERS' => 'Inaktív felhasználók', + 'ACP_INDEX' => 'AVP kezdÅ‘lap', + + 'ACP_JABBER_SETTINGS' => 'Jabber beállítások', + + 'ACP_LANGUAGE' => 'Nyelv-kezelés', + 'ACP_LANGUAGE_PACKS' => 'Nyelvi csomagok', + 'ACP_LOAD_SETTINGS' => 'Terhelés beállítások', + 'ACP_LOGGING' => 'Naplózás', + + 'ACP_MAIN' => 'AVP kezdÅ‘lap', + + 'ACP_MANAGE_ATTACHMENTS' => 'Csatolmányok kezelése', + 'ACP_MANAGE_ATTACHMENTS_EXPLAIN' => 'Itt kezelheted a hozzászólásokban és privát üzenetekben lévÅ‘ csatolmáynokat.', + + 'ACP_MANAGE_EXTENSIONS' => 'Csatolmány kiterjesztések kezelése', //? egybeírás + 'ACP_MANAGE_FORUMS' => 'Fórumok kezelése', + 'ACP_MANAGE_RANKS' => 'Rangok kezelése', + 'ACP_MANAGE_REASONS' => 'Jelentés/visszautasítás okok kezelése', + 'ACP_MANAGE_USERS' => 'Felhasználók kezelése', + 'ACP_MASS_EMAIL' => 'Csoportos e-mail', + 'ACP_MESSAGES' => 'Ãœzenetek', + 'ACP_MESSAGE_SETTINGS' => 'Privát üzenet beállítások', + 'ACP_MODULE_MANAGEMENT' => 'Modulok kezelése', + 'ACP_MOD_LOGS' => 'Moderátori napló', + 'ACP_MOD_ROLES' => 'Moderátori szerepek', + + 'ACP_NO_ITEMS' => 'Még nincs ilyen elem.', + + 'ACP_ORPHAN_ATTACHMENTS' => 'Ãrva csatolmányok', + + 'ACP_PERMISSIONS' => 'Jogosultságok', + 'ACP_PERMISSION_MASKS' => 'Effektív jogosultságok', //?? "Permission masks", 'Tényleges jogosultságok', 'Alkalmazott jogosultságok' + 'ACP_PERMISSION_ROLES' => 'Jogosultság szerepek', + 'ACP_PERMISSION_TRACE' => 'Jogosultság visszakövetés', + 'ACP_PHP_INFO' => 'PHP információ', + 'ACP_POST_SETTINGS' => 'Hozzászólás beállítások', + 'ACP_PRUNE_FORUMS' => 'Fórumok megtisztítása', //?? alternatívák a prune-re: 'tisztítás', 'tisztogatás', 'automatikus tisztítás', 'automatikus törlés', 'megnyirbálás', 'megtisztítás', 'gyomlálás', 'megnyesés' - egyre jobbak :D + 'ACP_PRUNE_USERS' => 'Felhasználók megtisztítása', + 'ACP_PRUNING' => 'Megtisztítás', //? + + 'ACP_QUICK_ACCESS' => 'Gyorsmenü', + + 'ACP_RANKS' => 'Rangok', + 'ACP_REASONS' => 'Jelentés/visszautasítás okok', + 'ACP_REGISTER_SETTINGS' => 'Felhasználói regisztrációs beállítások', //? kell a felhasználói? (nem) + + 'ACP_RESTORE' => 'Visszaállítás', + + 'ACP_FEED' => 'Csatornák kezelése', //? + 'ACP_FEED_SETTINGS' => 'Csatorna beállítások', //? 'Szindikáció beállítások'? 'ATOM beállítások'? + + 'ACP_SEARCH' => 'KeresÅ‘ konfiguráció', + 'ACP_SEARCH_INDEX' => 'KeresÅ‘index', + 'ACP_SEARCH_SETTINGS' => 'KeresÅ‘ beállítások', + + 'ACP_SECURITY_SETTINGS' => 'Biztonsági beállítások', + 'ACP_SERVER_CONFIGURATION' => 'Szerver konfiguráció', //? + 'ACP_SERVER_SETTINGS' => 'Szerver beállítások', + 'ACP_SIGNATURE_SETTINGS' => 'Aláírás beállítások', + 'ACP_SMILIES' => 'Emotikonok', + 'ACP_STYLE_MANAGEMENT' => 'Megjelenések kezelése', + 'ACP_STYLES' => 'Megjelenések', + 'ACP_STYLES_CACHE' => 'Gyorsítótár törlése', + 'ACP_STYLES_INSTALL' => 'Megjelenések telepítése', + + 'ACP_SUBMIT_CHANGES' => 'Változtatások elküldése', + + 'ACP_TEMPLATES' => 'Sablonok', + 'ACP_THEMES' => 'Stílusok', + + 'ACP_UPDATE' => 'Frissítés', + 'ACP_USERS_FORUM_PERMISSIONS' => 'Felhasználó fórum jogosultságai', + 'ACP_USERS_LOGS' => 'Felhasználói napló', + 'ACP_USERS_PERMISSIONS' => 'Felhasználó jogosultságai', + 'ACP_USER_ATTACH' => 'Csatolmányok', + 'ACP_USER_AVATAR' => 'Avatar', + 'ACP_USER_FEEDBACK' => 'Feljegyzések', + 'ACP_USER_GROUPS' => 'Csoportok', + 'ACP_USER_MANAGEMENT' => 'Felhasználók kezelése', //? + 'ACP_USER_OVERVIEW' => 'Ãttekintés', + 'ACP_USER_PERM' => 'Jogosultságok', + 'ACP_USER_PREFS' => 'Beállítások', + 'ACP_USER_PROFILE' => 'Profil', + 'ACP_USER_RANK' => 'Rang', + 'ACP_USER_ROLES' => 'Felhasználói szerepek', + 'ACP_USER_SECURITY' => 'Felhasználóbiztonság', //? + 'ACP_USER_SIG' => 'Aláírás', + 'ACP_USER_WARNINGS' => 'Figyelmeztetések', + + 'ACP_VC_SETTINGS' => 'Spam megelÅ‘zés', + 'ACP_VC_CAPTCHA_DISPLAY' => 'CAPTCHA kép elÅ‘nézet', //? + 'ACP_VERSION_CHECK' => 'Frissítések keresése', + 'ACP_VIEW_ADMIN_PERMISSIONS' => 'Adminisztrációs jogosultságok megtekintése', //? "View administrative permissions" 'Adminisztratív' + 'ACP_VIEW_FORUM_MOD_PERMISSIONS' => 'Fórum moderátori jogosultságok megtekintése', + 'ACP_VIEW_FORUM_PERMISSIONS' => 'Fórum alapú jogosultságok megtekintése', + 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS' => 'Globális moderátori jogosultságok megtekintése', + 'ACP_VIEW_USER_PERMISSIONS' => 'Felhasználó alapú jogosultságok megtekintése', //? + + 'ACP_WORDS' => 'Szócenzúra', //? "Word censoring" 'Szavak cenzúrázása' + + 'ACTION' => 'Művelet', + 'ACTIONS' => 'Műveletek', + 'ACTIVATE' => 'Aktiválás', + 'ADD' => 'Hozzáadás', + 'ADMIN' => 'Adminisztráció', + 'ADMIN_INDEX' => 'Adminisztrátori kezdÅ‘lap', + 'ADMIN_PANEL' => 'Adminisztrátori vezérlÅ‘pult', + + 'ADM_LOGOUT' => 'AVP kilépés', + 'ADM_LOGGED_OUT' => 'Sikeresen kiléptél az adminisztrátori vezérlÅ‘pultból.', + + 'BACK' => 'Vissza', + + 'CANNOT_CHANGE_FILE_GROUP' => 'Nem sikerült módosítani fájl tulajdonos csoportját', + 'CANNOT_CHANGE_FILE_PERMISSIONS' => 'Nem sikerült módosítani fájl jogosultságait', + 'CANNOT_COPY_FILES' => 'Nem sikerült a fájlok másolása', + 'CANNOT_CREATE_SYMLINK' => 'Nem sikerült szimbolikus linket létrehozni', + 'CANNOT_DELETE_FILES' => 'Nem sikerült a fájlok törlése', + 'CANNOT_DUMP_FILE' => 'Nem sikerült a fájl kiírása', + 'CANNOT_MIRROR_DIRECTORY' => 'Nem sikerült a könyvtár tükrözése', + 'CANNOT_RENAME_FILE' => 'Nem sikerült a fájl átnevezése', + 'CANNOT_TOUCH_FILES' => 'Nem sikerült meghatározni, hogy a fájl létezik-e', + + 'CONTAINER_EXCEPTION' => 'A phpBB a konténer létrehozása közben hibát észlelt, aminek oka egy telepített kiterjesztés. Emiatt az összes kiterjesztés ideiglenesen letiltásra került. Próbáld meg törölni a fórum gyorsítótárat. A hiba kijavítása után az összes kiterjesztés automatikusan újra engedélyezésre kerül. Ha a hiba továbbra is fennáll, segítségért látogasd meg a phpBB.com oldalát.', + 'EXCEPTION' => 'Rendszer kivétel', + + 'COLOUR_SWATCH' => 'Webbiztos színválasztó', + 'CONFIG_UPDATED' => 'A konfiguráció sikeresen frissítésre került.', //? + 'CRON_LOCK_ERROR' => 'Nem sikerült a cron lock megszerzése.', //? Could not obtain cron lock + 'CRON_NO_SUCH_TASK' => '“%s†ütemezett feladat nem található.', + 'CRON_NO_TASK' => 'Nincs futtatandó ütemezett feladat.', + 'CRON_NO_TASKS' => 'Nem található ütemezett feladat.', + 'CURRENT_VERSION' => 'Jelenlegi verzió', + + 'DEACTIVATE' => 'Deaktiválás', + 'DIRECTORY_DOES_NOT_EXIST' => 'A megadott „%s†elérési út nem létezik.', + 'DIRECTORY_NOT_DIR' => 'A megadott „%s†elérési út nem könyvtár.', + 'DIRECTORY_NOT_WRITABLE' => 'A megadott „%s†elérési út nem írható.', + 'DISABLE' => 'Kikapcsolás', + 'DOWNLOAD' => 'Letöltés', + 'DOWNLOAD_AS' => 'Letöltés, mint', //? + 'DOWNLOAD_STORE' => 'Ãllomány letöltése vagy eltárolása', //? "Download or store file" a store simán csak tárolása? + 'DOWNLOAD_STORE_EXPLAIN' => 'Az állományt közvetlenül letöltheted, vagy elmentheted a store/ könyvtáradba.', + 'DOWNLOADS' => 'Letöltések', + + 'EDIT' => 'Szerkesztés', + 'ENABLE' => 'Bekapcsolás', + 'EXPORT_DOWNLOAD' => 'Letöltés', + 'EXPORT_STORE' => 'Eltárolás', + + 'GENERAL_OPTIONS' => 'Ãltalános beállítások', //? "General options" 'Ãltalános választási lehetÅ‘ségek'?? + 'GENERAL_SETTINGS' => 'Ãltalános beállítások', + 'GLOBAL_MASK' => 'Globális effektív jogosultságok', //? "Global permission mask" + + 'INSTALL' => 'Telepítés', + 'IP' => 'Felhasználó IP-je', + 'IP_HOSTNAME' => 'IP-címek vagy hosztnevek', //? egyesszám? + + 'LATEST_VERSION' => 'Legfrissebb verzió', + 'LOAD_NOTIFICATIONS' => 'Értesítések megjelenítése', + 'LOAD_NOTIFICATIONS_EXPLAIN' => 'Értesítések megjelenítése minden oldalon (általában a fejlécben).', + 'LOGGED_IN_AS' => 'Bejelentkezve:', //? "You are logged in as:" 'Bejelentkeztél, mint', 'Be vagy lépve, mint', 'Bejelentkezve, mint' + 'LOGIN_ADMIN' => 'A fórum adminisztrálásához azonosított felhasználónak kell lenned.', + 'LOGIN_ADMIN_CONFIRM' => 'A fórum adminisztrálásához újra azonosítanod kell magad.', + 'LOGIN_ADMIN_SUCCESS' => 'Sikeresen azonosításra kerültél, most továbbirányításra kerülsz az adminisztrátori vezérlÅ‘pultba.', + 'LOOK_UP_FORUM' => 'Fórum kiválasztása', + 'LOOK_UP_FORUMS_EXPLAIN'=> 'Több fórumot is kiválaszthatsz.', + + 'MANAGE' => 'Kezelés', //? + 'MENU_TOGGLE' => 'Oldalsó menü elrejtése/mutatása', + 'MORE' => 'Továbbiak', // Not used at the moment //? + 'MORE_INFORMATION' => 'További információ »', + 'MOVE_DOWN' => 'Mozgatás lejjebb', + 'MOVE_UP' => 'Mozgatás feljebb', + + 'NOTIFY' => 'Értesítés', + 'NO_ADMIN' => 'Nincs jogosultságod a fórum adminisztrálásához.', + 'NO_EMAILS_DEFINED' => 'Nem található valós e-mail cím.', //? "No valid e-mail addresses found." hol használják? + 'NO_FILES_TO_DELETE' => 'A törlésre kiválasztott csatolmányok nem léteznek.', + 'NO_PASSWORD_SUPPLIED' => 'Az adminisztrátori vezérlÅ‘pulthoz való hozzáféréshez meg kell adnod a jelszavad.', + + 'OFF' => 'Kikapcsolva', + 'ON' => 'Bekapcsolva', + + 'PARSE_BBCODE' => 'BBCode értelmezése', //? "Parse BBCode" 'BBCode feldolgozása' 'BBCode értelmezése' 'BBCode bekapcsolva' 'BBCode használata' + 'PARSE_SMILIES' => 'Emotikonok értelmezése', + 'PARSE_URLS' => 'Linkek értelmezése', + 'PERMISSIONS_TRANSFERRED' => 'Jogosultságok átruházva', + 'PERMISSIONS_TRANSFERRED_EXPLAIN' => 'Jelenleg %1$s jogosultságaival rendelkezel. A fórumot ezen felhasználó jogosultságaival böngészheted, viszont nem férhetsz hozzá az adminisztrációs vezérlÅ‘pulthoz, mivel adminisztrátori jogosultságok nem kerültek átruházásra. Bármikor visszatérhetsz a saját jogosultságaidhoz.', + 'PROCEED_TO_ACP' => '%sTovább az AVP-hoz%s', + + 'RELEASE_ANNOUNCEMENT' => 'Bejelentés', + 'REMIND' => 'Emlékeztetés', + 'REPARSE_LOCK_ERROR' => 'Az újraformázó folyamat már fut egy másik folyamatból.', + 'RESYNC' => 'Újraszinkronizálás', + 'RUNNING_TASK' => 'Futó feladat: %s.', + + 'SELECT_ANONYMOUS' => 'Vendég felhasználó kiválasztása', + 'SELECT_OPTION' => 'Opció kiválasztása', + + 'SETTING_TOO_LOW' => 'A „%1$s†beállításnak megadott érték túl kicsi. A legkisebb elfogadható érték %2$d.', + 'SETTING_TOO_BIG' => 'A „%1$s†beállításnak megadott érték túl nagy. A legnagyobb elfogadható érték %2$d.', + 'SETTING_TOO_LONG' => 'A „%1$s†beállításnak megadott érték túl hosszú. A leghosszabb elfogadható hossz %2$d karakter.', + 'SETTING_TOO_SHORT' => 'A „%1$s†beállításnak megadott érték túl rövid. A legrövidebb elfogadható hossz %2$d karakter.', + + 'SHOW_ALL_OPERATIONS' => 'Összes művelet megjelenítése', + + 'TASKS_NOT_READY' => 'Folyamatban lévÅ‘ feladatok:', //? + 'TASKS_READY' => 'Elkészült feladatok:', + 'TOTAL_SIZE' => 'Teljes méret', + + 'UCP' => 'Felhasználói vezérlÅ‘pult', + 'USERNAMES_EXPLAIN' => 'Minden felhasználónevet külön sorba írj.', + 'USER_CONTROL_PANEL' => 'Felhasználói vezérlÅ‘pult', + + 'UPDATE_NEEDED' => 'A fórum nem naprakész.', + 'UPDATE_NOT_NEEDED' => 'A fórum naprakész.', + 'UPDATES_AVAILABLE' => 'ElérhetÅ‘ frissítések:', + + 'WARNING' => 'Figyelmeztetés', +)); + +// PHP info +$lang = array_merge($lang, array( + 'ACP_PHP_INFO_EXPLAIN' => 'Ez az oldal információkat tartalmaz a szerveren lévÅ‘ PHP-ról. Az adatok között megtalálod a betöltött modulokat, elérhetÅ‘ változókat és az alap beállításokat. Ezek az információk hasznosak tudnak lenni egy probléma kivizsgálásánál. Kérjük, vedd figyelembe, hogy néhány tárhelyszolgáltató biztonsági okokból korlátozza, milyen információk jelennek meg itt. Az ezen az oldalon szereplÅ‘ adatokat nem tanácsos kiadni, hacsak nem egy hivatalos csapattag kérdezi azokat a támogató fórumokban!', + + 'NO_PHPINFO_AVAILABLE' => 'Nem lehet információkat megtudni a PHP konfigurációdról. A phpinfo() biztonsági okokból le lett tiltva.', +)); + +// Logs +$lang = array_merge($lang, array( + 'ACP_ADMIN_LOGS_EXPLAIN' => 'Ez a lista az adminisztrátorok összes műveletét, tevékenységét tartalmazza. Rendezheted felhasználónév, idÅ‘, IP-cím vagy művelet szerint. Ha rendelkezel a szükséges jogosultságokkal, törölheted az egyes bejegyzéseket vagy akár a napló teljes tartalmát.', + 'ACP_CRITICAL_LOGS_EXPLAIN' => 'Ez a lista a fórum által végrehajtott műveleteket tartalmazza. Ez a napló olyan információkat nyújt, melyeket fel tudsz használni problémák megoldásához, például hogy miért nem mennek el az e-mailek. Rendezheted felhasználónév, idÅ‘, IP-cím vagy művelet szerint. Ha rendelkezel a szükséges jogosultságokkal, törölheted az egyes bejegyzéseket vagy akár a teljes napló tartalmát.', + 'ACP_MOD_LOGS_EXPLAIN' => 'Ez a lista a moderátorok által a fórumokon, témákon és hozzászólásokon végrehajtott műveleteket tartalmazza, ide értve a kitiltásokat is. Rendezheted felhasználónév, idÅ‘, IP-cím vagy művelet szerint. Ha rendelkezel a szükséges jogosultságokkal, törölheted az egyes bejegyzéseket vagy akár a teljes napló tartalmát.', + 'ACP_USERS_LOGS_EXPLAIN' => 'Ez a lista a felhasználókon vagy a felhasználók által végrehajtott műveleteket tartalmazza (jelentések, figyelmeztetések és feljegyzések).', + 'ALL_ENTRIES' => 'Összes bejegyzés', + + 'DISPLAY_LOG' => 'Bejegyzések megjelenítése:', //? "Display entries from previous" + + 'NO_ENTRIES' => 'Ebben az idÅ‘tartamban nincs napló bejegyzés.', + + 'SORT_IP' => 'IP-cím', + 'SORT_DATE' => 'Dátum', + 'SORT_ACTION' => 'Művelet', +)); + +// Index page +$lang = array_merge($lang, array( + 'ADMIN_INTRO' => 'Köszönjük, hogy a phpBB-t választottad a fórumodnak. Ezen az oldalon egy áttekintést látsz a fórumod különbözÅ‘ statisztikai adatairól. Az oldal tetején és bal oldalán lévÅ‘ linkek segítségével a fórumod minden részét részletekbe menÅ‘en megváltoztathatod. Minden oldalon találsz majd egy leírást az aktuális beállításokhoz.', + 'ADMIN_LOG' => 'Naplózott adminisztrátori tevékenységek', + 'ADMIN_LOG_INDEX_EXPLAIN' => 'Itt egy áttekintést láthatsz az adminisztrátorok által végrehajtott utolsó öt műveletrÅ‘l. A teljes naplót megtekintheted a menü megfelelÅ‘ elemére vagy az alább lévÅ‘ linkre kattintva.', + 'AVATAR_DIR_SIZE' => 'Avatar könyvtár mérete', + + 'BOARD_STARTED' => 'Fórum indulása', + 'BOARD_VERSION' => 'Fórum verziója', + + 'DATABASE_SERVER_INFO' => 'Adatbázisszerver', + 'DATABASE_SIZE' => 'Adatbázis mérete', + + // Enviroment configuration checks, mbstring related + 'ERROR_MBSTRING_FUNC_OVERLOAD' => 'A függvény felüldefiniálás nincs megfelelÅ‘en konfigurálva', //? + 'ERROR_MBSTRING_FUNC_OVERLOAD_EXPLAIN' => 'A mbstring.func_overload értékének 0-nak vagy 4-nek kell lennie. Az aktuális értékét a PHP információ oldalon tudod ellenÅ‘rizni.', + 'ERROR_MBSTRING_ENCODING_TRANSLATION' => 'A transzparens karakterkódolás nincs megfelelÅ‘en konfigurálva', + 'ERROR_MBSTRING_ENCODING_TRANSLATION_EXPLAIN' => 'A mbstring.encoding_translation értékének 0-nak kell lennie. Az aktuális értékét a PHP információ oldalon tudod ellenÅ‘rizni.', + 'ERROR_MBSTRING_HTTP_INPUT' => 'A HTTP bemeneti karakter konverzió nincs megfelelÅ‘en konfigurálva', + 'ERROR_MBSTRING_HTTP_INPUT_EXPLAIN' => 'A mbstring.http_input értékének pass-nak kell lennie. Az aktuális értékét a PHP információ oldalon tudod ellenÅ‘rizni.', + 'ERROR_MBSTRING_HTTP_OUTPUT' => 'A HTTP kimeneti karakter konverzió nincs megfelelÅ‘en konfigurálva', + 'ERROR_MBSTRING_HTTP_OUTPUT_EXPLAIN' => 'A mbstring.http_output értékének pass-nak kell lennie. Az aktuális értékét a PHP információ oldalon tudod ellenÅ‘rizni.', + + 'FILES_PER_DAY' => 'Csatolmányok száma naponta', + 'FORUM_STATS' => 'Fórum statisztika', + + 'GZIP_COMPRESSION' => 'GZip tömörítés', + + 'NO_SEARCH_INDEX' => 'A kiválasztott keresÅ‘modulnak nincs keresÅ‘indexe.
    Kérjük hozd létre a “%1$s†indexét a %2$sKeresÅ‘index%3$s menüpontban.', + 'NOT_AVAILABLE' => 'Nem elérhetÅ‘', + 'NUMBER_FILES' => 'Csatolmányok száma', + 'NUMBER_POSTS' => 'Hozzászólások száma', + 'NUMBER_TOPICS' => 'Témák száma', + 'NUMBER_USERS' => 'Felhasználók száma', + 'NUMBER_ORPHAN' => 'Ãrva csatolmányok száma', + + 'PHP_VERSION' => 'PHP verzió', + 'PHP_VERSION_OLD' => 'A szerveren lévÅ‘ PHP verziót (%1$s) a jövÅ‘beli phpBB kiadások már nem fogják támogatni. A szükséges minimális PHP verzió %s$s. %3$sRészletek%4$s', + + 'POSTS_PER_DAY' => 'Hozzászólások száma naponta', + + 'PURGE_CACHE' => 'Gyorsítótár kiürítése', //? megtisztítása? + 'PURGE_CACHE_CONFIRM' => 'Biztosan ki akarod üríteni a gyorsítótárat?', + 'PURGE_CACHE_EXPLAIN' => 'Minden gyorsítótárazott elem törlésre kerül, beleértve a gyorsítótárazott sablon állományokat és adatbázis-lekérdezéseket is.', + 'PURGE_CACHE_SUCCESS' => 'A gyorsítótár sikeresen ürítésre került.', + + 'PURGE_SESSIONS' => 'Munkamenetek törlése', + 'PURGE_SESSIONS_CONFIRM' => 'Bitosan törölni szeretnéd az összes munkamenetet? Ennek folytán az összes felhasználó kiléptetésre fog kerülni.', + 'PURGE_SESSIONS_EXPLAIN' => 'Megszakítja és törli az összes munkamenetet. Minden felhasználó kiléptetésre kerül, mivel a munkamenet tábla kiürítÅ‘dik.', + 'PURGE_SESSIONS_SUCCESS' => 'A munkamenetek sikeresen ürítésre kerültek.', + + 'RESET_DATE' => 'Fórum indulási dátumának lenullázása', //? lenullázás? + 'RESET_DATE_CONFIRM' => 'Biztosan meg akarod változtatni a fórum indulásának dátumát mostanra?', + 'RESET_DATE_SUCCESS' => 'Fórum indulási dátuma lenullázásra került.', + 'RESET_ONLINE' => 'Valaha jelenlévÅ‘ legtöbb felhasználó számának lenullázása', //? + 'RESET_ONLINE_CONFIRM' => 'Biztosan le akarod nullázni a valaha jelenlévÅ‘ legtöbb felhasználó számlálót?', + 'RESET_ONLINE_SUCCESS' => 'Valaha jelenlévÅ‘ legtöbb felhasználó száma lenullázásra került.', + 'RESYNC_POSTCOUNTS' => 'Hozzászólásszámok újraszinkronizálása', //? hozzászólásszámok... + 'RESYNC_POSTCOUNTS_EXPLAIN' => 'Csak a létezÅ‘ hozzászólások kerülnek figyelembevételre. Az automatikus tisztítás által törölt hozzászólások nem lesznek beleszámolva.', //? + 'RESYNC_POSTCOUNTS_CONFIRM' => 'Biztosan újra akarod szinkronizálni a hozzászólásszámokat?', + 'RESYNC_POSTCOUNTS_SUCCESS' => 'A hozzászólásszámok újraszinkronizálásra kerültek.', //? + 'RESYNC_POST_MARKING' => 'Csillagozott témák újraszinkronizálása', //? dotted - csillagozott (prosilverben legalábbis) + 'RESYNC_POST_MARKING_CONFIRM' => 'Biztosan újra akarod szinkronizálni a csillagozott témákat?', + 'RESYNC_POST_MARKING_EXPLAIN' => 'ElÅ‘ször visszavonódik a megjelölés minden témáról, majd helyesen megjelölésre kerülnek azok a témák, melyekben volt valami aktivitás az elmúlt fél évben.', //? + 'RESYNC_POST_MARKING_SUCCESS' => 'A csillagozott témák újraszinkronizálásra kerültek.', //? + 'RESYNC_STATS' => 'Statisztika újraszinkronizálása', //? + 'RESYNC_STATS_CONFIRM' => 'Biztosan újra akarod szinkronizálni a statisztikát?', + 'RESYNC_STATS_EXPLAIN' => 'Újraszámolja a fórum hozzászólásait, témáit, felhasználóit és állományait.', //? + 'RESYNC_STATS_SUCCESS' => 'A statisztika újraszinkronizálásra került.', //? + 'RUN' => 'Futtatás most', + + 'STATISTIC' => 'Statisztika', + 'STATISTIC_RESYNC_OPTIONS' => 'Statisztikák újraszinkronizálása vagy lenullázása', + + 'TIMEZONE_INVALID' => 'A kiválasztott idÅ‘zóna érvénytelen.', + 'TIMEZONE_SELECTED' => '(jelenleg kiválasztva)', + 'TOPICS_PER_DAY' => 'Témák száma naponta', + + 'UPLOAD_DIR_SIZE' => 'Feltöltött csatolmányok mérete', + 'USERS_PER_DAY' => 'Felhasználók száma naponta', + + 'VALUE' => 'Érték', + 'VERSIONCHECK_FAIL' => 'Nem sikerült lekérni a legújabb verzióval kapcsolatos információkat.', + 'VERSIONCHECK_FORCE_UPDATE' => 'Verzió ellenÅ‘rzése újra', + 'VERSION_CHECK' => 'Verzió ellenÅ‘rzés', + 'VERSION_CHECK_EXPLAIN' => 'EllenÅ‘rzi, hogy a phpBB verziója naprakész-e.', + 'VERSIONCHECK_INVALID_ENTRY' => 'A legújabb verzióval kapcsolatos információk nem támogatott bejegyzést tartalmaznak.', + 'VERSIONCHECK_INVALID_URL' => 'A legújabb verzióval kapcsolatos információk érvénytelen URL-t tartalmaznak.', + 'VERSIONCHECK_INVALID_VERSION' => 'A legújabb verzióval kapcsolatos információk érvénytelen verziószámot tartalmaz.', + 'VERSION_NOT_UP_TO_DATE_ACP' => 'A phpBB verziódhoz újabb frissítések érhetÅ‘ek el.
    A lentebbi linken az újabb verzió bejelentését és a frissítéshez szükséges instrukciókat találod.', + 'VERSION_NOT_UP_TO_DATE_TITLE' => 'A phpBB verziódhoz újabb frissítések érhetőek el.', + 'VERSION_UP_TO_DATE_ACP' => 'A phpBB verziód a jelenleg elérhető legfrissebb verzió, jelenleg nincsenek telepíthető frissítések.', + 'VIEW_ADMIN_LOG' => 'Adminisztrátori napló megtekintése', + 'VIEW_INACTIVE_USERS' => 'Inaktív felhasználók megtekintése', + + 'WELCOME_PHPBB' => 'Üdvözlünk a phpBB-ben!', + 'WRITABLE_CONFIG' => 'A konfigurációs állományod (config.php) jelenleg mindenki által írható. Határozottan javasoljuk, hogy változtasd meg a jogosultságait 640-re vagy legalább 644-re (például: chmod 640 config.php).', + +)); + +// Inactive Users +$lang = array_merge($lang, array( + 'INACTIVE_DATE' => 'Inaktiváció dátuma', + 'INACTIVE_REASON' => 'Ok', + 'INACTIVE_REASON_MANUAL' => 'Adminisztrátor deaktiválta az azonosítót', //? "Account deactivated by administrator" + 'INACTIVE_REASON_PROFILE' => 'Profil adatok megváltoztak', + 'INACTIVE_REASON_REGISTER' => 'Újonnan regisztrált azonosító', + 'INACTIVE_REASON_REMIND' => 'Azonosító újraaktiválásra kötelezve', + 'INACTIVE_REASON_UNKNOWN' => 'Ismeretlen', + 'INACTIVE_USERS' => 'Inaktív felhasználók', + 'INACTIVE_USERS_EXPLAIN' => 'Ez a lista azokat a felhasználókat tartalmazza, akik regisztráltak, de azonosítójuk inaktív. Szándékod szerint aktiválhatod, törölheted vagy emlékeztetheted (egy e-mail küldésével) őket.', + 'INACTIVE_USERS_EXPLAIN_INDEX' => 'Ez a lista az utolsó 10 regisztrált felhasználót tartalmazza, akinek inaktív az azonosítója. Ennek oka lehet, hogy a regisztráció megerősítéshez kötött és ezek a felhasználók még nem kerültek visszaigazolásra, vagy inaktiválva lettek. A teljes listát megtekintheted a menü megfelelő elemére vagy az alább lévő linkre kattintva, ahol aktiválhatod, törölheted vagy emlékeztetheted (egy e-mail küldésével) ezeket a felhasználókat.', + + 'NO_INACTIVE_USERS' => 'Nincs inaktív felhasználó.', + + 'SORT_INACTIVE' => 'Inaktiváció dátuma', + 'SORT_LAST_VISIT' => 'Utolsó látogatás', + 'SORT_REASON' => 'Inaktiváció oka', + 'SORT_REG_DATE' => 'Regisztráció dátuma', + 'SORT_LAST_REMINDER'=> 'Utolsó emlékeztetés', + 'SORT_REMINDER' => 'Emlékeztető küldése', //? Valószínűleg igen-nem érték, hogy lett-e emlékezetve. Az angol kifjezés se a legegyértelműbb, de attól még a magyaron is lehetne javítani. + + 'USER_IS_INACTIVE' => 'A felhasználó inaktív.', +)); + +// Segítsd a phpBB-t +$lang = array_merge($lang, array( + 'EXPLAIN_SEND_STATISTICS' => 'Kérünk, küldj információt a phpBB részére a szerveredről és a fórumod beállításairól statisztikai elemzés céljára. Minden adat, ami azonosíthatna téged, eltávolításra került – az adatok teljesen névtelenek. Az itt gyűjtött információra alapozva hozunk döntéseket a jövőbeli phpBB verziókról. A statisztikákat nyilvánosan elérhetővé tesszük. Az adatokat ezen felül még megosztjuk a PHP projekttel, amely egy programozási nyelv, amiben a phpBB íródott.', //? '..., azon programozási nyelv fejlesztőivel, amiben a phpBB íródott.' + 'EXPLAIN_SHOW_STATISTICS' => 'Az alábbi gomb segítségével áttekintheted az összes elküldésre kerülő változót.', + 'DONT_SEND_STATISTICS' => 'Amennyiben nem kívánsz statisztikai adatokat küldeni, térj vissza az AVP kezdőlapjára.', + 'GO_ACP_MAIN' => 'Visszatérés az AVP kezdőldalra', + 'HIDE_STATISTICS' => 'Adatok elrejtése', + 'SEND_STATISTICS' => 'Statisztika küldése', + 'SEND_STATISTICS_LONG' => 'Statisztikai adatok küldése', + 'SHOW_STATISTICS' => 'Adatok megjelenítése', + 'THANKS_SEND_STATISTICS' => 'Köszönjük, hogy segítettél az adatgyűjtésben!', + 'FAIL_SEND_STATISTICS' => 'A phpBB nem tudta elküldeni a statisztikai adatokat', +)); + +// Log Entries +$lang = array_merge($lang, array( + //? ACL: "Added or edited ..." - simán csak módosítás lett belőle, mivel a 'hozzáadása vagy módosítása/szerkesztése' elég hosszú lenne, és kicsit fura; a többes számot valószínűleg jobb lenne eggyes számra cserélni (magyarban jobban hangzik?) - persze mindkettő előfordulhat + 'LOG_ACL_ADD_USER_GLOBAL_U_' => 'Felhasználók felhasználói jogosultságainak módosítása
    » %s', + 'LOG_ACL_ADD_GROUP_GLOBAL_U_' => 'Csoportok felhasználói jogosultságainak módosítása
    » %s', + 'LOG_ACL_ADD_USER_GLOBAL_M_' => 'Felhasználók globális moderátori jogosultságainak módosítása
    » %s', + 'LOG_ACL_ADD_GROUP_GLOBAL_M_' => 'Csoportok globális moderátori jogosultságainak módosítása
    » %s', + 'LOG_ACL_ADD_USER_GLOBAL_A_' => 'Felhasználók adminisztrátori jogosultságainak módosítása
    » %s', + 'LOG_ACL_ADD_GROUP_GLOBAL_A_' => 'Csoportok adminisztrátori jogosultságainak módosítása
    » %s', + + 'LOG_ACL_ADD_ADMIN_GLOBAL_A_' => 'Adminisztrátorok hozzáadása vagy módosítása
    » %s', + 'LOG_ACL_ADD_MOD_GLOBAL_M_' => 'Globális moderátorok hozzáadása vagy módosítása
    » %s', + + 'LOG_ACL_ADD_USER_LOCAL_F_' => 'Felhasználók %1$s fórum hozzáférésének módosítása
    » %2$s', + 'LOG_ACL_ADD_USER_LOCAL_M_' => 'Felhasználók %1$s fórum moderátori hozzáférésének módosítása
    » %2$s', + 'LOG_ACL_ADD_GROUP_LOCAL_F_' => 'Csoportok %1$s fórum hozzáférésének módosítása
    » %2$s', + 'LOG_ACL_ADD_GROUP_LOCAL_M_' => 'Csoportok %1$s fórum moderátori hozzáférésének módosítása
    » %2$s', + + 'LOG_ACL_ADD_MOD_LOCAL_M_' => 'Moderátorok hozzáadása vagy módosítása %1$s fórumban
    » %2$s', + 'LOG_ACL_ADD_FORUM_LOCAL_F_' => 'Fórum jogosultságok módosítása %1$s fórumban
    » %2$s', + + //? eltávolítás helyett törlés (vagy más)? + 'LOG_ACL_DEL_ADMIN_GLOBAL_A_' => 'Adminisztrátorok eltávolítása
    » %s', + 'LOG_ACL_DEL_MOD_GLOBAL_M_' => 'Globális moderátorok eltávolítása
    » %s', + 'LOG_ACL_DEL_MOD_LOCAL_M_' => 'Moderátorok eltávolítása %1$s fórumból
    » %2$s', + 'LOG_ACL_DEL_FORUM_LOCAL_F_' => 'Felhasználói/csoport jogosultságok törlése %1$s fórumban
    » %2$s', + + 'LOG_ACL_TRANSFER_PERMISSIONS' => 'Jogosultságok átvétele mástól:
    » %s', + 'LOG_ACL_RESTORE_PERMISSIONS' => 'Saját jogosultságok visszaállítása más jogosultságainak használata után:
    » %s', + + 'LOG_ADMIN_AUTH_FAIL' => 'Sikertelen adminisztrátori belépési kísérlet', + 'LOG_ADMIN_AUTH_SUCCESS' => 'Sikeres adminisztrátori bejelentkezés', + + 'LOG_ATTACHMENTS_DELETED' => 'Felhasználó csatolmányainak törlése
    » %s', + + 'LOG_ATTACH_EXT_ADD' => 'Csatolmány kiterjesztés hozzáadása vagy szerkesztése
    » %s', + 'LOG_ATTACH_EXT_DEL' => 'Csatolmány kiterjesztés törlése
    » %s', + 'LOG_ATTACH_EXT_UPDATE' => 'Csatolmány kiterjesztés frissítése
    » %s', + 'LOG_ATTACH_EXTGROUP_ADD' => 'Kiterjesztéscsoport hozzáadása
    » %s', + 'LOG_ATTACH_EXTGROUP_EDIT' => 'Kiterjesztéscsoport szerkesztése
    » %s', + 'LOG_ATTACH_EXTGROUP_DEL' => 'Kiterjesztéscsoport törlése
    » %s', + 'LOG_ATTACH_FILEUPLOAD' => 'Ãrva csatolmány hozzárendelése egy hozzászóláshoz
    » azonosító: %1$d - %2$s', + 'LOG_ATTACH_ORPHAN_DEL' => 'Ãrva csatolmányok törlése
    » %s', + + 'LOG_BAN_EXCLUDE_USER' => 'Felhasználó feloldása a kitiltások alól „%1$s†okkal
    » %2$s', //? exclude + 'LOG_BAN_EXCLUDE_IP' => 'IP-cím feloldása a kitiltások alól „%1$s†okkal
    » %2$s', + 'LOG_BAN_EXCLUDE_EMAIL' => 'E-mail cím feloldása a kitiltások alól „%1$s†okkal
    » %2$s', + 'LOG_BAN_USER' => 'Felhasználó kitiltása „%1$s†okkal
    » %2$s', + 'LOG_BAN_IP' => 'IP-cím kitiltása „%1$s†okkal
    » %2$s', + 'LOG_BAN_EMAIL' => 'E-mail cím kitiltása „%1$s†okkal
    » %2$s', + 'LOG_UNBAN_USER' => 'Felhasználó kitiltásának feloldása
    » %s', + 'LOG_UNBAN_IP' => 'IP-cím kitiltásának feloldása
    » %s', + 'LOG_UNBAN_EMAIL' => 'E-mail cím kitiltásának feloldása
    » %s', + + 'LOG_BBCODE_ADD' => 'Új BBCode címke felvétele
    » %s', + 'LOG_BBCODE_EDIT' => 'BBCode címke szerkesztése
    » %s', + 'LOG_BBCODE_DELETE' => 'BBCode címke törlése
    » %s', + 'LOG_BBCODE_CONFIGURATION_ERROR' => 'Hiba történt a BBCode konfigurálása közben: %1$s
    » %2$s', // ? Error while configuring BBCode + + 'LOG_BOT_ADDED' => 'Új robot felvétele
    » %s', + 'LOG_BOT_DELETE' => 'Robot törlése
    » %s', + 'LOG_BOT_UPDATED' => 'Létező robot frissítése
    » %s', + + 'LOG_CLEAR_ADMIN' => 'Adminisztrátori napló kiürítése', //? kiürítés + 'LOG_CLEAR_CRITICAL' => 'Hibanapló kiürítése', + 'LOG_CLEAR_MOD' => 'Moderátori napló kiürítése', + 'LOG_CLEAR_USER' => 'Felhasználó naplójának kiürítése
    » %s', + 'LOG_CLEAR_USERS' => 'Felhasználói naplók kiürítése', + + 'LOG_CONFIG_ATTACH' => 'Csatolmány beállítások módosítása', + 'LOG_CONFIG_AUTH' => 'Azonosítás beállítások módosítása', + 'LOG_CONFIG_AVATAR' => 'Avatar beállítások módosítása', + 'LOG_CONFIG_COOKIE' => 'Süti beállítások módosítása', + 'LOG_CONFIG_EMAIL' => 'E-mail beállítások módosítása', + 'LOG_CONFIG_FEATURES' => 'Fórum funkció beállítások módosítása', + 'LOG_CONFIG_LOAD' => 'Terhelés beállítások módosítása', + 'LOG_CONFIG_MESSAGE' => 'Privát üzenet beállítások módosítása', + 'LOG_CONFIG_POST' => 'Hozzászólás beállítások módosítása', + 'LOG_CONFIG_REGISTRATION' => 'Felhasználói regisztrációs beállítások módosítása', //? + 'LOG_CONFIG_FEED' => 'Csatorna beállítások módosí', + 'LOG_CONFIG_SEARCH' => 'Kereső beállítások módosítása', + 'LOG_CONFIG_SECURITY' => 'Biztonsági beállítások módosítása', + 'LOG_CONFIG_SERVER' => 'Szerver beállítások módosítása', + 'LOG_CONFIG_SETTINGS' => 'Fórum beállítások módosítása', + 'LOG_CONFIG_SIGNATURE' => 'Aláírás beállítások módosítása', + 'LOG_CONFIG_VISUAL' => 'Anti-spamrobot beállítások módosítása', + + 'LOG_APPROVE_TOPIC' => 'Téma jóváhagyása
    » %s', + 'LOG_BUMP_TOPIC' => 'Téma előreugrasztása
    » %s', + 'LOG_DELETE_POST' => '“%2$s†által írt “%1$s†hozzászólás törlése a következő indokkal
    » %3$s', // 'Hozzászólás törlése
    » %s', + 'LOG_DELETE_SHADOW_TOPIC' => 'Ãrnyék téma törlése
    » %s', + 'LOG_DELETE_TOPIC' => '“%2$s†által írt “%1$s†téma törlése a következő indokkal
    » %3$s', // 'Téma törlése
    » %s', + 'LOG_FORK' => 'Téma másolása
    » %s', + 'LOG_LOCK' => 'Téma lezárása
    » %s', + 'LOG_LOCK_POST' => 'Hozzászólás lezárása
    » %s', + 'LOG_MERGE' => 'Hozzászólások áthelyezése másik témába:
    » %s', + 'LOG_MOVE' => 'Téma áthelyezése
    » %1$s fórumból %2$s fórumba', + 'LOG_MOVED_TOPIC' => 'Téma áthelyezése
    » %s', + 'LOG_PM_REPORT_CLOSED' => 'PÜ jelentés lezárása
    » %s', + 'LOG_PM_REPORT_DELETED' => 'PÜ jelentés törlése
    » %s', + 'LOG_POST_APPROVED' => 'Hozzászólás jóváhagyása
    » %s', + 'LOG_POST_DISAPPROVED' => '“%3$s†által írt “%1$s†hozzászólás elutasítása a következő indokkal
    » %2$s', // „%1$s†hozzászólás elutasítása
    » ok: %2$s', + 'LOG_POST_EDITED' => '“%2$s†által írt “%1$s†hozzászólás szerkesztése a következő indokkal
    » %3$s', // '„%1$s†hozzászólás szerkesztése
    » szerző: %2$s', + 'LOG_POST_RESTORED' => 'Hozzászólás visszaállítása
    » %s', + 'LOG_REPORT_CLOSED' => 'Jelentés lezárása
    » %s', + 'LOG_REPORT_DELETED' => 'Jelentés törlése
    » %s', + 'LOG_RESTORE_TOPIC' => '“%1$s†téma visszaállítása
    » szerző: %2$s', //? Restored topic “%1$s†written by
    » %2$s + 'LOG_SOFTDELETE_POST' => '“%2$s†által írt “%1$s†hozzászólás visszaállítható törlése a következő indokkal
    » %3$s', + 'LOG_SOFTDELETE_TOPIC' => '“%2$s†által írt “%1$s†téma visszaállítható törlése a következő indokkal
    » %3$s', + 'LOG_SPLIT_DESTINATION' => 'Szétválasztott hozzászólások áthelyezése
    » %s témába', + 'LOG_SPLIT_SOURCE' => 'Téma szétválasztása
    » %s', + + 'LOG_TOPIC_APPROVED' => 'Téma jóváhagyása
    » %s', + 'LOG_TOPIC_RESTORED' => 'Téma visszaállítása
    » %s', + 'LOG_TOPIC_DISAPPROVED' => '„%3$s†által nyitott „%1$s†téma elutasítása
    ok: %2$s', + 'LOG_TOPIC_RESYNC' => 'Téma újraszinkronizálása
    » %s', //? + 'LOG_TOPIC_TYPE_CHANGED' => 'Téma típusának megváltoztatása
    » %s', + 'LOG_UNLOCK' => 'Téma megnyitása
    » %s', + 'LOG_UNLOCK_POST' => 'Hozzászólás megnyitása
    » %s', + + 'LOG_DISALLOW_ADD' => 'Letiltott felhasználónév hozzáadása
    » %s', + 'LOG_DISALLOW_DELETE' => 'Letiltott felhasználónév törlése', + + 'LOG_DB_BACKUP' => 'Adatbázis kimentése', + 'LOG_DB_DELETE' => 'Adatbázis-kimentés törlése', + 'LOG_DB_RESTORE' => 'Adatbázis-kimentés visszaállítása', + + 'LOG_DOWNLOAD_EXCLUDE_IP' => 'IP/hoszt kizárása a letöltési listából
    » %s', //? letöltési lista?? hoszt(név)? + 'LOG_DOWNLOAD_IP' => 'IP/hoszt hozzáadása a letöltési listához
    » %s', + 'LOG_DOWNLOAD_REMOVE_IP' => 'IP/hoszt törlése a letöltési listából
    » %s', + + 'LOG_ERROR_JABBER' => 'Jabber hiba
    » %s', + 'LOG_ERROR_EMAIL' => 'E-mail hiba
    » %s', + 'LOG_ERROR_CAPTCHA' => 'CAPTCHA hiba
    » %s', + + 'LOG_FORUM_ADD' => 'Új fórum létrehozása
    » %s', + 'LOG_FORUM_COPIED_PERMISSIONS' => 'Fórum jogosultságok másolása a %1$s fórumból
    » %2$s', + 'LOG_FORUM_DEL_FORUM' => 'Fórum törlése
    » %s', + 'LOG_FORUM_DEL_FORUMS' => 'Fórum és alfórumainak törlése
    » %s', + 'LOG_FORUM_DEL_MOVE_FORUMS' => 'Fórum törlése és alfórumainak átmozgatása a %1$s fórumba
    » %2$s', + 'LOG_FORUM_DEL_MOVE_POSTS' => 'Fórum törlése és a hozzászólások áthelyezése a %1$s fórumba
    » %2$s', + 'LOG_FORUM_DEL_MOVE_POSTS_FORUMS' => 'Fórum és alfórumainak törlése, hozzászólások áthelyezése a %1$s fórumba
    » %2$s', + 'LOG_FORUM_DEL_MOVE_POSTS_MOVE_FORUMS' => 'Fórum törlése, a hozzászólások áthelyezése a %1$s fórumba és az alfórumok áthelyezése a %2$s fórumba
    » %3$s', //? + 'LOG_FORUM_DEL_POSTS' => 'Fórum és hozzászólásainak törlése
    » %s', + 'LOG_FORUM_DEL_POSTS_FORUMS' => 'Fórum és alfórumainak valamint hozzászólásainak törlése
    » %s', + 'LOG_FORUM_DEL_POSTS_MOVE_FORUMS' => 'Fórum és hozzászólásainak törlése, alfórumok áthelyezése a %1$s fórumba
    » %2$s', + 'LOG_FORUM_EDIT' => 'Fórum beállítások szerkesztése
    » %s', //? beállítások - details + 'LOG_FORUM_MOVE_DOWN' => '%1$s fórum mozgatása %2$s fórum alá', + 'LOG_FORUM_MOVE_UP' => '%1$s fórum mozgatása %2$s fórum fölé', + 'LOG_FORUM_SYNC' => 'Fórum újraszinkronizálása
    » %s', + + 'LOG_GENERAL_ERROR' => 'Ãltalános hiba lépett fel: %1$s
    » %2$s', + + 'LOG_GROUP_CREATED' => 'Új csoport létrehozása
    » %s', + 'LOG_GROUP_DEFAULTS' => '„%1$s†csoport elsődlegessé tétele a következő tagoknak:
    » %2$s', //? + 'LOG_GROUP_DELETE' => 'Csoport törlése
    » %s', + 'LOG_GROUP_DEMOTED' => 'Vezető visszaléptetése a %1$s csoportban
    » %2$s', + 'LOG_GROUP_PROMOTED' => 'Tag előléptetése vezetőnek a %1$s csoportban
    » %2$s', + 'LOG_GROUP_REMOVE' => 'Tagok törlése a %1$s csoportból
    » %2$s', + 'LOG_GROUP_UPDATED' => 'Csoport beállítások frissítése
    » %s', + 'LOG_MODS_ADDED' => 'Új vezetők hozzáadása a %1$s csoporthoz
    » %2$s', + 'LOG_USERS_ADDED' => 'Új tagok felvétele a %1$s csoportba
    » %2$s', + 'LOG_USERS_APPROVED' => 'Felhasználók felvételének jóváhagyása a %1$s csoportba
    » %2$s', + 'LOG_USERS_PENDING' => 'Jóváhagyásra váró felvételi kérelem a „%1$s†csoportba
    » %2$s', + + 'LOG_IMAGE_GENERATION_ERROR' => 'Hiba kép generálása közben
    » Hiba az %1$s állomány %2$s sorában: %3$s', + + 'LOG_INACTIVE_ACTIVATE' => 'Inaktív felhasználók aktiválása
    » %s', + 'LOG_INACTIVE_DELETE' => 'Inaktív felhasználók törlése
    » %s', + 'LOG_INACTIVE_REMIND' => 'Emlékeztető e-mail küldése inaktív felhasználóknak
    » %s', + 'LOG_INSTALL_CONVERTED' => 'Konvertálás %1$s verzióról phpBB %2$s verzióra', + 'LOG_INSTALL_INSTALLED' => 'PhpBB %s telepítése', + + 'LOG_IP_BROWSER_FORWARDED_CHECK' => 'Sikertelen munkamenet IP/böngésző/X_FORWARDED_FOR összevetés
    » Felhasználó „%1$s†IP-címének összevetése a „%2$s†munkamenet IP-címmel, felhasználó „%3$s†böngésző azonosítójának összevetése a munkamenet „%4$s†böngésző azonosítójával és a felhasználó „%5$s†X_FORWARDED_FOR értékének összevetése a munkamenet „%6$s†X_FORWARDED_FOR értékével.', //? + + 'LOG_JAB_CHANGED' => 'Jabber azonosító megváltoztatása', + 'LOG_JAB_PASSCHG' => 'Jabber jelszó megváltoztatása', + 'LOG_JAB_REGISTER' => 'Jabber azonosító regisztrálása', //? + 'LOG_JAB_SETTINGS_CHANGED' => 'Jabber beállítások megváltoztatás', + + 'LOG_LANGUAGE_PACK_DELETED' => 'Nyelvi csomag törlése
    » %s', + 'LOG_LANGUAGE_PACK_INSTALLED' => 'Nyelvi csomag telepítése
    » %s', + 'LOG_LANGUAGE_PACK_UPDATED' => 'Nyelvi csomag beállítások frissítése
    » %s', //? + 'LOG_LANGUAGE_FILE_REPLACED' => 'Nyelvi fájl kicserélése
    » %s', + 'LOG_LANGUAGE_FILE_SUBMITTED' => 'Nyelvi fájl elküldése és a store könyvtárba helyezése
    » %s', + + 'LOG_MASS_EMAIL' => 'Csoportos e-mail küldése
    » %s', + + 'LOG_MCP_CHANGE_POSTER' => 'Küldő megváltoztatása a „%1$s†témában
    » %2$s felhasználóról %3$s felhasználóra', + + 'LOG_MODULE_DISABLE' => 'Modul kikapcsolása
    » %s', + 'LOG_MODULE_ENABLE' => 'Modul bekapcsolása
    » %s', + 'LOG_MODULE_MOVE_DOWN' => '%1$s modul mozgatása le a %2$s alá', + 'LOG_MODULE_MOVE_UP' => '%1$s modul mozgatása fel a %2$s fölé', + 'LOG_MODULE_REMOVED' => 'Modul eltávolítása
    » %s', + 'LOG_MODULE_ADD' => 'Modul hozzáadása
    » %s', + 'LOG_MODULE_EDIT' => 'Modul szerkesztése
    » %s', + + 'LOG_A_ROLE_ADD' => 'Adminisztrátori szerep hozzáadása
    » %s', + 'LOG_A_ROLE_EDIT' => 'Adminisztrátori szerep szerkesztése
    » %s', + 'LOG_A_ROLE_REMOVED' => 'Adminisztrátori szerep törlése
    » %s', + 'LOG_F_ROLE_ADD' => 'Fórum szerep hozzáadása
    » %s', + 'LOG_F_ROLE_EDIT' => 'Fórum szerep szerkesztése
    » %s', + 'LOG_F_ROLE_REMOVED' => 'Fórum szerep törlése
    » %s', + 'LOG_M_ROLE_ADD' => 'Moderátori szerep hozzáadása
    » %s', + 'LOG_M_ROLE_EDIT' => 'Moderátori szerep szerkesztése
    » %s', + 'LOG_M_ROLE_REMOVED' => 'Moderátori szerep törlése
    » %s', + 'LOG_U_ROLE_ADD' => 'Felhasználói szerep hozzáadása
    » %s', + 'LOG_U_ROLE_EDIT' => 'Felhasználói szerep szerkesztése
    » %s', + 'LOG_U_ROLE_REMOVED' => 'Felhasználói szerep törlése
    » %s', + + 'LOG_PLUPLOAD_TIDY_FAILED' => 'Nem sikerült a %1$s megnyitása, ellenőrizd a jogosultságokat.
    Exception: %2$s
    Trace: %3$s', + + 'LOG_PROFILE_FIELD_ACTIVATE' => 'Profil mező aktiválása
    » %s', + 'LOG_PROFILE_FIELD_CREATE' => 'Profil mező hozzáadása
    » %s', + 'LOG_PROFILE_FIELD_DEACTIVATE' => 'Profil mező deaktiválása
    » %s', + 'LOG_PROFILE_FIELD_EDIT' => 'Profil mező megváltoztatása
    » %s', + 'LOG_PROFILE_FIELD_REMOVED' => 'Profil mező törlése
    » %s', + + 'LOG_PRUNE' => 'Fórumok megtisztítása
    » %s', + 'LOG_AUTO_PRUNE' => 'Fórumok automatikus tisztítása
    » %s', + 'LOG_PRUNE_SHADOW' => 'Automatikusan megtisztított árnyék témák
    » %s', + 'LOG_PRUNE_USER_DEAC' => 'Felhasználók deaktiválása
    » %s', + 'LOG_PRUNE_USER_DEL_DEL' => 'Felhasználók megtisztítása – törölt felhasználók hozzászólásainak törlése
    » %s', + 'LOG_PRUNE_USER_DEL_ANON' => 'Felhasználók megtisztítása – törölt felhasználók hozzászólásainak megtartása
    » %s', + + 'LOG_PURGE_CACHE' => 'Gyorsítótár kiürítése', + 'LOG_PURGE_SESSIONS' => 'Munkamenetek törlése', + + 'LOG_RANK_ADDED' => 'Új rang hozzáadása
    » %s', + 'LOG_RANK_REMOVED' => 'Rang törlése
    » %s', + 'LOG_RANK_UPDATED' => 'Rang frissítése
    » %s', + + 'LOG_REASON_ADDED' => 'Jelentés/visszautasítás ok hozzáadása
    » %s', + 'LOG_REASON_REMOVED' => 'Jelentés/visszautasítás ok törlése
    » %s', + 'LOG_REASON_UPDATED' => 'Jelentés/visszautasítás ok frissítése
    » %s', + + 'LOG_REFERER_INVALID' => 'Sikertelen referer összevetés
    »Referer értéke: “%1$sâ€. A kérés visszautasításra került, a munkamenet meg lett szüntetve.', + 'LOG_RESET_DATE' => 'Fórum indulási dátumának lenullázása', + 'LOG_RESET_ONLINE' => 'Valaha jelenlévÅ‘ legtöbb felhasználó számának lenullázása', + 'LOG_RESYNC_FILES_STATS' => 'Csatolmáyn statisztikák újraszinkronizálása', + 'LOG_RESYNC_POSTCOUNTS' => 'Felhasználói hozzászólásszámok újraszinkronizálása', //? + 'LOG_RESYNC_POST_MARKING' => 'Csillagozott témák újraszinkronizálása', + 'LOG_RESYNC_STATS' => 'Hozzászólás, téma és felhasználói statisztikák újraszinkronizálása', + + 'LOG_SEARCH_INDEX_CREATED' => 'KeresÅ‘index létrehozása
    » %s', + 'LOG_SEARCH_INDEX_REMOVED' => 'Keresőindex törlése
    » %s', + 'LOG_SPHINX_ERROR' => 'Sphinx hiba
    » %s', + 'LOG_STYLE_ADD' => 'Új megjelenés felvétele
    » %s', + 'LOG_STYLE_DELETE' => 'Megjelenés törlése
    » %s', + 'LOG_STYLE_EDIT_DETAILS' => 'Megjelenés szerkesztése
    » %s', + 'LOG_STYLE_EXPORT' => 'Megjelenés exportálása
    » %s', + + // @deprecated 3.1 + 'LOG_TEMPLATE_ADD_DB' => 'Új sablonkészlet felvétele az adatbázisba
    » %s', + // @deprecated 3.1 + 'LOG_TEMPLATE_ADD_FS' => 'Új sablonkészlet felvétele a fájlrendszerbe
    » %s', + 'LOG_TEMPLATE_CACHE_CLEARED' => '%1$s sablonkészletben lévő sablon állományok gyorsítótárazott verzióinak törlése
    » %2$s', + 'LOG_TEMPLATE_DELETE' => 'Sablonkészlet törlése
    » %s', + 'LOG_TEMPLATE_EDIT' => '%1$s sablonkészlet szerkesztése
    » %2$s', + 'LOG_TEMPLATE_EDIT_DETAILS' => 'Sablon részletek szerkesztése
    » %s', //? + 'LOG_TEMPLATE_EXPORT' => 'Sablonkészlet exportálása
    » %s', + // @deprecated 3.1 + 'LOG_TEMPLATE_REFRESHED' => 'Sablonkészlet újratöltése
    » %s', + + // @deprecated 3.1 + 'LOG_THEME_ADD_DB' => 'Új stílus felvétele az adatbázisba
    » %s', + // @deprecated 3.1 + 'LOG_THEME_ADD_FS' => 'Új stílus felvétele a fájlrendszerbe
    » %s', + 'LOG_THEME_DELETE' => 'Stílus törlése
    » %s', + 'LOG_THEME_EDIT_DETAILS' => 'Stílus részletek szerkesztése
    » %s', + 'LOG_THEME_EDIT' => '%1$s stílus szerkesztése', + 'LOG_THEME_EDIT_FILE' => '%1$s stílus szerkesztése
    » módosított állomány: %2$s', + 'LOG_THEME_EXPORT' => 'Stílus exportálása
    » %s', + // @deprecated 3.1 + 'LOG_THEME_REFRESHED' => 'Stílus újratöltése
    » %s', + + 'LOG_UPDATE_DATABASE' => 'Adatbázis frissítése %1$s verzióról %2$s verzióra', + 'LOG_UPDATE_PHPBB' => 'PhpBB frissítése %1$s verzióról %2$s verzióra', + + 'LOG_USER_ACTIVE' => 'Felhasználó aktiválása
    » %s', + 'LOG_USER_BAN_USER' => 'Felhasználó kitiltása a felhasználó kezelése részben „%1$s†okkal
    » %2$s', + 'LOG_USER_BAN_IP' => 'IP-cím kitiltása a felhasználó kezelése részben „%1$s†okkal
    » %2$s', + 'LOG_USER_BAN_EMAIL' => 'E-mail cím kitiltása a felhasználó kezelése részben „%1$s†okkal
    » %2$s', + 'LOG_USER_DELETED' => 'Felhasználó törlése
    » %s', + 'LOG_USER_DEL_ATTACH' => 'Felhasználó összes feltöltött csatolmányainak törlése
    » %s', + 'LOG_USER_DEL_AVATAR' => 'Felhasználó avatarának törlése
    » %s', + 'LOG_USER_DEL_OUTBOX' => 'Felhasználó kimenő fiókjának kiürítése
    » %s', + 'LOG_USER_DEL_POSTS' => 'Felhasználó összes hozzászólásának törlése
    » %s', + 'LOG_USER_DEL_SIG' => 'Felhasználó aláírásának törlése
    » %s', + 'LOG_USER_INACTIVE' => 'Felhasználó deaktiválása
    » %s', + 'LOG_USER_MOVE_POSTS' => 'Felhasználó hozzászólásainak áthelyezése
    » „%1$s†hozzászólásainak áthelyezése a „%2$s†fórumba', + 'LOG_USER_NEW_PASSWORD' => 'Felhasználó jelszavának megváltoztatása
    » %s', + 'LOG_USER_REACTIVATE' => 'Felhasználó azonosítójának újraaktiválásra késztetése
    » %s', //?? + 'LOG_USER_REMOVED_NR' => 'Felhasználó újonnan regisztrált státuszának megszüntetése
    » %s', + + 'LOG_USER_UPDATE_EMAIL' => '„%1$s†felhasználó saját e-mail címének megváltoztatása
    » „%2$sâ€-ról „%3$sâ€-ra', + 'LOG_USER_UPDATE_NAME' => 'Felhasználónév megváltoztatása
    » „%1$s†névről „%2$s†névre', + 'LOG_USER_USER_UPDATE' => 'Felhasználói beállításainak szerkesztése
    » %s', //? + + 'LOG_USER_ACTIVE_USER' => 'Felhasználó azonosítójának aktiválása', + 'LOG_USER_DEL_AVATAR_USER' => 'Felhasználó avatarának törlése', + 'LOG_USER_DEL_SIG_USER' => 'Felhasználó aláírásának törlése', + 'LOG_USER_FEEDBACK' => 'Felhasználói feljegyzés hozzáadása
    » %s', + 'LOG_USER_GENERAL' => 'Bejegyzés hozzáadása:
    » %s', //? + 'LOG_USER_INACTIVE_USER' => 'Felhasználói azonosító deaktiválása', + 'LOG_USER_LOCK' => 'Felhasználó saját témájának lezárása
    » %s', + 'LOG_USER_MOVE_POSTS_USER' => 'Összes hozzászólás átmozgatása» a %s fórumba', + 'LOG_USER_REACTIVATE_USER' => 'Felhasználó azonosítójának újraaktiválásra késztetése', + 'LOG_USER_UNLOCK' => 'Felhasználó saját témájának megnyitása
    » %s', + 'LOG_USER_WARNING' => 'Felhasználói figyelmeztetés hozzáadása
    » %s', + 'LOG_USER_WARNING_BODY' => 'A felhasználó figyelmeztetésben részesítése:
    » %s', + + 'LOG_USER_GROUP_CHANGE' => 'Elsődleges csoport megváltoztatása
    » %s', + 'LOG_USER_GROUP_DEMOTE' => 'Lemondás a csoportvezetőségről:
    » %s', + 'LOG_USER_GROUP_JOIN' => 'Csatlakozás a csoporthoz:
    » %s', + 'LOG_USER_GROUP_JOIN_PENDING' => 'Csatlakozás a csoporthoz, jóváhagyás még szükséges:
    » %s', //? + 'LOG_USER_GROUP_RESIGN' => 'Lemondás a csoporttagságról:
    » %s', + + 'LOG_WARNING_DELETED' => 'Felhasználó figyelmeztetésének törlése
    » %s', + 'LOG_WARNINGS_DELETED' => array( + 1 => 'Felhasználó figyelmeztetésének törlése
    » %1$s', + 2 => 'Felahsználó %2$d figyelmeztetésének törlése
    » %1$s', // Example: 'Deleted 2 user warnings
    » username' + ), + 'LOG_WARNINGS_DELETED_ALL' => 'Felhasználó összes figyelmeztetésének törlése
    » %s', + + 'LOG_WORD_ADD' => 'Cenzúrázott szó hozzáadása
    » %s', + 'LOG_WORD_DELETE' => 'Cenzúrázott szó törlése
    » %s', + 'LOG_WORD_EDIT' => 'Cenzúrázott szó szerkesztése
    » %s', + + 'LOG_EXT_ENABLE' => 'Kiterjesztés engedélyezése
    » %s', + 'LOG_EXT_DISABLE' => 'Kiterjesztés tiltása
    » %s', + 'LOG_EXT_PURGE' => 'Kiterjezstés adatainak törlése
    » %s', + 'LOG_EXT_UPDATE' => 'Kiterjesztés frissítve
    » %s', +)); diff --git a/includes/shared/phpbb3/language/lang_hungarian/acp/index.htm b/includes/shared/phpbb3/language/lang_hungarian/acp/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/acp/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_hungarian/common.php b/includes/shared/phpbb3/language/lang_hungarian/common.php new file mode 100644 index 00000000..35a7f065 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/common.php @@ -0,0 +1,1435 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +* Magyar fordítás (c) 2007-2018 „Magyar phpBB Közösség fordítókâ€, +* http://phpbb.hu +* +* $Id$ +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Magyar fordítás © Magyar phpBB Közösség', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|Y.m.d.|', + 'DATETIME_FORMAT' => '|Y.m.d., H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) //bb31 + 'USER_LANG' => 'hu', + + // You can define different rules for the determination of plural forms here. + // See https://area51.phpbb.com/docs/dev/32x/language/plurals.html for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 2, + + '1_DAY' => '1 nap', + '1_MONTH' => '1 hónap', + '1_YEAR' => '1 év', + '2_WEEKS' => '2 hét', + '3_MONTHS' => '3 hónap', + '6_MONTHS' => '6 hónap', + '7_DAYS' => '7 nap', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Az azonosítód már aktiváltuk.', + 'ACCOUNT_DEACTIVATED' => 'Az azonosítód kézzel deaktiválásra került, csak egy adminisztrátor tudja újraaktiválni.', + 'ACCOUNT_NOT_ACTIVATED' => 'Az azonosítód még nem aktiváltuk.', + 'ACP' => 'Adminisztrátori vezérlÅ‘pult', + 'ACP_SHORT' => 'AVP', + 'ACTIVE' => 'aktív', + 'ACTIVE_ERROR' => 'A megadott felhasználónév jelenleg inaktív. Ha problémáid akadnának az azonosítód aktiválásával, lépj kapcsolatba a fórum adminisztrátorával.', + 'ADMINISTRATOR' => 'Adminisztrátor', + 'ADMINISTRATORS' => 'Adminisztrátorok', + 'AGE' => 'Kor', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'AJAX error', //b31 + 'AJAX_ERROR_TEXT' => 'Hiba történt a kérés feldolgozása közben.', + 'AJAX_ERROR_TEXT_ABORT' => 'A felhasználó megszakította a műveletet.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'A kérésed idÅ‘ túllépés miatt megszakadt; kérjük próbáld újra.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Hiba történt a kérés feldolgozása közben: a szerver érvénytelen választ küldött.', + 'ALLOWED' => 'Engedélyezett', + 'ALL_FILES' => 'Összes állomány', + 'ALL_FORUMS' => 'Összes fórum', + 'ALL_MESSAGES' => 'Összes üzenet', + 'ALL_POSTS' => 'Összes hozzászólás', + 'ALL_TIMES' => 'Minden idÅ‘pont %1$s idÅ‘zóna szerinti', + 'ALL_TOPICS' => 'Összes téma', + 'ALT_TEXT' => 'HelyettesítÅ‘ szöveg', + 'AND' => 'és', + 'ARE_WATCHING_FORUM' => 'Sikeresen feliratkoztál erre a fórumra.', + 'ARE_WATCHING_TOPIC' => 'Sikeresen feliratkoztál erre a témára.', + 'ASCENDING' => 'NövekvÅ‘', + 'ATTACHMENTS' => 'Csatolmányok', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'A csatolni próbált képállomány hibás.', + 'AUTHOR' => 'SzerzÅ‘', + 'AUTH_NO_PROFILE_CREATED' => 'Nem sikerült létrehozni a felhasználói profilt.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'Érvénytelen adatbázis bejegyzés.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Érvénytelen OAuth szolgáltatás típus.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'OAuth szolgáltatás nem lett létrehozva', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_SERVICE_TWITTER' => 'Twitter', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'OAuth token nem került tárolásra.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'OAuth token hibásan került tárolásra.', + 'AVATAR_DISALLOWED_CONTENT' => 'A feltöltés visszautasításra került, mivel a feltöltött állomány egy esetleges támadás hordozója lehet.', + 'AVATAR_DISALLOWED_EXTENSION' => 'Az állományt nem lehet megjeleníteni, mivel a %s kiterjesztés nem engedélyezett.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Nem sikerült feltölteni az avatart, mivel a külsÅ‘ forrás hibásnak tűnik.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'A feltöltött avatar állomány üres.', + 'AVATAR_INVALID_FILENAME' => 'Hibás állománynév: %s', + 'AVATAR_NOT_UPLOADED' => 'Nem sikerült feltölteni az avatart.', + 'AVATAR_NO_TEMP_DIR' => 'A feltöltött fájlok átmeneti tárolására szolgáló könyvtár nem létezik, vagy nem írható.', + 'AVATAR_NO_SIZE' => 'Nem sikerült meghatározni a belinkelt avatar szélességét és magasságát, kérjük, add meg kézzel.', + 'AVATAR_PARTIAL_UPLOAD' => 'Az avatart csak részben sikerült feltölteni.', + 'AVATAR_PHP_SIZE_NA' => 'Az avatar állomány mérete túl nagy.
    Nem sikerült megállapítani a PHP php.ini-jében meghatározott maximális méretet.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Az avatar állomány mérete túl nagy, a maximum feltölthető méret %1$d %2$s.
    Kérjük, vedd figyelembe, hogy ez a php.ini-ben van meghatározva, ezért nem írható felül.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'Az avatar állomány feltöltése időtúllépés miatt megszakadt.', + 'AVATAR_PHP_UPLOAD_STOPPED' => 'Egy PHP kiegészítő megállította a fájl feltöltést.', + 'AVATAR_URL_INVALID' => 'A megadott URL hibás.', + 'AVATAR_URL_NOT_FOUND' => 'A megadott állomány nem található.', + 'AVATAR_WRONG_FILESIZE' => 'Az avatarnak 0 és %1$d %2$s között kell lennie.', + 'AVATAR_WRONG_SIZE' => 'A megadott avatar %5$s széles, és %6$s magas. Az avatarnak legalább %1$s szélesnek és %2$s magasnak kell lennie, valamint legfeljebb %3$s széles és %4$s magas lehet.', + + 'BACK_TO_TOP' => 'Vissza a tetejére', + 'BACK_TO_PREV' => 'Vissza az előző oldalra', + 'BAN_TRIGGERED_BY_EMAIL'=> 'A kitiltás e-mail cím alapján történt.', + 'BAN_TRIGGERED_BY_IP' => 'A kitiltás IP-cím alapján történt.', + 'BAN_TRIGGERED_BY_USER' => 'A kitiltás felhasználónév alapján történt.', + 'BBCODE_GUIDE' => 'BBCode útmutató', + 'BCC' => 'Titkos másolat', + 'BIRTHDAYS' => 'Születésnaposok', + 'BOARD_BAN_PERM' => 'Véglegesen kitiltottak erről a fórumról.

    További információért lépj kapcsolatba a %2$sfórum adminisztátorával%3$s.', + 'BOARD_BAN_REASON' => 'Kitiltás oka: %s', + 'BOARD_BAN_TIME' => '%1$s-ig kitiltottak erről a fórumról.

    További információért lépj kapcsolatba a %2$sfórum adminisztátorával%3$s.', + 'BOARD_DISABLE' => 'A fórum jelenleg nem elérhetÅ‘.', + 'BOARD_DISABLED' => 'A fórum ideiglenesen szünetel.', + 'BOARD_UNAVAILABLE' => 'A fórum ideiglenesen nem elérhetÅ‘, kérünk, próbálkozz újra pár perc múlva.', + 'BROWSING_FORUM' => 'JelenlévÅ‘ fórumuzók: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'JelenlévÅ‘ fórumozók: %2$s valamint %1$d vendég', + 2 => 'JelenlévÅ‘ fórumozók: %2$s valamint %1$d vendég', + ), + 'BUTTON_DELETE' => 'Törlés', + 'BUTTON_EDIT' => 'Szerkesztés', + 'BUTTON_FORUM_LOCKED' => 'Lezárt', + 'BUTTON_INFORMATION' => 'Információ', + 'BUTTON_NEW_TOPIC' => 'Új téma', + 'BUTTON_PM' => 'PÃœ', + 'BUTTON_PM_FORWARD' => 'Továbbítás', + 'BUTTON_PM_NEW' => 'Új PÃœ', + 'BUTTON_PM_REPLY' => 'Válasz küldése', + 'BUTTON_PM_REPLY_ALL' => 'Válasz mindenkinek', + 'BUTTON_POST_REPLY' => 'Válasz küldése', + 'BUTTON_QUOTE' => 'Idézés', + 'BUTTON_REPORT' => 'Jelentés', // ? Report + 'BUTTON_TOPIC_LOCKED' => 'Lezárt', + 'BUTTON_WARN' => 'Figyelmeztetés', + 'BYTES' => 'bájt', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Mégsem', + 'CHANGE' => 'Változtatás', + 'CHANGE_FONT_SIZE' => 'Betűméret megváltoztatása', + 'CHANGING_PREFERENCES' => 'Fórum beállítások megváltoztatása', + 'CHANGING_PROFILE' => 'Profil megváltoztatása', + 'CHARACTERS' => array( + 1 => '%d karakter', + 2 => '%d karakter', + ), + 'COLLAPSE_VIEW' => 'Összecsukás', //? erre is kéne... + 'CLOSE_WINDOW' => 'Ablak bezárása', + 'COLOUR_SWATCH' => 'Szín kiválasztása', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Comma used to join lists into a single string, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'MegerÅ‘sítés', + 'CONFIRM_CODE' => 'MegerÅ‘sítÅ‘ kód', + 'CONFIRM_CODE_EXPLAIN' => 'Gépeld be a képen látható kódot. A kis- vagy nagybetűk nem számítanak.', + 'CONFIRM_CODE_WRONG' => 'A megadott megerÅ‘sítÅ‘ kód hibás.', + 'CONFIRM_OPERATION' => 'Biztosan végre akarod hajtani ezt a műveletet?', + 'CONFIRM_AVATAR_DELETE' => 'Biztosan törölni szeretnéd ezt az avatart?', + 'CONGRATULATIONS' => 'Gratulálunk', + 'CONNECTION_FAILED' => 'Sikertelen kapcsolódási kísérlet', + 'CONNECTION_SUCCESS' => 'Sikerült csatlakozni!', + 'CONTACT' => 'Kapcsolat', + 'CONTACT_USER' => 'Kapcsolat felvétele %s felhasználóval', + 'CONTACT_US' => 'Kapcsolat', // ? contact us + 'COOKIE_CONSENT_INFO' => 'Tudj meg többet', + 'COOKIE_CONSENT_MSG' => 'Ez a weboldal sütiket használ, hogy a legjobb felhasználói élményt nyújthassa.', //? "This website uses cookies to ensure you get the best experience on our website." + 'COOKIE_CONSENT_OK' => 'Értettem!', + 'COOKIE_CONSENT_HREF' => 'http://cookiesandyou.com', + 'COOKIES_DELETED' => 'A fórum sütijei törlésre kerültek.', + 'CURRENT_TIME' => 'Pontos idÅ‘: %s', + + 'DAY' => 'nap', + 'DAYS' => 'nap', + 'DELETE' => 'Törlés', + 'DELETE_ALL' => 'Összes törlése', + 'DELETE_COOKIES' => 'Sütik törlése', + 'DELETE_MARKED' => 'Kijelöltek törlése', + 'DELETE_POST' => 'Hozzászólás törlése', + 'DELIMITER' => 'Határolójel', + 'DESCENDING' => 'CsökkenÅ‘', + 'DISABLED' => 'Kikapcsolva', + 'DISPLAY' => 'Megjelenítés', + 'DISPLAY_GUESTS' => 'Vendégek megjelenítése', + 'DISPLAY_MESSAGES' => 'Ãœzenetek megtekintése', + 'DISPLAY_POSTS' => 'Hozzászólások megjelenítése', + 'DISPLAY_TOPICS' => 'Témák megjelenítése', + 'DOWNLOADED' => 'Letöltve', + 'DOWNLOADING_FILE' => 'Ãllomány letöltése', + 'DOWNLOAD_COUNTS' => array( + 0 => 'Még senki sem töltötte le.', + 1 => 'Letöltve %d alkalommal.', + 2 => 'Letöltve %d alkalommal.', + ), + + 'EDIT_POST' => 'Hozzászólás szerkesztése', + 'ELLIPSIS' => '…', + 'EMAIL' => 'E-mail', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'E-mail cím', + 'EMAIL_INVALID_EMAIL' => 'A megadott e-mail cím hibás.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Problémába ütköztünk egy levél elküldése során a %1$s. sorban. Válasz: %2$s', + 'EMPTY_SUBJECT' => 'Új téma indításához meg kell adnod a téma címét.', + 'EMPTY_MESSAGE_SUBJECT' => 'Meg kell adnod az üzenet témáját.', + 'ENABLED' => 'Bekapcsolva', + 'ENCLOSURE' => 'Körülhatárolójel', + 'ENTER_USERNAME' => 'Add meg a felhasználónevet', + 'ERR_CHANGING_DIRECTORY' => 'Nem sikerült megváltoztatni a könyvtárat.', + 'ERR_CONNECTING_SERVER' => 'Nem sikerült csatlakozni a szerverhez.', + 'ERR_JAB_AUTH' => 'Nem sikerült az azonosítás a Jabber szerveren. ', //? "Could not authorise on Jabber server." + 'ERR_JAB_CONNECT' => 'Nem sikerült csatlakozni a Jabber szerverhez.', + 'ERR_UNABLE_TO_LOGIN' => 'A megadott felhasználói név vagy jelszó hibás.', + 'ERR_UNWATCHING' => 'Hiba lépett fel a leiratkozás során.', + 'ERR_WATCHING' => 'Hiba lépett fel a feliratkozás során.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'A megadott phpBB elérési útvonal feltehetÅ‘leg hibás.', + 'ERROR' => 'Hiba', + 'EXPAND_VIEW' => 'Kinyitás', + 'EXTENSION' => 'Kiterjesztés', + 'EXTENSION_DISABLED' => 'A %s kiterjesztés nincs engedélyezve.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'A %s kiterjesztés deaktiválva lett, ezért a csatolmány nem kerül megjelenítésre.', + 'EXTENSION_DOES_NOT_EXIST' => 'A %s kiterjesztés nem létezik.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'GyIK', + 'FAQ_EXPLAIN' => 'Gyakran ismételt kérdések', + 'FEATURE_NOT_AVAILABLE' => 'A kért funkció nem érhetÅ‘ el ezen a fórumon.', + 'FILENAME' => 'Ãllomány neve', + 'FILESIZE' => 'Ãllomány mérete', + 'FILEDATE' => 'Ãllomány feltöltve', + 'FILE_COMMENT' => 'Magyarázat', + 'FILE_CONTENT_ERR' => 'Az állomány tartalma nem olvasható: %s', + 'FILE_JSON_DECODE_ERR' => 'A json állomány nem dekódolható: %s', // ? + 'FILE_NOT_FOUND' => 'A keresett állomány nem található: %s', + 'FIND_USERNAME' => 'Felhasználó keresése', + 'FOLDER' => 'Mappa', + 'FORGOT_PASS' => 'Elfelejtettem a jelszavam', + 'FORM_INVALID' => 'Az elküldött űrlap érvénytelen. Próbáld meg újra elküldeni.', + 'FORUM' => 'Fórum', + 'FORUMS' => 'Fórumok', + 'FORUMS_MARKED' => 'A fórumok megjelölésre kerültek olvasottként.', + 'FORUM_CAT' => 'Fórum kategória', + 'FORUM_INDEX' => 'Fórum kezdÅ‘lap', + 'FORUM_LINK' => 'Fórum link', + 'FORUM_LOCATION' => 'Tevékenység', + 'FORUM_LOCKED' => 'Lezárt fórum', + 'FORUM_RULES' => 'Fórum szabályok', + 'FORUM_RULES_LINK' => 'Kattints ide a fórum szabályainak megtekintéséhez', + 'FROM' => 'Minta:', + 'FSOCK_DISABLED' => 'Nem sikerült végrehajtani a műveletet, mivel az fsockopen függvény nincs engedélyezve, vagy az elérni kívánt szerver nem található.', + 'FSOCK_TIMEOUT' => 'IdÅ‘túllépés történt a hálózati kapcsolat közben.', + + 'FTP_FSOCK_HOST' => 'FTP hoszt', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Az oldalad eléréséhez használt FTP kiszolgáló.', + 'FTP_FSOCK_PASSWORD' => 'FTP jelszó', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Az FTP felhasználónévhez tartozó jelszó.', + 'FTP_FSOCK_PORT' => 'FTP port', + 'FTP_FSOCK_PORT_EXPLAIN' => 'AZ FTP szerver portja.', + 'FTP_FSOCK_ROOT_PATH' => 'PhpBB elérési út', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'A phpBB elérési útja az FTP gyökérkönyvtárától (ami alapból megnyílik).', + 'FTP_FSOCK_TIMEOUT' => 'FTP idÅ‘túllépés', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Legfeljebb ennyit fog várni a rendszer a válaszra a szervertÅ‘l másodpercben megadva.', + 'FTP_FSOCK_USERNAME' => 'FTP felhasználónév', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'A szerverhez való csatlakozáshoz használt felhasználónév.', + + 'FTP_HOST' => 'FTP hoszt', + 'FTP_HOST_EXPLAIN' => 'Az oldalad eléréséhez használt FTP szerver.', + 'FTP_PASSWORD' => 'FTP jelszó', + 'FTP_PASSWORD_EXPLAIN' => 'Az FTP felhasználónévhez tartozó jelszó.', + 'FTP_PORT' => 'FTP port', + 'FTP_PORT_EXPLAIN' => 'AZ FTP szerver portja.', + 'FTP_ROOT_PATH' => 'PhpBB elérési út', + 'FTP_ROOT_PATH_EXPLAIN' => 'A phpBB elérési útja az FTP gyökérkönyvtárától (ami alapból megnyílik).', + 'FTP_TIMEOUT' => 'FTP várakozási limit', + 'FTP_TIMEOUT_EXPLAIN' => 'Legfeljebb ennyit fog várni a rendszer a válaszra a szervertÅ‘l másodpercben megadva.', + 'FTP_USERNAME' => 'FTP felhasználónév', + 'FTP_USERNAME_EXPLAIN' => 'A szerverhez való csatlakozáshoz használt felhasználónév.', + + 'GENERAL_ERROR' => 'Ãltalános hiba', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GO' => 'Mehet', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Ugrás az elsÅ‘ hozzászólásra', + 'GOTO_LAST_POST' => 'Ugrás az utolsó hozzászólásra', + 'GOTO_PAGE' => 'Oldal', + 'GROUP' => 'Csoport', + 'GROUPS' => 'Csoportok', + 'GROUP_ERR_TYPE' => 'Helytelen csoporttípust adtál meg.', + 'GROUP_ERR_USERNAME' => 'Nem adtad meg a csoport nevét.', + 'GROUP_ERR_USER_LONG' => 'Egy csoport neve legfeljebb 60 karakter hosszú lehet. A megadott csoportnév túl hosszú.', + 'GUEST' => 'Vendég', + 'GUEST_USERS_ONLINE' => array( + 1 => '%d vendég van jelen.', + 2 => '%d vendég van jelen.', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d vendég', + 2 => '%d vendég', + ), + 'G_ADMINISTRATORS' => 'Adminisztrátorok', + 'G_BOTS' => 'Robotok', + 'G_GUESTS' => 'Vendégek', + 'G_REGISTERED' => 'Regisztrált felhasználók', + 'G_REGISTERED_COPPA' => 'Regisztrált COPPA felhasználók', + 'G_GLOBAL_MODERATORS' => 'Globális moderátorok', + 'G_NEWLY_REGISTERED' => 'Újonnan regisztrált felhasználók', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d rejtett felhasználó van jelen.', + 2 => '%d rejtett felhasználó van jelen.', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d rejtett', + 2 => '%d rejtett', + ), + 'HIDE_GUESTS' => 'Vendégek elrejtése', + 'HIDE_ME' => 'Bejelentkezés rejtettként', + 'HOURS' => 'óra', + 'HOME' => 'FÅ‘oldal', + + + 'ICQ' => 'ICQ', + 'IF' => 'Feltétel', + 'IMAGE' => 'Kép', + 'IMAGE_FILETYPE_INVALID' => 'A %d kiterjesztésű %s MIME típusú kép nem támogatott.', + 'IMAGE_FILETYPE_MISMATCH' => 'Nem stimmel a kép kiterjesztése: %1$s helyett %2$s.', + 'IN' => 'Fórum:', + 'INACTIVE' => 'Inaktív', + 'INDEX' => 'Fórum kezdÅ‘lap megtekintése', + 'INFORMATION' => 'Információ', + 'INSECURE_REDIRECT' => 'Ãtirányítási kísérlet egy potenciálisan nem biztonságos URL-re.', // ? + 'INTERESTS' => 'ÉrdeklÅ‘dési kör', + 'INVALID_DIGEST_CHALLENGE' => 'Hibás feltárási kérés', + 'INVALID_EMAIL_LOG' => 'A %s feltehetÅ‘leg egy nem létezÅ‘ e-mail cím.', + 'INVALID_FEED_ATTACHMENTS' => 'A kiválasztott csatorna érvénytelen csatolmányokat próbált meg letölteni.', //? "The selected feed tried fetching attachments with invalid constraints." + 'INVALID_PLURAL_RULE' => 'A megadott többes szám azonosító érvénytelen. Csak egész szám lehet 0 és 15 között.', + 'IP' => 'IP-cím', + 'IP_BLACKLISTED' => 'Az IP-címed (%1$s) tiltólistára került, ezért a hozzáférésed a fórumhoz blokkoltuk. További információ: %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Csatlakozott', + 'JUMP_PAGE' => 'Add meg annak az oldalnak a számát, ahová menni szeretnél', + 'JUMP_TO' => 'Ugrás', + 'JUMP_TO_PAGE' => 'Ugrás oldalra', + 'JUMP_TO_PAGE_CLICK' => 'Kattints a megadott oldalra ugráshoz…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Utolsó hozzászólás', + 'LAST_UPDATED' => 'Legutóbb frissített', + 'LAST_VISIT' => 'Utolsó látogatás', + 'LDAP_NO_LDAP_EXTENSION' => 'Az LDAP kiterjesztés nem elérhetÅ‘.', + 'LDAP_NO_SERVER_CONNECTION' => 'Nem sikerült csatlakozni az LDAP szerverhez.', + 'LDAP_SEARCH_FAILED' => 'Hiba történt az LDAP könyvtár keresése közben.', + 'LEGEND' => 'Magyarázat', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Az élÅ‘ keresések nincsenek engedélyezve.', + 'LOADING' => 'Betöltés', + 'LOCATION' => 'Tartózkodási hely', + 'LOCK_POST' => 'Hozzászólás lezárása', + 'LOCK_POST_EXPLAIN' => 'A felhasználó nem fogja tudni szerkeszteni a hozzászólást.', + 'LOCK_TOPIC' => 'Téma lezárása', + 'LOGIN' => 'Belépés', + 'LOGIN_CHECK_PM' => 'Privát üzeneteid megtekintéséhez lépj be.', + 'LOGIN_CONFIRMATION' => 'Belépés megerÅ‘sítése', + 'LOGIN_CONFIRM_EXPLAIN' => 'Az azonosítók feltörésének megakadályozása érdekében egy bizonyos számú sikertelen belépési kísérlet után meg kell adnod egy megerÅ‘sítÅ‘ kódot. A kód az alábbi képen található. Ha látási (vagy egyéb) problémák folytán nem tudnád elolvasni a kódot, vedd fel a kapcsolatot a %sfórum adminisztrátorával%s.', // unused + 'LOGIN_ERROR_ATTEMPTS' => 'Túllépted az engedélyezett belépési kísérletek számát. Ezért a felhasználóneved és a jelszavad megadása mellett most el kell végezned az alább látható CAPTCHA-t is.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Az Apache szervernek nem sikerült azonosítania téged.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'Egy nem létezÅ‘ OAuth szolgáltatás került meghívásra.', + 'LOGIN_ERROR_PASSWORD' => 'Rossz jelszót adtál meg. EllenÅ‘rizd le a jelszavad, majd próbálkozz újra. Ha továbbra is gondjaid lennének, lépj kapcsolatba a %sfórum adminisztrátorával%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Nem sikerült átkonvertálni a jelszavad a fórum szoftverének frissítése során. Kérünk, %sigényelj egy új jelszót%s. Ha továbbra is problémáid lennének, lépj kapcsolatba a %sfórum adminisztrátorával%s.', + 'LOGIN_ERROR_USERNAME' => 'Rossz felhasználónevet adtál meg. EllenÅ‘rizd le a felhasználónevet, majd próbálkozz újra. Ha továbbra is gondjaid lennének, lépj kapcsolatba a %sfórum adminisztrátorával%s.', + 'LOGIN_FORUM' => 'A fórum megtekintéséhez vagy a hozzászóláshoz meg kell adnod a fórum jelszavát.', //? 'Meg kell adnod a fórum jelszavát, hogy megtekinthesd a fórumot vagy hozzá tudj szólni.' + 'LOGIN_INFO' => 'A belépéshez regisztrált felhasználónak kell lenned. A regisztráció csupán néhány másodpercet vesz igénybe, de számos elÅ‘nnyel jár, az adminisztrátor például így tud külön jogosultságokat adni. A regisztráció elÅ‘tt gyÅ‘zÅ‘dj meg róla, hogy elfogadod a felhasználási feltételeinket, valamint egyetértesz az adatvédelmi nyilatkozatunkkal. Kérjük, olvasd el a fórumok szabályait is!', + 'LOGIN_VIEWFORUM' => 'Csak regisztrált felhasználók tekinthetik meg ezt a fórumot.', + 'LOGIN_EXPLAIN_EDIT' => 'Csak regisztrált felhasználók szerkeszthetik a hozzászólásaikat ebben a fórumban.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Csak regisztrált felhasználók tekinthetik meg a jelenlévÅ‘k listáját.', + 'LOGIN_REQUIRED' => 'Ehhez a művelethez be kell jelentkezned.', + 'LOGOUT' => 'Kilépés', + 'LOGOUT_USER' => 'Kilépés [ %s ]', + 'LOG_ME_IN' => 'Emlékezz rám', + + 'MAIN' => 'Ãltalános', // ? + 'MARK' => 'Kijelölés', + 'MARK_ALL' => 'Összes kijelölése', + 'MARK_ALL_READ' => 'Összes megjelölése olvasottként', + 'MARK_FORUMS_READ' => 'Fórumok megjelölése olvasottként', + 'MARK_READ' => 'Megjelölés olvasottként', + 'MARK_SUBFORUMS_READ' => 'Alfórumok megjelölése olvasottként', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Moderátori vezérlÅ‘pult', + 'MCP_SHORT' => 'MVP', + 'MEMBERLIST' => 'Taglista', + 'MEMBERLIST_EXPLAIN' => 'Felhasználók listájának megtekintése', + 'MERGE' => 'Összevonás', + 'MERGE_POSTS' => 'Hozzászólások áthelyezése', + 'MERGE_TOPIC' => 'Téma összevonása', + 'MESSAGE' => 'Ãœzenet', + 'MESSAGES' => 'üzenet', + 'MESSAGES_COUNT' => array( + 1 => '%d üzenet', + 2 => '%d üzenet', + ), + 'MESSAGE_BODY' => 'Ãœzenet tartalma', + 'MINUTES' => 'perc', + 'MODERATE' => 'Moderálás', + 'MODERATOR' => 'Moderátor', + 'MODERATORS' => 'Moderátorok', + 'MODULE_NOT_ACCESS' => 'Modul nem elérhetÅ‘', + 'MODULE_NOT_FIND' => 'A %s modul nem található', + 'MODULE_FILE_INCORRECT_CLASS' => 'A %s modul állománya nem tartalmazza a szükséges osztályt [%s]', + 'MONTH' => 'hónap', + 'MOVE' => 'Ãthelyezés', + + 'NA' => 'N/A', + 'NEWEST_USER' => 'Legújabb regisztrált tagunk: %s', + 'NEW_MESSAGE' => 'Új üzenet', + 'NEW_MESSAGES' => 'Új üzenetek', + 'NEW_POST' => 'Új hozzászólás', // Not used anymore + 'NEW_POSTS' => 'Új hozzászólások', // Not used anymore + 'NEXT' => 'KövetkezÅ‘', // Used in pagination + 'NEXT_STEP' => 'Tovább', + 'NEVER' => 'Soha', + 'NO' => 'Nem', + 'NO_NOTIFICATIONS' => 'Nincs értesítésed', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Nincs jogosultságod a csoport kezeléséhez.', + 'NOT_AUTHORISED' => 'Nincs jogosultságod hozzáférni ehhez a részhez.', + 'NOT_WATCHING_FORUM' => 'Sikeresen leiratkoztál a fórumról.', + 'NOT_WATCHING_TOPIC' => 'Sikeresen leiratkoztál a témáról.', + 'NOTIFICATIONS' => 'Értesítések', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Válasz %1$s-tól egy kedvencnek jelölt témában:', + ), + 'NOTIFICATION_FORUM' => 'Fórum: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Csatlakozási kérelem %1$s-tól, hogy csatlakozhasson a %2$s csoporthoz.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Kérelem elfogadása, hogy csatlakozhass a %1$s csoporthoz.', // ? + 'NOTIFICATION_METHOD_INVALID' => 'A(z) "%s" funkció egy érvénytelen értesítési módra hivatkozik.', + 'NOTIFICATION_PM' => 'Privát üzenet %1$s-tól', + 'NOTIFICATION_POST' => array( + 1 => 'Válasz %1$s-tól a témában:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Hozzászólás elfogadva:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Hozzászólás elutasítva:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Hozzászólás elfogadási kérés %1$s-tól:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Idézett %1$s:', // ? + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Indoklás: %1$s.', + 'NOTIFICATION_REPORT_PM' => '%1$s jelentette a privát üzenetet:', // ? + 'NOTIFICATION_REPORT_POST' => '%1$s jelentette a hozzászólást', // ? + 'NOTIFICATION_REPORT_CLOSED' => '%1$s lezárta a jelentést:', + 'NOTIFICATION_TOPIC' => '%1$s létrehozott egy új témát:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Téma elfogadása:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Téma elutasítása:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Téma elfogadási kérelem %1$s-tól:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'A "%s" értesítési típus hiányzik a fájlrendszerbÅ‘l.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => '“%1$s†újonnan regisztrált vagy deaktivált tag aktiválása szükséges', // ? + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'egyéb', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d egyéb', + ), + 'NOTIFY_ADMIN' => 'Kérjük, értesítsd a fórum adminisztrátorát vagy a webmestert.', + 'NOTIFY_ADMIN_EMAIL' => 'Kérjük, értesítsd a fórum adminisztrátorát vagy a webmestert: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Nincs jogosultságod hozzáférni ehhez az állományhoz.', + 'NO_ACTION' => 'Nincs semmilyen teendÅ‘.', + 'NO_ADMINISTRATORS' => 'Nincs adminisztrátor.', + 'NO_AUTH_ADMIN' => 'Nem férhetsz hozzá az adminisztrátori vezérlÅ‘pulthoz, mivel nincs adminisztrátori jogosultságod.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Nem azonosíthatod magad egy másik felhasználóként.', + 'NO_AUTH_OPERATION' => 'Nincs meg a megfelelÅ‘ jogosultságod ezen művelet elvégzéséhez.', + 'NO_AVATARS' => 'Nincsenek elérhetÅ‘ avatarok', + 'NO_CONNECT_TO_SMTP_HOST' => 'Nem sikerült csatlakozni az SMTP szerverhez: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Ma senkinek sincs születésnapja.', + 'NO_EMAIL_MESSAGE' => 'Az e-mail üzenet üres.', + 'NO_EMAIL_RESPONSE_CODE' => 'Nem jött válasz az e-mail szervertÅ‘l.', + 'NO_EMAIL_SUBJECT' => 'Nem adtad meg az e-mail témáját.', + 'NO_FORUM' => 'A kiválasztott fórum nem létezik.', + 'NO_FORUMS' => 'Nincs fórum.', + 'NO_GROUP' => 'A keresett csoport nem létezik.', + 'NO_GROUP_MEMBERS' => 'A csoportnak jelenleg nincs tagja.', + 'NO_IPS_DEFINED' => 'Nincs ilyen IP-cím vagy hoszt.', + 'NO_MEMBERS' => 'Nincs a keresési feltételeknek megfelelÅ‘ felhasználó.', + 'NO_MESSAGES' => 'Nincs üzenet.', + 'NO_MODE' => 'Nem adtál meg módot.', + 'NO_MODERATORS' => 'Nincs moderátor.', + 'NO_NEW_MESSAGES' => 'Nincs új üzenet.', + 'NO_NEW_POSTS' => 'Nincs új hozzászólás', // Not used anymore + 'NO_ONLINE_USERS' => 'nincs regisztrált felhasználó', + 'NO_POSTS' => 'Nincs hozzászólás', + 'NO_POSTS_TIME_FRAME' => 'Nincs a kiválasztott idÅ‘tartamon belüli hozzászólás a témában.', + 'NO_FEED_ENABLED' => 'Nincs elérhetÅ‘ csatorna ezen a fórumon.', + 'NO_FEED' => 'A kívánt csatorna nem elérhetÅ‘.', + 'NO_STYLE_DATA' => 'Nincs elérhetÅ‘ megjelenés', + 'NO_SUBJECT' => 'Nincs téma', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'A megadott keresési mechanizmus nem létezik.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Nincsen támogatott azonosítási eljárás.', + 'NO_TOPIC' => 'A keresett téma nem létezik.', + 'NO_TOPIC_FORUM' => 'A téma vagy fórum már nem létezik.', + 'NO_TOPICS' => 'A fórum nem tartalmaz témákat, illetve hozzászólásokat.', + 'NO_TOPICS_TIME_FRAME' => 'A fórum nem tartalmaz témákat a megadott idÅ‘tartamon belül.', + 'NO_UNREAD_POSTS' => 'Nincs olvasatlan hozzászólás', + 'NO_UPLOAD_FORM_FOUND' => 'Kezdeményeztél egy feltöltést, azonban erre most nincs lehetÅ‘ség.', + 'NO_USER' => 'A keresett felhasználó nem létezik.', + 'NO_USERS' => 'A keresett felhasználók nem léteznek.', + 'NO_USER_SPECIFIED' => 'Nem adtál meg felhasználónevet.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d csatolmány', + 2 => '%d csatolmány', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Nincs moderálandó hozzászólás.', // 0 + 1 => '%d moderálandó hozzászólás van.', // 1+ + ), + + 'OCCUPATION' => 'Foglalkozás', + 'OFFLINE' => 'Offline', + 'ONLINE' => 'Online', + 'ONLINE_BUDDIES' => 'JelenlévÅ‘ barátok', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'Jelenleg %1$d felhasználó van jelen :: %2$s és %3$s', + 2 => 'Jelenleg %1$d felhasználó van jelen :: %2$s és %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'Jelenleg %1$d felhasználó van jelen :: %2$s, %3$s és %4$s', + 2 => 'Jelenleg %1$d felhasználó van jelen :: %2$s, %3$s és %4$s', + ), + 'OPTIONS' => 'Opciók', + + 'PAGE_NOT_FOUND' => 'A kért oldal nem található.', + 'PAGE_OF' => 'Oldal: %1$d / %2$d', + 'PAGE_TITLE_NUMBER' => '%s. oldal', + 'PASSWORD' => 'Jelszó', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d pixel', + 2 => '%d pixel', + ), + 'PLEASE_WAIT' => 'Kérjük várj.', + 'PM' => 'PÃœ', + 'PM_REPORTED' => 'Kattints ide a jelentés megtekintéséhez', + 'POSTING_MESSAGE' => 'Ãœzenet küldése a %s fórumban', + 'POSTING_PRIVATE_MESSAGE' => 'Privát üzenet küldése', + 'POST' => 'Hozzászólás', + 'POST_ANNOUNCEMENT' => 'Közlemény', + 'POST_STICKY' => 'Kiemelt', + 'POSTED' => 'Elküldve', + 'POSTED_IN_FORUM' => 'Fórum:', + 'POSTED_ON_DATE' => 'Dátum:', + 'POSTS' => 'Hozzászólások', + 'POSTS_UNAPPROVED' => 'Jóvá nem hagyott hozzászólás(ok)', + 'POST_BY_AUTHOR' => 'SzerzÅ‘:', + 'POST_BY_FOE' => 'Ezt a hozzászólást %1$s küldte, aki jelenleg a tiltólistádon van.', + 'POST_DISPLAY' => '%1$sHozzászólás megjelenítése%2$s.', + 'POST_DAY' => 'Naponta %.2f hozzászólás', + 'POST_DELETED_ACTION' => 'Törölt hozzászólás:', + 'POST_DELETED' => 'A hozzászólás törlésre került.', // ? Ez a hozzászólás? + 'POST_DELETED_BY' => '%2$s törölte %1$s hozzászólását %3$s-kor.', + 'POST_DELETED_BY_REASON'=> '%2$s törölte %1$s hozzászólását %3$s-kor a következÅ‘ indokkal: %4$s', + 'POST_DETAILS' => 'Hozzászólás adatai', + 'POST_NEW_TOPIC' => 'Új téma nyitása', + 'POST_PCT' => 'Az összes hozzászólás %.2f%%-a', + 'POST_PCT_ACTIVE' => 'A felhasználó hozzászólásainak %.2f%%-a', + 'POST_PCT_ACTIVE_OWN' => 'A hozzászólásaid %.2f%%-a', + 'POST_REPLY' => 'Hozzászólás küldése', + 'POST_REPORTED' => 'Kattints ide a jelentés megtekintéséhez', + 'POST_SUBJECT' => 'Hozzászólás témája', + 'POST_TIME' => 'Elküldés ideje', + 'POST_TOPIC' => 'Új téma nyitása', + 'POST_UNAPPROVED_ACTION' => 'A hozzászólás jóváhagyásra vár:', // eredeti: 'This post is waiting for approval' - 'A hozzászólás jóváhagyásra vár', + 'POST_UNAPPROVED' => 'A hozzászólás még nem került jóváhagyásra.', + 'POSTS_UNAPPROVED_FORUM'=> 'Ebben a fórumban még legalább egy hozzászólás nem került jóváhagyásra.', // ? szórend + 'POWERED_BY' => 'Powered by %s', + 'PREVIEW' => 'ElÅ‘nézet', + 'PREVIOUS' => 'ElÅ‘zÅ‘', // Used in pagination + 'PREVIOUS_STEP' => 'Vissza', + 'PRIVACY' => 'Adatvédelmi nyilatkozat', + 'PRIVACY_LINK' => 'Adatvédelmi nyilatkozat', // ? Privacy + 'PRIVATE_MESSAGE' => 'Privát üzenet', + 'PRIVATE_MESSAGES' => 'Privát üzenetek', + 'PRIVATE_MESSAGING' => 'privát üzenet', + 'PROFILE' => 'Felhasználói vezérlÅ‘pult', + + 'QUICK_LINKS' => 'Gyors linkek', + + 'RANK' => 'Rang', + 'READING_FORUM' => '%s fórum megtekintése', + 'READING_GLOBAL_ANNOUNCE' => 'Ãltalános közlemény megtekintése', + 'READING_LINK' => 'Link megtekintése: %s', + 'READING_TOPIC' => 'Téma megtekintése a %s fórumban', + 'READ_PROFILE' => 'Profil', + 'REASON' => 'Ok', + 'RECORD_ONLINE_USERS' => 'A legtöbb felhasználó (%1$s fÅ‘) %2$s-kor tartózkodott itt.', + 'REDIRECT' => 'Ãtirányítás', + 'REDIRECTS' => 'Ãtirányítások száma', + 'REGISTER' => 'Regisztráció', + 'REGISTERED_USERS' => 'Regisztrált felhasználók:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'Jelenleg %1$d regisztrált és %2$s felhasználó van jelen.', + 2 => 'Jelenleg %1$d regisztrált és %2$s felhasználó van jelen.', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d regisztrált', + 2 => '%d regisztrált', + ), + 'REMOVE' => 'Törlés', + 'REMOVE_INSTALL' => 'Kérjük, töröld, helyezd át, vagy nevezd át az install könyvtárat a fórum használatba vétele elÅ‘tt. Amíg ez a könyvtár létezik, csak az adminisztrátori vezérlÅ‘pult lesz elérhetÅ‘.', + 'REPLIES' => 'Válaszok', + 'REPLY_WITH_QUOTE' => 'Hozzászólás az elÅ‘zmény idézésével', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Válasz írása egy általános közleményre', + 'REPLYING_MESSAGE' => 'Válasz írása a %s fórumban', + 'REPORT_BY' => 'Felhasználó', + 'REPORT_POST' => 'Hozzászólás jelentése', + 'REPORTING_POST' => 'Hozzászólás jelentése', + 'RESEND_ACTIVATION' => 'Aktivációs e-mail újraküldése', + 'RESET' => 'Töröl', + 'RESTORE_PERMISSIONS' => 'Jogosultságok visszaállítása', + 'RETURN_INDEX' => '%sVissza a fórum kezdÅ‘lapra%s', + 'RETURN_FORUM' => '%sVissza a legutóbb látogatott fórumhoz %s', + 'RETURN_PAGE' => '%sVissza az elÅ‘zÅ‘ oldalra%s', + 'RETURN_TOPIC' => '%sVissza a legutóbb látogatott témához%s', + 'RETURN_TO' => 'Vissza: “%sâ€', + 'RETURN_TO_INDEX' => 'Vissza a fórum kezdÅ‘lapra', //b31 + 'FEED' => 'Csatorna', + 'FEED_NEWS' => 'Hírek', + 'FEED_TOPICS_ACTIVE' => 'Aktív témák', + 'FEED_TOPICS_NEW' => 'Új témák', + 'RULES_ATTACH_CAN' => 'Küldhetsz csatolmányokat ebben a fórumban.', + 'RULES_ATTACH_CANNOT' => 'Nem küldhetsz csatolmányokat ebben a fórumban.', + 'RULES_DELETE_CAN' => 'Törölheted a hozzászólásaidat ebben a fórumban.', + 'RULES_DELETE_CANNOT' => 'Nem törölheted a hozzászólásaidat ebben a fórumban.', + 'RULES_DOWNLOAD_CAN' => 'Letöltheted a csatolmányokat ebben a fórumban.', + 'RULES_DOWNLOAD_CANNOT' => 'Nem töltheted le a csatolmányokat ebben a fórumban.', + 'RULES_EDIT_CAN' => 'Szerkesztheted a hozzászólásaidat ebben a fórumban.', + 'RULES_EDIT_CANNOT' => 'Nem szerkesztheted a hozzászólásaidat ebben a fórumban.', + 'RULES_LOCK_CAN' => 'Lezárhatod a témáidat ebben a fórumban.', + 'RULES_LOCK_CANNOT' => 'Nem zárhatod le a témáidat ebben a fórumban.', + 'RULES_POST_CAN' => 'Nyithatsz új témákat ebben a fórumban.', + 'RULES_POST_CANNOT' => 'Nem nyithatsz témákat ebben a fórumban.', + 'RULES_REPLY_CAN' => 'Válaszolhatsz egy témára ebben a fórumban.', + 'RULES_REPLY_CANNOT' => 'Nem válaszolhatsz egy témára ebben a fórumban.', + 'RULES_VOTE_CAN' => 'Szavazhatsz ebben a fórumban.', + 'RULES_VOTE_CANNOT' => 'Nem szavazhatsz ebben a fórumban.', + + 'SEARCH' => 'Keresés', + 'SEARCH_MINI' => 'Keresés…', + 'SEARCH_ADV' => 'Részletes keresés', + 'SEARCH_ADV_EXPLAIN' => 'Részletes keresés beállításainak megtekintése', + 'SEARCH_KEYWORDS' => 'Kulcsszavak', + 'SEARCHING_FORUMS' => 'Fórumok keresése', + 'SEARCH_ACTIVE_TOPICS' => 'Aktív témák', + 'SEARCH_FOR' => 'Keresés', + 'SEARCH_FORUM' => 'Keresés a fórumban…', + 'SEARCH_NEW' => 'Új hozzászólások', + 'SEARCH_POSTS_BY' => 'Hozzászólások keresése:', + 'SEARCH_SELF' => 'Saját hozzászólásaim', + 'SEARCH_TOPIC' => 'Keresés a témában…', + 'SEARCH_UNANSWERED' => 'Megválaszolatlan témák', + 'SEARCH_UNREAD' => 'Olvasatlan hozzászólások megtekintése', + 'SEARCH_USER_POSTS' => 'Felhasználó hozzászólásainak megtekintése', + 'SECONDS' => 'másodperc', + 'SEE_ALL' => 'Mindegyik megtekintése', // ? See All + 'SELECT' => 'Kiválasztás', + 'SELECT_ALL_CODE' => 'Egész kijelölése', //? 'Kód kijelölése' nem lenne jobb? + 'SELECT_DESTINATION_FORUM' => 'Célfórum kiválasztása', + 'SELECT_FORUM' => 'Fórum kiválasztása', + 'SEND_EMAIL' => 'E-mail küldése', // Used for submit buttons + 'SEND_EMAIL_USER' => 'E-mail küldése %s', + 'SEND_PRIVATE_MESSAGE' => 'Privát üzenet küldése', + 'SETTINGS' => 'Beállítások', + 'SIGNATURE' => 'Aláírás', + 'SKIP' => 'Ugrás a tartalomhoz', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'Az SMTP szerver nem támogatja az azonosítás funkciót.', + 'SORRY_AUTH_READ' => 'Nincs jogosultságod a fórum megtekintéséhez.', + 'SORRY_AUTH_READ_TOPIC' => 'Nincs jogosultságod a téma megtekintéséhez.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Nincs jogosultságod a csatolmány letöltéséhez.', + 'SORT_BY' => 'Rendezés', + 'SORT_DIRECTION' => 'Sorrend', + 'SORT_JOINED' => 'Csatlakozás dátuma', + 'SORT_LOCATION' => 'Tartózkodási hely', + 'SORT_OPTIONS' => 'Megjelenítési és rendezési beállítások', + 'SORT_RANK' => 'Rang', + 'SORT_POSTS' => 'Hozzászólások', + 'SORT_TOPIC_TITLE' => 'Téma címe', + 'SORT_USERNAME' => 'Felhasználónév', + 'SPLIT_TOPIC' => 'Téma szétválasztása', + 'SQL_ERROR_OCCURRED' => 'SQL hiba lépett fel az oldal generálása közben. Ha a probléma továbbra is fennállna, lépj kapcsolatba a %sfórum adminisztrátorával%s.', + 'STATISTICS' => 'Statisztika', + 'START_WATCHING_FORUM' => 'Feliratkozás a fórumra', + 'START_WATCHING_TOPIC' => 'Feliratkozás a témára', + 'STOP_WATCHING_FORUM' => 'Leiratkozás a fórumról', + 'STOP_WATCHING_TOPIC' => 'Leiratkozás a témáról', + 'STRING_LIST_MULTI' => '%1$s és %2$s', // Oxford comma %1$s, and %2$s + 'STRING_LIST_SIMPLE' => '%1$s és %2$s', + 'SUBFORUM' => 'Alfórum', + 'SUBFORUMS' => 'Alfórumok', + 'SUBJECT' => 'Téma', + 'SUBMIT' => 'Elküld', + + 'TB' => 'TB', + 'TERMS_LINK' => 'Használati feltételek', // ? Terms + 'TERMS_USE' => 'Használati feltételek', + 'TEST_CONNECTION' => 'Kapcsolat tesztelése', + 'THE_TEAM' => 'A csapat', + 'TIB' => 'TiB', + 'TIME' => 'IdÅ‘', + 'TIMEOUT_PROCESSING_REQ' => 'A kérés idÅ‘túllépés miatt nem teljesült.', // ? teljesíthetÅ‘ + + 'TOO_LARGE' => 'A megadott érték túl nagy.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'Az Engedélyezett címzettek maximum száma beállításnak megadott érték túl nagy.', + + 'TOO_LONG' => 'A megadott érték túl hosszú.', + + 'TOO_LONG_CONFIRM_CODE' => 'A megadott megerÅ‘sítÅ‘ kód túl hosszú.', + 'TOO_LONG_DATEFORMAT' => 'A megadott dátum formátum túl hosszú.', + 'TOO_LONG_JABBER' => 'A megadott Jabber azonosító túl hosszú.', + 'TOO_LONG_NEW_PASSWORD' => 'A megadott jelszó túl hosszú.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'A megadott jelszó megerÅ‘sítés túl hosszú.', + 'TOO_LONG_USER_PASSWORD' => 'A megadott jelszó túl hosszú.', + 'TOO_LONG_USERNAME' => 'A megadott felhasználónév túl hosszú.', + 'TOO_LONG_EMAIL' => 'A megadott e-mail cím túl hosszú.', + + 'TOO_MANY_VOTE_OPTIONS' => 'Túl sok lehetÅ‘ségre próbáltál meg szavazni.', + + 'TOO_SHORT' => 'A megadott érték túl rövid.', + + 'TOO_SHORT_CONFIRM_CODE' => 'A megadott megerÅ‘sítÅ‘ kód túl rövid.', + 'TOO_SHORT_DATEFORMAT' => 'A megadott dátum formátum túl rövid.', + 'TOO_SHORT_JABBER' => 'A megadott Jabber azonosító túl rövid.', + 'TOO_SHORT_NEW_PASSWORD' => 'A megadott jelszó túl rövid.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'A megadott jelszó megerÅ‘sítés túl rövid.', + 'TOO_SHORT_USER_PASSWORD' => 'A megadott jelszó túl rövid.', + 'TOO_SHORT_USERNAME' => 'A megadott felhasználónév túl rövid.', + 'TOO_SHORT_EMAIL' => 'A megadott e-mail cím túl rövid.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'A megadott e-mail cím megerÅ‘sítés túl rövid.', // ? + + 'TOO_SMALL' => 'A megadott érték túl kicsi.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'Az Engedélyezett címzettek maximum száma beállításnak megadott érték túl kicsi.', + + 'TOPIC' => 'Téma', + 'TOPICS' => 'Témák', + 'TOPICS_UNAPPROVED' => 'A fórumban van legalább egy téma, amely még nem került jóváhagyásra.', + 'TOPIC_ICON' => 'Téma ikon', + 'TOPIC_LOCKED' => 'A témát lezárták, nem szerkesztheted a hozzászólásaid, és nem küldhetsz új hozzászólást.', //? passzívot kéne használni? + 'TOPIC_LOCKED_SHORT'=> 'Téma lezárva', + 'TOPIC_MOVED' => 'Ãthelyezett téma', + 'TOPIC_REVIEW' => 'Téma áttekintése', + 'TOPIC_TITLE' => 'Téma címe', + 'TOPIC_UNAPPROVED' => 'Jóvá nem hagyott téma', + 'TOPIC_DELETED' => 'Téma törölve', + 'TOTAL_ATTACHMENTS' => 'Csatolmány(ok)', + 'TOTAL_LOGS' => array( + 1 => '%d bejegyzés', + 2 => '%d bejegyzés', + ), + 'TOTAL_PMS' => array( + 1 => 'Összesen %d privát üzenet', + 2 => 'Összesen %d privát üzenet', + ), + 'TOPIC_POLL' => 'A téma szavazást tartalmaz.', + 'TOTAL_POSTS' => 'Hozzászólások száma', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Hozzászólások száma: %d', + ), + 'TOPIC_REPORTED' => 'Jelentett téma', + 'TOTAL_TOPICS' => array( + 2 => 'Témák száma: %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Felhasználók száma: %d', + ), + 'TRACKED_PHP_ERROR' => 'PHP hibák: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'Nem sikerült meghatározni a kép méretét. Kérjük ellenÅ‘rizd, hogy a megadott URL érvényes-e.', + 'UNABLE_TO_DELIVER_FILE'=> 'Nem sikerült elküldeni az állományt.', + 'UNKNOWN_BROWSER' => 'Ismeretlen böngészÅ‘', + 'UNMARK_ALL' => 'Összes kijelölésének megszüntetése', + 'UNREAD_MESSAGES' => 'Olvasatlan üzenetek', + 'UNREAD_POST' => 'Olvasatlan hozzászólás', + 'UNREAD_POSTS' => 'Olvasatlan hozzászólások', + 'UNWATCH_FORUM_CONFIRM' => 'Valóban le szeretnél iratkozni errÅ‘l a fórumról?', + 'UNWATCH_FORUM_DETAILED' => 'Valóban le szeretnél iratkozni a(z) “%s†fórumról?', + 'UNWATCH_TOPIC_CONFIRM' => 'Valóban le szeretnél iratkozni errÅ‘l a témáról?', + 'UNWATCH_TOPIC_DETAILED' => 'Valóban le szeretnél iratkozni a(z) “%s†témáról?', + 'UNWATCHED_FORUMS' => 'Sikeresen leiratkoztál a kiválasztott fórumokról.', + 'UNWATCHED_TOPICS' => 'Sikeresen leiratkoztál a kiválasztott témákról.', + 'UNWATCHED_FORUMS_TOPICS' => 'Sikeresen leiratkoztál a kiválasztott elemekrÅ‘l.', + 'UPDATE' => 'Frissítés', + 'UPLOAD_IN_PROGRESS' => 'Feltöltés folyamatban...', + 'URL_REDIRECT' => 'Ha a böngészÅ‘d nem támogatja a meta átirányítást, kattints %side%s.', + 'USERGROUPS' => 'Csoportok', + 'USERNAME' => 'Felhasználónév', + 'USERNAMES' => 'Felhasználónevek', + 'USER_AVATAR' => 'Avatar', + 'USER_CANNOT_READ' => 'Nincs jogosultságod a hozzászólások megtekintéséhez ebben a fórumban.', + 'USER_POSTS' => array( + 1 => '%d hozzászólás', + 2 => '%d hozzászólás', + ), + 'USERS' => 'Felhasználók', + 'USE_PERMISSIONS' => 'Felhasználó jogosultságainak kipróbálása', + 'USER_NEW_PERMISSION_DISALLOWED' => 'Sajnáljuk, de nincs jogosultságod ezen funkció használatához. Még csak most regisztrálhattál, lehet hogy több aktivitást kell felmutatnod a fórumon zajló társalgásban, hogy használhasd ezt a funkciót.', // ? + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'Megtekintve', + 'VIEWED_COUNTS' => array( + 0 => 'Még nem tekintették meg', // ? + 1 => 'Megtekintve %d alkalommal', + 2 => 'Megtekintve %d alkalommal', + ), + 'VIEWING_CONTACT_ADMIN' => 'Kapcsolat oldal megtekintése', + 'VIEWING_FAQ' => 'GyIK megtekintése', + 'VIEWING_MEMBERS' => 'Taglista megtekintése', + 'VIEWING_ONLINE' => 'JelenlévÅ‘k listájának megtekintése', + 'VIEWING_MCP' => 'Moderátori vezérlÅ‘pult megtekintése', + 'VIEWING_PRIVATE_MESSAGES' => 'Privát üzenetek megtekintése', + 'VIEWING_REGISTER' => 'Regisztrálás a fórumra', + 'VIEWING_MEMBER_PROFILE' => 'Felhasználó profiljának megtekintése', + 'VIEWING_UCP' => 'Felhasználói vezérlÅ‘pult megtekintése', + 'VIEWS' => 'Megtekintve', //? + 'VIEW_BOOKMARKS' => 'Kedvencek megtekintése', + 'VIEW_FORUM_LOGS' => 'Napló megtekintése', + 'VIEW_LATEST_POST' => 'Utolsó hozzászólás megtekintése', + 'VIEW_NEWEST_POST' => 'ElsÅ‘ olvasatlan hozzászólás megtekintése', + 'VIEW_NOTES' => 'Feljegyzések megtekintése', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'az elmúlt %d percben aktív felhasználók alapján', + 2 => 'az elmúlt %d percben aktív felhasználók alapján', + ), + 'VIEW_TOPIC' => 'Téma megtekintése', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'Közlemény: ', + 'VIEW_TOPIC_GLOBAL' => 'Ãltalános közlemény: ', + 'VIEW_TOPIC_LOCKED' => 'Lezárva: ', + 'VIEW_TOPIC_LOGS' => 'Napló megtekintése', + 'VIEW_TOPIC_MOVED' => 'Ãthelyezve: ', + 'VIEW_TOPIC_POLL' => 'Szavazás: ', + 'VIEW_TOPIC_STICKY' => 'Kiemelt: ', + 'VISIT_WEBSITE' => 'Honlap meglátogatása', + + 'WARNINGS' => 'Figyelmeztetések', + 'WARN_USER' => 'Felhasználó figyelmeztetése', + 'WATCH_FORUM_CONFIRM' => 'Valóban fel szeretnél iratkozni erre a fórumra?', + 'WATCH_FORUM_DETAILED' => 'Valóban fel szeretnél iratkozni a(z) “%s†fórumra?', + 'WATCH_TOPIC_CONFIRM' => 'Valóban fel szeretnél iratkozni erre a témára?', + 'WATCH_TOPIC_DETAILED' => 'Valóban fel szeretnél iratkozni a(z) “%s†témára?', + 'WELCOME_SUBJECT' => 'Ãœdvözlünk a %s fórumán!', + 'WEBSITE' => 'Honlap', + 'WHOIS' => 'IP adatok', + 'WHO_IS_ONLINE' => 'Ki van itt', + 'WRONG_PASSWORD' => 'Hibás jelszót adtál meg.', + + 'WRONG_DATA_COLOUR' => 'A megadott szín hibás.', + 'WRONG_DATA_JABBER' => 'A megadott Jabber azonosító hibás.', + 'WRONG_DATA_LANG' => 'A megadott nyelv hibás.', + 'WRONG_DATA_POST_SD' => 'A megadott hozzászólás rendezési irány hibás.', + 'WRONG_DATA_POST_SK' => 'A megadott hozzászólás rendezési beállítás hibás.', // ? sort option + 'WRONG_DATA_TOPIC_SD' => 'A megadott téma rendezési irány hibás.', + 'WRONG_DATA_TOPIC_SK' => 'A megadott téma rendezési beállítás hibás.', // ? sort option + 'WROTE' => 'írta', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'év', + 'YEAR_MONTH_DAY' => '(ÉÉÉÉ-HH-NN)', + 'YES' => 'Igen', + 'YOU_LAST_VISIT' => 'Utolsó látogatás: %s', + + 'datetime' => array( + 'TODAY' => 'Ma, ', + 'TOMORROW' => 'Holnap, ', + 'YESTERDAY' => 'Tegnap, ', + 'AGO' => array( + 0 => 'kevesebb mint egy perce', + 1 => '%d perccel ezelÅ‘tt', + ), + + 'Sunday' => 'vasárnap', + 'Monday' => 'hétfÅ‘', + 'Tuesday' => 'kedd', + 'Wednesday' => 'szerda', + 'Thursday' => 'csütörtök', + 'Friday' => 'péntek', + 'Saturday' => 'szombat', + + 'Sun' => 'vas.', + 'Mon' => 'hétf.', + 'Tue' => 'kedd', + 'Wed' => 'szer.', + 'Thu' => 'csüt.', + 'Fri' => 'pén.', + 'Sat' => 'szomb.', + + 'January' => 'január', + 'February' => 'február', + 'March' => 'március', + 'April' => 'április', + 'May' => 'május', + 'June' => 'június', + 'July' => 'július', + 'August' => 'augusztus', + 'September' => 'szeptember', + 'October' => 'október', + 'November' => 'november', + 'December' => 'december', + + 'Jan' => 'jan.', + 'Feb' => 'feb.', + 'Mar' => 'márc.', + 'Apr' => 'ápr.', + 'May_short' => 'máj.', // Short representation of "May". May_short used because in English the short and long date are the same for May. + 'Jun' => 'jún.', + 'Jul' => 'júl.', + 'Aug' => 'aug.', + 'Sep' => 'szept.', + 'Oct' => 'okt.', + 'Nov' => 'nov.', + 'Dec' => 'dec.', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + //bb31 + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + //bb31 + 'Africa/Abidjan' => 'Afrika/Abidjan', + 'Africa/Accra' => 'Afrika/Accra', + 'Africa/Addis_Ababa' => 'Afrika/Addisz-Abeba', + 'Africa/Algiers' => 'Afrika/Algír', + 'Africa/Asmara' => 'Afrika/Aszmara', + 'Africa/Bamako' => 'Afrika/Bamako', + 'Africa/Bangui' => 'Afrika/Bangui', + 'Africa/Banjul' => 'Afrika/Banjul', + 'Africa/Bissau' => 'Afrika/Bissau', + 'Africa/Blantyre' => 'Afrika/Blantyre', + 'Africa/Brazzaville' => 'Afrika/Brazzaville', + 'Africa/Bujumbura' => 'Afrika/Bujumbura', + 'Africa/Cairo' => 'Afrika/Kairó', + 'Africa/Casablanca' => 'Afrika/Casablanca', + 'Africa/Ceuta' => 'Afrika/Ceuta', + 'Africa/Conakry' => 'Afrika/Conakry', + 'Africa/Dakar' => 'Afrika/Dakar', + 'Africa/Dar_es_Salaam' => 'Afrika/Dar es Salaam', + 'Africa/Djibouti' => 'Afrika/Dzsibuti', + 'Africa/Douala' => 'Afrika/Douala', + 'Africa/El_Aaiun' => 'Afrika/El Aaiun', + 'Africa/Freetown' => 'Afrika/Freetown', + 'Africa/Gaborone' => 'Afrika/Gaborone', + 'Africa/Harare' => 'Afrika/Harare', + 'Africa/Johannesburg' => 'Afrika/Johannesburg', + 'Africa/Juba' => 'Afrika/Juba', + 'Africa/Kampala' => 'Afrika/Kampala', + 'Africa/Khartoum' => 'Afrika/Kartúm', + 'Africa/Kigali' => 'Afrika/Kigali', + 'Africa/Kinshasa' => 'Afrika/Kinshasa', + 'Africa/Lagos' => 'Afrika/Lagos', + 'Africa/Libreville' => 'Afrika/Libreville', + 'Africa/Lome' => 'Afrika/Lomé', + 'Africa/Luanda' => 'Afrika/Luanda', + 'Africa/Lubumbashi' => 'Afrika/Lubumbashi', + 'Africa/Lusaka' => 'Afrika/Lusaka', + 'Africa/Malabo' => 'Afrika/Malabo', + 'Africa/Maputo' => 'Afrika/Maputo', + 'Africa/Maseru' => 'Afrika/Maseru', + 'Africa/Mbabane' => 'Afrika/Mbabane', + 'Africa/Mogadishu' => 'Afrika/Mogadishu', + 'Africa/Monrovia' => 'Afrika/Monrovia', + 'Africa/Nairobi' => 'Afrika/Nairobi', + 'Africa/Ndjamena' => 'Afrika/Ndjamena', + 'Africa/Niamey' => 'Afrika/Niamey', + 'Africa/Nouakchott' => 'Afrika/Nouakchott', + 'Africa/Ouagadougou' => 'Afrika/Ouagadougou', + 'Africa/Porto-Novo' => 'Afrika/Porto Novo', + 'Africa/Sao_Tome' => 'Afrika/Sao Tome', + 'Africa/Tripoli' => 'Afrika/Tripoli', + 'Africa/Tunis' => 'Afrika/Tunisz', + 'Africa/Windhoek' => 'Afrika/Windhoek', + + 'America/Adak' => 'Amerika/Adak', + 'America/Anchorage' => 'Amerika/Anchorage', + 'America/Anguilla' => 'Amerika/Anguilla', + 'America/Antigua' => 'Amerika/Antigua', + 'America/Araguaina' => 'Amerika/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'Amerika/Argentína/Buenos Aires', + 'America/Argentina/Catamarca' => 'Amerika/Argentína/Catamarca', + 'America/Argentina/Cordoba' => 'Amerika/Argentína/Cordoba', + 'America/Argentina/Jujuy' => 'Amerika/Argentína/Jujuy', + 'America/Argentina/La_Rioja' => 'Amerika/Argentína/La Rioja', + 'America/Argentina/Mendoza' => 'Amerika/Argentína/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'Amerika/Argentína/Rio Gallegos', + 'America/Argentina/Salta' => 'Amerika/Argentína/Salta', + 'America/Argentina/San_Juan' => 'Amerika/Argentína/San Juan', + 'America/Argentina/San_Luis' => 'Amerika/Argentína/San Luis', + 'America/Argentina/Tucuman' => 'Amerika/Argentína/Tucuman', + 'America/Argentina/Ushuaia' => 'Amerika/Argentína/Ushuaia', + + 'America/Aruba' => 'Amerika/Aruba', + 'America/Asuncion' => 'Amerika/Asunción', + 'America/Atikokan' => 'Amerika/Atikokan', + 'America/Bahia' => 'Amerika/Bahia', + 'America/Bahia_Banderas' => 'Amerika/Bahia Banderas', + 'America/Barbados' => 'Amerika/Barbados', + 'America/Belem' => 'Amerika/Belem', + 'America/Belize' => 'Amerika/Beliz', + 'America/Blanc-Sablon' => 'Amerika/Blanc-Sablon', + 'America/Boa_Vista' => 'Amerika/Boa Vista', + 'America/Bogota' => 'Amerika/Bogotá', + 'America/Boise' => 'Amerika/Boise', + 'America/Cambridge_Bay' => 'Amerika/Cambridge Bay', + 'America/Campo_Grande' => 'Amerika/Campo Grande', + 'America/Cancun' => 'Amerika/Cancun', + 'America/Caracas' => 'Amerika/Caracas', + 'America/Cayenne' => 'Amerika/Cayenne', + 'America/Cayman' => 'Amerika/Cayman', + 'America/Chicago' => 'Amerika/Chicago', + 'America/Chihuahua' => 'Amerika/Chihuahua', + 'America/Costa_Rica' => 'Amerika/Costa Rica', + 'America/Creston' => 'Amerika/Creston', + 'America/Cuiaba' => 'Amerika/Cuiaba', + 'America/Curacao' => 'Amerika/Curacao', + 'America/Danmarkshavn' => 'Amerika/Danmarkshavn', + 'America/Dawson' => 'Amerika/Dawson', + 'America/Dawson_Creek' => 'Amerika/Dawson Creek', + 'America/Denver' => 'Amerika/Denver', + 'America/Detroit' => 'Amerika/Detroit', + 'America/Dominica' => 'Amerika/Dominika', + 'America/Edmonton' => 'Amerika/Edmonton', + 'America/Eirunepe' => 'Amerika/Eirunepe', + 'America/El_Salvador' => 'Amerika/El Salvador', + 'America/Fortaleza' => 'Amerika/Fortaleza', + 'America/Glace_Bay' => 'Amerika/Glace Bay', + 'America/Godthab' => 'Amerika/Godthab', + 'America/Goose_Bay' => 'Amerika/Goose Bay', + 'America/Grand_Turk' => 'Amerika/Grand Turk', + 'America/Grenada' => 'Amerika/Grenada', + 'America/Guadeloupe' => 'Amerika/Guadeloupe', + 'America/Guatemala' => 'Amerika/Guatemala', + 'America/Guayaquil' => 'Amerika/Guayaquil', + 'America/Guyana' => 'Amerika/Guyana', + 'America/Halifax' => 'Amerika/Halifax', + 'America/Havana' => 'Amerika/Havanna', + 'America/Hermosillo' => 'Amerika/Hermosillo', + 'America/Indiana/Indianapolis' => 'Amerika/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'Amerika/Indiana/Knox', + 'America/Indiana/Marengo' => 'Amerika/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'Amerika/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'Amerika/Indiana/Tell City', + 'America/Indiana/Vevay' => 'Amerika/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'Amerika/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'Amerika/Indiana/Winamac', + 'America/Inuvik' => 'Amerika/Inuvik', + 'America/Iqaluit' => 'Amerika/Iqaluit', + 'America/Jamaica' => 'Amerika/Jamaica', + 'America/Juneau' => 'Amerika/Juneau', + 'America/Kentucky/Louisville' => 'Amerika/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'Amerika/Kentucky/Monticello', + 'America/Kralendijk' => 'Amerika/Kralendijk', + 'America/La_Paz' => 'Amerika/La Paz', + 'America/Lima' => 'Amerika/Lima', + 'America/Los_Angeles' => 'Amerika/Los Angeles', + 'America/Lower_Princes' => 'Amerika/Lower Princes', + 'America/Maceio' => 'Amerika/Maceio', + 'America/Managua' => 'Amerika/Managua', + 'America/Manaus' => 'Amerika/Manaus', + 'America/Marigot' => 'Amerika/Marigot', + 'America/Martinique' => 'Amerika/Martinique', + 'America/Matamoros' => 'Amerika/Matamoros', + 'America/Mazatlan' => 'Amerika/Mazatlan', + 'America/Menominee' => 'Amerika/Menominee', + 'America/Merida' => 'Amerika/Merida', + 'America/Metlakatla' => 'Amerika/Metlakatla', + 'America/Mexico_City' => 'Amerika/Mexico City', + 'America/Miquelon' => 'Amerika/Miquelon', + 'America/Moncton' => 'Amerika/Moncton', + 'America/Monterrey' => 'Amerika/Monterrey', + 'America/Montevideo' => 'Amerika/Montevideo', + 'America/Montreal' => 'Amerika/Montreal', + 'America/Montserrat' => 'Amerika/Montserrat', + 'America/Nassau' => 'Amerika/Nassau', + 'America/New_York' => 'Amerika/New York', + 'America/Nipigon' => 'Amerika/Nipigon', + 'America/Nome' => 'Amerika/Nome', + 'America/Noronha' => 'Amerika/Noronha', + 'America/North_Dakota/Beulah' => 'Amerika/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'Amerika/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'Amerika/North Dakota/New Salem', + 'America/Ojinaga' => 'Amerika/Ojinaga', + 'America/Panama' => 'Amerika/Panama', + 'America/Pangnirtung' => 'Amerika/Pangnirtung', + 'America/Paramaribo' => 'Amerika/Paramaribo', + 'America/Phoenix' => 'Amerika/Phoenix', + 'America/Port-au-Prince' => 'Amerika/Port-au-Prince', + 'America/Port_of_Spain' => 'Amerika/Port of Spain', + 'America/Porto_Velho' => 'Amerika/Porto Velho', + 'America/Puerto_Rico' => 'Amerika/Puerto Rico', + 'America/Rainy_River' => 'Amerika/Rainy River', + 'America/Rankin_Inlet' => 'Amerika/Rankin Inlet', + 'America/Recife' => 'Amerika/Recife', + 'America/Regina' => 'Amerika/Regina', + 'America/Resolute' => 'Amerika/Resolute', + 'America/Rio_Branco' => 'Amerika/Rio Branco', + 'America/Santa_Isabel' => 'Amerika/Santa Isabel', + 'America/Santarem' => 'Amerika/Santarem', + 'America/Santiago' => 'Amerika/Santiago de Chile', + 'America/Santo_Domingo' => 'Amerika/Santo Domingo', + 'America/Sao_Paulo' => 'Amerika/São Paulo', + 'America/Scoresbysund' => 'Amerika/Scoresbysund', + 'America/Shiprock' => 'Amerika/Shiprock', + 'America/Sitka' => 'Amerika/Sitka', + 'America/St_Barthelemy' => 'Amerika/St. Barthelemy', + 'America/St_Johns' => 'Amerika/St. Johns', + 'America/St_Kitts' => 'Amerika/St. Kitts', + 'America/St_Lucia' => 'Amerika/St. Lucia', + 'America/St_Thomas' => 'Amerika/St. Thomas', + 'America/St_Vincent' => 'Amerika/St. Vincent', + 'America/Swift_Current' => 'Amerika/Swift Current', + 'America/Tegucigalpa' => 'Amerika/Tegucigalpa', + 'America/Thule' => 'Amerika/Thule', + 'America/Thunder_Bay' => 'Amerika/Thunder Bay', + 'America/Tijuana' => 'Amerika/Tijuana', + 'America/Toronto' => 'Amerika/Toronto', + 'America/Tortola' => 'Amerika/Tortola', + 'America/Vancouver' => 'Amerika/Vancouver', + 'America/Whitehorse' => 'Amerika/Whitehorse', + 'America/Winnipeg' => 'Amerika/Winnipeg', + 'America/Yakutat' => 'Amerika/Yakutat', + 'America/Yellowknife' => 'Amerika/Yellowknife', + + 'Antarctica/Casey' => 'Antarktika/Casey', + 'Antarctica/Davis' => 'Antarktika/Davis', + 'Antarctica/DumontDUrville' => 'Antarktika/DumontDUrville', + 'Antarctica/Macquarie' => 'Antarktika/Macquarie', + 'Antarctica/Mawson' => 'Antarktika/Mawson', + 'Antarctica/McMurdo' => 'Antarktika/McMurdo', + 'Antarctica/Palmer' => 'Antarktika/Palmer', + 'Antarctica/Rothera' => 'Antarktika/Rothera', + 'Antarctica/South_Pole' => 'Antarktika/Déli-sark', + 'Antarctica/Syowa' => 'Antarktika/Syowa', + 'Antarctica/Vostok' => 'Antarktika/Vostok', + + 'Arctic/Longyearbyen' => 'Arktisz/Longyearbyen', + + 'Asia/Aden' => 'Ãzsia/Ãden', + 'Asia/Almaty' => 'Ãzsia/Almati', + 'Asia/Amman' => 'Ãzsia/Ammán', + 'Asia/Anadyr' => 'Ãzsia/Anadir', + 'Asia/Aqtau' => 'Ãzsia/Aqtau', + 'Asia/Aqtobe' => 'Ãzsia/Aqtobe', + 'Asia/Ashgabat' => 'Ãzsia/AÅŸgabat', + 'Asia/Baghdad' => 'Ãzsia/Bagdad', + 'Asia/Bahrain' => 'Ãzsia/Bahrain', + 'Asia/Baku' => 'Ãzsia/Bakı', + 'Asia/Bangkok' => 'Ãzsia/Bangkok', + 'Asia/Beirut' => 'Ãzsia/Bejrút', + 'Asia/Bishkek' => 'Ãzsia/Biskek', + 'Asia/Brunei' => 'Ãzsia/Brunei Darussalam', + 'Asia/Choibalsan' => 'Ãzsia/Choibalsan', + 'Asia/Chongqing' => 'Ãzsia/Csungking', + 'Asia/Colombo' => 'Ãzsia/Colombo', + 'Asia/Damascus' => 'Ãzsia/Damaszkusz', + 'Asia/Dhaka' => 'Ãzsia/Dakka', + 'Asia/Dili' => 'Ãzsia/Dili', + 'Asia/Dubai' => 'Ãzsia/Dubai', + 'Asia/Dushanbe' => 'Ãzsia/Dushanbe', + 'Asia/Gaza' => 'Ãzsia/Gáza', + 'Asia/Harbin' => 'Ãzsia/Harbin', + 'Asia/Hebron' => 'Ãzsia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Ãzsia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Ãzsia/Hongkong-sziget', + 'Asia/Hovd' => 'Ãzsia/Hovd', + 'Asia/Irkutsk' => 'Ãzsia/Irkutszk', + 'Asia/Jakarta' => 'Ãzsia/Jakarta', + 'Asia/Jayapura' => 'Ãzsia/Jayapura', + 'Asia/Jerusalem' => 'Ãzsia/Jeruzsálem', + 'Asia/Kabul' => 'Ãzsia/Kabul', + 'Asia/Kamchatka' => 'Ãzsia/Kamchatka', + 'Asia/Karachi' => 'Ãzsia/Karacsi', + 'Asia/Kashgar' => 'Ãzsia/Kashgar', + 'Asia/Kathmandu' => 'Ãzsia/Kathmandu', + 'Asia/Khandyga' => 'Ãzsia/Khandyga', + 'Asia/Kolkata' => 'Ãzsia/Kalkutta', + 'Asia/Krasnoyarsk' => 'Ãzsia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Ãzsia/Kuala Lumpur', + 'Asia/Kuching' => 'Ãzsia/Kuching', + 'Asia/Kuwait' => 'Ãzsia/Kuwait', + 'Asia/Macau' => 'Ãzsia/Makaó', + 'Asia/Magadan' => 'Ãzsia/Magadan', + 'Asia/Makassar' => 'Ãzsia/Makassar', + 'Asia/Manila' => 'Ãzsia/Manila', + 'Asia/Muscat' => 'Ãzsia/Maszkat', + 'Asia/Nicosia' => 'Ãzsia/Nicosia', + 'Asia/Novokuznetsk' => 'Ãzsia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Ãzsia/Novoszibirszk', + 'Asia/Omsk' => 'Ãzsia/Omszk', + 'Asia/Oral' => 'Ãzsia/Oral', + 'Asia/Phnom_Penh' => 'Ãzsia/Phnompen', + 'Asia/Pontianak' => 'Ãzsia/Pontianak', + 'Asia/Pyongyang' => 'Ãzsia/Phenjan', + 'Asia/Qatar' => 'Ãzsia/Katar', + 'Asia/Qyzylorda' => 'Ãzsia/Qyzylorda', + 'Asia/Rangoon' => 'Ãzsia/Rangun', + 'Asia/Riyadh' => 'Ãzsia/Rijád', + 'Asia/Sakhalin' => 'Ãzsia/Szahalin', + 'Asia/Samarkand' => 'Ãzsia/Samarkand', + 'Asia/Seoul' => 'Ãzsia/Szöul', + 'Asia/Shanghai' => 'Ãzsia/Sanghaj', + 'Asia/Singapore' => 'Ãzsia/Szingapúr', + 'Asia/Taipei' => 'Ãzsia/Taipei', + 'Asia/Tashkent' => 'Ãzsia/Taskent', + 'Asia/Tbilisi' => 'Ãzsia/Tbiliszi', + 'Asia/Tehran' => 'Ãzsia/Teherán', + 'Asia/Thimphu' => 'Ãzsia/Timpu', + 'Asia/Tokyo' => 'Ãzsia/Tokió', + 'Asia/Ulaanbaatar' => 'Ãzsia/Ulaanbaatar', + 'Asia/Urumqi' => 'Ãzsia/Ãœrümcsi', + 'Asia/Ust-Nera' => 'Ãzsia/Ust-Nera', + 'Asia/Vientiane' => 'Ãzsia/Vientián', + 'Asia/Vladivostok' => 'Ãzsia/Vlagyivosztok', + 'Asia/Yakutsk' => 'Ãzsia/Yakutsk', + 'Asia/Yekaterinburg' => 'Ãzsia/Jekatyerinburg', + 'Asia/Yerevan' => 'Ãzsia/Jereván', + + 'Atlantic/Azores' => 'Atlanti-óceán/Azori-szigetek', + 'Atlantic/Bermuda' => 'Atlanti-óceán/Bermuda', + 'Atlantic/Canary' => 'Atlanti-óceán/Canary', + 'Atlantic/Cape_Verde' => 'Atlanti-óceán/Zöld-foki Köztársaság', + 'Atlantic/Faroe' => 'Atlanti-óceán/Faroe', + 'Atlantic/Madeira' => 'Atlanti-óceán/Madeira', + 'Atlantic/Reykjavik' => 'Atlanti-óceán/Reykjavík', + 'Atlantic/South_Georgia' => 'Atlanti-óceán/South Georgia', + 'Atlantic/St_Helena' => 'Atlanti-óceán/St. Helena', + 'Atlantic/Stanley' => 'Atlanti-óceán/Stanley', + + 'Australia/Adelaide' => 'Ausztrália/Adelaide', + 'Australia/Brisbane' => 'Ausztrália/Brisbane', + 'Australia/Broken_Hill' => 'Ausztrália/Broken Hill', + 'Australia/Currie' => 'Ausztrália/Currie', + 'Australia/Darwin' => 'Ausztrália/Darwin', + 'Australia/Eucla' => 'Ausztrália/Eucla', + 'Australia/Hobart' => 'Ausztrália/Hobart', + 'Australia/Lindeman' => 'Ausztrália/Lindeman', + 'Australia/Lord_Howe' => 'Ausztrália/Lord Howe', + 'Australia/Melbourne' => 'Ausztrália/Melbourne', + 'Australia/Perth' => 'Ausztrália/Perth', + 'Australia/Sydney' => 'Ausztrália/Sydney', + + 'Europe/Amsterdam' => 'Európa/Amszterdam', + 'Europe/Andorra' => 'Európa/Andorra', + 'Europe/Athens' => 'Európa/Athén', + 'Europe/Belgrade' => 'Európa/Belgrád', + 'Europe/Berlin' => 'Európa/Berlin', + 'Europe/Bratislava' => 'Európa/Pozsony', + 'Europe/Brussels' => 'Európa/Brüsszel', + 'Europe/Bucharest' => 'Európa/Bukarest', + 'Europe/Budapest' => 'Európa/Budapest', + 'Europe/Busingen' => 'Európa/Busingen', + 'Europe/Chisinau' => 'Európa/Kisinyov', + 'Europe/Copenhagen' => 'Európa/Koppenhága', + 'Europe/Dublin' => 'Európa/Dublin', + 'Europe/Gibraltar' => 'Európa/Gibraltár', + 'Europe/Guernsey' => 'Európa/Guernsey', + 'Europe/Helsinki' => 'Európa/Helsinki', + 'Europe/Isle_of_Man' => 'Európa/Man-sziget', + 'Europe/Istanbul' => 'Európa/Bizánc', + 'Europe/Jersey' => 'Európa/Jersey', + 'Europe/Kaliningrad' => 'Európa/Kalinyingrád', + 'Europe/Kiev' => 'Európa/Kijev', + 'Europe/Lisbon' => 'Európa/Lisszabon', + 'Europe/Ljubljana' => 'Európa/Ljubljana', + 'Europe/London' => 'Európa/London', + 'Europe/Luxembourg' => 'Európa/Luxemburg', + 'Europe/Madrid' => 'Európa/Madrid', + 'Europe/Malta' => 'Európa/Málta', + 'Europe/Mariehamn' => 'Európa/Mariehamn', + 'Europe/Minsk' => 'Európa/Minszk', + 'Europe/Monaco' => 'Európa/Monaco', + 'Europe/Moscow' => 'Európa/Moszkva', + 'Europe/Oslo' => 'Európa/Oslo', + 'Europe/Paris' => 'Európa/Párizs', + 'Europe/Podgorica' => 'Európa/Podgorica', + 'Europe/Prague' => 'Európa/Prága', + 'Europe/Riga' => 'Európa/Riga', + 'Europe/Rome' => 'Európa/Róma', + 'Europe/Samara' => 'Európa/Szamara', + 'Europe/San_Marino' => 'Európa/San Marino', + 'Europe/Sarajevo' => 'Európa/Szarajevó', + 'Europe/Simferopol' => 'Európa/Szimferopol', + 'Europe/Skopje' => 'Európa/Szkopje', + 'Europe/Sofia' => 'Európa/Szófia', + 'Europe/Stockholm' => 'Európa/Stockholm', + 'Europe/Tallinn' => 'Európa/Tallinn', + 'Europe/Tirane' => 'Európa/Tirane', + 'Europe/Uzhgorod' => 'Európa/Uzhgorod', + 'Europe/Vaduz' => 'Európa/Vaduz', + 'Europe/Vatican' => 'Európa/Vatikán', + 'Europe/Vienna' => 'Európa/Bécs', + 'Europe/Vilnius' => 'Európa/Vilnius', + 'Europe/Volgograd' => 'Európa/Volgográd', + 'Europe/Warsaw' => 'Európa/Varsó', + 'Europe/Zagreb' => 'Európa/Zágráb', + 'Europe/Zaporozhye' => 'Európa/Zaporozhye', + 'Europe/Zurich' => 'Európa/Zürich', + + 'Indian/Antananarivo' => 'Indiai-óceán/Antananarivo', + 'Indian/Chagos' => 'Indiai-óceán/Chagos', + 'Indian/Christmas' => 'Indiai-óceán/Christmas', + 'Indian/Cocos' => 'Indiai-óceán/Kókusz', + 'Indian/Comoro' => 'Indiai-óceán/Comoro', + 'Indian/Kerguelen' => 'Indiai-óceán/Kerguelen', + 'Indian/Mahe' => 'Indiai-óceán/Mahe', + 'Indian/Maldives' => 'Indiai-óceán/Maldív-szigetek', + 'Indian/Mauritius' => 'Indiai-óceán/Mauritius', + 'Indian/Mayotte' => 'Indiai-óceán/Mayotte', + 'Indian/Reunion' => 'Indiai-óceán/Réunion', + + 'Pacific/Apia' => 'Csendes-óceán/Apia', + 'Pacific/Auckland' => 'Csendes-óceán/Auckland', + 'Pacific/Chatham' => 'Csendes-óceán/Chatham', + 'Pacific/Chuuk' => 'Csendes-óceán/Chuuk', + 'Pacific/Easter' => 'Csendes-óceán/Easter', + 'Pacific/Efate' => 'Csendes-óceán/Efate', + 'Pacific/Enderbury' => 'Csendes-óceán/Enderbury', + 'Pacific/Fakaofo' => 'Csendes-óceán/Fakaofo', + 'Pacific/Fiji' => 'Csendes-óceán/Fidzsi', + 'Pacific/Funafuti' => 'Csendes-óceán/Funafuti', + 'Pacific/Galapagos' => 'Csendes-óceán/Galapagos', + 'Pacific/Gambier' => 'Csendes-óceán/Gambier', + 'Pacific/Guadalcanal' => 'Csendes-óceán/Guadalcanal', + 'Pacific/Guam' => 'Csendes-óceán/Guam', + 'Pacific/Honolulu' => 'Csendes-óceán/Honolulu', + 'Pacific/Johnston' => 'Csendes-óceán/Johnston', + 'Pacific/Kiritimati' => 'Csendes-óceán/Kiritimati', + 'Pacific/Kosrae' => 'Csendes-óceán/Kosrae', + 'Pacific/Kwajalein' => 'Csendes-óceán/Kwajalein', + 'Pacific/Majuro' => 'Csendes-óceán/Majuro', + 'Pacific/Marquesas' => 'Csendes-óceán/Marquesas', + 'Pacific/Midway' => 'Csendes-óceán/Midway', + 'Pacific/Nauru' => 'Csendes-óceán/Nauru', + 'Pacific/Niue' => 'Csendes-óceán/Niue', + 'Pacific/Norfolk' => 'Csendes-óceán/Norfolk', + 'Pacific/Noumea' => 'Csendes-óceán/Noumea', + 'Pacific/Pago_Pago' => 'Csendes-óceán/Pago Pago', + 'Pacific/Palau' => 'Csendes-óceán/Palau', + 'Pacific/Pitcairn' => 'Csendes-óceán/Pitcairn', + 'Pacific/Pohnpei' => 'Csendes-óceán/Pohnpei', + 'Pacific/Port_Moresby' => 'Csendes-óceán/Port Moresby', + 'Pacific/Rarotonga' => 'Csendes-óceán/Rarotonga', + 'Pacific/Saipan' => 'Csendes-óceán/Saipan', + 'Pacific/Tahiti' => 'Csendes-óceán/Tahiti', + 'Pacific/Tarawa' => 'Csendes-óceán/Tarawa', + 'Pacific/Tongatapu' => 'Csendes-óceán/Tongatapu', + 'Pacific/Wake' => 'Csendes-óceán/Wake', + 'Pacific/Wallis' => 'Csendes-óceán/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + '|Y.m.d.| H:i' => '2007.01.01. 13:37 [Relatív napok]', + 'Y.m.d. H:i' => '2007.01.01. 13:37', + '|Y.m.d., D| H:i' => '2007.01.01. szer., 13:37 [Relatív napok]', + '|Y. M j.| G:i' => '2007. jan. 1. 13:37 [Relatív napok]', + '|Y. F j.| G:i' => '2007. január 1. 13:37 [Relatív napok]', + '|Y. M j., D| G:i' => '2007. jan. 1., szer. 13:37 [Relatív napok]', + '|Y. F j., l| G:i' => '2007. január 1., szerda 13:37 [Relatív napok]', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => '|Y.m.d.| H:i', + +)); diff --git a/includes/shared/phpbb3/language/lang_hungarian/help/bbcode.php b/includes/shared/phpbb3/language/lang_hungarian/help/bbcode.php new file mode 100644 index 00000000..f8fa749a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/help/bbcode.php @@ -0,0 +1,69 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + * Magyar fordítás (c) 2007-2017 „Magyar phpBB Közösség fordítókâ€, + * http://phpbb.hu + * + * $Id$ + */ + +/** + * DO NOT CHANGE + */ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +$lang = array_merge($lang, array( + 'HELP_BBCODE_BLOCK_IMAGES' => 'Képek a hozzászólásokban', + 'HELP_BBCODE_BLOCK_INTRO' => 'BevezetÅ‘', + 'HELP_BBCODE_BLOCK_LINKS' => 'Hivatkozások készítése', + 'HELP_BBCODE_BLOCK_LISTS' => 'Listák készítése', + 'HELP_BBCODE_BLOCK_OTHERS' => 'Egyéb kérdések', + 'HELP_BBCODE_BLOCK_QUOTES' => 'Idézés és kódok', + 'HELP_BBCODE_BLOCK_TEXT' => 'Szövegformázás', + + 'HELP_BBCODE_IMAGES_ATTACHMENT_ANSWER' => 'Az új [attachment=][/attachment] BBCode segítségével a csatolmányok már a hozzászólás bármely részébe beilleszthetÅ‘k, ha az adminisztrátor bekapcsolta a csatolmányok funkciót, és megadta neked a szükséges jogosultságokat csatolmányok feltöltéséhez. A hozzászólásküldÅ‘ űrlapon egy lenyíló menü segít a csatolmányok hozzászólásba való beillesztésében.', + 'HELP_BBCODE_IMAGES_ATTACHMENT_QUESTION' => 'Csatolmányok fűzése hozzászólásokhoz', + 'HELP_BBCODE_IMAGES_BASIC_ANSWER' => 'A phpBB BBCode-ja lehetÅ‘séget nyújt képek beszúrására hozzászólásokba. Ezzel kapcsolatban két fontos dolgot nem szabad elfelejteni: számos felhasználó nem szereti, ha egy hozzászólás túl sok képet tartalmaz, illetve ügyelni kell arra, hogy a beszúrandó kép elérhetÅ‘ legyen az interneten (nem elég ha a te számítógépeden van, hacsak nem fut egy webszerver a gépen!). Képet úgy lehet beszúrni, hogy a rá mutató URL-t [img][/img] címkékkel veszed körül. Például:

    [img]https://www.phpbb.com/theme/images/logos/blue/160x52.png[/img]

    Mint ahogy az a hivatkozások készítése részben szerepel, egy képet belefoglalhatsz egy [url][/url] címkébe is, például:

    [url=https://www.phpbb.com/][img]https://www.phpbb.com/theme/images/logos/blue/160x52.png[/img][/url]

    ezt eredményezi:

    ', + 'HELP_BBCODE_IMAGES_BASIC_QUESTION' => 'Kép beszúrása hozzászólásba', + + 'HELP_BBCODE_INTRO_BBCODE_ANSWER' => 'A BBCode a HTML nyelv egy speciális változata. A BBCode használatának engedélyezése az adminisztrátortól függ, de neked is lehetÅ‘séged van ki- vagy bekapcsolni a hozzászólásaidnál. A BBCode hasonló felépítésű, mint a HTML, kivéve hogy a címkék nem kacsacsÅ‘rök között („<†, ill. „>â€), hanem szögletes zárójelben („[â€, ill. „]â€) vannak; és nagyobb teret enged a szöveg megformázásához. Hozzászólás küldésekor az üzenet mezÅ‘ fölött található BBCode panel nagyban megkönnyítheti a BBCode-ok használatát. Ezzel együtt az alábbi útmutatót valószínűleg hasznosnak fogod találni.', + 'HELP_BBCODE_INTRO_BBCODE_QUESTION' => 'Mi az a BBCode?', + + 'HELP_BBCODE_LINKS_BASIC_ANSWER' => 'A phpBB BBCode-ja több módot is biztosít hivatkozások készítésére. A hivatkozások egy URL-re („Universe Resource Locator†azaz webcímre) mutatnak.
    • Az elsÅ‘ mód az [url=][/url] címkék használata. Az URL-t az elsÅ‘ címkében, az egyenlÅ‘ségjel és a záró szögletes zárójel között kell megadni. Például a phpBB.com-ra így tudsz linkelni:

      [url=https://www.phpbb.com/]Látogasd meg a phpBB weboldalát![/url]

      a következő linket eredményezi: Látogasd meg a phpBB weboldalát! A link a böngésző felhasználói beállításaitól függően nyílik meg ugyanabban vagy egy új ablakban.
    • Ha magát az URL-t szeretnéd, hogy megjelenjen linkként, használd a következÅ‘, nagyon egyszerű formát:

      [url]https://www.phpbb.com/[/url]

      Ez a következő linket eredményezi: https://www.phpbb.com/
    • Mindemellett a phpBB rendelkezik egy olyan funkcióval is, mely automatikusan átalakítja a szintatikailag helyes URL-eket hivatkozásokká, anélkül hogy bármilyen BBCode-ot használnál, vagy egyáltalán odaírnád az URL elejére a kezdÅ‘ http:// részt. Ha például az üzeneted tartalmazza, hogy www.phpbb.com, az www.phpbb.com-ként fog megjelenni.
    • Ehhez hasonlóan történik az e-mail címek kezelése is; konkrétan megadhatsz egy címet, például:

      [email]nem.letezo@email.cim[/email]

      mely nem.letezo@email.cim-ként fog megjelenni, vagy csak egyszerűen beírhatod az üzenetedbe a nem.letezo@email.cim e-mail címet, és az automatikusan átkonvertálásra kerül.
    Hasonlóan a többi BBCode címkéhez, linkekkel is körülvehetsz más címkéket, például [img][/img] címkét (lásd a következő pontot), [b][/b]-t stb. Mint a formázó címkéknél, itt is ügyelni kell a címkék lezárásának helyes sorrendjére, például:

    [url=https://www.phpbb.com/][img]https://www.phpbb.com/theme/images/logos/blue/160x52.png[/url][/img]

    ez hibás, amiért akár törölhetik a hozzászólásod.', + 'HELP_BBCODE_LINKS_BASIC_QUESTION' => 'Hivatkozás egy másik weboldalra', + + 'HELP_BBCODE_LISTS_ORDERER_ANSWER' => 'A második típusú listánál, a rendezett listánál már azt is meghatározhatod, hogy mi kerüljön minden elem elé. Rendezett lista készítéséhez a [list=1][/list] címke használható – ez számozott lesz, de más paraméter megadásával betűkkel jelölt listát is készíthetsz ([list=a][/list]). A rendezetlen listához hasonlóan, az egyes elemeket itt is a [*] címke használatával kell definiálni. Például:

    [list=1]
    [*]elmenni a boltba
    [*]új számítógépet vásárolni
    [*]rácsapni a gépre, ha lefagy
    [/list]

    eredménye a következő:
    1. elmenni a boltba
    2. új számítógépet vásárolni
    3. rácsapni a gépre, ha lefagy
    Ãgy néz ki egy betűkkel jelölt lista:

    [list=a]
    [*]az első lehetséges válasz
    [*]a második lehetséges válasz
    [*]a harmadik lehetséges válasz
    [/list]

    megjelenítve:
    1. az első lehetséges válasz
    2. a második lehetséges válasz
    3. a harmadik lehetséges válasz

    [list=A]
    [*]az első lehetséges válasz
    [*]a második lehetséges válasz
    [*]a harmadik lehetséges válasz
    [/list]

    megjelenítve:
    1. az első lehetséges válasz
    2. a második lehetséges válasz
    3. a harmadik lehetséges válasz

    [list=i]
    [*]az első lehetséges válasz
    [*]a második lehetséges válasz
    [*]a harmadik lehetséges válasz
    [/list]

    megjelenítve:
    1. az első lehetséges válasz
    2. a második lehetséges válasz
    3. a harmadik lehetséges válasz

    [list=I]
    [*]az első lehetséges válasz
    [*]a második lehetséges válasz
    [*]a harmadik lehetséges válasz
    [/list]

    megjelenítve:
    1. az első lehetséges válasz
    2. a második lehetséges válasz
    3. a harmadik lehetséges válasz
    ', + 'HELP_BBCODE_LISTS_ORDERER_QUESTION' => 'Rendezett lista készítése', + 'HELP_BBCODE_LISTS_UNORDERER_ANSWER' => 'A BBCode két fajta listatípust támogat: rendezetlent és rendezettet. Lényegében ugyanazok, mint a HTML megfelelőjük. A rendezetlen listában az elemek sorrendben követik egymást, és mindegyik előtt egy pötty jelenik meg. Rendezetlen lista készítéséhez a [list][/list] címke használható, és minden elemet egy [*] címkével kell definiálni. Például így tudod felsorolni a kedvenc színeidet:

    [list]
    [*]piros
    [*]kék
    [*]sárga
    [/list]

    mely a következőképpen néz ki:
    • piros
    • kék
    • sárga

    A felsorolásjelek stílusát a következÅ‘képpen tudod megváltoztatni: [list=disc][/list], [list=circle][/list] vagy [list=square][/list].', + 'HELP_BBCODE_LISTS_UNORDERER_QUESTION' => 'Rendezetlen lista készítése', + + 'HELP_BBCODE_OTHERS_CUSTOM_ANSWER' => 'Ha adminisztrátor vagy a fórumon, és megvan a megfelelÅ‘ jogosultságod, az adminisztrátori vezérlÅ‘pult „Egyéni BBCodeâ€-ok részén tudsz felvenni saját BBCode-okat.', + 'HELP_BBCODE_OTHERS_CUSTOM_QUESTION' => 'Készíthetek saját címkéket?', + + 'HELP_BBCODE_QUOTES_CODE_ANSWER' => 'Ha egy kódrészletet vagy bármilyen fix szélességet igénylÅ‘ szöveget szeretnél beilleszteni (például Courier betűtípussal), zárd körül a szöveget [code][/code] címkékkel. Például:

    [code]echo "Ez valami kód.";[/code]

    [code][/code] címkén belül nem használható más formázás, mivel ezeken belül szereplő más címkék nem kerülnek értelmezésre.', + 'HELP_BBCODE_QUOTES_CODE_QUESTION' => 'Kódok és fix szélességet igénylő szövegek', + 'HELP_BBCODE_QUOTES_TEXT_ANSWER' => 'Két módon lehet idézni: megadva az idézet forrását, vagy nem.
    • Ha egy hozzászólás mellett lévÅ‘ „Idézés†gombra kattintva válaszolsz, akkor a hozzászólás szövege automatikusan hozzáadódik az üzenethez [quote=""][/quote] címkékbe zárva. Ezen módot használva megjelölheted az idézés forrását: egy felhasználót, egy webcímet vagy bármi mást. Ha például Pacák úrtól szeretnél idézni, a következÅ‘t írd:

      [quote="Pacák úr"]Ide jön a Pacák úr által írt szöveg.[/quote]

      A beírt szöveg elé automatikusan odakerül, hogy „Pacák úr írtaâ€. Ne felejtsd el, hogy kötelezÅ‘ idézÅ‘jelbe tenni a forrás megnevezését, ez nem tetszÅ‘leges.
    • A másik móddal csak simán idézni lehet egy szöveget, a forrás megadása nélkül. Ehhez foglald be a szöveget [quote][/quote] címkékbe. Az üzenet megtekintésénél láthatjuk, hogy csak egy sima „Idézet†felirat került a szöveg elé.
    ', + 'HELP_BBCODE_QUOTES_TEXT_QUESTION' => 'Idézés', + + 'HELP_BBCODE_TEXT_BASIC_ANSWER' => 'A BBCode címkék segítségével könnyedén megváltoztathatod egy szöveg kinézetét. Ezt a következőképpen érheted el:
    • Egy szövegrészlet félkövérré tételéhez zárd körül [b][/b] címkékkel. Például:

      [b]Helló![/b]

      eredménye: Helló!
    • Aláhúzáshoz használd az [u][/u] címkét. Például:

      [u]Jó reggelt![/u]

      így fog megjelenni: Jó reggelt!
    • Egy szöveg dÅ‘lt betűssé tételéhez használd az [i][/i] címkét. Például:

      [i]Ez nagyszerű![/i]

      ezt eredményezi: Ez nagyszerű!
    ', + 'HELP_BBCODE_TEXT_BASIC_QUESTION' => 'Félkövér, dőlt, illetve aláhúzott szöveg készítése', + 'HELP_BBCODE_TEXT_COLOR_ANSWER' => 'Egy szövegrészlet színének vagy méretének megváltoztatásához a következő címkék használhatók. Vedd figyelembe, hogy a szöveg pontos megjelenése a látogató böngészőjétől és rendszerétől is függeni fog (például túl kis betűmérettel írt szöveg nem látszódhat).
    • Egy szövegrészlet színét a [color=][/color] címkék használatával változtathatod meg. A színt megadhatod az angol nevével (pl. „redâ€, „blueâ€, „yellowâ€) vagy a hexadecimális kódjával, például: #FFFFFF, #000000. Piros szöveget például így tud készíteni:

      [color=red]Helló![/color]

      és

      [color=#FF0000]Helló![/color]

      eredménye is ez lesz: Helló!
    • A betűméretet is hasonlóan lehet megváltoztatni: a [size=][/size] címke segítségével. A szöveg méretét százalékban kell megadni: ez egy 20 és 200 közötti szám lehet, de az aktuális méret a megjelenéstÅ‘l függ. Például

      [size=30]KICSI[/size]

      általánosan KICSI lesz,

      ehhez hasonlóan:

      [size=200]ÓRIÃSI![/size]

      ÓRIÃSI! lesz.
    ', + 'HELP_BBCODE_TEXT_COLOR_QUESTION' => 'Szöveg színének vagy méretének megváltoztatása', + 'HELP_BBCODE_TEXT_COMBINE_ANSWER' => 'Igen, természetesen kombinálhatod a címkéket. Például, ha fel akarod hívni valakinek a figyelmét:

    [size=200][color=red][b]OLVASS EL![/b][/color][/size]

    ezt eredményezi: OLVASS EL!

    Ennek ellenére nem ajánlott, hogy egyszerre sok formázási eszközt használj, mivel ennek következtében a szöveg nehezen lesz olvasható. Kérünk, ügyelj a címkék lezárásának sorrendjére. A következő példa hibás:

    [b][u]Ez így hibás![/b][/u]', + 'HELP_BBCODE_TEXT_COMBINE_QUESTION' => 'Használhatok egyszerre többféle formázást?', +)); diff --git a/includes/shared/phpbb3/language/lang_hungarian/help/faq.php b/includes/shared/phpbb3/language/lang_hungarian/help/faq.php new file mode 100644 index 00000000..058ba25d --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/help/faq.php @@ -0,0 +1,189 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + * Magyar fordítás (c) 2007-2018 „Magyar phpBB Közösség fordítókâ€, + * http://phpbb.hu + * + * $Id$ + */ + +/** + * DO NOT CHANGE + */ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +$lang = array_merge($lang, array( + 'HELP_FAQ_ATTACHMENTS_ALLOWED_ANSWER' => 'Az adminisztrátorok saját maguk állíthatják be, hogy milyen típusú csatolmányokat engedélyeznek. Ha nem vagy biztos benne, mi engedélyezett, lépj kapcsolatba az adminisztrátorral.', + 'HELP_FAQ_ATTACHMENTS_ALLOWED_QUESTION' => 'Milyen csatolmányok engedélyezettek ezen a fórumon?', + 'HELP_FAQ_ATTACHMENTS_OWN_ANSWER' => 'Az általad feltöltött csatolmányok eléréséhez, menj a felhasználói vezérlÅ‘pultra, és kövesd a linkeket a csatolmányok részhez.', + 'HELP_FAQ_ATTACHMENTS_OWN_QUESTION' => 'Hogyan érem el a saját csatolmányaimat?', + + 'HELP_FAQ_BLOCK_ATTACHMENTS' => 'Csatolmányok', + 'HELP_FAQ_BLOCK_BOOKMARKS' => 'Feliratkozások és kedvencek', + 'HELP_FAQ_BLOCK_FORMATTING' => 'Formázás és téma típusok', + 'HELP_FAQ_BLOCK_FRIENDS' => 'Barátok és haragosok', + 'HELP_FAQ_BLOCK_GROUPS' => 'Felhasználói szintek és csoportok', + 'HELP_FAQ_BLOCK_ISSUES' => 'phpBB kérdések', + 'HELP_FAQ_BLOCK_LOGIN' => 'Belépési és regisztrációs kérdések', + 'HELP_FAQ_BLOCK_PMS' => 'Privát üzenetek', + 'HELP_FAQ_BLOCK_POSTING' => 'Hozzászólással kapcsolatos kérdések', + 'HELP_FAQ_BLOCK_SEARCH' => 'Keresés a fórumban', + 'HELP_FAQ_BLOCK_USERSETTINGS' => 'Felhasználói beállítások', + + 'HELP_FAQ_BOOKMARKS_DIFFERENCE_ANSWER' => 'A phpBB 3.0 kedvencek funkciója hasonlóan működött a böngészÅ‘déhez. Nem kerültél értesítésre, ha frissült a tartalom. A phpBB 3.1-ben viszont a kedvencekbe tétel a feliratkozáshoz hasonlít. Értesítésre kerülhetsz, ha a téma frissül. Feliratkozáskor, ezzel ellentétben, értesítésre kerülsz, amikor a téma vagy a fórum frissül. Az értesítési beállítások testreszabhatóak a felhasználói vezérlÅ‘pult „Fórum beállítások†menüpontjában.', + 'HELP_FAQ_BOOKMARKS_DIFFERENCE_QUESTION' => 'Mi a különbség a kedvencekbe tétel és a feliratkozás között?', + 'HELP_FAQ_BOOKMARKS_FORUM_ANSWER' => 'Egy fórumra úgy tudsz feliratkozni, hogy a fórum oldalán alul a „Feliratkozás a fórumra†linkre kattintasz.', + 'HELP_FAQ_BOOKMARKS_FORUM_QUESTION' => 'Hogyan tudok feliratkozni egy fórumra?', + 'HELP_FAQ_BOOKMARKS_REMOVE_ANSWER' => 'A leiratkozáshoz menj a felhasználói vezérlÅ‘pultra, és kövesd a linkeket a feliratkozásaidhoz.', + 'HELP_FAQ_BOOKMARKS_REMOVE_QUESTION' => 'Hogyan tudok leiratkozni?', + 'HELP_FAQ_BOOKMARKS_TOPIC_ANSWER' => 'Kedvencekbe tehetsz vagy feliratkozhatsz egy témára a “Téma eszközök†menüpont megfelelÅ‘ hivatkozására kattintva, ami általában a téma tetején és alján helyezkedik el.
    A témára úgy is feliratkozhatsz, ha a “Értesítést kérek új válasz érkezésekor†opció bejelölésével küldesz új hozzászólást.', + 'HELP_FAQ_BOOKMARKS_TOPIC_QUESTION' => 'Hogyan tudok kedvencekbe tenni vagy feliratkozni egy témára?', + + 'HELP_FAQ_FORMATTING_ANNOUNCEMENT_ANSWER' => 'A közlemények gyakran fontos információkat tartalmaznak az adott fórummal kapcsolatban, ezért olvasd el Å‘ket valahányszor csak tudod. A közlemények a fórum összes oldalán, felül jelennek meg. Hasonlóan a globális közleményekhez, közlemények küldéséhez is az adminisztrátor adhat jogosultságot.', + 'HELP_FAQ_FORMATTING_ANNOUNCEMENT_QUESTION' => 'Mik azok a közlemények?', + 'HELP_FAQ_FORMATTING_BBOCDE_ANSWER' => 'A BBCode a HTML nyelv egy speciális változata, mely nagy teret enged egy szövegrészlet megformázásához. A BBCode használatának engedélyezése az adminisztrátortól függ, de neked is lehetÅ‘séged van ki- vagy bekapcsolni a hozzászólásaidnál. A BBCode hasonló felépítésű, mint a HTML, kivéve hogy a címkék nem kacsacsÅ‘rök között („<†, ill. „>â€), hanem szögletes zárójelben („[â€, ill. „]â€) vannak. További információért lásd a BBCode útmutatót, melyet a hozzászólásküldÅ‘ oldalról érhetsz el.', + 'HELP_FAQ_FORMATTING_BBOCDE_QUESTION' => 'Mi az a BBCode?', + 'HELP_FAQ_FORMATTING_GLOBAL_ANNOUNCE_ANSWER' => 'A globális közlemények fontos információkat tartalmaznak, ezért olvasd el Å‘ket valahányszor csak tudod. A felhasználói vezérlÅ‘pultban és minden fórum tetején jelennek meg. Globális közlemények küldéséhez az adminisztrátor adhat jogosultságot.', + 'HELP_FAQ_FORMATTING_GLOBAL_ANNOUNCE_QUESTION' => 'Mik azok a globális közlemények?', + 'HELP_FAQ_FORMATTING_HTML_ANSWER' => 'Nem. Nem lehetséges HTML-t küldeni, majd azt HTML-ként is megjeleníteni. A legtöbb HTML-lel létrehozható formázás BBCode használatával is elérhetÅ‘.', + 'HELP_FAQ_FORMATTING_HTML_QUESTION' => 'Használhatok HTML-t?', + 'HELP_FAQ_FORMATTING_ICONS_ANSWER' => 'A téma ikonok kis képek, melyeket a küldÅ‘ társít a hozzászólásához jelképezve annak tartalmát. A téma ikonok használatának lehetÅ‘sége az adminisztrátortól függ.', + 'HELP_FAQ_FORMATTING_ICONS_QUESTION' => 'Mik azok a téma ikonok?', + 'HELP_FAQ_FORMATTING_IMAGES_ANSWER' => 'Igen, megjeleníthetsz képeket a hozzászólásaidban. Azonban, ha az adminisztrátor engedélyezte a csatolmányok hozzáadását, akkor a képeket egyenesen a fórumra is feltöltheted. EllenkezÅ‘ esetben a képeket egy publikus, mindenki által elérhetÅ‘ szerveren kell tárolnod, és onnan belinkelned – például: http://www.akarmi.hu/en-kepem.gif. Nem tudsz belinkelni képeket a saját gépedrÅ‘l (hacsak az nem érhetÅ‘ el kívülrÅ‘l is), azonosítást igénylÅ‘ oldalakról (mint például freemail, gmail, yahoo postafiókok), jelszóval védett weblapokról stb. A képek megjelenítéséhez használd az [img] BBCode címkét.', + 'HELP_FAQ_FORMATTING_IMAGES_QUESTION' => 'Küldhetek képeket?', + 'HELP_FAQ_FORMATTING_LOCKED_ANSWER' => 'A lezárt témák olyan témák, melyekbe nem lehet hozzászólást küldeni vagy szavazni bennük. Egy téma lezárásának több oka lehet, és egy témát egy adminisztrátor vagy egy moderátor zárhat le. Ha a fórum adminisztrátora megadta a szükséges jogosultságokat, lehetÅ‘séged lehet lezárni a saját témáidat.', + 'HELP_FAQ_FORMATTING_LOCKED_QUESTION' => 'Mik azok a lezárt témák?', + 'HELP_FAQ_FORMATTING_SMILIES_ANSWER' => 'A smiley-k vagy más néven emotikonok kis grafikák, melyekkel érzéseket lehet kifejezni. Például a :) vidámot/boldogot, a :( szomorút jelent. A használható emotikonok teljes listája megtalálható a hozzászólás küldésénél. LehetÅ‘leg ne használj túl sok emotikont, mert nehezen lesz olvasható a hozzászólás, ezért pedig egy moderátor kiszerkesztheti Å‘ket, vagy akár az egész hozzászólást törölheti. A fórum adminisztrátora beállíthat egy felsÅ‘ korlátot, melynél nem használhatsz több emotikont egy hozzászólásban.', + 'HELP_FAQ_FORMATTING_SMILIES_QUESTION' => 'Mik azok az emotikonok?', + 'HELP_FAQ_FORMATTING_STICKIES_ANSWER' => 'A kiemelt témák a közlemények alatt jelennek meg a fórumokban, de csak az elsÅ‘ oldalon. Gyakran elég fontosak, úgyhogy érdemes Å‘ket elolvasnod, ha lehetséges. Hasonlóan a globális és nem globális közleményekhez, kiemelt témák küldéséhez az adminisztrátor adhat jogosultságot.', + 'HELP_FAQ_FORMATTING_STICKIES_QUESTION' => 'Mik azok a kiemelt témák?', + + 'HELP_FAQ_FRIENDS_BASIC_ANSWER' => 'Ezen listák segítségével rendszerezheted a fórum többi tagját. A barátok listában szereplÅ‘ felhasználók megjelennek a felhasználói vezérlÅ‘pultban, így gyorsan elérheted Å‘ket, küldhetsz nekik privát üzenetet, és láthatod, hogy éppen jelen vannak-e. A használt megjelenés támogatásától függÅ‘en, a barátok hozzászólásai kiemelve szerepelhetnek. Ha egy felhasználót haragosként jelölsz meg, akkor a hozzászólásai alapból nem fognak megjelenni.', + 'HELP_FAQ_FRIENDS_BASIC_QUESTION' => 'Mire valók a barátok és haragosok listák?', + 'HELP_FAQ_FRIENDS_MANAGE_ANSWER' => 'A listáidra két módon vehetsz fel felhasználókat. Minden felhasználó profiljában található egy link, melynek segítségével felveheted a barátaid vagy a haragosaid közé. Emellett a felhasználói vezérlÅ‘pultban is felvehetsz embereket, közvetlenül megadva a felhasználónevüket. Ugyanezen oldalon el is távolíthatsz felhasználókat a listáidról.', + 'HELP_FAQ_FRIENDS_MANAGE_QUESTION' => 'Hogyan adhatok hozzá, illetve távolíthatok el felhasználókat a barátok vagy haragosok listáról?', + + 'HELP_FAQ_GROUPS_ADMINISTRATORS_ANSWER' => 'Az adminisztrátorok a fórum legmagasabb rangú és jogú tagjai, Å‘k üzemeltetik, és tartják karban. A fórum minden részletét szabályozhatják, például jogosultságokat adhatnak, kitilthatnak felhasználókat, csoportokat hozhatnak létre, moderátorokat nevezhetnek ki stb. attól függÅ‘en, hogy a fórumalapító milyen jogosultságokat adott a többi adminisztrátornak. Teljesjogú moderátorok is lehetnek az összes fórumban.', + 'HELP_FAQ_GROUPS_ADMINISTRATORS_QUESTION' => 'Kik azok az adminisztrátorok?', + 'HELP_FAQ_GROUPS_COLORS_ANSWER' => 'Az adminisztrátor színeket rendelhet egy csoport tagjaihoz, hogy könnyen azonosíthatók legyenek.', + 'HELP_FAQ_GROUPS_COLORS_QUESTION' => 'Miért jelenik meg néhány csoport más színnel?', + 'HELP_FAQ_GROUPS_DEFAULT_ANSWER' => 'Ha több csoport tagja is vagy, akkor ez a csoport határozza meg, hogy milyen színnel jelenik meg a neved, és hogy alapból milyen csoport avatar jelenik meg nálad. Az adminisztrátor engedélyezheti, hogy megváltoztasd az elsÅ‘dleges csoportodat a felhasználói vezérlÅ‘pultban.', + 'HELP_FAQ_GROUPS_DEFAULT_QUESTION' => 'Mi az az „elsÅ‘dleges csoportâ€?', + 'HELP_FAQ_GROUPS_MODERATORS_ANSWER' => 'A moderátorok olyan különleges jogosultságokkal rendelkezÅ‘ tagok, akik napról napra figyelemmel követik a fórumokat. Jogukban áll szerkeszteni, törölni a hozzászólásokat, valamint lezárni, megnyitni, áthelyezni, törölni és szétválasztani a témákat az általuk moderált fórumban. Ãltalánosságban a moderátorok azért vannak, hogy meggátolják a témába nem illÅ‘, sértegetÅ‘ vagy támadó hangvételű hozzászólások küldését. ', + 'HELP_FAQ_GROUPS_MODERATORS_QUESTION' => 'Kik azok a moderátorok?', + 'HELP_FAQ_GROUPS_TEAM_ANSWER' => 'Ezen az oldalon egy listát találhatsz a fórum üzemeltetÅ‘irÅ‘l: az adminisztrátorokról és a moderátorokról (utóbbiaknál jelezve például azt is, hogy melyik fórumot moderálják).', + 'HELP_FAQ_GROUPS_TEAM_QUESTION' => 'Mi az az „A csapat†link?', + 'HELP_FAQ_GROUPS_USERGROUPS_ANSWER' => 'A felhasználói csoportok segítségével felosztható a közösség olyan egységekre, melyeket az adminisztrátor könnyen kezelhet. Minden felhasználó több csoportba is tartozhat, és mindegyik csoporthoz saját jogosultságok rendelhetÅ‘k. Ezzel az adminisztrátor könnyedén létrehozhat zártkörű fórumokat, moderátorrá tehet egyszerre több felhasználót stb.', + 'HELP_FAQ_GROUPS_USERGROUPS_JOIN_ANSWER' => 'A fórumon lévÅ‘ csoportokat a felhasználói vezérlÅ‘pultban tekintheted meg a „Csoportok†linkre kattintva. Ha csatlakozni szeretnél egy csoporthoz, kattints a megfelelÅ‘ gombra. Mindemellett nem az összes csoport nyílt hozzáférésű, néhánynál jóváhagyás szükséges a csatlakozáshoz, néhány zárt, néhány pedig egyenesen rejtett. Ha a csoport nyitott, akkor a megfelelÅ‘ gombra kattintva tudsz csatlakozni. Ezután a csoport vezetÅ‘jének jóvá kell hagynia a kérelmed – ennek kapcsán megkérdezheti, hogy miért szeretnél csatlakozni a csoporthoz. Kérjük, ne zaklasd a csoportvezetÅ‘t, ha elutasítja a kérelmed, biztosan megvan az oka.', + 'HELP_FAQ_GROUPS_USERGROUPS_JOIN_QUESTION' => 'Hol látom a csoportokat, és hogyan csatlakozhatok egyhez?', + 'HELP_FAQ_GROUPS_USERGROUPS_LEAD_ANSWER' => 'Amikor az adminisztrátor létrehoz egy csoportot, általában egy csoportvezetÅ‘ is kijelölésre kerül. Ha szeretnél létrehozni egy csoportot, akkor lépj kapcsolatba egy adminisztrátorral – például egy privát üzenet küldésével.', + 'HELP_FAQ_GROUPS_USERGROUPS_LEAD_QUESTION' => 'Hogyan lehetek csoportvezetÅ‘?', + 'HELP_FAQ_GROUPS_USERGROUPS_QUESTION' => 'Mik azok a csoportok?', + + 'HELP_FAQ_ISSUES_ADMIN_ANSWER' => 'SértÅ‘, illetve illegális tartalmak kapcsán az „A csapat†oldalon felsorolt adminisztrátorok közül kell egyet felkeresni. Ha nem kapsz választ, akkor a domain tulajdonosát. Ha a fórum egy ingyenes tárhelyen található, akkor azt a szolgáltatót értesítsd. Kérjük, vedd figyelembe, hogy a phpBB Limited-nek és a Magyar phpBB Közösségnek semmilyen köze, hozzáférése vagy beleszólása nincs a fórumon olvasható tartalomhoz, ezért nem tehetÅ‘ semmilyen módon felelÅ‘ssé amiatt, hogy ki mire használja ezt a fórumot.', + 'HELP_FAQ_ISSUES_ADMIN_QUESTION' => 'Ki az illetékes a fórumon olvasható tartalommal kapcsolatban?', + 'HELP_FAQ_ISSUES_FEATURE_ANSWER' => 'A magyar fordítást a Magyar phpBB Közösség fordító készítik, és tartják karban. A fordítást Fodor Bertalan és Menyhárt Zsolt készítette Berentés Marcell, Joó Ãdám és Bartus Máté közreműködésével. Ha bármilyen hibát találsz, kérjük, jelezd a hibabejelentÅ‘nkben.', + 'HELP_FAQ_ISSUES_FEATURE_QUESTION' => 'Ki készítette ezt a magyar fordítást?', + 'HELP_FAQ_ISSUES_LEGAL_ANSWER' => 'Ezt a szoftvert a phpBB Limited készítette, és licenceli. Ha úgy gondolod, hogy újabb szolgáltatások, funkciók szükségesek a fórumba, vagy valamilyen működési hibát találtál, látogasd meg a phpBB Ideas Centre weboldalt, ahol ezzel kapcsolatban további információkat kaphatsz.', + 'HELP_FAQ_ISSUES_LEGAL_QUESTION' => 'Miért nem érhetÅ‘ el az X szolgáltatás?', + 'HELP_FAQ_ISSUES_WHOIS_PHPBB_ANSWER' => 'Ezt a szoftvert (eredeti formájában) a phpBB Limited készítette, adta ki, és gyakorolja a szerzÅ‘i jogokat felette. A GNU General Public License alatt érhetÅ‘ el, és szabadon terjeszthetÅ‘. További információért lásd a linket.', + 'HELP_FAQ_ISSUES_WHOIS_PHPBB_QUESTION' => 'Ki készítette ezt a fórumot?', + + 'HELP_FAQ_LOGIN_AUTO_LOGOUT_ANSWER' => 'Ha belépéskor nem jelölöd be az Emlékezzen rám opciót, a rendszer csak egy elÅ‘re meghatározott ideig hagy belépve. Ez a viselkedés meggátolja az azonosítóddal való visszaélést. A tartós belépve maradáshoz jelöld be az említett opciót. Ezen funkció használata nem ajánlott, ha nyilvános helyrÅ‘l használod a fórumot, például könyvtárból, internetkávézóból vagy egyetemi laborból. Ha nem látod a jelölÅ‘négyzetet, a fórumon valószínűleg nincs bekapcsolva ez a funkció.', + 'HELP_FAQ_LOGIN_AUTO_LOGOUT_QUESTION' => 'Miért kerülök kiléptetésre automatikusan?', + 'HELP_FAQ_LOGIN_CANNOT_LOGIN_ANSWER' => 'Ennek számos oka lehet. ElÅ‘ször is ellenÅ‘rizd, hogy jól adtad-e meg a felhasználóneved és a jelszavad. Ha igen, lépj kapcsolatba a fórum adminisztrátorával, hogy meggyÅ‘zÅ‘dj róla, nem lettél kitiltva. Az is lehetséges, hogy a weboldal üzemeltetÅ‘jének oldalán lépett fel valamilyen konfigurációs hiba, melyet javítaniuk kéne.', + 'HELP_FAQ_LOGIN_CANNOT_LOGIN_ANYMORE_ANSWER' => 'Keresd elÅ‘ a regisztrációkor kapott e-mailt, ellenÅ‘rizd le a felhasználóneved és a jelszavad, majd próbálkozz újra. Lehetséges, hogy az adminisztrátor valamilyen okból kifolyólag inaktiválta, vagy törölte az azonosítód. Ez utóbbinak egy lehetséges oka, hogy nem küldtél egy hozzászólást se. Néhány fórumon ugyanis szokás, hogy bizonyos idÅ‘közönként eltávolítják az olyan felhasználókat, akik nem küldtek hozzászólást, hogy csökkentsék az adatbázis méretét. Próbálj meg újra regisztrálni és bekapcsolódni a társalgásba.', + 'HELP_FAQ_LOGIN_CANNOT_LOGIN_ANYMORE_QUESTION' => 'Korábban regisztráltam magam, azonban már nem tudok belépni?!', + 'HELP_FAQ_LOGIN_CANNOT_LOGIN_QUESTION' => 'Miért nem tudok belépni?', + 'HELP_FAQ_LOGIN_CANNOT_REGISTER_ANSWER' => 'Lehet, hogy a weboldal tulajdonosa letiltotta az IP-címed vagy a regisztrálni kívánt felhasználónevet. Az is elÅ‘fordulhat, hogy a regisztráció kikapcsolásra került, hogy ne tudjanak új felhasználók regisztrálni. További segítségért lépj kapcsolatba a fórum egyik adminisztrátorával.', + 'HELP_FAQ_LOGIN_CANNOT_REGISTER_QUESTION' => 'Miért nem tudok regisztrálni?', + 'HELP_FAQ_LOGIN_COPPA_ANSWER' => 'A COPPA, vagyis az 1998-as „Child Online Privacy and Protection Act†(gyerekek online adatvédelmérÅ‘l intézkedÅ‘ törvény) egy egyesült államokbeli törvény, mely megköveteli a honlapoktól, hogy írásos szülÅ‘i vagy gondviselÅ‘i beleegyezéssel rendelkezzenek 13 éven aluli személyektÅ‘l való adatgyűjtéshez. Ez a törvény csak az Amerikai Egyesült Ãllamokban lévÅ‘ szervereken működÅ‘ fórumokra érvényes, tehát Magyarországon nem. Ha nem vagy biztos benne, hogy ez a törvény vonatkozik-e rád vagy a fórumra, melyre regisztrálsz, kérj jogi segítséget. Kérjük, tartsd szem elÅ‘tt, hogy a phpBB Limited nem tud jogi tanácsot adni, és az alább leírtakon kívül semmilyen aggály esetén sem hozzájuk kell fordulni.', + 'HELP_FAQ_LOGIN_COPPA_QUESTION' => 'Mi az a COPPA?', + 'HELP_FAQ_LOGIN_DELETE_COOKIES_ANSWER' => 'Ez a funkció törli az összes phpBB3 által küldött sütit. A sütik feladata az azonosítás, illetve a beléptetés, valamint – ha a fórum tulajdonosa beállította – a hozzászólások olvasottságának követése és ehhez hasonló funkciók. Ha problémáid vannak a belépéssel vagy a kilépéssel, a sütik törlése segíthet.', + 'HELP_FAQ_LOGIN_DELETE_COOKIES_QUESTION' => 'Mit csinál a „Sütik törléseâ€?', + 'HELP_FAQ_LOGIN_LOST_PASSWORD_ANSWER' => 'Semmi pánik! A jelszavad ugyan nem lehet utólag kideríteni, de lehetÅ‘séged van új készítésére. Ehhez menj a belépés oldalra, majd kattints az Elfelejtettem a jelszavam linkre. Kövesd az utasításokat, és rövid idÅ‘n belül újra be kell tudnod lépned.', + 'HELP_FAQ_LOGIN_LOST_PASSWORD_QUESTION' => 'Elfelejtettem a jelszavamat!', + 'HELP_FAQ_LOGIN_REGISTER_ANSWER' => 'A regisztráció nem feltétlenül kötelezÅ‘, a fórum adminisztrátorán múlik, hogy megköveteli-e hozzászólások küldéséhez. Mindemellett a regisztrációval plusz lehetÅ‘ségek is elérhetÅ‘vé válnak a számodra, mint például avatar használata, privát üzenetek, illetve e-mailek küldése, csatlakozás csoportokhoz stb. A regisztráció csupán néhány másodpercet vesz igénybe, így javasoljuk, hogy éljél vele.', + 'HELP_FAQ_LOGIN_REGISTER_CONFIRM_ANSWER' => 'ElÅ‘ször is ellenÅ‘rizd le, hogy helyesen adtad-e meg a felhasználóneved és a jelszavad. Ha igen, akkor két dolog történhetett. Amennyiben a COPPA-támogatás be van kapcsolva, és a regisztráció során megadtad, hogy 13 évesnél fiatalabb vagy, követned kell a kapott utasításokat. Számos fórum megköveteli, hogy az új azonosítók aktiválásra kerüljenek, mielÅ‘tt használatba lehetne venni Å‘ket. Ezt vagy egy adminisztrátornak vagy a felhasználónak kell megtennie. Mindenesetre a regisztrációnál elvileg tájékoztatásra kerültél, hogy szükséges-e az azonosító aktiválása. Ha kaptál egy e-mailt, akkor kövesd az utasításait, ha nem, lehet, hogy rossz e-mail címet adtál meg, vagy a spamszűrÅ‘d kiszűrte. Ha biztos vagy benne, hogy helyes e-mail címet adtál meg, próbálj meg kapcsolatba lépni a fórum adminisztrátorával.', + 'HELP_FAQ_LOGIN_REGISTER_CONFIRM_QUESTION' => 'Regisztráltam, de mégsem tudok belépni', + 'HELP_FAQ_LOGIN_REGISTER_QUESTION' => 'Miért kell regisztrálnom?', + + 'HELP_FAQ_PMS_CANNOT_SEND_ANSWER' => 'Ennek három oka lehet: nem regisztráltál, vagy nem vagy belépve; az adminisztrátor nem engedélyezte a fórumon privát üzenetek küldését; vagy az adminisztrátor nem engedélyezte neked, hogy privát üzenetet küldjél. További információért lépj kapcsolatba egy adminisztrátorral.', + 'HELP_FAQ_PMS_CANNOT_SEND_QUESTION' => 'Nem tudok privát üzenetet küldeni!', + 'HELP_FAQ_PMS_SPAM_ANSWER' => 'Ezt sajnálattal halljuk. A fórum e-mail funkciója tartalmaz ez irányú óvintézkedéseket. Értesítsd a fórum adminisztrátorát, küldd el neki a kapott e-mail teljes másolatát is – fontos, hogy ez a fejlécet is tartalmazza, ugyanis ebben szerepelnek az adatok az e-mail küldÅ‘jérÅ‘l. A fórum adminisztrátora megteheti a szükséges lépéseket.', + 'HELP_FAQ_PMS_SPAM_QUESTION' => 'Kéretlen vagy sértegetÅ‘ e-mailt kaptam valakitÅ‘l a fórumról!', + 'HELP_FAQ_PMS_UNWANTED_ANSWER' => 'A felhasználói vezérlÅ‘pultban beállítható szűrÅ‘k segítségével letilthatsz embereket, hogy ne tudjanak neked privát üzenetet küldeni. Ha sértegetÅ‘ üzeneteket kapsz valakitÅ‘l, értesíts egy adminisztrátort, Å‘ ugyanis beállíthatja, hogy egy felhasználó ne tudjon privát üzenetet küldeni.', + 'HELP_FAQ_PMS_UNWANTED_QUESTION' => 'Folyamatosan kéretlen üzeneteket kapok!', + + 'HELP_FAQ_POSTING_BUMP_ANSWER' => 'A téma megtekintésénél megjelenÅ‘ „Téma elÅ‘reugrasztása†linkre kattintva „elÅ‘reugraszthatsz†egy témát a fórum tetejére, hogy a témák felsorolásánál elsÅ‘ként jelenjen meg. Ha nem látod ezt a linket, akkor ez a funkció nincs bekapcsolva a fórumon, vagy még nem telt le az elÅ‘ugrasztáshoz szükséges idÅ‘. Egy témát úgy is elÅ‘reugraszthatsz, hogy küldesz bele egy hozzászólást – ennél viszont vigyázz az aktuális fórum szabályainak betartására.', + 'HELP_FAQ_POSTING_BUMP_QUESTION' => 'Hogyan ugraszthatok elÅ‘re egy témát?', + 'HELP_FAQ_POSTING_CREATE_ANSWER' => 'Ha egy fórumban új témát szeretnél nyitni, kattints az "Új téma" gombra a fórumban. Hozzászólás küldéséhez egy már létezÅ‘ témába kattints az "Új hozzászólás" gombra. Hozzászólás küldéséhez lehet, hogy elÅ‘bb regisztrálnod kell. A jogosultságaidat a fórum vagy téma oldalak alján találod meg. Például: Nyithatsz új témákat, Küldhetsz hozzászólást csatolmánnyal stb.', + 'HELP_FAQ_POSTING_CREATE_QUESTION' => 'Hogyan készíthetek egy új témát vagy válaszolhatok egy témában?', + 'HELP_FAQ_POSTING_DRAFT_ANSWER' => 'Ezzel elmentheted a még nem befejezett üzeneted, majd késÅ‘bb folytathatod, és elküldheted. Egy piszkozat betöltéséhez menj a felhasználói vezérlÅ‘pultra és kövesd a maguktól értetÅ‘dÅ‘ lépéseket.', + 'HELP_FAQ_POSTING_DRAFT_QUESTION' => 'Mire való az „Elmentés†gomb hozzászólás küldésénél?', + 'HELP_FAQ_POSTING_EDIT_DELETE_ANSWER' => 'Ha nem vagy adminisztrátor vagy moderátor, akkor csak azokat a hozzászólásokat szerkesztheted vagy törölheted, melyeket te küldtél. Egy hozzászólást a szerkesztés gombra kattintva tudsz szerkeszteni, általában csak a beküldés utáni korlátozott idÅ‘tartamban. Abban az esetben, ha valaki már válaszolt a hozzászólásodra, a hozzászólásod alatt egy apró szöveg fog megjelenni, mely jelzi, a hozzászólás hányszor és ki által került szerkesztésre. Ez csak akkor fog megjelenni, ha utánad küldött már valaki egy hozzászólást, akkor nem, ha még nem válaszolt senki, illetve ha egy moderátor vagy egy adminisztrátor szerkesztette a hozzászólásod, bár Å‘k hagyhatnak egy megjegyzést jelezve a szerkesztés okát. Kérjük, vedd figyelembe, hogy a normál felhasználók nem törölhetik a hozzászólásukat, miután már másvalaki válaszolt.', + 'HELP_FAQ_POSTING_EDIT_DELETE_QUESTION' => 'Hogyan szerkeszthetek, illetve törölhetek egy hozzászólást?', + 'HELP_FAQ_POSTING_FORUM_RESTRICTED_ANSWER' => 'Csak regisztrált felhasználók vehetnek részt a szavazásokban (a többszöri szavazás elkerülése végett). Amennyiben regisztrált felhasználó vagy de mégsem tudsz szavazni, akkor valószínűleg nincs jogosultságod a szavazáshoz.', + 'HELP_FAQ_POSTING_FORUM_RESTRICTED_QUESTION' => 'Miért nem tudok szavazni?', + 'HELP_FAQ_POSTING_NO_ATTACHMENTS_ANSWER' => 'A csatolmányok feltöltéséhez szükséges jogosultság megadható fórumokra, csoportokra vagy felhasználókra. Lehet, hogy az adminisztrátor nem engedélyezte csatolmányok hozzáadását a fórumba, melybe írni szeretnél, vagy talán csak bizonyos csoportok tagjai küldhetnek csatolmányokat. Ha nem vagy biztos benne, miért nem tudsz csatolmányokat hozzáadni, lépj kapcsolatba az adminisztrátorral.', + 'HELP_FAQ_POSTING_NO_ATTACHMENTS_QUESTION' => 'Miért nem tudok hozzáadni csatolmányokat?', + 'HELP_FAQ_POSTING_POLL_ADD_ANSWER' => 'A hozzászólásokhoz hasonlóan a szavazásokat is csak a készítÅ‘, egy moderátor vagy egy adminisztrátor szerkesztheti. Egy szavazás szerkesztéséhez menj a téma elsÅ‘ hozzászólásához – mindig ehhez tartozik a szavazás, és kattints a szerkeszt gombra. Ha még senki sem szavazott, a készítÅ‘ még törölheti a szavazást, vagy megváltoztathatja a választási lehetÅ‘ségeket, de ha már érkezett szavazat, csak egy adminisztrátor vagy egy moderátor törölheti vagy szerkesztheti a szavazást. Ãgy nem lehet manipulálni a szavazást a szavazási lehetÅ‘ségek megváltoztatásával.', + 'HELP_FAQ_POSTING_POLL_ADD_QUESTION' => 'Hogyan szerkeszthetek vagy törölhetek egy szavazást?', + 'HELP_FAQ_POSTING_POLL_CREATE_ANSWER' => 'Amikor egy új témát nyitsz, vagy egy téma elsÅ‘ hozzászólását szerkeszted, kattints a „Szavazás készítése†fülre az üzenet mezÅ‘ alatt. Ha nem látod ezt a fület, az azért lehet, mert nincs jogosultságod szavazás készítéséhez. Add meg a szavazás címét, majd legalább két választási lehetÅ‘séget mindegyiket új sorba írva. A „Felhasználónként válaszható lehetÅ‘ségek†mezÅ‘ használatával megadhatod azt is, hogy egy felhasználó hány választási lehetÅ‘ségre szavazhat; beállíthatsz a szavazásnak egy idÅ‘korlátot (napokban megadva); és végül választhatsz, hogy lehetséges legyen-e a szavazatokat megváltoztatatni.', + 'HELP_FAQ_POSTING_POLL_CREATE_QUESTION' => 'Hogyan készíthetek szavazást?', + 'HELP_FAQ_POSTING_POLL_EDIT_ANSWER' => 'Néhány fórum lehet, hogy csak bizonyos felhasználók, illetve csoportok számára érhetÅ‘ el. A fórum megtekintéséhez, olvasásához, benne hozzászólás küldéséhez stb. lehet, hogy speciális jogosultság kell. Lépj kapcsolatba egy moderátorral vagy egy adminisztrátorral, és kérelmezd a jogosultságot.', + 'HELP_FAQ_POSTING_POLL_EDIT_QUESTION' => 'Miért nem férek hozzá egy fórumhoz?', + 'HELP_FAQ_POSTING_QUEUE_ANSWER' => 'A fórum adminisztrátora beállíthatta, hogy a fórumban, melybe hozzászólást szeretnél küldeni, csak olyan hozzászólások jelenhetnek meg, melyeket egy moderátor átnézett. Az is lehet, hogy az adminisztrátor egy olyan csoportba helyezett téged, akiknek a hozzászólásait át kell néznie egy moderátornak. További információért, lépj kapcsolatba a fórum adminisztrátorával.', + 'HELP_FAQ_POSTING_QUEUE_QUESTION' => 'Miért kell a hozzászólásomat jóváhagynia egy moderátornak?', + 'HELP_FAQ_POSTING_REPORT_ANSWER' => 'Menj a hozzászóláshoz, melyet jelenteni szeretnél, és ha a fórum adminisztrátora engedélyezte, látnod kell egy gombot, mely erre való. Ha erre kattintasz, végigkísérésre kerülsz a hozzászólás jelentéséhez szükséges lépéseken.', + 'HELP_FAQ_POSTING_REPORT_QUESTION' => 'Hogyan jelenthetek egy hozzászólást a moderátoroknak?', + 'HELP_FAQ_POSTING_SIGNATURE_ANSWER' => 'A csatoláshoz elÅ‘ször el kell készítened az aláírásod – ezt a felhasználói vezérlÅ‘pultban teheted meg. Ezután a hozzászólás küldésénél csak jelöld be az Aláírás hozzáadása opciót. Az aláírás automatikusan is hozzáadható minden hozzászóláshoz, ehhez is a felhasználói vezérlÅ‘pultban kell megváltoztatnod a megfelelÅ‘ beállítást. Ha így teszel, az egyes hozzászólásoknál a küldéskor a megfelelÅ‘ opció kikapcsolásával még mindig megadhatod, hogy ne kerüljön csatolásra az aláírásod.', + 'HELP_FAQ_POSTING_SIGNATURE_QUESTION' => 'Hogyan csatolhatom az aláírásomat a hozzászólásomhoz?', + 'HELP_FAQ_POSTING_WARNING_ANSWER' => 'Minden adminisztrátornak megvan a saját szabályzata az oldalára. Ha megsértettél egy szabályt, figyelmeztethetnek téged. Kérjük, vedd figyelembe, hogy ez a fórum adminisztrátorának döntése – a phpBB Limited-nak semmi köze nincs a fórumokon kiosztott figyelmeztetésekhez.', + 'HELP_FAQ_POSTING_WARNING_QUESTION' => 'Miért kaptam figyelmeztetést?', + + 'HELP_FAQ_SEARCH_BLANK_ANSWER' => 'A keresésed olyan sok találatot adott vissza, hogy azt a webszerver már nem tudta kezelni. Használd a „Részletes kereséstâ€, jobban körülhatárolt kifejezést adj meg, és válaszd ki, hogy csak melyik fórumban szeretnél keresni.', + 'HELP_FAQ_SEARCH_BLANK_QUESTION' => 'A keresésem miért ad vissza üres oldalt!?', + 'HELP_FAQ_SEARCH_FORUM_ANSWER' => 'Ãrd be a keresendÅ‘ kifejezést közvetlenül a keresÅ‘dobozba, mely rendelkezésre áll a fórum kezdÅ‘lapon, egy fórumban vagy egy témában. A részletes keresést a „Részletes keresés†linkre kattintva tudod elérni, mely a fórum összes oldalán elérhetÅ‘. Ennek a helye a használt megjelenéstÅ‘l függ.', + 'HELP_FAQ_SEARCH_FORUM_QUESTION' => 'Hogyan kereshetek egy fórumban?', + 'HELP_FAQ_SEARCH_MEMBERS_ANSWER' => 'Menj a „Taglista†oldalra, és kattints a „Felhasználó keresése†linkre.', + 'HELP_FAQ_SEARCH_MEMBERS_QUESTION' => 'Hogyan kereshetek a tagok között?', + 'HELP_FAQ_SEARCH_NO_RESULT_ANSWER' => 'Valószínűleg a keresés túl általános volt, és sok gyakori szót tartalmazhatott, melyeket a phpBB3 nem indexel. Próbálj meg egy jobban körülhatárolt kifejezést megadni, és használd ki a részletes keresés lehetÅ‘ségeit.', + 'HELP_FAQ_SEARCH_NO_RESULT_QUESTION' => 'Miért nem ad vissza találatot a keresésem?', + 'HELP_FAQ_SEARCH_OWN_ANSWER' => 'A saját hozzászólásaidhoz kétféleképpen férhetsz hozzá: vagy a felhasználói vezérlÅ‘pultban a „Saját hozzászólások megtekintése†linkre kattintva vagy a profilodon keresztül. A témáid eléréséhez használd a részletes keresést.', + 'HELP_FAQ_SEARCH_OWN_QUESTION' => 'Hogyan találhatom meg a saját hozzászólásaimat és témáimat?', + + 'HELP_FAQ_USERSETTINGS_AVATAR_ANSWER' => 'A hozzászólások megtekintésénél a felhasználónév mellett két kép szerepelhet. Az egyik általában a rangodhoz kapcsolódik (ezek általában csillagok vagy más elemek formájában kerülnek megjelenítésre, a számuk mutatja mennyi hozzászólást küldtél eddig a fórumon, vagy hogy milyen státuszod van). A másik – általában egy nagyobb kép – az avatar, mely a legtöbb felhasználónak egyedi és személyes. A fórum adminisztrátorától függ, hogy engedélyezett-e az avatarok használata, illetve milyen módot lehet megadni ezt a képet. Ha nem tudsz avatart beállítani, lépj kapcsolatba egy adminisztrátorral, és tájékozódj nála az okokról.', + 'HELP_FAQ_USERSETTINGS_AVATAR_DISPLAY_ANSWER' => 'A felhasználói vezérlÅ‘pult “Profil†menüpontjában adhatsz meg avatart a következÅ‘ módokon: Gravatar szolgáltatás használatával, avatar galériából történÅ‘ választással, külsÅ‘ URL megadásával és feltöltéssel. A fórum adminisztrátorától függ, hogy engedélyezett-e az avatarok használta, illetve milyen módon lehet megadni ezt a képet. Ha nem tudsz avatart beállítani, lépj kapcsolatba egy adminisztrátorral, és tájékozódj nála az okokról.', + 'HELP_FAQ_USERSETTINGS_AVATAR_DISPLAY_QUESTION' => 'Hogyan tudok avatart megjeleníteni?', + 'HELP_FAQ_USERSETTINGS_AVATAR_QUESTION' => 'Mik azok a képek a felhasználónevem mellett?', + 'HELP_FAQ_USERSETTINGS_CHANGE_SETTINGS_ANSWER' => 'Amennyiben regisztrált felhasználó vagy, minden beállításod az adatbázisban kerül tárolásra. Ezek megváltoztatásához kattints a Felhasználói vezérlÅ‘pult linkre (általában az oldal tetején található). Itt megváltoztathatod az összes beállításodat.', + 'HELP_FAQ_USERSETTINGS_CHANGE_SETTINGS_QUESTION' => 'Hogyan tudom megváltoztatni a beállításaimat?', + 'HELP_FAQ_USERSETTINGS_EMAIL_LOGIN_ANSWER' => 'Csak regisztrált felhasználók küldhetnek e-mailt a beépített e-mail funkció segítségével (ha az adminisztrátor bekapcsolta ezt a lehetÅ‘séget). Ez a névtelen emberek nemkívánt leveleinek elkerülése végett szükséges. ', + 'HELP_FAQ_USERSETTINGS_EMAIL_LOGIN_QUESTION' => 'Miért kell bejelentkeznem e-mail küldéséhez?', + 'HELP_FAQ_USERSETTINGS_HIDE_ONLINE_ANSWER' => 'A Felhasználói vezérlÅ‘pultban a „Fórum beállítások†menüpont alatt található a „Jelenlét elrejtése†beállítás. Ha ezt Igenre állítod, csak az adminisztrátorok, a moderátorok, illetve saját magad fogod látni, hogy jelen vagy-e.', + 'HELP_FAQ_USERSETTINGS_HIDE_ONLINE_QUESTION' => 'Hogyan tudom megakadályozni, hogy mások lássák, mikor vagyok jelen?', + 'HELP_FAQ_USERSETTINGS_LANGUAGE_ANSWER' => 'Ennek az az oka, hogy az adminisztrátor nem telepítette a megfelelÅ‘ nyelvi csomagot, vagy hogy még nem készült fordítás a kívánt nyelvre. Kérd meg az adminisztrátort, hogy telepítse a nyelvi csomagot, amennyiben viszont még nem létezik, nyugodtan készítsd el a fordítást. További információért keresd fel a phpBB Limited weboldalát (a link az oldal alján található).', + 'HELP_FAQ_USERSETTINGS_LANGUAGE_QUESTION' => 'A használni kívánt nyelv nincs a listában!', + 'HELP_FAQ_USERSETTINGS_RANK_ANSWER' => 'A rang, mely a felhasználók neve alatt jelenik meg, arra való, hogy mutassa, a felhasználó hozzászólásainak számát, illetve megkülönböztessen egyes felhasználókat, például a moderátorokat és adminisztrátorokat. Ãltalában a felhasználók nem tudják közvetlenül megváltoztatni a rangjukat, mivel azt az adminisztrátor állítja be. Kérünk, ne szólj hozzá feleslegesen a témákhoz, csak hogy növeld a hozzászólásaid számát, hiszen valószínű, hogy ezt a moderátorok fel fogják fedezni, és egyszerűen csökkenteni fogják a hozzászólásaid számát.', + 'HELP_FAQ_USERSETTINGS_RANK_QUESTION' => 'Mi az a rang, hogyan tudom megváltoztatni a rangomat?', + 'HELP_FAQ_USERSETTINGS_SERVERTIME_ANSWER' => 'Ha biztos vagy benne, hogy helyes idÅ‘zónát adtál meg, de az idÅ‘ még mindig más, akkor a szerver órája pontatlan. Kérjük, értesíts errÅ‘l egy adminisztrátort.', + 'HELP_FAQ_USERSETTINGS_SERVERTIME_QUESTION' => 'Megváltoztattam az idÅ‘zónát, de még mindig pontatlan az idÅ‘!', + 'HELP_FAQ_USERSETTINGS_TIMEZONE_ANSWER' => 'FeltehetÅ‘en az idÅ‘pontok más idÅ‘zóna szerint kerülnek megjelenítésre, mint amiben vagy. Ez esetben változtasd meg a felhasználói vezérlÅ‘pultban az idÅ‘zónád a tartózkodási helyednek megfelelÅ‘en. Kérjük, vedd figyelembe, hogy az idÅ‘zónát – mint a legtöbb más felhasználói beállítást – csak regisztrált felhasználók változtathatják meg. Tehát ha még nem regisztráltál, ez egy jó alakalom, hogy megtedd.', + 'HELP_FAQ_USERSETTINGS_TIMEZONE_QUESTION' => 'Nem pontos az idÅ‘!', +)); diff --git a/includes/shared/phpbb3/language/lang_hungarian/index.htm b/includes/shared/phpbb3/language/lang_hungarian/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_hungarian/install.php b/includes/shared/phpbb3/language/lang_hungarian/install.php new file mode 100644 index 00000000..400e1a0b --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/install.php @@ -0,0 +1,602 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +* Magyar fordítás (c) 2007-2018 „Magyar phpBB Közösség fordítókâ€, +* http://phpbb.hu +* +* $Id$ +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// Common installer pages +$lang = array_merge($lang, array( + 'INSTALL_PANEL' => 'TelepítÅ‘rendszer', + 'SELECT_LANG' => 'Nyelv kiválasztása', + + 'STAGE_INSTALL' => 'phpBB telepítése', + + // Introduction page + 'INTRODUCTION_TITLE' => 'BevezetÅ‘', + 'INTRODUCTION_BODY' => 'Ãœdvözlünk a phpBB3-ban!

    A phpBB® a legelterjedtebb nyílt forrású fórumrendszer a világon. A phpBB3 a 2000-ben kezdődött fejlesztés legfrissebb eleme, mely az elődeihez hasonlóan funkciógazdag, felhasználóbarát és teljes mértékben támogatott a phpBB Team által. A phpBB3 nagyot lép előre a phpBB2-t népszerűvé tevő területeken, számos általánosan kívánt funkciót tesz elérhetővé, melyek a korábbi verziókban nem voltak jelen. Reméljük, meghaladja várakozásaidat.

    Ez a telepítőrendszer végig fog vezetni a phpBB3 telepítésén, a phpBB3 legújabb verziójára való frissítésén, valamint más fórumrendszer phpBB3-ra való konvertálásán (beleértve a phpBB2-t). További információért, bátorítunk, hogy olvasd el az (angol nyelvű) telepítési útmutatót.

    A phpBB3 licencének megtekintéséhez, a támogatás elérésének helyéhez, ill. a phpBB Team ehhez való hozzáállásának megismeréséhez, válaszd ki a megfelelő elemet az oldalsó menüből. A folytatáshoz, kérjük, válaszd ki fentebb a megfelelő fület.', + + // Support page + 'SUPPORT_TITLE' => 'Támogatás', + 'SUPPORT_BODY' => 'A phpBB3 aktuális stabil kiadásához teljes támogatás elérhető, térítésmentesen. Ez magában foglalja az alábbiakat:

    • telepítés,
    • konfiguráció,
    • technikai kérdések,
    • a szoftverben lévÅ‘ lehetséges hibákkal kapcsolatos problémák,
    • frissítés a Release Candidate (RC) verziókról a legfrissebb stabil verzióra,
    • konvertálás phpBB 2.0.x-rÅ‘l phpBB3-ra,
    • konvertálás más fórumszoftverrÅ‘l phpBB3-ra (ezzel kapcsolatban lásd a Konvertálók fórumot)

    A phpBB3 még béta verzióját futtató felhasználóinknak tanácsoljuk, hogy a jelenlegi fórumukat cseréljék le egy friss telepítésűre a legújabb verzióból.

    Kiterjesztések, megjelenések

    A kiterjesztésekkel kapcsolatos ügyekkel, kérünk, a megfelelő, Kiterjesztések fórumba írj.
    A megjelenésekkel kapcsolatban kérünk, szintén fordulj az ezeknek megfelelő, Megjelenések fórumba.

    Ha a kérdésed egy bizonyos csomagra irányul, kérünk, közvetlenül a csomaggal foglalkozó témába küldd a hozzászólásod.

    Támogatás elérhetősége

    Támogatás részleg
    Gyorstalpaló

    Hogy mindig azonnal értesülj a phpBB frissítéseiről, kövesd a phpBB-t Twitter-en és Facebook-on.

    Saját nyelvű támogatás

    A phpBB.com angol nyelvű támogatása mellett a nemzetközi phpBB oldalak is örömmel állnak rendelkezésre. Ez a magyar nyelv esetében a Magyar phpBB Közösség oldalát jelenti. Ezeken a webhelyeken főképp az alap phpBB-hez nyújtanak támogatást, kiterjesztésekhez, megjelenésekhez többnyire csak részlegesen, nem minden esetben lehet segítséget kapni. Amennyiben az adott oldalon nem foglalkoznak az adott bővítménnyel, keresd fel a phpBB.com megfelelő fórumtémáját.

    ', + + // License + 'LICENSE_TITLE' => 'General Public License (GNU Ãltalános Nyilvános Licenc)', + + // Install page + 'INSTALL_INTRO' => 'Ãœdvözlünk a telepítÅ‘ben', + 'INSTALL_INTRO_BODY' => 'Ezen menüpont segítségével feltelepítheted a phpBB3-mat a szerveredre.

    A folytatás során szükséged lesz az adatbázis adatokra. Ha nem ismered ezeket, lépj kapcsolatba a tárhelyszolgáltatóddal, és tájékozódj róluk. Ezen adatok nélkül nem tudsz továbblépni. A következőkre lesz szükséged:

    +
      +
    • az adatbázis típusára – milyen adatbázisrendszert fogsz használni;
    • +
    • az adatbáziskiszolgáló hosztnevére vagy DSN-jére – az adatbázisszerver címe, elérhetÅ‘sége;
    • +
    • az adatbáziskiszolgáló portjára – milyen porton lehet csatlakozni az adatbázisszerverhez (az esetek nagy többségében ez nem szükséges);
    • +
    • az adatbázis nevére – az adatbázis neve a szerveren;
    • +
    • az adatbázis-felhasználónévre és az ehhez tartozó jelszóra – a kapcsolódáshoz szükséges adatok.
    • +
    + +

    Megjegyzés: ha SQLite-ot használsz, a DSN mezőben a teljes elérési utat add meg az adatbázishoz, valamint hagyd a felhasználónév és a jelszó mezőt üresen. Biztonsági szempontból fontos, hogy az adatbázis-állomány ne egy webről elérhető könyvtárban legyen tárolva.

    + +

    A phpBB3 a következő adatbázisrendszereket támogatja:

    +
      +
    • MySQL 3.23 vagy újabb (MySQLi is támogatott)
    • +
    • PostgreSQL 8.3+
    • +
    • SQLite 3.6.15+
    • +
    • MS SQL Server 2000 vagy újabb (közvetlenül ODBC-n keresztül)
    • +
    • MS SQL Server 2005 vagy újabb (natív)
    • +
    • Oracle
    • +
    + +

    A választásnál csak a szerver által támogatott adatbázisok kerülnek majd megjelenítésre.', + + 'ACP_LINK' => 'Tovább az AVP-re', + + 'INSTALL_PHPBB_INSTALLED' => 'phpBB már telepítve van.', + 'INSTALL_PHPBB_NOT_INSTALLED' => 'phpBB még nincs telepítve.', +)); + +// Requirements translation +$lang = array_merge($lang, array( + // Filesystem requirements + 'FILE_NOT_EXISTS' => 'Nem létező fájl', + 'FILE_NOT_EXISTS_EXPLAIN' => 'phpBB telepítéséhez a(z) %1$s fájlnak léteznie kell.', + 'FILE_NOT_EXISTS_EXPLAIN_OPTIONAL' => 'Javasoljuk, hogy a(z) %1$s fájlt hozd létre a legjobb felhasználói élmény biztosítása érdekében.', + 'FILE_NOT_WRITABLE' => 'Nem írható fájl', + 'FILE_NOT_WRITABLE_EXPLAIN' => 'phpBB telepítéséhez a(z) %1$s fájlnak írhatónak kell lennie.', + 'FILE_NOT_WRITABLE_EXPLAIN_OPTIONAL' => 'Javasoljuk, hogy a(z) %1$s fájlt tedd írhatóvá a legjobb felhasználói élmény biztosítása érdekében.', + + 'DIRECTORY_NOT_EXISTS' => 'Nem létező könyvtár', + 'DIRECTORY_NOT_EXISTS_EXPLAIN' => 'phpBB telepítéséhez a(z) %1$s könyvtárnak léteznie kell.', + 'DIRECTORY_NOT_EXISTS_EXPLAIN_OPTIONAL' => 'Javasoljuk, hogy a(z) %1$s könyvtárat hozd létre a legjobb felhasználói élmény biztosítása érdekében.', + 'DIRECTORY_NOT_WRITABLE' => 'Nem írható könyvtár', + 'DIRECTORY_NOT_WRITABLE_EXPLAIN' => 'phpBB telepítéséhez a(z) %1$s könyvtárnak írhatónak kell lennie.', + 'DIRECTORY_NOT_WRITABLE_EXPLAIN_OPTIONAL' => 'Javasoljuk, hogy a(z) %1$s könyvtárat tedd írhatóvá a legjobb felhasználói élmény biztosítása érdekében.', + + // Server requirements + 'PHP_VERSION_REQD' => 'PHP verzió', + 'PHP_VERSION_REQD_EXPLAIN' => 'phpBB telepítéséhez 5.4.0 vagy nagyobb PHP verzió szükséges.', + 'PHP_GETIMAGESIZE_SUPPORT' => 'getimagesize() PHP függvény', + 'PHP_GETIMAGESIZE_SUPPORT_EXPLAIN' => 'phpBB helyes működéséhez a getimagesize PHP függvény elérhetősége szükséges.', + 'PCRE_UTF_SUPPORT' => 'PCRE UTF-8 támogatás', + 'PCRE_UTF_SUPPORT_EXPLAIN' => 'phpBB nem fog működni, amennyiben a PHP telepítésedben nem érhető el a UTF-8 támogatás PCRE kiegészítőben.', + 'PHP_JSON_SUPPORT' => 'PHP JSON támogatás', + 'PHP_JSON_SUPPORT_EXPLAIN' => 'phpBB helyes működéséhez a PHP JSON kiegészítésnek telepítve kell lennie.', + 'PHP_XML_SUPPORT' => 'PHP XML/DOM támogatás', + 'PHP_XML_SUPPORT_EXPLAIN' => 'phpBB helyes működéséhez a PHP XML/DOM kiegészítésnek telepítve kell lennie.', + 'PHP_SUPPORTED_DB' => 'Támogatott Adatbázisok', + 'PHP_SUPPORTED_DB_EXPLAIN' => 'Legalább egy támogatott adatbázis típusnak támogatottnak kell lennie a telepített PHP verzióban. Ha egyik adatbázis típus sem jelenik meg támogatottként, lépj kapcsolatba a tárhely szolgáltatóddal, vagy tanulmányozd a releváns PHP dokumentációt.', + + 'RETEST_REQUIREMENTS' => 'Követelmények ellenőrzése mégegyszer', + + 'STAGE_REQUIREMENTS' => 'Követelmények ellenőrzése', +)); + +// General error messages +$lang = array_merge($lang, array( + 'INST_ERR_MISSING_DATA' => 'A blokkban található összes mezőt ki kell töltened.', + + 'TIMEOUT_DETECTED_TITLE' => 'A telepítő időtúllépéses hibát érzékelt', + 'TIMEOUT_DETECTED_MESSAGE' => 'A telepítő időtúllépéses hibát érzékelt. Megpróbálhatod újra tölteni ezt az oldalt, azonban ez korrumpálhatja az adatokat. Azt javasoljuk, hogy vagy növeld a futtatási idő beállításokat, vagy használd a parancssort.', +)); + +// Data obtaining translations +$lang = array_merge($lang, array( + 'STAGE_OBTAIN_DATA' => 'Telepítéshez szükséges adatok', + + // + // Admin data + // + 'STAGE_ADMINISTRATOR' => 'Adminisztrátor adatok', + + // Form labels + 'ADMIN_CONFIG' => 'Adminisztrátor beállítások', + 'ADMIN_PASSWORD' => 'Adminisztrátor jelszó', + 'ADMIN_PASSWORD_CONFIRM' => 'Adminisztrátor jelszó mégegyszer', + 'ADMIN_PASSWORD_EXPLAIN' => 'Az adminisztrátor jelszavának hosszának 6 és 30 karakter között kell lennie.', + 'ADMIN_USERNAME' => 'Adminisztrátor felhasználó neve', + 'ADMIN_USERNAME_EXPLAIN' => 'Az adminisztrátor felhasználó nevének hosszának 3 és 20 karakter között kell lennie.', + + // Errors + 'INST_ERR_DB' => 'Adatbázis telepítési hiba', // ? Database installation error + 'INST_ERR_EMAIL_INVALID' => 'A megadott e-mail cím hibás.', + 'INST_ERR_PASSWORD_MISMATCH' => 'A megadott jelszavak nem azonosoak.', + 'INST_ERR_PASSWORD_TOO_LONG' => 'A megadott jelszó túl hosszú. A jelszó legfeljebb 30 karakter hosszú lehet.', + 'INST_ERR_PASSWORD_TOO_SHORT' => 'A megadott jelszó túl rövid. A jelszónak legalább 6 karakter hosszúnak kell lennie.', + 'INST_ERR_USER_TOO_LONG' => 'A megadott felhasználói név túl hosszú. A felhasználói név legfeljebb 20 karakter hosszú lehet.', + 'INST_ERR_USER_TOO_SHORT' => 'A megadott felhasználói név túl rövid. A felhasználói névnek legalább 3 karakter hosszúnak kell lennie.', + + // + // Board data + // + // Form labels + 'BOARD_CONFIG' => 'Fórum beállítások', + 'DEFAULT_LANGUAGE' => 'Alapértelmezett nyelv', + 'BOARD_NAME' => 'A fórum címe', + 'BOARD_DESCRIPTION' => 'A fórum rövid leírása', + + // + // Database data + // + 'STAGE_DATABASE' => 'Adatbázis beállítások', + + // Form labels + 'DB_CONFIG' => 'Adatbázis beállítások', + 'DBMS' => 'Adatbázis típusa', + 'DB_HOST' => 'Adatbázisszerver hosztneve vagy DSN', + 'DB_HOST_EXPLAIN' => 'A DSN az angol Data Source Name rövidítése, csak ODBC telepítéskor érdekes. PostgreSQL esetében a lokális szerverhez való kapcsolódáskor TCP kapcsolat esetén használj localhost-ot, míg UNIX domain socket esetén 127.0.0.1-et. SQLite esetében az adatbázis fájl teljes elérési útját add meg.', + 'DB_PORT' => 'Adatbázis szerver port', + 'DB_PORT_EXPLAIN' => 'Hagyd üresen, kívéve ha az adatbázis szerver nem az alapértelmezett portot használja.', + 'DB_PASSWORD' => 'Adatbázis jelszó', + 'DB_NAME' => 'Adatbázis név', + 'DB_USERNAME' => 'Adatbázis felhasználó név', + 'DATABASE_VERSION' => 'Adatbázis verzió', + 'TABLE_PREFIX' => 'Adatbázis táblák előtagja', + 'TABLE_PREFIX_EXPLAIN' => 'Az adatbázis tábla előtagnak egy betűvel kell kezdődnie, és csak betűket, számokat és alulvonást tartalmazhat.', + + // Database options + 'DB_OPTION_MSSQL_ODBC' => 'MSSQL Szerver 2000+ ODBC-n keresztül', + 'DB_OPTION_MSSQLNATIVE' => 'MSSQL Szerver 2005+ [ natív ]', + 'DB_OPTION_MYSQL' => 'MySQL', + 'DB_OPTION_MYSQLI' => 'MySQL MySQLi kiterjesztéssel', + 'DB_OPTION_ORACLE' => 'Oracle', + 'DB_OPTION_POSTGRES' => 'PostgreSQL', + 'DB_OPTION_SQLITE3' => 'SQLite 3', + + // Errors + 'INST_ERR_NO_DB' => 'Nem sikerült a megadott adatbázis típushoz tartozó PHP kiegészítő betöltése.', + 'INST_ERR_DB_INVALID_PREFIX' => 'A megadott adatbázis tábla előtag helytelen. Az előtagnak egy betűvel kell kezdődnie, és csak betűket, számokat és alulvonásokat tartalmazhat.', + 'INST_ERR_PREFIX_TOO_LONG' => 'A megadott adatbázis tábla előtag túl hosszú, legfeljebb %d karakter hosszú lehet.', + 'INST_ERR_DB_NO_NAME' => 'Nem adtad meg az adatbázis nevét.', + 'INST_ERR_DB_FORUM_PATH' => 'A megadott adatbázis fájl a fórum fájlok között található. Biztonsági szempontok miatt javasoljuk, hogy tartsd az adatbázis fájlt egy olyan könyvtárban, ami nem elérhető az internetről.', + 'INST_ERR_DB_CONNECT' => 'Nem sikerült csatlakozni az adatbázishoz. A hiba üzenetet alább láthatod.', + 'INST_ERR_DB_NO_WRITABLE' => 'Az adatbázisnak és az azt tartalmazó könyvtárnak is írhatónak kell lennie.', + 'INST_ERR_DB_NO_ERROR' => 'A hibaüzenet nem elérhető.', + 'INST_ERR_PREFIX' => 'A megadott adatbázis előtagú táblák már léteznek, válassz egy másikat.', + 'INST_ERR_DB_NO_MYSQLI' => 'A telepített MySQL adatbázis verziója nem kompatibilis a választott “MySQL MySQLi kiterjesztéssel†opcióval. Kérünk, használd a “MySQL†opciót.', + 'INST_ERR_DB_NO_SQLITE3' => 'A telepített SQLite kiegészítő túl régi, frissíts legalább 3.6.15-re.', + 'INST_ERR_DB_NO_ORACLE' => 'A telepített Oracle verzió megköveteli, hogy NLS_CHARACTERSET beállítást UTF8-ra állítsd. Vagy frissítsd az adatbázis szervert 9.2+ verzióra, vagy alkalmazd az előbbi beállítást.', + 'INST_ERR_DB_NO_POSTGRES' => 'A megadott adatbázis nem UNICODE vagy UTF8 karakterkódolással lett létrehozva. Válassz egy olyan adatbázist, ami UNICODE vagy UTF8 karakterkódolást használ.', + 'INST_SCHEMA_FILE_NOT_WRITABLE' => 'Az adatbázis schema fájl nem írható.', + + // + // Email data + // + 'EMAIL_CONFIG' => 'E-mail beállítások', + + // Package info + 'PACKAGE_VERSION' => 'Telepített csomag verziója', + 'UPDATE_INCOMPLETE' => 'A phpBB telepítésed nem lett megfelelően frissítve.', + 'UPDATE_INCOMPLETE_MORE' => 'Kérjük, olvasd el a lent található információkat a hiba javításához.', + 'UPDATE_INCOMPLETE_EXPLAIN' => '

    Hiányos frissítés

    + +

    Észleltük, hogy a phpBB legutóbbi frissítése nem fejeződött be. Nyisd meg az adatbázis frissítőt, bizonyosodj meg róla, hogy Az adatbázis frissítése van kiválasztva és kattints az Elküld gombra. Ne felejtsd el törölni az "install" könyvtárat az adatbázis frissítésének befejezése után.

    ', + + // + // Server data + // + // Form labels + 'UPGRADE_INSTRUCTIONS' => 'Egy új %1$s verzió érhetÅ‘ el. Kérjük, olvasd el az angol nyelvű kiadási közleményt, hogy megismerd az újdonságokat és a frissítés menetét.', + 'SERVER_CONFIG' => 'Szerver beállítások', + 'SCRIPT_PATH' => 'Elérési útvonal', + 'SCRIPT_PATH_EXPLAIN' => 'A phpBB domain névhez viszonyított relatív elérési útja, pl. /phpBB3.', +)); + +// Default database schema entries... +$lang = array_merge($lang, array( + 'CONFIG_BOARD_EMAIL_SIG' => 'Köszönettel: A csapat', + 'CONFIG_SITE_DESC' => 'Rövid leírás a fórumodról.', + 'CONFIG_SITENAME' => 'domained.hu', + + 'DEFAULT_INSTALL_POST' => 'Ez egy példa hozzászólás a frissen telepített phpBB3-madban. Úgy néz ki, minden működik. Ha gondolod, törölheted ezt a hozzászólást, és folytathatod a fórumod felállítását. A telepítés alatt az elsÅ‘ kategóriádhoz és az elsÅ‘ fórumodhoz hozzárendelésre került egy jól használható jogosultságkészlet az elÅ‘re meghatározott csoportok számára (adminisztrátorok, robotok, globális moderátorok, vendégek, regisztrált felhasználók és regisztrált COPPA felhasználók). Ha úgy döntesz, törlöd az elsÅ‘ kategóriád és az elsÅ‘ fórumod, az új fórumok, ill. kategóriák felvételénél ne felejts el jogosultságokat hozzárendelni a fentebb említett csoportoknak. Ajánlott ezt a kezdeti kategóriát és fórumot átnevezni, majd késÅ‘bb az új kategóriák, fórumok létrehozásánál a jogosultságokat ezekrÅ‘l másolni át. Sok sikert a fórumodhoz!', + + 'FORUMS_FIRST_CATEGORY' => 'Az elsÅ‘ kategóriád', + 'FORUMS_TEST_FORUM_DESC' => 'Az elsÅ‘ fórumod leírása.', + 'FORUMS_TEST_FORUM_TITLE' => 'Az elsÅ‘ fórumod', + + 'RANKS_SITE_ADMIN_TITLE' => 'Adminisztátor', + 'REPORT_WAREZ' => 'A hozzászólás linket tartalmaz illegális vagy kalóz szoftverre.', + 'REPORT_SPAM' => 'A hozzászólás egyetlen célja egy weboldal vagy egy termék reklámozása.', + 'REPORT_OFF_TOPIC' => 'A hozzászólás nem kapcsolódik a témához.', + 'REPORT_OTHER' => 'A hozzászólás nem tartozik semelyik másik kategóriába, kérjük, töltsd ki a további információ mezÅ‘t.', + + 'SMILIES_ARROW' => 'nyíl', + 'SMILIES_CONFUSED' => 'összezavarodott', + 'SMILIES_COOL' => 'laza', + 'SMILIES_CRYING' => 'sír vagy nagyon szomorú', + 'SMILIES_EMARRASSED' => 'zavarban', + 'SMILIES_EVIL' => 'gonosz vagy nagyon mérges', + 'SMILIES_EXCLAMATION' => 'felkiáltás', + 'SMILIES_GEEK' => 'kocka', + 'SMILIES_IDEA' => 'ötlet', + 'SMILIES_LAUGHING' => 'nevetÅ‘', + 'SMILIES_MAD' => 'dühös', + 'SMILIES_MR_GREEN' => 'Zöld úr', + 'SMILIES_NEUTRAL' => 'semleges', + 'SMILIES_QUESTION' => 'kérdés', + 'SMILIES_RAZZ' => 'vicces', + 'SMILIES_ROLLING_EYES' => 'forgó szemek', + 'SMILIES_SAD' => 'szomorú', + 'SMILIES_SHOCKED' => 'sokkolt', + 'SMILIES_SMILE' => 'mosoly', + 'SMILIES_SURPRISED' => 'meglepett', + 'SMILIES_TWISTED_EVIL' => 'nagyon Å‘rült', + 'SMILIES_UBER_GEEK' => 'nagyon kocka', + 'SMILIES_VERY_HAPPY' => 'nagyon boldog', + 'SMILIES_WINK' => 'kacsint', + + 'TOPICS_TOPIC_TITLE' => 'Ãœdvözlünk a phpBB3-ban!', +)); + +// Common navigation items' translation +$lang = array_merge($lang, array( + 'MENU_OVERVIEW' => 'Ãttekintés', + 'MENU_INTRO' => 'BevezetÅ‘', + 'MENU_LICENSE' => 'Licenc', + 'MENU_SUPPORT' => 'Támogatás', +)); + +// Task names +$lang = array_merge($lang, array( + // Install filesystem + 'TASK_CREATE_CONFIG_FILE' => 'Konfigurációs fájl készítése', + + // Install database + 'TASK_ADD_CONFIG_SETTINGS' => 'Beállítások hozzáadása', + 'TASK_ADD_DEFAULT_DATA' => 'Beállítások adatbázisba írása', + 'TASK_CREATE_DATABASE_SCHEMA_FILE' => 'Adatbázis schema készítése', + 'TASK_SETUP_DATABASE' => 'Adatbázis elÅ‘készítése', + 'TASK_CREATE_TABLES' => 'Adatbázis táblák készítése', + + // Install data + 'TASK_ADD_BOTS' => 'Robotok regisztrálása', + 'TASK_ADD_LANGUAGES' => 'ElérhetÅ‘ nyelvek telepítése', + 'TASK_ADD_MODULES' => 'Modulok telepítése', + 'TASK_CREATE_SEARCH_INDEX' => 'KeresÅ‘ index létrehozása', + + // Install finish tasks + 'TASK_INSTALL_EXTENSIONS' => 'Becsomagolt kiterjesztések telepítése', //? "Installing packaged extensions" + 'TASK_NOTIFY_USER' => 'ÉrtesítÅ‘ e-mail kiküldése', + 'TASK_POPULATE_MIGRATIONS' => 'Adatbázis migrációk regisztrálása', + + // Installer general progress messages + 'INSTALLER_FINISHED' => 'A telepítés sikeresen befejezÅ‘dött', +)); + +// Installer's general messages +$lang = array_merge($lang, array( + 'MODULE_NOT_FOUND' => 'Modul nem található', + 'MODULE_NOT_FOUND_DESCRIPTION' => 'A modul nem található, mert a %s nevű folyamat nem létezik.', + + 'TASK_NOT_FOUND' => 'Feladat nem található', + 'TASK_NOT_FOUND_DESCRIPTION' => 'A feladat nem található, mert a %s nevű folyamat nem létezik.', + + 'SKIP_MODULE' => '“%s†modul kihagyása', + 'SKIP_TASK' => '“%s†feladat kihagyása', + + 'TASK_SERVICE_INSTALLER_MISSING' => 'Minden telepítÅ‘ folyamat nevének “installerâ€-el kell kezdÅ‘dnie', + 'TASK_CLASS_NOT_FOUND' => 'A telepítÅ‘ feladat folyamatának neve hibás. Jelenleg a folyamat neve “%1$sâ€, míg az elvárt névtér (namespace) “%2$s†lenne. A hibáról több információt a task_interface dokumentációjában találhatsz.', + + 'INSTALLER_CONFIG_NOT_WRITABLE' => 'A telepítÅ‘ konfigurációs fájlja nem írható.', +)); + +// CLI messages +$lang = array_merge($lang, array( + 'CLI_INSTALL_BOARD' => 'phpBB telepítése', + 'CLI_UPDATE_BOARD' => 'phpBB frissítése', + 'CLI_INSTALL_SHOW_CONFIG' => 'A telepítÅ‘ által használt konfigurációs fájl mutatása', + 'CLI_INSTALL_VALIDATE_CONFIG' => 'A konfigurációs fájl ellenÅ‘rzése', + 'CLI_CONFIG_FILE' => 'A használni kívánt konfigurációs fájl', + 'MISSING_FILE' => 'A(z) %1$s fájl nem található', + 'MISSING_DATA' => 'A telepítési konfigurációs fájlból valamely beállítás hiányzik, vagy nem definiált opciót tartalmaz.', + 'INVALID_YAML_FILE' => 'A YAML fájl (%1$s) helytelen formátumú', + 'CONFIGURATION_VALID' => 'A konfigurációs fájlban nincsenek hibák', +)); + +// Common updater messages +$lang = array_merge($lang, array( + 'UPDATE_INSTALLATION' => 'phpBB frissítése', + 'UPDATE_INSTALLATION_EXPLAIN' => 'Itt frissítheted a phpBB-d a legújabb verzióra.
    A frissítés folyamata során minden állomány ellenőrzésre kerül. A tényleges frissítés előtt minden különbséget átnézhetsz.

    Maga az állományok frissítése két módon végezhető el.

    Kézi frissítés

    Ezen frissítési mód használatakor csak a saját megváltozott állományaidat töltöd le, így meggyőződhetsz róla, hogy nem vesztesz el semmilyen módosítást, amit csinálhattál. Miután letöltötted ezt a csomagot, a benne lévő állományokat fel kell töltened a phpBB-d gyökérkönyvtárába, a megfelelő helyükre. Ezután mégegyszer összevetheted az állományokat, hogy leellenőrizd, a megfelelő helyre töltötted fel őket.

    Automatikus frissítés FTP-vel

    Ez a frissítési mód hasonló az előbbihez, azonban ennél nem kell saját magadnak letöltened, majd feltöltened a megváltozott állományokat – ezt megteszi a phpBB. Ezen mód használatához ismerned kell az FTP-belépéshez szükséges dolgokat, mivel egy űrlapon meg kell adnod ezeket. Miután ezt befejezted, át leszel irányítva az állományok összevetéséhez, hogy meggyőződhess, minden sikeresen frissítésre került.

    ', + 'UPDATE_INSTRUCTIONS' => ' + +

    Verziómegjelenési közlemény

    + +

    A frissítés folytatása előtt, kérjük, olvasd el a legfrissebb verziót bejelentő közleményt, mivel hasznos információkat tartalmazhat. Mindenképp szerepel benne a változások listája és közvetlen link az új verzió letöltésére.

    + +
    + +

    Frissítés módja a telepítő csomag használatával

    + +

    A javasolt frissítési mód a teljes telepítő csomag használata. Azonban, ha a phpBB alap fájljai is módosításra kerültek, úgy a módosítások megtartása érdekében az automatikus frissítő csomag használata javasolt. A telepített phpBB az INSTALL.html-ben felsorolt egyéb módszerekkel is frissíthető. A phpBB3 telepítő csomaggal történő frissítése a következő lépésekből áll:

    + +
      +
    1. Készíts biztonsági mentést a fórum fájljairól és adatbázisáról.
    2. +
    3. Menj a phpBB.com letöltések oldalára, és töltsd le a legújabb "Full Package" csomagot.
    4. +
    5. Csomagold ki a telepítő csomagot.
    6. +
    7. Távolítsd el (töröld) a config.php fájlt, és az /images, /store és /files könyvtárakat a kicsomagolt telepítőből (ne az oldaladról).
    8. +
    9. Menj az Adminisztrátori vezérlőpult, Fórum beállítások pontjába és ellenőrizd, hogy a prosilver az alapértelmezett megjelenés. Ha más lenne, állítsd át prosilver megjelenésre.
    10. +
    11. Töröld a /vendor és /cache könyvtárakat a szerveren a fórum gyökérkönyvtárából.
    12. +
    13. FTP-n vagy SSH-n keresztül töltsd fel a telepítő csomag megmaradt fájljait és könyvtárait (a phpBB3 könyvtár tartalmát) a szerveren a fórum gyökérkönyvtárába. (Megjegyzés: Figyelj rá, hogy ne töröld a fórumon használt kiterjesztéseket az /ext könyvtár feltöltésekor.)
    14. +
    15. Indítsd el a frissítési folyamatot az install könyvtár böngészőből való megnyitásával.
    16. +
    17. Válaszd ki a használandó nyelvet a jobb felső sarokban.
    18. +
    19. Kövesd a Frissítés fül lépéseit az adatbázis frissítésére.
    20. +
    21. FTP-n vagy SSH-n keresztül töröld az /install könyvtárat a fórumod gyökérkönyvtárából.

    22. +
    + +

    Ezzel lett egy új, naprakész fórumod, ami tartalmazza az összes felhasználót és hozzászólást. További feladatok:

    +
      +
    • Használatban lévÅ‘ nyelvi csomagok frissítése
    • +
    • Használatban lévÅ‘ megjelenések frissítése

    • +
    + +

    Frissítés módja az automatikus frissítő csomag használatával

    + +

    Az itt részletezett javasolt frissítési mód az automatikus frissítő csomag használatát feltételezi. Ez csak abban az esetben javasolt, ha a phpBB alap fájljai is szerkesztésre kerültek. A phpBB-det az INSTALL.html-ben leírt módokon is frissítheted. A phpBB3 automatikusan történő frissítése a következő lépésekből áll:

    + +
      +
    • Menj a phpBB.com letöltések oldalára, és töltsd le a megfelelÅ‘ automatikus frissítÅ‘ csomagot.

    • +
    • Csomagold ki a csomagot.

    • +
    • A kicsomagolt csomag install és vendor könyvtárait töltsd fel a phpBB-d gyökérkönyvtárába (ahol a config.php található).

    • +
    + +

    Miután feltöltötted, a normál felhasználók nem tudják majd elérni a fórumot az install könyvtár létezése miatt.

    + Most kezdd el a frissítést az install könyvtárba lépéssel.
    +
    + Ez után a rendszer végigvezet a frissítés folyamatán. A frissítés végeztével meg fog jelenni egy értesítő üzenet. +

    + ', +)); + +// Updater forms +$lang = array_merge($lang, array( + // Updater types + 'UPDATE_TYPE' => 'Frissítés típuse', + + 'UPDATE_TYPE_ALL' => 'Fájlok és adatbázis frissítése', + 'UPDATE_TYPE_DB_ONLY' => 'Csak az adatbázis frissítése', + + // File updater methods + 'UPDATE_FILE_METHOD_TITLE' => 'Fájl frissítési módszer', + + 'UPDATE_FILE_METHOD' => 'Fájlok frissítése', + 'UPDATE_FILE_METHOD_DOWNLOAD' => 'A módosított fájlok letöltése archívumként', + 'UPDATE_FILE_METHOD_FTP' => 'Fájlok frissítése automatikusan FTP-n keresztül', + 'UPDATE_FILE_METHOD_FILESYSTEM' => 'Fájlok automatikus frissítése fájlrendszeri hozzáférésen keresztül', + + // File updater archives + 'SELECT_DOWNLOAD_FORMAT' => 'LetöltendÅ‘ csomag formátumának kiválasztása', + + // FTP settings + 'FTP_SETTINGS' => 'FTP beállítások', +)); + +// Requirements messages +$lang = array_merge($lang, array( + 'UPDATE_FILES_NOT_FOUND' => 'Nem sikerült frissítÅ‘ csomagot találni, tölts fel egyet, vagy mozgasd az általad feltöltött csomagot a megfelelÅ‘ helyre.', + + 'NO_UPDATE_FILES_UP_TO_DATE' => 'A phpBB-d a legújabb verziójú. Nincs szükség a frissítÅ‘ futtatására. Ha le szeretnéd ellenÅ‘rizni a phpBB-d állományait, gyÅ‘zÅ‘dj meg róla, hogy feltöltötted a megfelelÅ‘ frissítÅ‘ állományokat.', + 'OLD_UPDATE_FILES' => 'A frissítÅ‘ állományok elavultak. A phpBB %1$s verzióról %2$s verzióra való frissítésre szolgálnak, de a phpBB legújabb verziója a %3$s.', + 'INCOMPATIBLE_UPDATE_FILES' => 'A talált frissítÅ‘ állományok nem megfelelÅ‘ek a phpBB-d verziójának. A jelenlegi phpBB-d verziója %1$s, a frissítÅ‘ állományok pedig %2$s verzióról %3$s verzióra való frissítésre szolgálnak.', +)); + +// Update files +$lang = array_merge($lang, array( + 'STAGE_UPDATE_FILES' => 'Fájlok frissítése', + + // Check files + 'UPDATE_CHECK_FILES' => 'FrissítendÅ‘ fájlok keresése', + + // Update file differ + 'FILE_DIFFER_ERROR_FILE_CANNOT_BE_READ' => 'Nem sikerült megnyitni a(z) %s fájlt a változtatások ellenÅ‘rzéséhez.', + + 'UPDATE_FILE_DIFF' => 'Módosított fájlok keresése', + 'ALL_FILES_DIFFED' => 'Minden módosított fájlban megkerestük a változtatásokat.', + + // File status + 'UPDATE_CONTINUE_FILE_UPDATE' => 'Fájlok frissítése', + + 'DOWNLOAD' => 'Letöltés', + 'DOWNLOAD_CONFLICTS' => 'Csak az ütközéseket tartalmazó fájlok letöltése', + 'DOWNLOAD_CONFLICTS_EXPLAIN' => 'Az ütközések megvizsgálásához keress a <<<-re', + 'DOWNLOAD_UPDATE_METHOD' => 'Megváltozott állományokat tartalmazó csomag letöltése', + 'DOWNLOAD_UPDATE_METHOD_EXPLAIN' => 'A letöltés befejezése után csomagold ki a tömörített fájlt, majd a kibontott állományban navigálj a phpBB telepítésed gyökérkönyvtárának megfelelÅ‘ helyre. Ez után töltsd fel a megfelelÅ‘ fájlokat a megadott helyükre. Miután minden fájl feltöltÅ‘dött, folytathatod a frissítést.', + + 'FILE_ALREADY_UP_TO_DATE' => 'Az állomány már a legújabb verziójú.', + 'FILE_DIFF_NOT_ALLOWED' => 'Ezen az állományon nem végezhetÅ‘ diff.', + 'FILE_USED' => 'Információ a következÅ‘ állományból', // Single file + 'FILES_CONFLICT' => 'Ãœtközéseket tartalmazó állományok', + 'FILES_CONFLICT_EXPLAIN' => 'A következÅ‘ állományok korábban módosítva lettek, és nem teljesen egyeznek meg a régiverzió-beli állománnyal. Az egyesítésük során ütközés lép fel. Kérünk, járj utána ezeknek az ütközéseknek, és próbáld meg megoldani Å‘ket kézzel, vagy folytasd a frissítést a kívánt egyesítési mód kiválasztásával. Ha saját magad oldod meg az ütközések problémáját, miután megváltoztattad az állományokat, vesd Å‘ket újra össze. Emellett választhatsz különbözÅ‘ egyesítési módok közül is. Az elsÅ‘ használata eredményeképp az új állományban a régi állomány ütközÅ‘ sorai nem lesznek megtalálhatók, míg a második használatakor az új állomány változásai vesznek el.', + 'FILES_DELETED' => 'Törölt állományok', + 'FILES_DELETED_EXPLAIN' => 'A következÅ‘ állományok nem léteznek az új verzióban. Ezeket az állományokat törölni kell a a fórum állományai közül.', + 'FILES_MODIFIED' => 'Módosított állományok', + 'FILES_MODIFIED_EXPLAIN' => 'A következÅ‘ állományok korábban módosítva lettek, és nem teljesen egyeznek meg a régiverzió-beli állománnyal. A frissített állomány a saját módosításaid és az új állomány egyesítése lesz.', + 'FILES_NEW' => 'Új állományok', + 'FILES_NEW_EXPLAIN' => 'A következÅ‘ állományok jelenleg nincsenek ott a phpBB-dben. Ezek az állományok hozzáadásra kerülnek a fórumodhoz.', + 'FILES_NEW_CONFLICT' => 'Új ütközÅ‘ állományok', + 'FILES_NEW_CONFLICT_EXPLAIN' => 'A következÅ‘ állományok a legújabb verzióban jelentek meg, de megállapításra került, hogy ezen új állomány helyén neked már van egy ilyen nevű állományod. Ezek az állományok felülírásra kerülnek az új állományokkal.', + 'FILES_NOT_MODIFIED' => 'Nem módosított állományok', + 'FILES_NOT_MODIFIED_EXPLAIN' => 'A következÅ‘ állományok nem lettek módosítva, megegyeznek a phpBB azon verziójú állományaival, melyrÅ‘l frissíteni szeretnél.', + 'FILES_UP_TO_DATE' => 'Már frissített fájlok', + 'FILES_UP_TO_DATE_EXPLAIN' => 'A következÅ‘ állományok már a legújabb verziójúak, ezért nem kell frissíteni Å‘ket.', + 'FILES_VERSION' => 'Ãllományok verziója', + 'TOGGLE_DISPLAY' => 'Ãllományok listájának megjelenítése/elrejtése', + + // File updater + 'UPDATE_UPDATING_FILES' => 'Ãllományok frissítése', + + 'UPDATE_FILE_UPDATER_HAS_FAILED' => 'A(z) “%1$s“ nevű állomány frissítÅ‘ működése közben hibát észlelt. A telepítÅ‘ a(z) “%2$s“ állomány frissítÅ‘t fogja használni a frissítéshez.', + 'UPDATE_FILE_UPDATERS_HAVE_FAILED' => 'Az állomány frissítÅ‘ működése közben hibát észlelt. További állomány frissítÅ‘k nem állnak rendelkezésre.', + + 'UPDATE_CONTINUE_UPDATE_PROCESS' => 'Frissítés folytatása', + 'UPDATE_RECHECK_UPDATE_FILES' => 'Ãllományok ismételt ellenörzése', +)); + +// Update database +$lang = array_merge($lang, array( + 'STAGE_UPDATE_DATABASE' => 'Adatbázis frissítése', + + 'TASK_UPDATE_EXTENSIONS' => 'Kiterjesztések frissítése', + + 'INLINE_UPDATE_SUCCESSFUL' => 'Az adatbázis frissítése sikeresen befejezÅ‘dött.', +)); + +// Converter +$lang = array_merge($lang, array( + // Common converter messages + 'CONVERT_NOT_EXIST' => 'A megadott konvertáló nem létezik.', + 'DEV_NO_TEST_FILE' => 'Nem került megadásra a test_file változó értéke a konvertálóban. Ha csak egy használója vagy ennek a konvertálónak, nem szabadna ezt a hibaüzenetet látnod – kérjük, értesítsd a konvertáló készítÅ‘jét. Ha a konvertáló készítÅ‘je vagy, meg kell adnod egy az eredeti fórumban lévÅ‘ állomány helyét, hogy le lehessen ellenÅ‘rizni az eredeti fórum elérési útját.', + 'COULD_NOT_FIND_PATH' => 'Nem sikerült megtalálni az elérési utat az eredeti fórumodhoz. Kérjük, ellenÅ‘rizd a beállításokat, és próbálkozz újra.
    » Megadott elérési út: %s', + 'CONFIG_PHPBB_EMPTY' => 'A phpBB3 „%s†konfigurációs változója üres.', + + 'MAKE_FOLDER_WRITABLE' => 'Kérünk, győződj meg róla, hogy a következő könyvtár létezik, és írható a webszerver által, majd próbálkozz újra:
    »%s', + 'MAKE_FOLDERS_WRITABLE' => 'Kérünk, győződj meg róla, hogy a következő könyvtárak léteznek, és írhatóak a webszerver által, majd próbálkozz újra:
    »%s', + + 'INSTALL_TEST' => 'Tesztelés újra', + + 'NO_TABLES_FOUND' => 'Nem találhatók adatbázistáblák.', + 'TABLES_MISSING' => 'Az alábbi táblák nem találhatók:
    » %s.', + 'CHECK_TABLE_PREFIX' => 'Kérjük, ellenőrizd az adatbázis-előtagot, és próbálkozz újra.', + + // Conversion in progress + 'CONTINUE_CONVERT' => 'Konvertálás folytatása', + 'CONTINUE_CONVERT_BODY' => 'A phpBB talált egy korábbi, nem befejezett konverziót. Választhatsz, hogy ezt folytatod, vagy egy újat kezdesz.', + 'CONVERT_NEW_CONVERSION' => 'Új konvertálás', + 'CONTINUE_OLD_CONVERSION' => 'Korábban megkezdett konverzió folytatása', + + // Start conversion + 'SUB_INTRO' => 'Bevezető', + 'CONVERT_INTRO' => 'Üdvözlünk a phpBB Egytesített Konvertáló Keretrendszerben!', + 'CONVERT_INTRO_BODY' => 'Itt adatokat importálhatsz másik (telepített) fórumrendszerekből. Az alábbi lista tartalmazza az elérhető konvertálókat. Ha a listában nem szerepel a kívánt fórumszoftverről konvertáló modul, látogass el a phpBB weboldalára, ahonnan lehet, hogy letöltheted.', + 'AVAILABLE_CONVERTORS' => 'Elérhető konvertálók', + 'NO_CONVERTORS' => 'Nincs elérhető konvertáló.', + 'CONVERT_OPTIONS' => 'Beállítások', + 'SOFTWARE' => 'Fórumszoftrver', + 'VERSION' => 'Verzió', + 'CONVERT' => 'Konvertálás', + + // Settings + 'STAGE_SETTINGS' => 'Beállítások', + 'TABLE_PREFIX_SAME' => 'Annak a szoftvernek a tábla előtagját add meg, amelyről konvertálsz.
    » A megadott tábla előtag %s volt.', + 'DEFAULT_PREFIX_IS' => 'A konvertáló nem talált táblákat a megadott előtaggal. Kérünk, győződj meg róla, hogy helyesen adtad meg az eredeti fórum adatait. A %1$s alapértelmezett tábla előtagja %2$s.', + 'SPECIFY_OPTIONS' => 'Konvertálás beállításainak megadása', + 'FORUM_PATH' => 'Fórum elérési útja', + 'FORUM_PATH_EXPLAIN' => 'Az eredeti fórum relatív elérési útja a jelenlegi phpBB3-mad gyökérkönyvtárához viszonyítva.', + 'REFRESH_PAGE' => 'Automatikus továbblépés', + 'REFRESH_PAGE_EXPLAIN' => 'Ha igenre állítod, a konvertáló egy lépés befejezése után mindig újratölti az oldalt, ezzel továbblépve a következő lépésre. Ha most konvertálsz az első alkalommal, és csak tesztelni szeretnél, illetve előre tájékozódni az esetlegesen felmerülő hibákról, ajánljuk, hogy állítsd ezt a beállítást nemre.', + + // Conversion + 'STAGE_IN_PROGRESS' => 'Konvertálás…', + + 'AUTHOR_NOTES' => 'Készítő megjegyzései
    » %s', + 'STARTING_CONVERT' => 'Konvertálás elkezdése', + 'CONFIG_CONVERT' => 'Konfiguráció konvertálása', + 'DONE' => 'Kész', + 'PREPROCESS_STEP' => 'Függvények/parancsok elÅ‘feldolgozásának végrehajtása', + 'FILLING_TABLE' => '%s tábla feltöltése', + 'FILLING_TABLES' => 'Táblák feltöltése', + 'DB_ERR_INSERT' => 'Hiba INSERT parancs végrehajtása közben.', + 'DB_ERR_LAST' => 'Hiba a query_last végrehajtása közben.', + 'DB_ERR_QUERY_FIRST' => 'Hiba a query_first végrehajtása közben.', + 'DB_ERR_QUERY_FIRST_TABLE' => 'Hiba a query_first végrehajtása közben, %s („%sâ€).', + 'DB_ERR_SELECT' => 'Hiba SELECT lekérdezés végrehajtása közben.', + 'STEP_PERCENT_COMPLETED' => 'Lépés: %d / %d', + 'FINAL_STEP' => 'VégsÅ‘ lépés végrehajtása', + 'SYNC_FORUMS' => 'Fórumok szinkronizációjának megkezdése', + 'SYNC_POST_COUNT' => 'Hozzászólásszámok szinkronizálása', + 'SYNC_POST_COUNT_ID' => 'Hozzászólásszámok szinkronizálása; entry %1$s – %2$s.', + 'SYNC_TOPICS' => 'Témák szinkronizációjának megkezdése', + 'SYNC_TOPIC_ID' => 'Témák szinkronizálása; topic_id: %1$s – %2$s.', + 'PROCESS_LAST' => 'VégsÅ‘ műveletek végrehajtása', + 'UPDATE_TOPICS_POSTED' => 'Téma információk generálása', + 'UPDATE_TOPICS_POSTED_ERR' => 'Hiba lépett fel a téma információk generálása közben. A konvertálás befejezése után az adminisztrátori vezérlÅ‘pultban újra megpróbálhatod ezt a lépést.', + 'CONTINUE_LAST' => 'VégsÅ‘ műveletek folytatása', + 'CLEAN_VERIFY' => 'Végleges struktúra rendbe tétele és ellenÅ‘rzése', + 'NOT_UNDERSTAND' => 'Nem sikerült értelmezni: %s #%d, %s tábla („%sâ€).', + 'NAMING_CONFLICT' => 'Nevezési ütközés: a %s és a %s is fedÅ‘név.

    %s', + + // Finish conversion + 'CONVERT_COMPLETE' => 'Konvertálás befejezÅ‘dött', + 'CONVERT_COMPLETE_EXPLAIN' => 'Sikeresen konvertáltad a fórumod phpBB 3.2-re. Most bejelentkezhetsz és használhatod a fórumod. Kérünk, ellenÅ‘rizd, hogy minden beállítás helyesen megtörtént, mielÅ‘tt aktiválnád a fórumod az install könyvtár törlésével. Ha segítségre lenne szükséged, olvasd el az online dokumentációt vagy tedd fel kérdésed a fórumban.', + + 'CONV_ERROR_ATTACH_FTP_DIR' => 'A régi fórumon engedélyezve volt az FTP-n keresztüli csatolmányfeltöltés. Kérjük, kapcsold ki az FTP feltöltést, bizonyosodj meg róla, hogy helyes feltöltési könyvtár került megadásra, majd másold át az összes csatolmány állományt az új, webrÅ‘l is elérhetÅ‘ könyvtárba. Ha végeztél ezzel, indítsd újra a konvertálót.', + 'CONV_ERROR_CONFIG_EMPTY' => 'Nincs elérhetÅ‘ konfigurációs információ a konvertáláshoz.', + 'CONV_ERROR_FORUM_ACCESS' => 'Nem sikerült lekérdezni a fórum hozzáférési jogosultságokat.', + 'CONV_ERROR_GET_CATEGORIES' => 'Nem sikerült lekérdezni a kategóriákat.', + 'CONV_ERROR_GET_CONFIG' => 'Nem sikerült lekérdezni a fórum konfigurációját.', + 'CONV_ERROR_COULD_NOT_READ' => 'Nem sikerült hozzáférni/olvasni: „%sâ€.', + 'CONV_ERROR_GROUP_ACCESS' => 'Nem sikerült lekérdezni a csoport jogosultságokat.', + 'CONV_ERROR_INCONSISTENT_GROUPS' => 'Az add_bots() függvény végrehajtása során ellentmondást találtunk a csoportok táblában – az összes speciális csoportot hozzá kell adnod, ha manuálisan csinálod.', + 'CONV_ERROR_INSERT_BOT' => 'Nem sikerült beilleszteni egy robotot a felhasználók táblába.', + 'CONV_ERROR_INSERT_BOTGROUP' => 'Nem sikerült beilleszteni egy robotot a robotok táblába.', + 'CONV_ERROR_INSERT_USER_GROUP' => 'Nem sikerült beilleszteni egy felhasználót a csoportok táblába.', + 'CONV_ERROR_MESSAGE_PARSER' => 'Ãœzenetfeldolgozó hiba', + 'CONV_ERROR_NO_AVATAR_PATH' => 'Megjegyzés fejlesztÅ‘knek: a %s használatához meg kell adnod a $convertor[\'avatar_path\'] értékét.', + 'CONV_ERROR_NO_FORUM_PATH' => 'Nem került megadásra a relatív elérési út az eredeti fórumhoz.', + 'CONV_ERROR_NO_GALLERY_PATH' => 'Megjegyzés fejlesztÅ‘knek: a %s használatához meg kell adnod a $convertor[\'avatar_gallery_path\'] értékét.', + 'CONV_ERROR_NO_GROUP' => 'A „%1$s†csoport nem található a %2$s-ban.', + 'CONV_ERROR_NO_RANKS_PATH' => 'Megjegyzés fejlesztÅ‘knek: a %s használatához meg kell adnod a $convertor[\'ranks_path\'] értékét.', + 'CONV_ERROR_NO_SMILIES_PATH' => 'Megjegyzés fejlesztÅ‘knek: a %s használatához meg kell adnod a $convertor[\'smilies_path\'] értékét.', + 'CONV_ERROR_NO_UPLOAD_DIR' => 'Megjegyzés fejlesztÅ‘knek: a %s használatához meg kell adnod a $convertor[\'upload_path\'] értékét.', + 'CONV_ERROR_PERM_SETTING' => 'Nem sikerült beilleszteni/frissíteni a jogosultság beállításokat.', + 'CONV_ERROR_PM_COUNT' => 'Nem sikerült lekérdezni egy mappa PÃœ-inek számát.', + 'CONV_ERROR_REPLACE_CATEGORY' => 'Nem sikerült beilleszteni egy régi kategóriát helyettesítÅ‘ új fórumot.', + 'CONV_ERROR_REPLACE_FORUM' => 'Nem sikerült beilleszteni egy régi fórumot helyettesítÅ‘ új fórumot.', + 'CONV_ERROR_USER_ACCESS' => 'Nem sikerült lekérdezni a felhasználóazonosítói információkat.', + 'CONV_ERROR_WRONG_GROUP' => 'ossz csoport („%1$sâ€) került meghatározásra a %2$s-ban.', + 'CONV_OPTIONS_BODY' => 'Ezen az oldalon az eredeti fórum hozzáférési adatait kell megadni. Add meg a régi fórumod adatbázisának adatait, a konvertáló nem fog benne semmit se megváltoztatni. Az inkonzisztencia elkerülése végett az eredeti fórumot tanácsos kikapcsolni a konvertálás idejére.', + 'CONV_SAVED_MESSAGES' => 'Elmentett üzenetek', + + 'PRE_CONVERT_COMPLETE' => 'Az elÅ‘feldolgozó lépések sikeresen végrehajtásra kerültek. Most már elkezdheted a tényleges konvertálást. Kérjük, vedd figyelembe, hogy néhány dolgot, lehet, hogy neked kell majd kézzel elvégezned, beállítanod. A konvertálás után különösen is ellenÅ‘rizd le a jogosultságokat, ha szükséges építsd újra a keresési indexet, és ellenÅ‘rizd, hogy az állományok sikeresen átmásolásra kerültek-e (például avatarok, emotikonok).', +)); diff --git a/includes/shared/phpbb3/language/lang_hungarian/posting.php b/includes/shared/phpbb3/language/lang_hungarian/posting.php new file mode 100644 index 00000000..605aa78f --- /dev/null +++ b/includes/shared/phpbb3/language/lang_hungarian/posting.php @@ -0,0 +1,290 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +* Magyar fordítás (c) 2007-2017 „Magyar phpBB Közösség fordítókâ€, +* http://phpbb.hu +* +* $Id$ +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +$lang = array_merge($lang, array( + 'ADD_ATTACHMENT' => 'Csatolmány feltöltése', + 'ADD_ATTACHMENT_EXPLAIN' => 'Ha szeretnél állományokat csatolni a hozzászólásodhoz, töltsd ki az alábbi mezÅ‘ket.', //? + 'ADD_FILE' => 'Ãllomány hozzáadása', + 'ADD_POLL' => 'Szavazás készítése', //? készítés, hozzáadás stb.? + 'ADD_POLL_EXPLAIN' => 'Ha nem szeretnél szavazást csatolni a témához, hagyd üresen az alábbi mezÅ‘ket.', + 'ALREADY_DELETED' => 'Az üzenet már törölve lett.', + 'ATTACH_DISK_FULL' => 'Megtelt a fórum csatolmányainak tárolására használt lemezterület.', + 'ATTACH_QUOTA_REACHED' => 'Megtelt a fórum csatolmányainak fenntartott terület.', //?? "Sorry, the board attachment quota has been reached." + 'ATTACH_SIG' => 'Aláírás hozzáadása (az aláírásod a felhasználói vezérlÅ‘pultban változtathatod meg)', + + 'BBCODE_A_HELP' => 'Beszúrt csatolmány: [attachment=]állománynév.kiterj[/attachment]', //? 'Hozzászólásba beszúrt csatolmány' "Inline uploaded attachment" + 'BBCODE_B_HELP' => 'Félkövér: [b]szöveg[/b]', + 'BBCODE_C_HELP' => 'Kód: [code]kód[/code]', + 'BBCODE_D_HELP' => 'Flash: [flash=szélesség,magasság]http://url[/flash]', + 'BBCODE_F_HELP' => 'Betűméret: [size=85]kicsi szöveg[/size]', + 'BBCODE_IS_OFF' => '%sBBCode%s kikapcsolva', + 'BBCODE_IS_ON' => '%sBBCode%s bekapcsolva', + 'BBCODE_I_HELP' => 'DÅ‘lt: [i]szöveg[/i]', + 'BBCODE_L_HELP' => 'Lista: [list][*]szöveg[/list]', + 'BBCODE_LISTITEM_HELP' => 'Lista elem: [*]szöveg', + 'BBCODE_O_HELP' => 'Rendezett lista: például [list=1][*] elsÅ‘ pont[/list] vagy [list=a][*] a pont[/list]', + 'BBCODE_P_HELP' => 'Kép: [img]http://kep_url[/img]', + 'BBCODE_Q_HELP' => 'Idézet: [quote]szöveg[/quote]', + 'BBCODE_S_HELP' => 'Betűszín: [color=red]szöveg[/color] vagy [color=#FF0000]szöveg[/color]', + 'BBCODE_U_HELP' => 'Aláhúzás: [u]szöveg[/u]', + 'BBCODE_W_HELP' => 'Link: [url]http://url[/url] vagy [url=http://url]link szöveg[/url]', + 'BBCODE_Y_HELP' => 'Lista: lista elem hozzáadása', + 'BUMP_ERROR' => 'Nem ugraszthatod elÅ‘re a témát, mivel az utolsó hozzászólás nemrég került elküldésre.', + + 'CANNOT_DELETE_REPLIED' => 'Csak olyan hozzászólást törölhetsz, melyre még nem érkezett válasz.', + 'CANNOT_EDIT_POST_LOCKED' => 'A hozzászólás lezárásra került. Már nem szerkesztheted ezt a hozzászólást.', + 'CANNOT_EDIT_TIME' => 'Már nem szerkesztetheted, illetve törölheted a hozzászólást.', + 'CANNOT_POST_ANNOUNCE' => 'Nem küldhetsz közleményt.', + 'CANNOT_POST_STICKY' => 'Nem küldhetsz kiemelt témát.', + 'CHANGE_TOPIC_TO' => 'Téma típusának megváltoztatása', //? "Change topic type to" - topic type: téma típus?? + 'CHARS_POST_CONTAINS' => array( + 1 => 'Ãœzeneted %1$d karaktert tartalmaz.', + 2 => 'Ãœzeneted %1$d karaktert tartalmaz.', + ), + 'CHARS_SIG_CONTAINS' => array( + 1 => 'Aláírásod %1$d karaktert tartalmaz.', + 2 => 'Aláírásod %1$d karaktert tartalmaz.', + ), + 'CLOSE_TAGS' => 'Címkék lezárása', //? "Close tags" + 'CURRENT_TOPIC' => 'Jelenlegi téma', //? aktuális? + + 'DELETE_FILE' => 'Csatolmány törlése', + 'DELETE_MESSAGE' => 'Ãœzenet törlése', + 'DELETE_MESSAGE_CONFIRM' => 'Biztosan törölni akarod ezt az üzenetet?', + 'DELETE_OWN_POSTS' => 'Csak a saját hozzászólásaidat törölheted.', + 'DELETE_PERMANENTLY' => 'Végleges törlés', + 'DELETE_POST_CONFIRM' => 'Biztosan törölni akarod ezt a hozzászólást?', + 'DELETE_POST_PERMANENTLY_CONFIRM' => 'Biztosan véglegesen törölni akarod ezt a hozzászólást?', + 'DELETE_POST_PERMANENTLY' => array( + 1 => 'Hozzászólás végleges törlése, így az nem lesz visszaállítható', + 2 => '%1$d hozzászólás végleges törlése, így azok nem lesznek visszaállíthatóak', + ), + 'DELETE_POSTS_CONFIRM' => 'Biztosan törölni akarod ezeket a hozzászólásokat?', + 'DELETE_POSTS_PERMANENTLY_CONFIRM' => 'Biztosan véglegesen törölni akarod ezeket a hozzászólásokat?', + 'DELETE_REASON' => 'Törlés indoka', + 'DELETE_REASON_EXPLAIN' => 'A törlés indoka látható lesz a moderátoroknak.', + 'DELETE_POST_WARN' => 'Hozzászólás törlése', + 'DELETE_TOPIC_CONFIRM' => 'Biztosan törölni akarod ezt a témát?', + 'DELETE_TOPIC_PERMANENTLY' => array( + 1 => 'Téma végleges törlése, így az nem visszaállítható', + 2 => '%1$d téma végleges törlése, így azok nem lesznek visszaállíthatóak', + ), + 'DELETE_TOPIC_PERMANENTLY_CONFIRM' => 'Biztosan véglegesen törölni akarod ezt a témát?', + 'DELETE_TOPICS_CONFIRM' => 'Biztosan törölni akarod ezeket a témákat?', + 'DELETE_TOPICS_PERMANENTLY_CONFIRM' => 'Biztosan véglegesen törölni akarod ezeket a témákat?', + 'DISABLE_BBCODE' => 'BBCode kikapcsolása', + 'DISABLE_MAGIC_URL' => 'Webcímek automatikus linkké alakításának kikapcsolása', //? "Do not automatically parse URLs" 'Automatikus URL-feldolgozás kikapcsolása' webcímek? + 'DISABLE_SMILIES' => 'Emotikonok kikapcsolása', + 'DISALLOWED_CONTENT' => 'A feltöltés visszautasításra került, mivel a feltöltött állomány egy esetleges támadás hordozója lehet.', + 'DISALLOWED_EXTENSION' => 'A %s kiterjesztés nem engedélyezett.', + 'DRAFT_LOADED' => 'A piszkozat sikeresen betöltésre került, most már befejezheted a hozzászólásod.
    A piszkozat a hozzászólás elküldése után törlésre fog kerülni.', + 'DRAFT_LOADED_PM' => 'A piszkozat sikeresen betöltésre került, most már befejezheted a privát üzenetet.
    A piszkozat a privát üzenet elküldése után törlésre fog kerülni.', + 'DRAFT_SAVED' => 'A piszkozat sikeresen elmentésre került.', + 'DRAFT_TITLE' => 'Piszkozat címe', + + 'EDIT_REASON' => 'Hozzászólás szerkesztésének oka', + 'EMPTY_FILEUPLOAD' => 'A feltöltött állomány üres.', + 'EMPTY_MESSAGE' => 'Az üzenet nem lehet üres.', + 'EMPTY_REMOTE_DATA' => 'Nem sikerült feltölteni az állományt, próbáld meg feltölteni kézzel.', + + 'FLASH_IS_OFF' => '[flash] kikapcsolva', + 'FLASH_IS_ON' => '[flash] bekapcsolva', + 'FLOOD_ERROR' => 'Most nem küldhetsz újabb hozzászólást, mivel az előzőt nemrég küldted el.', + 'FONT_COLOR' => 'Betűszín', + 'FONT_COLOR_HIDE' => 'Betűszínválasztó elrejtése', + 'FONT_HUGE' => 'óriási', + 'FONT_LARGE' => 'nagy', + 'FONT_NORMAL' => 'normál', + 'FONT_SIZE' => 'Betűméret', + 'FONT_SMALL' => 'kicsi', + 'FONT_TINY' => 'apró', + + 'GENERAL_UPLOAD_ERROR' => 'Nem sikerült feltölteni a csatolmányt a következő helyre: %s.', + + 'IMAGES_ARE_OFF' => '[img] kikapcsolva', + 'IMAGES_ARE_ON' => '[img] bekapcsolva', + 'INVALID_FILENAME' => 'A %s érvénytelen állománynév. ', //? "%s is an invalid filename" - nem létező (valószínűleg ez a jelentése...)? + + 'LOAD' => 'Betöltés', + 'LOAD_DRAFT' => 'Piszkozat betöltése', + 'LOAD_DRAFT_EXPLAIN' => 'Itt kiválaszthatod, hogy melyik piszkozatot szeretnéd folytatni. A jelenlegi hozzászólásod elvetésre, a tartalma törlésre kerül. A piszkozataidat a felhasználói vezérlőpultban tudod megtekinteni, szerkeszteni, illetve törölni.', + 'LOGIN_EXPLAIN_BUMP' => 'Egy téma előreugrasztásához be kell jelentkezned ebben a fórumban.', //? egy?; szórend + 'LOGIN_EXPLAIN_DELETE' => 'Egy hozzászólás törléséhez be kell jelentkezned ebben a fórumban.', + 'LOGIN_EXPLAIN_POST' => 'Új téma küldéséhez be kell jelentkezned ebben a fórumban.', + 'LOGIN_EXPLAIN_QUOTE' => 'Egy hozzászólás idézéséhez be kell jelentkezned ebben a fórumban.', + 'LOGIN_EXPLAIN_REPLY' => 'Hozzászólás küldéséhez be kell jelentkezned ebben a fórumban.', + + 'MAX_FONT_SIZE_EXCEEDED' => 'Legfeljebb %d nagyságú betűket használhatsz.', + 'MAX_FLASH_HEIGHT_EXCEEDED' => array( + 1 => 'Legfeljebb %d pixel magas flasht animációt illeszthetsz be a hozzászólásodba.', //? 'A hozzászólásod legfeljebb %$1d pixel magas flasht tartalmazhat.' vagy 'Nem küldhetsz %$1d pixelnél magasabb flasht.' + 2 => 'Legfeljebb %d pixel magas flasht animációt illeszthetsz be a hozzászólásodba.', + ), + 'MAX_FLASH_WIDTH_EXCEEDED' => array( + 1 => 'Legfeljebb %d pixel széles flasht animációt illeszthetsz be a hozzászólásodba.', + 2 => 'Legfeljebb %d pixel széles flasht animációt illeszthetsz be a hozzászólásodba.', + ), + 'MAX_IMG_HEIGHT_EXCEEDED' => array( + 1 => 'Legfeljebb %d pixel magas képet illeszthetsz be a hozzászólásodba.', + 2 => 'Legfeljebb %d pixel magas képet illeszthetsz be a hozzászólásodba.', + ), + 'MAX_IMG_WIDTH_EXCEEDED' => array( + 1 => 'Legfeljebb %d pixel széles képet illeszthetsz be a hozzászólásodba.', + 2 => 'Legfeljebb %d pixel széles képet illeszthetsz be a hozzászólásodba.', + ), + + 'MESSAGE_BODY_EXPLAIN' => array( + 0 => '', // zero means no limit, so we don't view a message here. + 1 => 'Ide írd az üzenetet, legfeljebb %d karakter hosszú lehet.', //? + 2 => 'Ide írd az üzenetet, legfeljebb %d karakter hosszú lehet.', //? + ), + 'MESSAGE_DELETED' => 'Az üzenet sikeresen törlésre került.', + 'MORE_SMILIES' => 'További emotikonok', + + 'NOTIFY_REPLY' => 'E-mail küldése új hozzászólás érkezésekor', + 'NOT_UPLOADED' => 'Az állományt nem sikerült feltölteni.', + 'NO_DELETE_POLL_OPTIONS' => 'Nem törölhetsz már létező választási lehetőséget.', + 'NO_PM_ICON' => 'Nincs PÜ ikon', + 'NO_POLL_TITLE' => 'Meg kell adnod a szavazás kérdését.', + 'NO_POST' => 'A kért hozzászólás nem létezik.', //? kért? + 'NO_POST_MODE' => 'Nincs hozzászólástípus kiválasztva.', //? + 'NO_TEMP_DIR' => 'A feltöltésekhez használt átmeneti könyvtár nem létezik, vagy nem írható.', + + 'PARTIAL_UPLOAD' => 'A feltöltött állomány csak részben került feltöltésre.', + 'PHP_UPLOAD_STOPPED' => 'Egy PHP kiegészítő leállított a fájl feltöltését.', + 'PHP_SIZE_NA' => 'A csatolmány mérete túl nagy.
    Nem sikerült megállapítani a PHP php.ini-jében meghatározott maximális méretet.', //? + 'PHP_SIZE_OVERRUN' => 'A csatolmány mérete túl nagy. A maximálisan feltölthető méret %1$d %2$s.
    Kérjük, vedd figyelembe, hogy ez a php.ini-ben van meghatározva, ezért nem írható felül.', + 'PLACE_INLINE' => 'Beszúrás a hozzászólásba', + 'POLL_DELETE' => 'Szavazás törlése', + 'POLL_FOR' => 'Szavazás idÅ‘tartama', + 'POLL_FOR_EXPLAIN' => 'Adj meg 0-t, hogy ne járjon le a szavazás.', //? + 'POLL_MAX_OPTIONS' => 'Felhasználónként válaszható lehetÅ‘ségek', //? "Options per user" + 'POLL_MAX_OPTIONS_EXPLAIN' => 'Egy felhasználó ennyi választási lehetÅ‘ségre szavazhat.', + 'POLL_OPTIONS' => 'Választási lehetÅ‘ségek', + 'POLL_OPTIONS_EXPLAIN' => array( + 1 => 'Ãrd mindegyiket külön sorba. Legfeljebb %d választási lehetÅ‘séget adhatsz meg.', + 2 => 'Ãrd mindegyiket külön sorba. Legfeljebb %d választási lehetÅ‘séget adhatsz meg.', + ), + 'POLL_OPTIONS_EDIT_EXPLAIN' => array( + 1 => 'Ãrd mindegyiket külön sorba. Legfeljebb %d választási lehetÅ‘séget adhatsz meg. Ha eltávolítasz vagy hozzáadsz egy választási lehetÅ‘séget, az eddigi eredmény lenullázásra kerül.', + 2 => 'Ãrd mindegyiket külön sorba. Legfeljebb %d választási lehetÅ‘séget adhatsz meg. Ha eltávolítasz vagy hozzáadsz egy választási lehetÅ‘séget, az eddigi eredmény lenullázásra kerül.', + ), + 'POLL_QUESTION' => 'Szavazás kérdése', + 'POLL_TITLE_TOO_LONG' => 'A szavazás kérdésének rövidebbnek kell lennie 100 karakternél.', + 'POLL_TITLE_COMP_TOO_LONG' => 'A feldolgozott szavazáskérdés túl hosszú, próbálj meg eltávolítani néhány BBCode-ot, illetve emotikont.', + 'POLL_VOTE_CHANGE' => 'Újraszavazás engedélyezése', + 'POLL_VOTE_CHANGE_EXPLAIN' => 'Ha engedélyezve van, a felhasználók megváltoztathatják szavazatukat.', + 'POSTED_ATTACHMENTS' => 'Feltöltött csatolmányok', + 'POST_APPROVAL_NOTIFY' => 'Amint jóváhagyásra kerül, értesíteni fogunk.', + 'POST_CONFIRMATION' => 'Hozzászólás megerÅ‘sítése', //? + 'POST_CONFIRM_EXPLAIN' => 'Az automatikus hozzászólások megakadályozása érdekében meg kell adnod egy megerÅ‘sítÅ‘ kódot. A kód az alábbi képen szerepel. Ha látási vagy egyéb problémák miatt nem tudod elolvasni a kódot, lépj kapcsolatba a %sfórum adminisztrátorával%s.', + 'POST_DELETED' => 'A hozzászólás sikeresen törlésre került.', + 'POST_EDITED' => 'A hozzászólás sikeresen szerkesztésre került.', + 'POST_EDITED_MOD' => 'A hozzászólás sikeresen szerkesztésre került, azonban egy moderátornak még jóvá kell hagynia mielÅ‘tt mindenki által megtekinthetÅ‘ lenne.', + 'POST_GLOBAL' => 'Globális közlemény', + 'POST_ICON' => 'Hozzászólás ikon', + 'POST_NORMAL' => 'Sima', + 'POST_REVIEW' => 'Hozzászólás áttekintés', //? "Post review" + 'POST_REVIEW_EDIT' => 'Hozzászólás áttekintés', + 'POST_REVIEW_EDIT_EXPLAIN' => 'A hozzászólást egy másik felhasználó módosította mialatt te szerkesztetted. Ennek fényében érdemes átnézned a hozzászólásod, és hozzáigazítanod a módosításaid.', + 'POST_REVIEW_EXPLAIN' => 'A témába érkezett legalább egy új hozzászólás. Ennek fényében érdemes átnézned a hozzászólásod.', //? "At least one new post has been made to this topic. You may wish to review your post in light of this." + 'POST_STORED' => 'A hozzászólás sikeresen elküldésre került.', + 'POST_STORED_MOD' => 'Az üzenet sikeresen szerkesztésre került, azonban egy moderátornak még jóvá kell hagynia mielÅ‘tt mindenki által megtekinthetÅ‘ lenne.', + 'POST_TOPIC_AS' => 'Téma típusa', + 'PROGRESS_BAR' => 'Feltöltés állapota', //? "Progress bar" + + 'QUOTE_DEPTH_EXCEEDED' => array( + 1 => 'Legfeljebb %1$d idézetet ágyazhatsz egymásba.', + 2 => 'Legfeljebb %1$d idézetet ágyazhatsz egymásba.', + ), + 'QUOTE_NO_NESTING' => 'Nem ágyazhatsz idézeteket egymásba.', + + 'REMOTE_UPLOAD_TIMEOUT' => 'A megadott fájl feltöltése idÅ‘túllépés miatt nem sikerült.', + + 'SAVE' => 'Elmentés', + 'SAVE_DATE' => 'Elmentve', //? "Saved at" 'Elmentés idÅ‘pontja' + 'SAVE_DRAFT' => 'Piszkozat elmentése', + 'SAVE_DRAFT_CONFIRM' => 'Kérjük, vedd figyelembe, hogy a piszkozatok csak a témát és az üzenetet tartalmazzák, minden más elem eltávolításra kerül. Biztosan el akarod menteni a piszkozatot?', //? element = elem v. tartalom stb.? + 'SMILIES' => 'Emotikonok', + 'SMILIES_ARE_OFF' => 'Emotikonok kikapcsolva', + 'SMILIES_ARE_ON' => 'Emotikonok bekapcsolva', + 'STICKY_ANNOUNCE_TIME_LIMIT'=> 'Ennyi ideig lesz kiemelt/közlemény/globális a téma.', + 'STICK_TOPIC_FOR' => 'Kiemelés idÅ‘tartama', //? "Stick topic for" + 'STICK_TOPIC_FOR_EXPLAIN' => 'Adj meg 0-t, hogy a téma mindig kiemelt/közlemény/globális maradjon. Kérjük, vedd figyelembe, hogy az idÅ‘ a hozzászólás elküldésétÅ‘l számítódik.', + 'STYLES_TIP' => 'Tipp: a formázások gyorsan alkalmazhatók a kiválasztott szövegen.', + + 'TOO_FEW_CHARS' => 'Az üzenet túl rövid.', //? "Your message contains too few characters." + 'TOO_FEW_CHARS_LIMIT' => array( + 1 => 'Legalább %1$d karaktert kell megadnod.', + 2 => 'Legalább %1$d karaktert kell megadnod.', + ), + 'TOO_FEW_POLL_OPTIONS' => 'Legalább két választási lehetÅ‘séget meg kell adnod.', + 'TOO_MANY_ATTACHMENTS' => 'Nem lehet újabb csatolmányt hozzáadni, %d a maximum.', //? + 'TOO_MANY_CHARS' => 'Az üzenet túl hosszú.', + 'TOO_MANY_CHARS_LIMIT' => array( + 2 => 'A megengedett hossz %1$d karakter.', + ), + 'TOO_MANY_POLL_OPTIONS' => 'Túl sok választási lehetÅ‘séget adtál meg.', + 'TOO_MANY_SMILIES' => 'Az üzenet túl sok emotikont tartalmaz. Legfeljebb %d használható.', + 'TOO_MANY_URLS' => 'Az üzenet túl sok linket tartalmaz. Legfeljebb %d lehet benne.', //? link =? url + 'TOO_MANY_USER_OPTIONS' => 'A felhasználónkénti válaszható lehetÅ‘ségek száma nem lehet nagyobb, mint az összes választási lehetÅ‘ségek száma.', //? + 'TOPIC_BUMPED' => 'A téma sikeresen elÅ‘ugrasztásra került.', + + 'UNAUTHORISED_BBCODE' => 'Bizonyos BBCode-okat nem használhatsz: %s:', + 'UNGLOBALISE_EXPLAIN' => 'Ahhoz, hogy a témát általános közleménybÅ‘l sima témává minÅ‘sítsd vissza, ki kell választanod egy fórumot, amelyben a téma meg fog jelenni.', //? + 'UNSUPPORTED_CHARACTERS_MESSAGE' => 'Az üzeneted szövege a következÅ‘ nem támogatott karaktereket tartalmazza:
    %s', + 'UNSUPPORTED_CHARACTERS_SUBJECT' => 'Az üzeneted tárgya a következő nem támogatott karaktereket tartalmazza:
    %s', + 'UPDATE_COMMENT' => 'Magyarázat frissítése', + 'URL_INVALID' => 'A megadott URL hibás.', + 'URL_NOT_FOUND' => 'A megadott állomány nem található.', + 'URL_IS_OFF' => '[url] kikapcsolva', + 'URL_IS_ON' => '[url] bekapcsolva', + 'USER_CANNOT_BUMP' => 'Ebben a fórumban nem ugraszthatsz elÅ‘re témákat.', //? fogalmazás + 'USER_CANNOT_DELETE' => 'Ebben a fórumban nem törölhetsz hozzászólásokat.', + 'USER_CANNOT_EDIT' => 'Ebben a fórumban nem szerkeszthetsz hozzászólásokat.', //? szerkeszhetesz hozzászólásokat... + 'USER_CANNOT_REPLY' => 'Ebben a fórumban nem küldhetsz hozzászólást.', + 'USER_CANNOT_FORUM_POST' => 'Nem végezhetsz hozzászólással kapcsolatos műveleteket a fórumban, mivel a fórum típusa ezt nem támogatja.', //? + + 'VIEW_MESSAGE' => '%sElküldött üzenet megtekintése%s', + 'VIEW_PRIVATE_MESSAGE' => '%sElküldött privát üzenet megtekintése%s', + + 'WRONG_FILESIZE' => 'Az állomány túl nagy, a maximum megengedett méret %1$d %2$s.', + 'WRONG_SIZE' => 'A képnek legalább %1$s szélesnek és %2$s magasnak kell lennie, valamint legfeljebb %3$s széles és %4$s magas lehet. A megadott kép %5$s széles, és %6$s magas.', +)); diff --git a/includes/shared/phpbb3/language/lang_italian/index.htm b/includes/shared/phpbb3/language/lang_italian/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_italian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_portugese/acp/board.php b/includes/shared/phpbb3/language/lang_portugese/acp/board.php new file mode 100644 index 00000000..a71f61a1 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_portugese/acp/board.php @@ -0,0 +1,631 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* @Traduzido por: http://www.phpbb-pt.com - segundo as normas do Acordo Ortográfico +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// Board Settings +$lang = array_merge($lang, array( + 'ACP_BOARD_SETTINGS_EXPLAIN' => 'Aqui pode definir as configurações básicas do phpBB e as configurações gerais do Fórum.', + 'BOARD_INDEX_TEXT' => 'Texto Ãndice do Fórum', + 'BOARD_INDEX_TEXT_EXPLAIN' => 'Texto que será mostrado no board’s breadcrumbs (Navegação estrutural). Se não for indicado, o texto mostrado será Board index', + 'BOARD_STYLE' => 'Estilo do Fórum', + 'CUSTOM_DATEFORMAT' => 'Personalizado...', + 'DEFAULT_DATE_FORMAT' => 'Formato da Data', + 'DEFAULT_DATE_FORMAT_EXPLAIN' => 'A sintaxe usada é idêntica à função PHP date.', + 'DEFAULT_LANGUAGE' => 'Idioma Padrão', + 'DEFAULT_STYLE' => 'Estilo Padrão', + 'DEFAULT_STYLE_EXPLAIN' => 'Estilo por defeito para novos Utilizadores.', + 'DISABLE_BOARD' => 'Desativar o Fórum', + 'DISABLE_BOARD_EXPLAIN' => 'O Fórum fica inacessível aos utilizadores que não sejam Administradores ou Moderadores. Pode justificar o fecho temporário introduzindo uma mensagem até 255 caracteres', + 'DISPLAY_LAST_SUBJECT' => 'Mostrar assunto da última mensagem adicionado na lista do fórum', + 'DISPLAY_LAST_SUBJECT_EXPLAIN' => 'O assunto da última mensagem será mostrado na lista de fóruns com um link para mensagem. Não são mostrados assuntos relativos a fóruns protegidos por senha ou inacessíveis ao utilizador.', + 'GUEST_STYLE' => 'Estilo para visitantes', + 'GUEST_STYLE_EXPLAIN' => 'Estilo que o Fórum apresenta aos visitantes.', + 'OVERRIDE_STYLE' => 'Sobrepor Estilo do Utilizador', + 'OVERRIDE_STYLE_EXPLAIN' => 'Substitui o Estilo dos Utilizadores e dos visitantes pelo Estilo Padrão do Fórum.', + 'SITE_DESC' => 'Descrição do Site', + 'SITE_HOME_TEXT' => 'Texto principal do sítio Web', + 'SITE_HOME_TEXT_EXPLAIN' => 'Este texto será exibido como um link para sua página inicial do sítio, no breadcrumbs do Fórum. Se não for especificado, o padrão será "Home".', + 'SITE_HOME_URL' => 'URL principal do sítio', + 'SITE_HOME_URL_EXPLAIN' => 'Se for especificado, será colocado no início do breadcrumbs um link para este URL e o logótipo do Fórum vai apontar para este URL em vez do índice do Fórum. É obrigatório indicar um URL, por exemplo, http://www.phpbb.com.', + 'SITE_NAME' => 'Nome do Sítio', + 'SYSTEM_TIMEZONE' => 'Fuso horário do visitante', + 'SYSTEM_TIMEZONE_EXPLAIN' => 'Fuso horário a mostrar a utilizadores não ligados (visitantes, motores de busca). Os utilizadores ligados definem o seu fuso horário durante o registo e podem alterá-lo no Painel de Controlo do Utilizador.', + 'WARNINGS_EXPIRE' => 'Duração do aviso', + 'WARNINGS_EXPIRE_EXPLAIN' => 'O número de dias que uma advertência permanece no Registo do Utilizador. Defina como 0 para advertência permanente.', +)); + +// Board Features +$lang = array_merge($lang, array( + 'ACP_BOARD_FEATURES_EXPLAIN' => 'Aqui pode Ativar/Desativar diversos recursos do phpBB.', + + 'ALLOW_ATTACHMENTS' => 'Ativar Anexos', + 'ALLOW_BIRTHDAYS' => 'Permitir aniversários', + 'ALLOW_BIRTHDAYS_EXPLAIN' => 'Permitir a exibição dos aniversários no Perfil do Utilizador.', + 'ALLOW_BOOKMARKS' => 'Permitir histórico dos Tópicos', + 'ALLOW_BOOKMARKS_EXPLAIN' => 'O Utilizador poderá guardar o seu histórico.', + 'ALLOW_BBCODE' => 'Permitir BBCode', + 'ALLOW_FORUM_NOTIFY' => 'Permitir a vigilância dos Fóruns', + 'ALLOW_NAME_CHANGE' => 'Permitir mudanças do Nome de Utilizador', + 'ALLOW_NO_CENSORS' => 'Permitir desativação da Censura de palavras', + 'ALLOW_NO_CENSORS_EXPLAIN' => 'O Utilizador poderá desativar a Censura automática de palavras.', + 'ALLOW_PM_ATTACHMENTS' => 'Permitir anexos nas Mensagens Privadas', + 'ALLOW_PM_REPORT' => 'Permitir aos utilizadores reportar Mensagens Privadas', + 'ALLOW_PM_REPORT_EXPLAIN' => 'Caso esteja ativado, os utilizadores terão a opção de reportar uma mensagem privada que tenham recebido ou enviado para moderação. Estas mensagens privadas irão ser visíveis no Painel de Controlo de Moderação.', + 'ALLOW_QUICK_REPLY' => 'Permitir Resposta Rápida', + 'ALLOW_QUICK_REPLY_EXPLAIN' => 'Este interruptor permite ativar/desativar globalmente a Resposta Rápida em todo o Fórum. Quando ativado, terá ainda que ativar a Resposta Rápida individualmente em cada um dos Fóruns.', + 'ALLOW_QUICK_REPLY_BUTTON' => 'Ativar a Resposta Rápida em todos os Fóruns', + 'ALLOW_SIG' => 'Permitir Assinaturas', + 'ALLOW_SIG_BBCODE' => 'Permitir aos Utilizadores usar BBCode na Assinatura', + 'ALLOW_SIG_FLASH' => 'Permitir aos Utilizadores usar BBCode [FLASH] na Assinatura', + 'ALLOW_SIG_IMG' => 'Permitir aos Utilizadores usar BBCode [IMG] na Assinatura', + 'ALLOW_SIG_LINKS' => 'Permitir aos Utilizadores usar Links na Assinatura', + 'ALLOW_SIG_LINKS_EXPLAIN' => 'Se desativado o BBCode [URL] e o processamento automático de URLs é desativado.', + 'ALLOW_SIG_SMILIES' => 'Permitir aos Utilizadores usar Emoções na Assinatura', + 'ALLOW_SMILIES' => 'Permitir Emoções (Ãcones de Emoções)', + 'ALLOW_TOPIC_NOTIFY' => 'Permitir a vigilância dos Tópicos', + 'BOARD_PM' => 'Mensagem Privada', + 'BOARD_PM_EXPLAIN' => 'Ativar as Mensagens Privadas para todos os Utilizadores.', + 'ALLOW_BOARD_NOTIFICATIONS' => 'Permitir notificações', +)); + +// Avatar Settings +$lang = array_merge($lang, array( + 'ACP_AVATAR_SETTINGS_EXPLAIN' => 'Os Avatares são pequenas imagens que o Utilizador pode usar para ser identificado no Fórum. Dependendo do Estilo usado, o Avatar é mostrado normalmente acima do nome do Utilizador na visualização dos Tópicos. Aqui pode definir como os Utilizadores podem usar os seus Avatares. Para enviar Avatares, a Pasta abaixo já tem que estar criada e certificar-se que o Servidor pode gravar Ficheiros nela. O limite do tamanho da imagem do Avatar é válido apenas para Avatares enviados, não se aplicando a imagens utilizadas de outros sítios web.', + + 'ALLOW_AVATARS' => 'Ativar avatares', + 'ALLOW_AVATARS_EXPLAIN' => 'Permitir o uso normal de avatares;
    Caso desative o uso normal de avatares ou um uso de avatares, os avatares desativados deixarão de ser visíveis no Fórum, embora os utilizadores possam transferir os seus próprios avatares no Painel de Controlo do Utilizador.', + 'ALLOW_GRAVATAR' => 'Ativar Avatares de Gravatar', + 'ALLOW_LOCAL' => 'Permitir Galeria de Avatares', + 'ALLOW_REMOTE' => 'Ativar Avatar Remoto', + 'ALLOW_REMOTE_EXPLAIN' => 'Os Avatares utilizados de outros sítios web.', + 'ALLOW_REMOTE_UPLOAD' => 'Permitir o envio de avatar remoto', + 'ALLOW_REMOTE_UPLOAD_EXPLAIN' => 'Permitir o envio de avatares de um outro sítio.', + 'ALLOW_UPLOAD' => 'Ativar o envio de Avatar', + 'AVATAR_GALLERY_PATH' => 'Caminho da pasta da Galeria de Avatares', + 'AVATAR_GALLERY_PATH_EXPLAIN' => 'Caminho da pasta desde a raiz do phpBB, para a Galeria de Avatares: Exemplo: images/avatares/gallery.
    Pontos duplos como ../ serão retirados do caminho por razões de segurança.', + 'AVATAR_STORAGE_PATH' => 'Caminho da pasta onde os Avatares são guardados', + 'AVATAR_STORAGE_PATH_EXPLAIN' => 'Caminho da pasta desde a raiz do phpBB, para o envio de Avatares. Exemplo: images/avatares/upload.
    O Envio de Avatares não ficará disponível se a pasta não for gravável.
    Pontos duplos como ../ serão retirados do caminho por razões de segurança.', + 'MAX_AVATAR_SIZE' => 'Dimensões Máximas do Avatar', + 'MAX_AVATAR_SIZE_EXPLAIN' => '(Altura x Largura em píxeis).', + 'MAX_FILESIZE' => 'Tamanho Máximo do Ficheiro Avatar', + 'MAX_FILESIZE_EXPLAIN' => 'Dos Ficheiros de Avatar enviados. Se este valor for 0, o tamanho do ficheiro enviado fica sujeito às permissões do PHP.', + 'MIN_AVATAR_SIZE' => 'Dimensões Mínimas do Avatar', + 'MIN_AVATAR_SIZE_EXPLAIN' => '(Altura x Largura em píxeis).', +)); + +// Message Settings +$lang = array_merge($lang, array( + 'ACP_MESSAGE_SETTINGS_EXPLAIN' => 'Aqui pode configurar as opções das Mensagens Privadas.', + + 'ALLOW_BBCODE_PM' => 'Permitir BBCode nas Mensagens Privadas', + 'ALLOW_FLASH_PM' => 'Permitir o uso do BBCode FLASH', + 'ALLOW_FLASH_PM_EXPLAIN' => 'Para enviar Flash nas Mensagens Privadas tem que ativar esta opção. O que depende das suas Permissões.', + 'ALLOW_FORWARD_PM' => 'Permitir reencaminhamento das Mensagens Privadas', + 'ALLOW_IMG_PM' => 'Permitir o uso do BBCode IMG', + 'ALLOW_MASS_PM' => 'Permitir envio de Mensagens Privadas para múltiplos Utilizadores e Grupos', + 'ALLOW_MASS_PM_EXPLAIN' => 'O envio para Grupos pode ser ajustado individualmente de acordo com a página de configurações do Grupo.', + 'ALLOW_PRINT_PM' => 'Permitir a impressão das Mensagem Privadas', + 'ALLOW_QUOTE_PM' => 'Permitir citar nas Mensagens Privadas', + 'ALLOW_SIG_PM' => 'Permitir assinaturas nas Mensagens Privadas', + 'ALLOW_SMILIES_PM' => 'Permitir Emoções nas Mensagens Privadas', + 'BOXES_LIMIT' => 'Máximo de Mensagens Privadas por pasta', + 'BOXES_LIMIT_EXPLAIN' => 'Número máximo de Mensagens Privadas que os Utilizadores podem receber em cada uma das suas Pastas Pessoais (0 = ilimitadas).', + 'BOXES_MAX' => 'Máximo de pastas de Mensagens Privadas', + 'BOXES_MAX_EXPLAIN' => 'Número máximo de Pastas Pessoais que os Utilizadores podem criar para as Mensagens Privadas.', + 'ENABLE_PM_ICONS' => 'Ativa o uso de ícones de Tópico nas Mensagens Privadas', + 'FULL_FOLDER_ACTION' => 'Ação padrão para pastas cheias', + 'FULL_FOLDER_ACTION_EXPLAIN' => 'Define o procedimento se a pasta do Utilizador encher e a ação configurada não for aplicável. Na pasta "Mensagens enviadas" serão sempre excluídas as Mensagens mais antigas.', + 'HOLD_NEW_MESSAGES' => 'Manuseio de novas Mensagens', + 'PM_EDIT_TIME' => 'Limite do tempo de edição', + 'PM_EDIT_TIME_EXPLAIN' => 'Limita o tempo disponível para editar uma nova Mensagem Privada ainda não enviada (0 = ilimitado).', + 'PM_MAX_RECIPIENTS' => 'Número máximo de destinatários', + 'PM_MAX_RECIPIENTS_EXPLAIN' => 'Número máximo de destinatários por Mensagem Privada (0 = ilimitados). Estes valores podem ser ajustados por Grupo nas configurações do Grupo.', +)); + +// Post Settings +$lang = array_merge($lang, array( + 'ACP_POST_SETTINGS_EXPLAIN' => 'Aqui pode configurar todas as opções de Mensagens.', + 'ALLOW_POST_LINKS' => 'Permitir a Tag BBCode [URL] nas Mensagens Privadas', + 'ALLOW_POST_LINKS_EXPLAIN' => 'Se desativado, a Tag BBCode [URL] e as URLs mágicas serão desativadas nas Mensagens Privadas.', + 'ALLOWED_SCHEMES_LINKS' => 'Permitido esquemas em endereços', + 'ALLOWED_SCHEMES_LINKS_EXPLAIN' => 'Os utilizadores apenas podem publicar URLs sem esquemas ou um dos esquemas permitidos que se encontram listados e separados por vírgulas.', + 'ALLOW_POST_FLASH' => 'Permitir o uso da Tag BBCode [FLASH] nas Mensagens', + 'ALLOW_POST_FLASH_EXPLAIN' => 'Se desativado, a Tag BBCode [FLASH] ficará inativa nas Mensagens em geral. De qualquer forma, o Sistema de Permissões pode ajudar a controlar as TAGs que Utilizadores podem usar.', + + 'BUMP_INTERVAL' => 'Intervalo de Bump', + 'BUMP_INTERVAL_EXPLAIN' => 'Número de minutos, horas ou dias entre a última Mensagem num Tópico e a reativação deste Tópico. Definir o valor como 0 desativa este recurso.', + 'CHAR_LIMIT' => 'Máximo de caracteres por Mensagem', + 'CHAR_LIMIT_EXPLAIN' => 'Número máximo de caracteres da mensagem. 0 = ilimitados.', + 'DELETE_TIME' => 'Tempo limite para apagar', + 'DELETE_TIME_EXPLAIN' => 'Limita o tempo disponível para eliminar uma nova Mensagem (0 = ilimitado).', + 'DISPLAY_LAST_EDITED' => 'Mostra a data e a hora da última edição', + 'DISPLAY_LAST_EDITED_EXPLAIN' => 'Se ativo mostra a data e a hora da última edição da Mensagem.', + 'EDIT_TIME' => 'Tempo limite de edição', + 'EDIT_TIME_EXPLAIN' => 'Limita o tempo disponível para editar uma nova Mensagem (0 = ilimitado).', + 'FLOOD_INTERVAL' => 'Intervalo de Segurança', + 'FLOOD_INTERVAL_EXPLAIN' => 'Número de segundos que o Utilizador tem de esperar para criar nova Mensagem.', + 'HOT_THRESHOLD' => 'Mensagens para se tornar um Tópico Popular', + 'HOT_THRESHOLD_EXPLAIN' => 'Número de Mensagens para tornar um Tópico Popular. 0 para desativar', + 'MAX_POLL_OPTIONS' => 'Número máximo de opções em votações', + 'MAX_POST_FONT_SIZE' => 'Tamanho máximo do tipo de letra nas Mensagens', + 'MAX_POST_FONT_SIZE_EXPLAIN' => 'Tamanho máximo da letra numa mensagem. 0 = ilimitado.', + 'MAX_POST_IMG_HEIGHT' => 'Altura máxima das imagens por Mensagem', + 'MAX_POST_IMG_HEIGHT_EXPLAIN' => 'Altura máxima das imagens/flash nas Mensagens. 0 = ilimitado.', + 'MAX_POST_IMG_WIDTH' => 'Largura máxima das imagens por Mensagem', + 'MAX_POST_IMG_WIDTH_EXPLAIN' => 'Largura máxima das imagens/flash nas Mensagens 0 = ilimitado.', + 'MAX_POST_URLS' => 'Número máximo de URLs por Mensagem', + 'MAX_POST_URLS_EXPLAIN' => 'Número máximo de URLs que podem ser inseridas numa mensagem. 0 = ilimitadas.', + 'MIN_CHAR_LIMIT' => 'Mínimo de caracteres por Mensagem', + 'MIN_CHAR_LIMIT_EXPLAIN' => 'O número mínimo de caracteres que o Utilizador tem de usar numa Mensagem. 1 é o valor mínimo admitido nesta configuração.', + 'POSTING' => 'Publicação de mensagens', + 'POSTS_PER_PAGE' => 'Mensagens por página', + 'QUOTE_DEPTH_LIMIT' => 'Tamanho máximo das citações', + 'QUOTE_DEPTH_LIMIT_EXPLAIN' => 'Número máximo de citações por mensagem. 0 = ilimitadas.', + 'SMILIES_LIMIT' => 'Máximo de Emoções por Mensagem', + 'SMILIES_LIMIT_EXPLAIN' => 'Número máximo de Emoções que podem ser inseridas numa mensagem. 0 = ilimitadas.', + 'SMILIES_PER_PAGE' => 'Emoções por página', + 'TOPICS_PER_PAGE' => 'Tópicos por Página', +)); + +// Signature Settings +$lang = array_merge($lang, array( + 'ACP_SIGNATURE_SETTINGS_EXPLAIN' => 'Aqui pode configurar as opções para as Assinaturas dos Utilizadores.', + + 'MAX_SIG_FONT_SIZE' => 'Tamanho Máximo do tipo de letra da Assinatura', + 'MAX_SIG_FONT_SIZE_EXPLAIN' => 'Tamanho Máximo do tipo de letra permitido na Assinatura dos Utilizadores (0 = ilimitado).', + 'MAX_SIG_IMG_HEIGHT' => 'Altura Máxima da imagem na Assinatura', + 'MAX_SIG_IMG_HEIGHT_EXPLAIN' => 'Altura Máxima de um ficheiro de imagem/flash na Assinatura dos Utilizadores (0 = ilimitado).', + 'MAX_SIG_IMG_WIDTH' => 'Largura Máxima de uma imagem na Assinatura', + 'MAX_SIG_IMG_WIDTH_EXPLAIN' => 'Largura Máxima de um ficheiro de imagem/flash na Assinatura do Utilizador. (0 = ilimitado).', + 'MAX_SIG_LENGTH' => 'Comprimento máximo da Assinatura', + 'MAX_SIG_LENGTH_EXPLAIN' => 'Número Máximo de caracteres na Assinatura do Utilizador.', + 'MAX_SIG_SMILIES' => 'Número Máximo de Emoções por Assinatura', + 'MAX_SIG_SMILIES_EXPLAIN' => 'Número Máximo de Emoções permitidas na Assinatura do Utilizador. (0 = ilimitado).', + 'MAX_SIG_URLS' => 'Número Máximo de atalhos', + 'MAX_SIG_URLS_EXPLAIN' => 'Número Máximo de atalhos numa Assinatura. (0 = ilimitados).', +)); + +// Registration Settings +$lang = array_merge($lang, array( + 'ACP_REGISTER_SETTINGS_EXPLAIN' => 'Aqui são definidas as opções de Registo e Perfil do Utilizador.', + + 'ACC_ACTIVATION' => 'Ativação de Conta', + 'ACC_ACTIVATION_EXPLAIN' => 'Pode desativar os Registos ou definir se o novo Utilizador tem acesso imediato ao Fórum ou se é necessária uma confirmação.', + 'ACC_ACTIVATION_WARNING' => 'Por favor, note que o método de ativação selecionado atualmente exige que o envio de emails esteja ativado, de outra forma de registo será desativado. Recomendamos que selecione um método de ativação diferente ou ative o envio de emails.', + 'NEW_MEMBER_POST_LIMIT' => 'Limite das Mensagens dos Utilizadores Registados Recentemente', + 'NEW_MEMBER_POST_LIMIT_EXPLAIN' => 'Os novos utilizadores entram para o Grupo Utilizadores Registados Recentemente até atingirem este número de mensagens. Pode usar este Grupo para impedir que usem as mensagens privadas ou para rever as suas mensagens. 0 para desativar.', + 'NEW_MEMBER_GROUP_DEFAULT' => 'Grupo de Utilizadores Registados Recentemente', + 'NEW_MEMBER_GROUP_DEFAULT_EXPLAIN' => 'Se definido como Sim e especificado um limite de mensagens, o novo utilizador será colocado no Grupo Utilizadores Registados Recentemente, sendo esse o seu Grupo Padrão. Isso pode ser útil se deseja atribuir um Grupo Padrão, Classificação e/ou Avatar a estes utilizadores.', + + 'ACC_ADMIN' => 'Administrador', + 'ACC_DISABLE' => 'Desativar Registos', + 'ACC_NONE' => 'Nenhuma', + 'ACC_USER' => 'Utilizador', +// 'ACC_USER_ADMIN' => 'User + Admin', + 'ALLOW_EMAIL_REUSE' => 'Ativar duplicação de emails', + 'ALLOW_EMAIL_REUSE_EXPLAIN' => 'O mesmo email pode ser usado no Registo de vários Utilizadores.', + 'COPPA' => 'COPPA', + 'COPPA_FAX' => 'Número de Fax do COPPA', + 'COPPA_MAIL' => 'Email do COPPA', + 'COPPA_MAIL_EXPLAIN' => 'Email para os Encarregados de Educação, enviarem a Autorização de Registo dos menores de 13 anos.', + 'ENABLE_COPPA' => 'Ativar COPPA', + 'ENABLE_COPPA_EXPLAIN' => 'Solicita ao Utilizador declaração de idade superior a 13 anos.', + 'MAX_CHARS' => 'Máximo', + 'MIN_CHARS' => 'Mínimo', + 'NO_AUTH_PLUGIN' => 'Nenhum Módulo de Segurança encontrado.', + 'PASSWORD_LENGTH' => 'Tamanho da Senha', + 'PASSWORD_LENGTH_EXPLAIN' => 'Número Mínimo e Máximo de caracteres das Senhas.', + 'REG_LIMIT' => 'Tentativas de Registo', + 'REG_LIMIT_EXPLAIN' => 'Número de tentativas permitidas aos utilizadores antes da sessão ser bloqueada.', + 'USERNAME_ALPHA_ONLY' => 'Alfanumérico apenas', + 'USERNAME_ALPHA_SPACERS' => 'Alfanumérico e Espaços', + 'USERNAME_ASCII' => 'ASCII (Nenhum padrão de codificação Unicode internacional)', + 'USERNAME_LETTER_NUM' => 'Qualquer letra ou número', + 'USERNAME_LETTER_NUM_SPACERS' => 'Qualquer letra, número ou espaço', + 'USERNAME_CHARS' => 'Limite de caracteres para o nome do Utilizador', + 'USERNAME_CHARS_ANY' => 'Qualquer carácter', + 'USERNAME_CHARS_EXPLAIN' => 'Tipo restrito de caracteres aceites no nome do Utilizador; espaço, -, +, _, [ e ].', + 'USERNAME_LENGTH' => 'Tamanho do nome do Utilizador', + 'USERNAME_LENGTH_EXPLAIN' => 'Número Mínimo e Máximo de caracteres nos nomes dos Utilizadores.', +)); + +// Feeds +$lang = array_merge($lang, array( + 'ACP_FEED_MANAGEMENT' => 'Configurações Gerais de Feeds', + 'ACP_FEED_MANAGEMENT_EXPLAIN' => 'Este Módulo disponibiliza vários ATOM Feeds, qualquer BBCode utilizado em mensagens fá-los serem legíveis em qualquer feed externo.', + + 'ACP_FEED_GENERAL' => 'Configurações Gerais de Feed', + 'ACP_FEED_POST_BASED' => 'Configurações dos Feeds baseadas nas mensagens', + 'ACP_FEED_TOPIC_BASED' => 'Configurações dos Feeds baseadas nos Tópicos', + 'ACP_FEED_SETTINGS_OTHER' => 'Outros Feeds e configurações', + + 'ACP_FEED_ENABLE' => 'Ativar Feeds', + 'ACP_FEED_ENABLE_EXPLAIN' => 'Ligar ou desligar Atom Feeds em todo o Fórum.
    Desativar as ligações de todos os Feeds, independentemente das opções configuradas em baixo.', + 'ACP_FEED_LIMIT' => 'Número de itens', + 'ACP_FEED_LIMIT_EXPLAIN' => 'Número máximo de itens de Feed a mostrar.', + + 'ACP_FEED_OVERALL' => 'Ativar Feeds em todo o Fórum', + 'ACP_FEED_OVERALL_EXPLAIN' => 'Novas mensagens em todo o Fórum.', + 'ACP_FEED_FORUM' => 'Ativa os Feeds por Fórum', + 'ACP_FEED_FORUM_EXPLAIN' => 'Fórum e Sub-fórum de novas mensagens.', + 'ACP_FEED_TOPIC' => 'Ativa os Feeds por Tópico', + 'ACP_FEED_TOPIC_EXPLAIN' => 'Tópicos únicos de novas mensagens.', + + 'ACP_FEED_TOPICS_NEW' => 'Ativar Feeds nos Tópicos novos', + 'ACP_FEED_TOPICS_NEW_EXPLAIN' => 'Ativa Feeds nos "Tópicos Novos", exibindo os últimos Tópicos criados, incluindo a primeira mensagem.', + 'ACP_FEED_TOPICS_ACTIVE' => 'Ativar Feeds nos Tópicos ativos', + 'ACP_FEED_TOPICS_ACTIVE_EXPLAIN' => 'Ativa Feeds nos "Tópicos ativosâ€, exibindo os últimos Tópicos ativos, incluindo as últimas mensagens.', + 'ACP_FEED_NEWS' => 'Notícias Feed', + 'ACP_FEED_NEWS_EXPLAIN' => 'Selecione a primeira mensagem destes Fóruns. Selecione nenhum Fórum para desativar o Feed de notícias.
    Selecione múltiplos Fóruns clicando na tecla CTRL e clicando no Fórum.', + + 'ACP_FEED_OVERALL_FORUMS' => 'Ativar Feed nos Fóruns', + 'ACP_FEED_OVERALL_FORUMS_EXPLAIN' => 'Permite mostrar a lista de “Todos os Fóruns†com Feed.', + + 'ACP_FEED_HTTP_AUTH' => 'Permitir Autenticação HTTP', + 'ACP_FEED_HTTP_AUTH_EXPLAIN' => 'Permite aos utilizadores receber o conteúdo oculto para visitantes adicionando o parâmetro auth=http ao URL do feed. Note por favor que algumas configurações do PHP exigem mudanças adicionais no ficheiro .htaccess. As instruções podem ser encontradas no ficheiro.', + 'ACP_FEED_ITEM_STATISTICS' => 'Item de estatísticas', + 'ACP_FEED_ITEM_STATISTICS_EXPLAIN' => 'Exibe estatísticas individuais por baixo dos itens de feed
    (Postado por, data e hora, respostas, visualizações)', + 'ACP_FEED_EXCLUDE_ID' => 'Excluir Fóruns', + 'ACP_FEED_EXCLUDE_ID_EXPLAIN' => 'O conteúdo destes não será incluído nos feeds. Não selecione nenhum Fórum, para puxar os dados de todos os Fóruns.
    Selecione/Desmarque múltiplos Fóruns clicando CTRL e clicando.', +)); + +// Visual Confirmation Settings +$lang = array_merge($lang, array( + 'ACP_VC_SETTINGS_EXPLAIN' => 'Aqui pode selecionar e configurar plugins desenhados para bloquear registos automáticos de spambots. Estes plugins fazem um teste ao utilizador (CAPTCHA) de difícil resolução pelos computadores.', + 'ACP_VC_EXT_GET_MORE' => 'Para plugins adicionais (e possivelmente melhores) anti-spam, visite o Repositório de Extensões do phpBB.com. Para mais informações sobre a prevenção de spam no seu fórum, visite o phpBB.com Knowledge Base.', + 'AVAILABLE_CAPTCHAS' => 'Plugins disponíveis', + 'CAPTCHA_UNAVAILABLE' => 'O plugin não pode ser selecionado enquanto não preencher os requisitos necessários.', + 'CAPTCHA_GD' => 'Imagem GD', + 'CAPTCHA_GD_3D' => 'Imagem GD 3D', + 'CAPTCHA_GD_FOREGROUND_NOISE' => 'Ruído em primeiro plano', + 'CAPTCHA_GD_EXPLAIN' => 'Use o GD para gerar uma imagem anti-spambot mais complexa.', + 'CAPTCHA_GD_FOREGROUND_NOISE_EXPLAIN' => 'Use o ruído em primeiro plano para gerar uma imagem GD de mais difícil leitura.', + 'CAPTCHA_GD_X_GRID' => 'O ruído de fundo do eixo x', + 'CAPTCHA_GD_X_GRID_EXPLAIN' => 'Utilize esta configuração para gerar uma imagem mais complexa. 0 desativa o ruído de fundo no eixo X.', + 'CAPTCHA_GD_Y_GRID' => 'O ruído de fundo do eixo y', + 'CAPTCHA_GD_Y_GRID_EXPLAIN' => 'Utilize esta configuração para gerar uma imagem mais complexa. 0 desativa o ruído de fundo no eixo Y.', + 'CAPTCHA_GD_WAVE' => 'Onda de distorção', + 'CAPTCHA_GD_WAVE_EXPLAIN' => 'Aplica uma onda para provocar distorção na imagem.', + 'CAPTCHA_GD_3D_NOISE' => 'Adiciona ruído usando objetos 3D', + 'CAPTCHA_GD_3D_NOISE_EXPLAIN' => 'Adiciona objetos à imagem, sobre as letras.', + 'CAPTCHA_GD_FONTS' => 'Usar tipos de letra diferentes', + 'CAPTCHA_GD_FONTS_EXPLAIN' => 'Esta configuração controla quantas formas diferentes de letras são usadas. Só podem usar formatos padrão ou introduzir letras alteradas. Também é possível adicionar letras minúsculas.', + 'CAPTCHA_FONT_DEFAULT' => 'Padrão', + 'CAPTCHA_FONT_NEW' => 'Novas formas', + 'CAPTCHA_FONT_LOWER' => 'Também usar minúsculas', + 'CAPTCHA_NO_GD' => 'Imagem simples', + 'CAPTCHA_PREVIEW_MSG' => 'As suas alterações não foram gravadas, isto é apenas uma previsão.', + 'CAPTCHA_PREVIEW_EXPLAIN' => 'O plugin será semelhante a esta imagem:', + + 'CAPTCHA_SELECT' => 'Plugins instalados', + 'CAPTCHA_SELECT_EXPLAIN' => 'O menu mostra os plugins instalados. A cinzento estão os indisponíveis, porque precisam de configuração prévia.', + 'CAPTCHA_CONFIGURE' => 'Configurar plugins', + 'CAPTCHA_CONFIGURE_EXPLAIN' => 'Altere as definições do plugins selecionado.', + 'CONFIGURE' => 'Configuração', + 'CAPTCHA_NO_OPTIONS' => 'Este plugin não tem opções de configuração.', + + 'VISUAL_CONFIRM_POST' => 'Confirmação visual de Mensagens dos Visitantes', + 'VISUAL_CONFIRM_POST_EXPLAIN' => 'Exige aos visitantes (anónimos) que introduzam um código aleatório para prevenir mensagens em massa.', + 'VISUAL_CONFIRM_REG' => 'Medidas anti-spambot no registo', + 'VISUAL_CONFIRM_REG_EXPLAIN' => 'Exige aos novos utilizadores uma tarefa anti-spambot para evitar registos automáticos.', + 'VISUAL_CONFIRM_REFRESH' => 'Permitir aos utilizadores atualizar a tarefa anti-spambot', + 'VISUAL_CONFIRM_REFRESH_EXPLAIN' => 'Permite que os utilizadores solicitem uma nova tarefa anti-spambot se forem incapazes de resolver a tarefa corrente durante o registo. Alguns plugins podem não suportar esta opção.', +)); + +// Cookie Settings +$lang = array_merge($lang, array( + 'ACP_COOKIE_SETTINGS_EXPLAIN' => 'Estas configurações definem os dados usados nos cookies enviados aos navegadores dos Utilizadores. Na maioria dos casos os valores predefinidos são suficientes. Se os alterar faça-o com cuidado. Qualquer incorreção impede os Utilizadores de acederem ao Fórum. Se verificar que os utilizadores não conseguem entrar ou sair da sua conta, visite phpBB.com Knowledge Base - Corrigindo configurações de Cookies Incorretas.', + + 'COOKIE_DOMAIN' => 'Domínio do Cookie', + 'COOKIE_DOMAIN_EXPLAIN' => 'Na maioria dos casos o domínio do cookie é opcional. Deixe em branco em caso de dúvida.

    No caso de ter o fórum integrado com outro software ou de ter múltiplos domínios, então, para determinar o domínio do cookie, deverá fazer o seguinte. Caso tenha algo como exemplo.pt e forum.exemplo.pt, ou talvez forum.exemplo.pt e blog.exemplo.pt. Remova os subdomínios até que reste o domínio principal, exemplo.pt. Agora adicione um ponto final em frente ao domínio, ou seja, ficaria: .exemplo.pt (repare no ponto final no início).', + 'COOKIE_NAME' => 'Nome do Cookie', + 'COOKIE_NAME_EXPLAIN' => 'Pode colocar aqui o que bem desejar, seja original. Sempre que as configurações dos cookies sejam alteradas, o nome do cookie deve ser também alterado.', + 'COOKIE_NOTICE' => 'Aviso do Cookie', + 'COOKIE_NOTICE_EXPLAIN' => 'Se ativado, um aviso sobre o cookie será mostrado aos utilizadores quando estes visitarem o seu fórum. Poderá ser exigido por lei, dependendo do conteúdo do fórum e das extensões ativadas.', + 'COOKIE_PATH' => 'Caminho do Cookie', + 'COOKIE_PATH_EXPLAIN' => 'Normalmente será o mesmo que o caminho do script ou apenas uma barra para tornar o cookie acessível em todo o domínio do site.', + 'COOKIE_SECURE' => 'Cookie seguro', + 'COOKIE_SECURE_EXPLAIN' => 'Se o Servidor funciona por SSL, mude para Ativado caso contrário, deixe-o Desativado. Estando Ativado sem funcionar por SSL poderá resultar em erros no Servidor durante os redirecionamentos.', + 'ONLINE_LENGTH' => 'Tempo limite para visualização online', + 'ONLINE_LENGTH_EXPLAIN' => 'Tempo em minutos após o qual o Utilizador inativo não aparecerá na lista de Utilizadores online. Quanto menor, menos processamento exige.', + 'SESSION_LENGTH' => 'Tempo da Sessão [ segundos ]', + 'SESSION_LENGTH_EXPLAIN' => 'A Sessão será encerrada após este tempo, em segundos.', +)); + +// Contact Settings +$lang = array_merge($lang, array( + 'ACP_CONTACT_SETTINGS_EXPLAIN' => 'Aqui pode ativar e desativar a página de contacto e adicionar o texto que será exibido.', + + 'CONTACT_US_ENABLE' => 'Ativar página de contacto', + 'CONTACT_US_ENABLE_EXPLAIN' => 'Esta página permite aos utilizadores enviarem emails para os administradores do fórum. Tenha em atenção que a opção do correio eletrónico do fórum tem de estar ativa. Poderá encontrar essa opção em Geral > Comunicação do Cliente > Configuração de Email.', + + 'CONTACT_US_INFO' => 'Informação para contacto', + 'CONTACT_US_INFO_EXPLAIN' => 'A mensagem é mostrada na página de contacto', + 'CONTACT_US_INFO_PREVIEW' => 'Previsão da Página de Informações de contacto', + 'CONTACT_US_INFO_UPDATED' => 'A página das informações de contacto foi atualizada.', +)); + +// Load Settings +$lang = array_merge($lang, array( + 'ACP_LOAD_SETTINGS_EXPLAIN' => 'Aqui pode ativar e desativar certas funções do Fórum que podem reduzir o total de processamento pedido. Para a maioria dos Servidores não é necessário desativar nenhuma função. No entanto, em certos sistemas ou em ambientes de hospedagem compartilhada pode ser benéfico se desativar alguns recursos que não sejam realmente necessários. Pode também especificar limites para a carga do sistema e ativar sessões, além das quais o Fórum sairá do ar.', + + 'ALLOW_CDN' => 'Permitir o uso de redes de entrega de conteúdo de terceiros', + 'ALLOW_CDN_EXPLAIN' => 'Se esta configuração for ativada, alguns ficheiros podem ser colocados em servidores externos em vez do seu próprio servidor. Isso reduz o consumo de largura de banda no seu servidor, mas alguns administradores podem colocar questões de privacidade. Em instalações phpBB padrão inclui o carregamento do “jQuery†e do tipo de letra “Open Sans†de rede de distribuição de conteúdo do Google.', + 'ALLOW_LIVE_SEARCHES' => 'Permitir pesquisas ativas', + 'ALLOW_LIVE_SEARCHES_EXPLAIN' => 'Se esta configuração for ativada, serão sugeridas aos utilizadores palavras-chave, à medida que digitam em certos campos do fórum.', + 'CUSTOM_PROFILE_FIELDS' => 'Campos do Perfil Personalizados', + 'LIMIT_LOAD' => 'Limite de carga do Sistema', + 'LIMIT_LOAD_EXPLAIN' => 'Se, durante 1 minuto, a carga do Sistema ultrapassar este valor o Fórum fica fora de serviço. O valor 1 corresponde a aproximadamente 100% da capacidade dum Processador. Este sistema só funciona em Servidores UNIX e onde esta Mensagem é acessível. Este valor regressa a zero se o phpBB não atingir o limite de leitura.', + 'LIMIT_SESSIONS' => 'Limite de Sessões', + 'LIMIT_SESSIONS_EXPLAIN' => 'Se o número de sessões, durante 1 minuto, ultrapassar este valor o Fórum fica fora de serviço. (0 = ilimitadas).', + 'LOAD_CPF_MEMBERLIST' => 'Mostra os campos Personalizados na Lista dos Utilizadores', + 'LOAD_CPF_PM' => 'Mostra os campos Personalizados do seu perfil nas Mensagens Privadas', + 'LOAD_CPF_VIEWPROFILE' => 'Mostra os campos Personalizados no Perfil dos Utilizadores', + 'LOAD_CPF_VIEWTOPIC' => 'Mostra os campos Personalizados nos Tópicos', + 'LOAD_USER_ACTIVITY' => 'Mostra a atividade dos Utilizadores', + 'LOAD_USER_ACTIVITY_EXPLAIN' => 'Mostra o Fórum/Tópico ativo no Perfil do Utilizador e no Painel de Controle do Utilizador. Recomenda-se desativar em Fóruns com mais de um milhão de Mensagens.', + 'LOAD_USER_ACTIVITY_LIMIT' => 'Limite de Mensagens da atividade do utilizador', + 'LOAD_USER_ACTIVITY_LIMIT_EXPLAIN' => 'O tópico / fórum ativo não será exibido para os utilizadores que tenham mais do que este número de mensagens. Defina o valor como 0 para desativar o limite.', + 'READ_NOTIFICATION_EXPIRE_DAYS' => 'Expiração da notificação de leitura', + 'READ_NOTIFICATION_EXPIRE_DAYS_EXPLAIN' => 'Número de dias que irá decorrer antes que uma notificação de leitura seja automaticamente excluída. Defina o valor como 0 para fazer notificações permanentes.', + 'RECOMPILE_STYLES' => 'Recompilar os componentes de Estilo (Templates)', + 'RECOMPILE_STYLES_EXPLAIN' => 'Verificar por atualizações nos ficheiros de estilo no sistema de ficheiros e atualizar.', + 'YES_ACCURATE_PM_BUTTON' => 'Ativar o botão PM específico da permissão em páginas de tópicos', + 'YES_ACCURATE_PM_BUTTON_EXPLAIN' => 'Se esta configuração estiver ativada, somente os perfis de usuários que têm permissão para ler mensagens privadas terão um botão de mensagem privadas.', + 'YES_ANON_READ_MARKING' => 'Ativa marcação de Tópicos por convidados', + 'YES_ANON_READ_MARKING_EXPLAIN' => 'Armazena a marcação de lido/não lido para convidados. Se desativado, as Mensagens serão marcadas sempre como lidas pelos visitantes.', + 'YES_BIRTHDAYS' => 'Ativa a lista de aniversariantes', + 'YES_BIRTHDAYS_EXPLAIN' => 'Se desativar esta opção a lista de aniversariantes não será mostrada. Para que esta opção funcione a opção de ativar Aniversários também precisa estar ativada.', + 'YES_JUMPBOX' => 'Ativa a visualização de Jumpbox', + 'YES_MODERATORS' => 'Ativa a visualização de Moderadores', + 'YES_ONLINE' => 'Ativa lista de Utilizadores online', + 'YES_ONLINE_EXPLAIN' => 'Mostra informação de Utilizador online nas páginas de índice, Fóruns e Tópicos.', + 'YES_ONLINE_GUESTS' => 'Ativa lista de convidados online na visualização de quem está online', + 'YES_ONLINE_GUESTS_EXPLAIN' => 'Permitir visualização de informações de Utilizadores convidados na visualização de quem está online.', + 'YES_ONLINE_TRACK' => 'Ativa visualização da imagem do Utilizador online', + 'YES_ONLINE_TRACK_EXPLAIN' => 'Mostra informação online para Utilizadores em Perfil e Tópicos.', + 'YES_POST_MARKING' => 'Ativa Tópicos pontuados', + 'YES_POST_MARKING_EXPLAIN' => 'Indica se o Utilizador tem colocado Mensagens num Tópico.', + 'YES_READ_MARKING' => 'Ativa a marcação de Tópicos no Servidor', + 'YES_READ_MARKING_EXPLAIN' => 'Guarda a informação de lido/não lido na Base de Dados em vez de guardá-la em cookie.', + 'YES_UNREAD_SEARCH' => 'Ativar pesquisa de novas mensagens', +)); + +// Auth settings +$lang = array_merge($lang, array( + 'ACP_AUTH_SETTINGS_EXPLAIN' => 'O phpBB suporta Plugins ou Módulos que permitem definir o método de autenticação dos Utilizadores que entram no Fórum. São disponibilizados três plugins: DB, LDAP e Apache. Nem todos os Módulos necessitam de informação adicional. Preencha apenas os campos relevantes para o método selecionado.', + + 'AUTH_METHOD' => 'Selecione um método de autenticação', + + 'AUTH_PROVIDER_OAUTH_ERROR_ELEMENT_MISSING' => 'Tem de indicar a key e o secret de cada OAuth service provider ativado. É necessário apenas uma de cada OAuth service provider.', + 'AUTH_PROVIDER_OAUTH_EXPLAIN' => 'Cada provedor de OAuth requer um segredo único e fundamental para se autenticar com o servidor externo. Este deve ser fornecido pelo serviço OAuth quando regista o seu site e deve ser inserido exatamente como fornecido.
    Os serviços que não tenham uma chave e um segredo aqui inseridos não estarão disponíveis para serem usados pelos utilizadores do fórum. Tenha em atenção que o utilizador pode ainda registar-se e ligar-se usando a DB authentication plug-in.', + 'AUTH_PROVIDER_OAUTH_KEY' => 'Key', + 'AUTH_PROVIDER_OAUTH_TITLE' => 'OAuth', + 'AUTH_PROVIDER_OAUTH_SECRET' => 'Secret', + + 'APACHE_SETUP_BEFORE_USE' => 'Tem que configurar a autenticação no Apache antes de mudar para este método de autenticação. Certifique-se de que o nome do Utilizador usado para a autenticação Apache seja a mesma que o seu nome de Utilizador no phpBB. A autenticação Apache apenas pode ser utilizada com o mod_php (com uma versão CGI não funciona) e o safe_mode desativados.', + + 'LDAP' => 'LDAP', + 'LDAP_DN' => 'LDAP base dn', + 'LDAP_DN_EXPLAIN' => 'Este é o Nome Distinto (dn), determinando a informação do Utilizador, Exemplo: o=Minha Companhia, c=EU.', + 'LDAP_EMAIL' => 'Atributo do email LDAP', + 'LDAP_EMAIL_EXPLAIN' => 'Atribui automaticamente ao nome de seu atributo de entrada de email do Utilizador (se existir um) o email ao novo Utilizador. Se deixar em branco, resulta num endereço de email vazio para os Utilizadores que entrem pela primeira vez ao Fórum.', + 'LDAP_INCORRECT_USER_PASSWORD' => 'As ligações para o Servidor LDAP falharam com nome de Utilizador e senha indicados.', + 'LDAP_NO_EMAIL' => 'O Atributo de email especificado não existe.', + 'LDAP_NO_IDENTITY' => 'Não foi possível encontrar uma identificação de Acesso para %s.', + 'LDAP_PASSWORD' => 'Senha LDAP', + 'LDAP_PASSWORD_EXPLAIN' => 'Deixe este campo em branco para acesso anónimo. Caso contrário preencha com a senha do Utilizador indicado. Necessário para Active Directory Servers.
    Aviso: Esta senha será armazenada como texto simples na Base de Dados, visível a todos que podem aceder à Base de Dados ou a quem pode ver esta página de configuração.', + 'LDAP_PORT' => 'Porta LDAP do Servidor', + 'LDAP_PORT_EXPLAIN' => 'Opcionalmente pode definir uma porta para o Servidor LDAP que tem como padrão a porta 389.', + 'LDAP_SERVER' => 'Nome do Servidor de LDAP', + 'LDAP_SERVER_EXPLAIN' => 'Se usando LDAP este é o nome ou IP do Servidor.', + 'LDAP_UID' => 'LDAP uid', + 'LDAP_UID_EXPLAIN' => 'Esta é a chave pela qual procurar para uma dada identificação de Utilizador. Igual a: uid, sn, etc.', + 'LDAP_USER' => 'Nome de Utilizador LDAP', + 'LDAP_USER_EXPLAIN' => 'Deixe em branco para acesso anónimo. Se preenchido o phpBB irá ligar ao Servidor LDAP com o nome de Utilizador indicado.', + 'LDAP_USER_FILTER' => 'Filtro do Utilizador LDAP', + 'LDAP_USER_FILTER_EXPLAIN' => 'Pode optar por aumentar o limite de objetos pesquisados com filtros adicionais. Por exemplo, objectClass=posixGroup deve resultar na utilização de (&(uid=$username)(objectClass=posixGroup)).', +)); + +// Server Settings +$lang = array_merge($lang, array( + 'ACP_SERVER_SETTINGS_EXPLAIN' => 'Aqui são definidas as configurações dos Servidores e Domínios. Certifique-se de que os dados estão corretos. Eventuais erros resultarão em emails contendo informações incorretas. Quando introduzir o domínio, inclua o http:// ou outro protocolo. Altere apenas o número da Porta do Servidor se souber que seu Servidor usa um valor diferente, a Porta 80 é usada na maioria dos casos.', + + 'ENABLE_GZIP' => 'Ativa Compressão GZip', + 'ENABLE_GZIP_EXPLAIN' => 'Conteúdo gerado será comprimido antes de enviado ao utilizador. Isto pode reduzir o tráfego na rede, mas irá aumentar o uso do CPU no servidor e cliente. Requer a utilização da extensão PHP zlib.', + 'FORCE_SERVER_VARS' => 'Forçar configurações da URL do Servidor', + 'FORCE_SERVER_VARS_EXPLAIN' => 'Se selecionar Sim serão usadas as configurações aqui definidas em alternativa aos valores definidos automaticamente.', + 'ICONS_PATH' => 'Caminho para Ficheiro de Ãcones', + 'ICONS_PATH_EXPLAIN' => 'Caminho desde a raiz do phpBB. Exemplo: images/icons.', + 'MOD_REWRITE_ENABLE' => 'Ativar URL Rewriting', + 'MOD_REWRITE_ENABLE_EXPLAIN' => 'Quando ativado, as URLs que contenham ’app.php’ serão reescritas para remover o nome do ficheiro (ou seja, app.php/foo transforma-se em /foo). O mod_rewrite tem que estar ativado no Servidor Apache. Ativando esta opção sem o mod_rewrite, poderá comprometer o funcionamento do seu Fórum.', + 'MOD_REWRITE_DISABLED' => 'O módulo mod_rewrite está desativado no seu servidor web Apache. Ative o módulo ou entre em contacto com seu serviço de hospedagem web, para ativar este recurso.', + 'MOD_REWRITE_INFORMATION_UNAVAILABLE' => 'É impossível determinar se este servidor suporta regravação de URL. A configuração pode estar ativada, mas se a regravação não estiver disponível os caminhos gerados por este fórum (para uso em links) podem não funcionar. Contacte o seu fornecedor de hospedagem web, se não tiver a certeza se pode ou não ativar com segurança este recurso.', + 'PATH_SETTINGS' => 'Configurações do Caminho de Pastas', + 'RANKS_PATH' => 'Caminho para Ficheiro de Imagens de Classificação', + 'RANKS_PATH_EXPLAIN' => 'Caminho desde a raiz do phpBB. Exemplo: images/ranks.', + 'SCRIPT_PATH' => 'Caminho do script', + 'SCRIPT_PATH_EXPLAIN' => 'Caminho onde o phpBB está instalado em relação ao Domínio. Exemplo: phpBB3.', + 'SERVER_NAME' => 'Nome do Domínio', + 'SERVER_NAME_EXPLAIN' => 'O nome do Domínio que executa o Fórum. Exemplo: www.exemplo.com.', + 'SERVER_PORT' => 'Porta do Servidor', + 'SERVER_PORT_EXPLAIN' => 'A Porta usada pelo Servidor, normalmente a 80. Altere apenas se for diferente.', + 'SERVER_PROTOCOL' => 'Protocolo do Servidor', + 'SERVER_PROTOCOL_EXPLAIN' => 'Será usado como o protocolo do servidor se essa configuração for forçada. Se vazio ou não forçado, o protocolo é determinado pela configuração de segurança do cookie http:// ou https://.', + 'SERVER_URL_SETTINGS' => 'Configurações da URL do Servidor', + 'SMILIES_PATH' => 'Caminho da pasta dos Ficheiros de Emoções', + 'SMILIES_PATH_EXPLAIN' => 'Caminho da pasta desde a raiz do phpBB. Exemplo: images/smilies.', + 'UPLOAD_ICONS_PATH' => 'Caminho da pasta de Ficheiro de Ãcones de Grupos de Extensões', + 'UPLOAD_ICONS_PATH_EXPLAIN' => 'Caminho da pasta desde a raiz do phpBB. Exemplo: images/upload_icons.', + 'USE_SYSTEM_CRON' => 'Executar tarefas periódicas do sistema cron', + 'USE_SYSTEM_CRON_EXPLAIN' => 'Quando desligado, o phpBB organizará as tarefas periódicas para serem executadas automaticamente. Quando ligado, o phpBB não organizará as tarefas periódicas, por si só, um administrador do sistema deve executar o bin/phpbbcli.php cron:run para ser executado pelo sistema cron a intervalos regulares(por exemplo, a cada 5 minutos).', +)); + +// Security Settings +$lang = array_merge($lang, array( + 'ACP_SECURITY_SETTINGS_EXPLAIN' => 'Aqui configura as opções relacionadas as Sessões e Acesso.', + + 'ALL' => 'Todos', + 'ALLOW_AUTOLOGIN' => 'Permitir "Lembrar os meus acessos"', + 'ALLOW_AUTOLOGIN_EXPLAIN' => 'Determina se os utilizadores têm a opção "Lembrar os meus acessos" quando regressam ao Fórum.', + 'ALLOW_PASSWORD_RESET' => 'Permitir redefinição de senha ("Esqueci-me da senha")', + 'ALLOW_PASSWORD_RESET_EXPLAIN' => 'Determina se os utilizadores podem usar a opção "Esqueci-me da senha" na página de acesso para recuperar sua conta. Se usar um mecanismo de autenticação externo poderá desativar este recurso.', + 'AUTOLOGIN_LENGTH' => 'Duração em dias da chave "Lembrar os meus acessos"', + 'AUTOLOGIN_LENGTH_EXPLAIN' => 'Duração da chave "Esqueci-me da senha" em dias. 0 para desativar.', + 'BROWSER_VALID' => 'Validação do navegador', + 'BROWSER_VALID_EXPLAIN' => 'Ativa a validação do navegador em cada sessão, aumentando a segurança.', + 'CHECK_DNSBL' => 'Verifica se o IP está na lista de DNS bloqueados', + 'CHECK_DNSBL_EXPLAIN' => 'Se ativado, os endereços IP dos Utilizadores são verificados nos serviços DNSBL quando forem enviadas Mensagens ou criadas Contas de Utilizador: spamcop.net e www.spamhaus.org. Essa operação pode tornar-se demorada, dependendo da configuração do Servidor. Nesse caso, ou se acusar falsamente endereços de IP, desative esta opção.', + 'CLASS_B' => 'A.B', + 'CLASS_C' => 'A.B.C', + 'EMAIL_CHECK_MX' => 'Verificar se o Domínio é um registo MX válido', + 'EMAIL_CHECK_MX_EXPLAIN' => 'Se ativado, o Domínio do email, quando indicado nos Registos ou alterações de Perfil será verificado nos Registos MX.', + 'FORCE_PASS_CHANGE' => 'Força a mudança de Senha', + 'FORCE_PASS_CHANGE_EXPLAIN' => 'Duração em dias da Senha de acesso ao Fórum. Após este prazo é pedido ao Utilizador que altere a sua Senha. 0 para desativar.', + 'FORM_TIME_MAX' => 'Tempo máximo para enviar formas', + 'FORM_TIME_MAX_EXPLAIN' => 'Tempo máximo para enviar formas. Use -1 para desativar. Note que uma forma pode vir a ser inválida se a sessão expirar.', + 'FORM_SID_GUESTS' => 'Formas de laço para Sessões de Visitantes', + 'FORM_SID_GUESTS_EXPLAIN' => 'Se ativado, o símbolo do formulário emitido aos visitantes será de sessão exclusiva, podendo causar problemas com alguns ISPs.', + 'FORWARDED_FOR_VALID' => 'Cabeçalho X_FORWARDED_FOR validado', + 'FORWARDED_FOR_VALID_EXPLAIN' => 'As Sessões só continuarão se o cabeçalho X_FORWARDED_FOR enviado for igual ao enviado na última visita. Serão expulsos os IPs que contiverem o mesmo cabeçalho X_FORWARDED_FOR validado.', + 'IP_VALID' => 'Verificação do IP da Sessão', + 'IP_VALID_EXPLAIN' => 'Determina como é autenticado o IP do Utilizador. Todos comparam o endereço completo. A.B.C os primeiros x.x.x. A.B os primeiros x.x. Nenhum desativa a verificação. Em endereços IPv6: A.B.C compara os primeiros quatro blocos. A.B os primeiros 3 blocos.', + 'IP_LOGIN_LIMIT_MAX' => 'Número máximo de tentativas de acesso por endereço IP', + 'IP_LOGIN_LIMIT_MAX_EXPLAIN' => 'Limite de tentativas de acesso permitido, a partir de um único endereço IP, antes da tarefa anti-spambot ser acionada. Digite 0 para impedir que a tarefa anti-spambot de ser desencadeada por endereços IP.', + 'IP_LOGIN_LIMIT_TIME' => 'Tempo de duração para tentativas de acesso por endereço IP', + 'IP_LOGIN_LIMIT_TIME_EXPLAIN' => 'A permissão para tentar o acesso termina após este período.', + 'IP_LOGIN_LIMIT_USE_FORWARDED' => 'Tentativas de acesso limitadas a valores X_FORWARDED_FOR', + 'IP_LOGIN_LIMIT_USE_FORWARDED_EXPLAIN' => 'Em vez de limitar as tentativas de acesso pelo endereço IP, são limitadas por valores X_FORWARDED_FOR.
    Aviso: Só ative esta opção se o servidor proxy fornecer valores X_FORWARDED_FOR confiáveis.', + 'MAX_LOGIN_ATTEMPTS' => 'Número máximo de tentativas de acesso', + 'MAX_LOGIN_ATTEMPTS_EXPLAIN' => 'Após este número de acessos inválidos, o Utilizador terá que fazer a tarefa anti-spambot. Digite 0 para impedir que a tarefa anti-spambot seja acionada para contas de utilizador distintas.', + 'NO_IP_VALIDATION' => 'Nenhum', + 'NO_REF_VALIDATION' => 'Nenhum', + 'PASSWORD_TYPE' => 'Complexidade da Senha', + 'PASSWORD_TYPE_EXPLAIN' => 'Define a complexidade da Senha quando criada ou alterada.', + 'PASS_TYPE_ALPHA' => 'Deve incluir Letras e Números', + 'PASS_TYPE_ANY' => 'Não definida', + 'PASS_TYPE_CASE' => 'Deve incluir maiúsculas e minúsculas', + 'PASS_TYPE_SYMBOL' => 'Deve incluir símbolos', + 'REF_HOST' => 'Apenas hosts válidos', + 'REF_PATH' => 'Também validar caminho', + 'REFERRER_VALID' => 'Validar Referência', + 'REFERRER_VALID_EXPLAIN' => 'Se ativado, a referência do POST vai verificar o local onde se encontra o Fórum no servidor. Isto pode causar problemas em Fóruns que usem muitos domínios ou acessos externos.', + 'TPL_ALLOW_PHP' => 'Permitir php nos Modelos (Templates)', + 'TPL_ALLOW_PHP_EXPLAIN' => 'Se ativado, os comandos PHP e INCLUDEPHP serão reconhecidos e inseridos nos Templates.', + 'UPLOAD_CERT_VALID' => 'Validar certificado de upload', + 'UPLOAD_CERT_VALID_EXPLAIN' => 'Se ativado, os certificados de uploads remotos serão validados. Isto requer que o pacote CA seja definido pelo ficheiro openssl.cafile ou pela configuração do curl.cainfo no seu php.ini.', +)); + +// Email Settings +$lang = array_merge($lang, array( + 'ACP_EMAIL_SETTINGS_EXPLAIN' => 'Esta informação é usada quando o Fórum envia emails aos Utilizadores. Certifique-se que usa um email válido. Qualquer Mensagem incorreta não será entregue neste endereço. Se o seu serviço de hospedagem não oferece um serviço nativo de email baseado no PHP, pode enviar mensagens através de SMTP. É necessário um Servidor adequado, não especifique qualquer nome antigo aqui! Se o servidor requer autenticação, introduza os nomes e senhas necessários. tenha em atenção que apenas é usada a autenticação básica. Implementações de autenticações diferentes não estão disponíveis.', + + 'ADMIN_EMAIL' => 'Endereço de Email do Remetente', + 'ADMIN_EMAIL_EXPLAIN' => 'Será utilizado o endereço do remetente em todos os emails. Este é o email padrão do Fórum para contacto e envio de emails pelo sistema phpBB. Será sempre usado como o endereço de email do Remetente', + 'BOARD_EMAIL_FORM' => 'Envio de emails pelos Utilizadores via Fórum', + 'BOARD_EMAIL_FORM_EXPLAIN' => 'Permite aos Utilizadores enviarem correio eletrónico pelo fórum, ao invés de mostrar o email dos mesmos.', + 'BOARD_HIDE_EMAILS' => 'Ocultar os endereços de email', + 'BOARD_HIDE_EMAILS_EXPLAIN' => 'Esta função esconde os endereços de email.', + 'CONTACT_EMAIL' => 'Endereço email de contacto', + 'CONTACT_EMAIL_EXPLAIN' => 'Este endereço será usado sempre que é necessário um contacto específico, (spam, erro de saída, etc). Pode ser sempre utilizado como endereço para envio e respostas nos emails.', + 'CONTACT_EMAIL_NAME' => 'Nome de Contacto', + 'CONTACT_EMAIL_NAME_EXPLAIN' => 'Este é o nome do contacto que os destinatários dos e-mails vão ver. Se não quer ter um nome de contacto, deixe este campo em branco.', + 'EMAIL_FORCE_SENDER' => 'Forçar Endereço de Email do Remetente', + 'EMAIL_FORCE_SENDER_EXPLAIN' => 'Irá colocar no Endereço-de-Retorno o Email do Remetente, ao invés de usar o utilizador local e o nome do servidor. Esta configuração fica sem efeito caso use SMTP.
    Aviso: Requer que o utilizador que está a ser usado pelo servidor seja adicionado como confiável na configuração do sendmail.', + 'EMAIL_PACKAGE_SIZE' => 'Tamanho do Pacote de email', + 'EMAIL_PACKAGE_SIZE_EXPLAIN' => 'Número de emails enviados por pacote.', + 'EMAIL_SIG' => 'Assinatura de Email', + 'EMAIL_SIG_EXPLAIN' => 'Este texto será anexado a todos os emails que o Fórum enviar.', + 'ENABLE_EMAIL' => 'Correio eletrónico do Fórum', + 'ENABLE_EMAIL_EXPLAIN' => 'Se estiver definido como desativado não poderá ser enviado correio eletrónico através do Fórum. Note que a ativação e configuração de contas requer que esta função esteja ativada. Desativar esta função impedirá que a ativação de novas contas seja feita pelo “Utilizador†ou “Administradorâ€.', + 'SEND_TEST_EMAIL' => 'Enviar email de teste', + 'SEND_TEST_EMAIL_EXPLAIN' => 'Irá ser enviado um email, para efeitos de teste, para o endereço definido na sua conta.', + 'SMTP_ALLOW_SELF_SIGNED' => 'Permitir certificados SSL autoassinados', + 'SMTP_ALLOW_SELF_SIGNED_EXPLAIN' => 'Permite conexões ao servidor SMTP com certificado SSL autoassinado.
    Aviso: Permitir certificados SSL autoassinados pode causar implicações de segurança.', + 'SMTP_AUTH_METHOD' => 'Método de Autenticação para o SMTP', + 'SMTP_AUTH_METHOD_EXPLAIN' => 'Apenas usado se um Nome/Senha é atribuído, pergunte ao seu ISP se não sabe que método usa.', + 'SMTP_CRAM_MD5' => 'CRAM-MD5', + 'SMTP_DIGEST_MD5' => 'DIGEST-MD5', + 'SMTP_LOGIN' => 'ENTRAR', + 'SMTP_PASSWORD' => 'Senha do SMTP', + 'SMTP_PASSWORD_EXPLAIN' => 'Só introduza a Senha se o Servidor de SMTP a pedir.
    Aviso: Esta senha será armazenada como texto simples na Base de Dados, visível a todos que podem aceder à Base de Dados ou a quem pode ver esta página de configuração.', + 'SMTP_PLAIN' => 'PLAIN', + 'SMTP_POP_BEFORE_SMTP' => 'POP-BEFORE-SMTP', + 'SMTP_PORT' => 'Porta do Servidor de SMTP', + 'SMTP_PORT_EXPLAIN' => 'Mude apenas se tiver a certeza de que seu Servidor de SMTP está numa porta diferente.', + 'SMTP_SERVER' => 'Endereço do servidor de SMTP e o protocolo', + 'SMTP_SERVER_EXPLAIN' => 'Atenção que tem de fornecer o protocolo que o seu servidor usa. Se estiver a usar SSL, deverá colocar "ssl: //your.mailserver.com"', + 'SMTP_SETTINGS' => 'Configurações do SMTP', + 'SMTP_USERNAME' => 'Nome de Utilizador SMTP', + 'SMTP_USERNAME_EXPLAIN' => 'Só introduza um Nome se o Servidor de SMTP o pedir.', + 'SMTP_VERIFY_PEER' => 'Verificar certificado SSL', + 'SMTP_VERIFY_PEER_EXPLAIN' => 'Requer a verificação do certificado SSL usado pelo servidor SMTP.
    Aviso: Conectar pontos de rede com certificados SSL não verificados pode causar implicações de segurança.', + 'SMTP_VERIFY_PEER_NAME' => 'Verificar nome do ponto de rede SMTP', + 'SMTP_VERIFY_PEER_NAME_EXPLAIN' => 'Requer verificação do nome do ponto de rede para os servidores SMTP que usem conexões SSL / TLS.
    Aviso: Conectar a pontos de rede não verificados pode causar implicações de segurança.', + 'TEST_EMAIL_SENT' => 'O email de teste foi enviado.
    Caso não o receba, por favor, verifique a sua configuração.

    Caso necessite de assistência, visite o Fórum Oficial de Suporte phpBB (Em inglês) ou o Fórum Oficial Português de Suporte phpBB.', + + 'USE_SMTP' => 'Usar um Servidor de SMTP para enviar emails', + 'USE_SMTP_EXPLAIN' => 'Marque “Sim†se quer ou tem que enviar os emails recorrendo a um Servidor SMTP em vez da função de email do Servidor.', +)); + +// Jabber settings +$lang = array_merge($lang, array( + 'ACP_JABBER_SETTINGS_EXPLAIN' => 'Aqui pode ativar e controlar o uso do Jabber para Mensagens Instantâneas e Notícias. Jabber é um Protocolo código-aberto e por isso mesmo disponível a qualquer pessoa interessada. Alguns Servidores de Jabber incluem Gateways e transportes que permitem que contacte Utilizadores em outras redes. Nem todos os servidores oferecem todos os transportes, e mudanças nos protocolos podem evitar operações de transportes. Note que pode levar muitos segundos até à atualização dos detalhes da conta de Jabber, então não interrompa a execução dos procedimentos enquanto não estiver completo!', + + 'JAB_ALLOW_SELF_SIGNED' => 'Permitir certificados SSL autoassinados', + 'JAB_ALLOW_SELF_SIGNED_EXPLAIN' => 'Permite conexões ao servidor Jabber com certificado SSL autoassinado.
    Aviso: Permitir certificados SSL autoassinados pode causar implicações de segurança.', + 'JAB_ENABLE' => 'Ativar Jabber', + 'JAB_ENABLE_EXPLAIN' => 'Ativa o uso de Mensagens e Avisos Jabber.', + 'JAB_GTALK_NOTE' => 'Por favor, note que o GTalk não irá funcionar porque a função dns_get_record não pôde ser encontrada. Esta função não se encontra disponível no PHP4, e não é implementada nas plataformas do Windows. Isto não é executável atualmente em sistemas BSD-based, incluindo o Mac OS.', + 'JAB_PACKAGE_SIZE' => 'Tamanho do pacote de Jabber', + 'JAB_PACKAGE_SIZE_EXPLAIN' => 'Este é o número de Mensagens enviadas num pacote. Se for 0, a Mensagem será enviada imediatamente e não será colocada em fila de espera para posterior envio.', + 'JAB_PASSWORD' => 'Senha Jabber', + 'JAB_PASSWORD_EXPLAIN' => 'Aviso: Esta senha será armazenada como texto simples na Base de Dados, visível a todos que podem aceder à Base de Dados ou a quem pode ver esta página de configuração.', + 'JAB_PORT' => 'Porta do Jabber', + 'JAB_PORT_EXPLAIN' => 'Deixe em branco se souber que a porta usada é 5222. Caso contrário, coloque a porta correta', + 'JAB_SERVER' => 'Servidor Jabber', + 'JAB_SERVER_EXPLAIN' => 'Veja a lista de Servidores em %sjabber.org%s.', + 'JAB_SETTINGS_CHANGED' => 'Configurações do Jabber alteradas com sucesso.', + 'JAB_USE_SSL' => 'Usar SSL para se ligar', + 'JAB_USE_SSL_EXPLAIN' => 'Se ativado, será tentado efetuar-se uma ligação segura. A porta Jabber será alterada para 5223 se a porta 5222 tiver sido indicada.', + 'JAB_USERNAME' => 'Nome de Utilizador Jabber ou JID', + 'JAB_USERNAME_EXPLAIN' => 'Especifique um nome de utilizador registado ou um JID válido. O nome de utilizador não será verificado. Se especificares o nome de utilizador, o JID usado será o nome de utilizador e o servidor aquele especificado acima. Caso contrário, especifique um JID válido, por exemplo utilizador@jabber.org.', + 'JAB_VERIFY_PEER' => 'Verificar certificado SSL', + 'JAB_VERIFY_PEER_EXPLAIN' => 'Requer a verificação do certificado SSL usado pelo servidor Jabber.
    Aviso: Conectar pontos de rede com certificados SSL não verificados pode causar implicações de segurança.', + 'JAB_VERIFY_PEER_NAME' => 'Verificar nome do ponto de rede Jabber', + 'JAB_VERIFY_PEER_NAME_EXPLAIN' => 'Requer verificação do nome do ponto de rede para os servidores Jabber que usem conexões SSL / TLS.
    Aviso: Conectar a pontos de rede não verificados pode causar implicações de segurança.', +)); diff --git a/includes/shared/phpbb3/language/lang_portugese/acp/common.php b/includes/shared/phpbb3/language/lang_portugese/acp/common.php new file mode 100644 index 00000000..6b465817 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_portugese/acp/common.php @@ -0,0 +1,832 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* @Traduzido por: http://www.phpbb-pt.com - segundo as normas do Acordo Ortográfico +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// Common +$lang = array_merge($lang, array( + 'ACP_ADMINISTRATORS' => 'Permissões dos Administradores', + 'ACP_ADMIN_LOGS' => 'Registo do Administrador', + 'ACP_ADMIN_ROLES' => 'Categorias dos Administradores', + 'ACP_ATTACHMENTS' => 'Anexos', + 'ACP_ATTACHMENT_SETTINGS' => 'Configuração dos Anexos', + 'ACP_AUTH_SETTINGS' => 'Autenticação', + 'ACP_AUTOMATION' => 'Automação', + 'ACP_AVATAR_SETTINGS' => 'Configuração do Avatar', + + 'ACP_BACKUP' => 'Criar Cópia de Segurança', + 'ACP_BAN' => 'Expulsões', + 'ACP_BAN_EMAILS' => 'Expulsar emails', + 'ACP_BAN_IPS' => 'Expulsar IPs', + 'ACP_BAN_USERNAMES' => 'Expulsar Utilizadores', + 'ACP_BBCODES' => 'BBCodes', + 'ACP_BOARD_CONFIGURATION' => 'Configuração Geral', + 'ACP_BOARD_FEATURES' => 'Ferramentas do Fórum', + 'ACP_BOARD_MANAGEMENT' => 'Administração do Fórum', + 'ACP_BOARD_SETTINGS' => 'Configuração do Fórum', + 'ACP_BOTS' => 'Motores de Busca', + + 'ACP_CAPTCHA' => 'CAPTCHA', + + 'ACP_CAT_CUSTOMISE' => 'Personalização', + 'ACP_CAT_DATABASE' => 'Base de Dados', + 'ACP_CAT_DOT_MODS' => 'Extensões', + 'ACP_CAT_FORUMS' => 'Fóruns', + 'ACP_CAT_GENERAL' => 'Geral', + 'ACP_CAT_MAINTENANCE' => 'Manutenção', + 'ACP_CAT_PERMISSIONS' => 'Permissões', + 'ACP_CAT_POSTING' => 'Mensagens', + 'ACP_CAT_STYLES' => 'Estilos', + 'ACP_CAT_SYSTEM' => 'Sistema', + 'ACP_CAT_USERGROUP' => 'Utilizadores e Grupos', + 'ACP_CAT_USERS' => 'Utilizadores', + 'ACP_CLIENT_COMMUNICATION' => 'Comunicação do Cliente', + 'ACP_COOKIE_SETTINGS' => 'Configurações de Cookie', + 'ACP_CONTACT' => 'Página de Contacto', + 'ACP_CONTACT_SETTINGS' => 'Configurações da Página de Contacto', + 'ACP_CRITICAL_LOGS' => 'Registo de Erros', + 'ACP_CUSTOM_PROFILE_FIELDS' => 'Personalizar o Perfil', + + 'ACP_DATABASE' => 'Administração da Base de Dados', + 'ACP_DISALLOW' => 'Desativar', + 'ACP_DISALLOW_USERNAMES' => 'Nomes Proibidos', + + 'ACP_EMAIL_SETTINGS' => 'Configurações de email', + 'ACP_EXTENSION_GROUPS' => 'Administrar Grupos de Extensões', + 'ACP_EXTENSION_MANAGEMENT' => 'Administração de Extensões', + 'ACP_EXTENSIONS' => 'Gerir Extensões', + + 'ACP_FORUM_BASED_PERMISSIONS' => 'Permissões do Fórum', + 'ACP_FORUM_LOGS' => 'Registos do Fórum', + 'ACP_FORUM_MANAGEMENT' => 'Administração do Fórum', + 'ACP_FORUM_MODERATORS' => 'Permissões dos Moderadores nos Fóruns', + 'ACP_FORUM_PERMISSIONS' => 'Permissões de Fóruns', + 'ACP_FORUM_PERMISSIONS_COPY' => 'Copiar Permissões de Fóruns', + 'ACP_FORUM_ROLES' => 'Categorias dos Fóruns', + + 'ACP_GENERAL_CONFIGURATION' => 'Configuração Geral', + 'ACP_GENERAL_TASKS' => 'Tarefas Gerais', + 'ACP_GLOBAL_MODERATORS' => 'Permissões dos Moderadores Globais', + 'ACP_GLOBAL_PERMISSIONS' => 'Permissões Globais', + 'ACP_GROUPS' => 'Grupos', + 'ACP_GROUPS_FORUM_PERMISSIONS' => 'Permissões dos Grupos nos Fóruns', + 'ACP_GROUPS_MANAGE' => 'Administrar Grupos', + 'ACP_GROUPS_MANAGEMENT' => 'Administração de Grupos', + 'ACP_GROUPS_PERMISSIONS' => 'Permissões do Grupo', + 'ACP_GROUPS_POSITION' => 'Administrar posições dos Grupos', + + 'ACP_HELP_PHPBB' => 'Ajude o phpBB', + + 'ACP_ICONS' => 'Ãcones', + 'ACP_ICONS_SMILIES' => 'Ãcones/Emoções', + 'ACP_INACTIVE_USERS' => 'Utilizadores Inativos', + 'ACP_INDEX' => 'Ãndice do ACP', + + 'ACP_JABBER_SETTINGS' => 'Configurações de Jabber', + + 'ACP_LANGUAGE' => 'Administração de Idiomas', + 'ACP_LANGUAGE_PACKS' => 'Administração de Idiomas', + 'ACP_LOAD_SETTINGS' => 'Configurações de Carga', + 'ACP_LOGGING' => 'Ligando', + + 'ACP_MAIN' => 'Ãndice Principal', + + 'ACP_MANAGE_ATTACHMENTS' => 'Administrar anexos', + 'ACP_MANAGE_ATTACHMENTS_EXPLAIN' => 'Aqui pode listar e excluir ficheiros anexados a mensagens e mensagens privadas.', + + 'ACP_MANAGE_EXTENSIONS' => 'Administrar Extensões', + 'ACP_MANAGE_FORUMS' => 'Administrar Fóruns', + 'ACP_MANAGE_RANKS' => 'Administrar Classificações', + 'ACP_MANAGE_REASONS' => 'Administrar razões de Denúncia', + 'ACP_MANAGE_USERS' => 'Administrar Utilizadores', + 'ACP_MASS_EMAIL' => 'Email em Massa', + 'ACP_MESSAGES' => 'Mensagens', + 'ACP_MESSAGE_SETTINGS' => 'Configuração das Mensagens Privadas', + 'ACP_MODULE_MANAGEMENT' => 'Administração de Módulos', + 'ACP_MOD_LOGS' => 'Registo do Moderador', + 'ACP_MOD_ROLES' => 'Categorias dos Moderadores', + + 'ACP_NO_ITEMS' => 'Não há itens ainda.', + + 'ACP_ORPHAN_ATTACHMENTS' => 'Anexos órfãos', + + 'ACP_PERMISSIONS' => 'Permissões', + 'ACP_PERMISSION_MASKS' => 'Cenário das Permissões', + 'ACP_PERMISSION_ROLES' => 'Categorias das Permissões', + 'ACP_PERMISSION_TRACE' => 'Traçar Permissão', + 'ACP_PHP_INFO' => 'Informação PHP', + 'ACP_POST_SETTINGS' => 'Configuração das Mensagens', + 'ACP_PRUNE_FORUMS' => 'Limpeza de Fóruns', + 'ACP_PRUNE_USERS' => 'Limpeza de Utilizadores', + 'ACP_PRUNING' => 'Limpar', + + 'ACP_QUICK_ACCESS' => 'Acesso Rápido', + + 'ACP_RANKS' => 'Classificações', + 'ACP_REASONS' => 'Razões de Denúncia', + 'ACP_REGISTER_SETTINGS' => 'Configuração do Registo', + + 'ACP_RESTORE' => 'Restaurar Base de Dados', + + 'ACP_FEED' => 'Administração de Feed', + 'ACP_FEED_SETTINGS' => 'Definições de Feed', + + 'ACP_SEARCH' => 'Configuração da Pesquisa', + 'ACP_SEARCH_INDEX' => 'Ãndice da Pesquisa', + 'ACP_SEARCH_SETTINGS' => 'Configurações de Pesquisa', + + 'ACP_SECURITY_SETTINGS' => 'Configurações de Segurança', + 'ACP_SERVER_CONFIGURATION' => 'Configurações do Servidor', + 'ACP_SERVER_SETTINGS' => 'Configurações do Servidor', + 'ACP_SIGNATURE_SETTINGS' => 'Configuração da Assinatura', + 'ACP_SMILIES' => 'Emoções', + 'ACP_STYLE_MANAGEMENT' => 'Administração de Estilos', + 'ACP_STYLES' => 'Gerir Estilos', + 'ACP_STYLES_CACHE' => 'Limpar Cache', + 'ACP_STYLES_INSTALL' => 'Instalar Estilos', + + 'ACP_SUBMIT_CHANGES' => 'Submeter alterações', + + 'ACP_TEMPLATES' => 'Templates', + 'ACP_THEMES' => 'Temas', + + 'ACP_UPDATE' => 'Atualizar', + 'ACP_USERS_FORUM_PERMISSIONS' => 'Permissões dos Utilizadores nos Fóruns', + 'ACP_USERS_LOGS' => 'Registo do Utilizador', + 'ACP_USERS_PERMISSIONS' => 'Permissões do Utilizador', + 'ACP_USER_ATTACH' => 'Anexos', + 'ACP_USER_AVATAR' => 'Avatar', + 'ACP_USER_FEEDBACK' => 'Relatório', + 'ACP_USER_GROUPS' => 'Grupos', + 'ACP_USER_MANAGEMENT' => 'Administração de Utilizadores', + 'ACP_USER_OVERVIEW' => 'Visão Geral', + 'ACP_USER_PERM' => 'Permissões', + 'ACP_USER_PREFS' => 'Preferências', + 'ACP_USER_PROFILE' => 'Perfil', + 'ACP_USER_RANK' => 'Classificação', + 'ACP_USER_ROLES' => 'Categorias dos Utilizadores', + 'ACP_USER_SECURITY' => 'Segurança do Utilizador', + 'ACP_USER_SIG' => 'Assinatura', + 'ACP_USER_WARNINGS' => 'Avisos', + + 'ACP_VC_SETTINGS' => 'Medidas anti-spambot', + 'ACP_VC_CAPTCHA_DISPLAY' => 'Previsão da Imagem CAPTCHA', + 'ACP_VERSION_CHECK' => 'Verificar Atualizações', + 'ACP_VIEW_ADMIN_PERMISSIONS' => 'Permissões de Administrador', + 'ACP_VIEW_FORUM_MOD_PERMISSIONS' => 'Permissões de Moderador de Fórum', + 'ACP_VIEW_FORUM_PERMISSIONS' => 'Permissões de Fórum', + 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS' => 'Permissões de Moderador Global', + 'ACP_VIEW_USER_PERMISSIONS' => 'Permissões de Utilizador', + + 'ACP_WORDS' => 'Censura de Palavras', + + 'ACTION' => 'Ação', + 'ACTIONS' => 'Ações', + 'ACTIVATE' => 'Ativar', + 'ADD' => 'Adicionar', + 'ADMIN' => 'Administração', + 'ADMIN_INDEX' => 'Ãndice do Painel de Administração', + 'ADMIN_PANEL' => 'Painel de Administração', + + 'ADM_LOGOUT' => 'Sair do ACP', + 'ADM_LOGGED_OUT' => 'Saiu com sucesso do ACP', + + 'BACK' => 'Voltar', + + 'CANNOT_CHANGE_FILE_GROUP' => 'Incapaz de alterar grupo de ficheiros', + 'CANNOT_CHANGE_FILE_PERMISSIONS' => 'Incapaz de alterar permissões de ficheiros', + 'CANNOT_COPY_FILES' => 'Incapaz de copiar ficheiros', + 'CANNOT_CREATE_SYMLINK' => 'Incapaz de criar um link simbólico', + 'CANNOT_DELETE_FILES' => 'Incapaz de apagar ficheiros do sistema', + 'CANNOT_DUMP_FILE' => 'Incapaz de colocar ficheiro', + 'CANNOT_MIRROR_DIRECTORY' => 'Incapaz de criar uma cópia de um diretório', + 'CANNOT_RENAME_FILE' => 'Incapaz de renomear um ficheiro do sistema', + 'CANNOT_TOUCH_FILES' => 'Incapaz de determinar se um ficheiro existe', + + 'CONTAINER_EXCEPTION' => 'O phpBB deparou-se com um erro ao construir o contentor, devido a uma extensão instalada. Por esse motivo, todas as extensões foram temporariamente desativadas. Por favor, limpe a cache do seu fórum. Todas as extensões irão ser automaticamente de novo ativadas assim que o erro do contentor seja resolvido. Caso este erro persista, por favor, visite phpBB.com para assistência.', + 'EXCEPTION' => 'Exceção', + + 'COLOUR_SWATCH' => 'Cores seguras de navegação', + 'CONFIG_UPDATED' => 'Configuração atualizada com sucesso.', + 'CRON_LOCK_ERROR' => 'Não foi possível obter o Cron lock.', + 'CRON_NO_SUCH_TASK' => 'A tarefa Cron “%s†não foi encontrada.', + 'CRON_NO_TASK' => 'Não há nenhuma tarefa Cron para executar.', + 'CRON_NO_TASKS' => 'Não foram encontradas tarefas Cron.', + 'CURRENT_VERSION' => 'Versão atual', + + 'DEACTIVATE' => 'Desativar', + 'DIRECTORY_DOES_NOT_EXIST' => 'A Pasta "%s" selecionada não existe.', + 'DIRECTORY_NOT_DIR' => 'A Pasta "%s" selecionada não é uma pasta.', + 'DIRECTORY_NOT_WRITABLE' => 'A Pasta "%s" selecionada não pode ser escrita.', + 'DISABLE' => 'Desativar', + 'DOWNLOAD' => 'Transferir', + 'DOWNLOAD_AS' => 'Descarregar como', + 'DOWNLOAD_STORE' => 'Descarregar ou Guardar o Ficheiro', + 'DOWNLOAD_STORE_EXPLAIN' => 'Deve descarregar diretamente o Ficheiro ou guardá-lo na sua pasta.', + 'DOWNLOADS' => 'Transferências', + + 'EDIT' => 'Editar', + 'ENABLE' => 'Ativar', + 'EXPORT_DOWNLOAD' => 'Descarregar', + 'EXPORT_STORE' => 'Guardar', + + 'GENERAL_OPTIONS' => 'Opções Gerais', + 'GENERAL_SETTINGS' => 'Configurações Gerais', + 'GLOBAL_MASK' => 'Máscara de Permissão Global', + + 'INSTALL' => 'Instalar', + 'IP' => 'IP', + 'IP_HOSTNAME' => 'Endereço de IP ou hostnames', + + 'LATEST_VERSION' => 'Última versão', + 'LOAD_NOTIFICATIONS' => 'Mostrar notificações', + 'LOAD_NOTIFICATIONS_EXPLAIN' => 'Mostrar a lista de notificações em cada página (normalmente no cabeçalho).', + 'LOGGED_IN_AS' => 'Está ligado como:', + 'LOGIN_ADMIN' => 'Para Administrar o Fórum, tem que ser um Utilizador validado.', + 'LOGIN_ADMIN_CONFIRM' => 'Para Administrar o Fórum, tem de confirmar o seu acesso.', + 'LOGIN_ADMIN_SUCCESS' => 'O seu Registo foi validado com sucesso. Vai ser redirecionado para o Painel de Administração.', + 'LOOK_UP_FORUM' => 'Selecione um Fórum', + 'LOOK_UP_FORUMS_EXPLAIN' => 'Nesta opção pode selecionar vários Fóruns. Pressione a tecla CTRL ou Shift para selecionar um a um ou vários Fóruns.', + + 'MANAGE' => 'Administrar', + 'MENU_TOGGLE' => 'Ocultar ou mostrar o Menu lateral', + 'MORE' => 'Mais', // Not used at the moment + 'MORE_INFORMATION' => 'Mais informações »', + 'MOVE_DOWN' => 'Mover - Baixo', + 'MOVE_UP' => 'Mover - Cima', + + 'NOTIFY' => 'Aviso', + 'NO_ADMIN' => 'Não está autorizado a Administrar este Fórum.', + 'NO_EMAILS_DEFINED' => 'Sem endereços de email válidos encontrados.', + 'NO_FILES_TO_DELETE' => 'Os anexos que selecionou para eliminação não existem.', + 'NO_PASSWORD_SUPPLIED' => 'Tem de indicar a sua senha para aceder ao Painel de Administração.', + + 'OFF' => 'Desativado', + 'ON' => 'Ativado', + + 'PARSE_BBCODE' => 'Usar BBCode', + 'PARSE_SMILIES' => 'Usar Emoções', + 'PARSE_URLS' => 'Usar Atalhos', + 'PERMISSIONS_TRANSFERRED' => 'Permissões Transferidas', + 'PERMISSIONS_TRANSFERRED_EXPLAIN' => 'Atualmente está com as Permissões de %1$s. Pode navegar pelo Fórum com as Permissões deste Utilizador, mas só pode aceder ao Painel de Administração se este Utilizador tiver Permissões de Administrador. Em qualquer momento pode regressar às suas Permissões.', + 'PROCEED_TO_ACP' => '%sIr para o Painel de Administração%s', + + 'RELEASE_ANNOUNCEMENT' => 'Anúncio', + 'REMIND' => 'Lembrar', + 'REPARSE_LOCK_ERROR' => 'A reanálise já está em execução com outro processo.', + 'RESYNC' => 'Ressincronizar', + + 'RUNNING_TASK' => 'Executando as tarefas: %s.', + 'SELECT_ANONYMOUS' => 'Selecionar Utilizador Anónimo', + 'SELECT_OPTION' => 'Selecionar Opção', + + 'SETTING_TOO_LOW' => 'O valor escrito para a configuração "%1$s" é muito baixo. O valor mínimo permitido é %2$d.', + 'SETTING_TOO_BIG' => 'O valor escrito para a configuração "%1$s" é muito alto. O valor máximo permitido é %2$d.', + 'SETTING_TOO_LONG' => 'O valor escrito para a configuração "%1$s" é muito longo. O comprimento máximo permitido é %2$d.', + 'SETTING_TOO_SHORT' => 'O valor escrito para a configuração "%1$s" é muito curto. O comprimento mínimo permitido é %2$d.', + + 'SHOW_ALL_OPERATIONS' => 'Mostrar todas as operações', + + 'TASKS_NOT_READY' => 'As tarefas não estão preparadas:', + 'TASKS_READY' => 'Tarefas preparadas:', + 'TOTAL_SIZE' => 'Tamanho total', + + 'UCP' => 'Painel de Controlo de Utilizadores', + 'USERNAMES_EXPLAIN' => 'Insira cada um dos Utilizadores em linhas separadas.', + 'USER_CONTROL_PANEL' => 'Painel de Utilizadores', + + 'UPDATE_NEEDED' => 'O Fórum não se encontra atualizado', + 'UPDATE_NOT_NEEDED' => 'O Fórum encontra-se atualizado', + 'UPDATES_AVAILABLE' => 'Atualizações disponíveis:', + + 'WARNING' => 'Advertência', +)); + +// PHP info +$lang = array_merge($lang, array( + 'ACP_PHP_INFO_EXPLAIN' => 'Esta página mostra informações da versão do PHP instalada neste servidor, incluindo detalhes dos módulos carregados, variáveis disponíveis e as configurações padrão. Esta informação pode ser necessária quando forem detetados erros. Alguns servidores podem limitar, por medida de segurança, as informações exibidas. Mantenha estas informações reservadas exceto quando questionado pela membros da equipa oficial no Fórum de Suporte.', + + 'NO_PHPINFO_AVAILABLE' => 'As informações do PHP não podem ser determinadas. O Phpinfo() foi desativado por medidas de segurança.', +)); + +// Logs +$lang = array_merge($lang, array( + 'ACP_ADMIN_LOGS_EXPLAIN' => 'Esta é a lista das ações dos Administradores. Pode ordená-la por Utilizador, data, Endereço de IP ou Ação do Registo. Se tiver as permissões adequadas, pode limpar operações individuais ou todo o registo.', + 'ACP_CRITICAL_LOGS_EXPLAIN' => 'Esta é a lista das ações realizadas pelo Fórum. Estes registos têm informações que permitem solucionar problemas específicos, por exemplo uma falha no envio de emails. Pode ordená-la por Utilizador, data, IP ou ação. Se tiver as permissões adequadas, pode limpar operações individuais ou todo o registo.', + 'ACP_MOD_LOGS_EXPLAIN' => 'Esta é a lista das ações dos Moderadores do Fórum. Pode ordená-la por Utilizador, data, Endereço de IP ou Ação do Registo. Se tiver as permissões adequadas, pode limpar operações individuais ou todo o registo.', + 'ACP_USERS_LOGS_EXPLAIN' => 'Esta é a lista das ações dos Utilizadores do Fórum. Pode ordená-la por Utilizador, data, Endereço de IP ou Ação do Registo. Se tiver as permissões adequadas, pode limpar operações individuais ou todo o registo.', + 'ALL_ENTRIES' => 'Todas as Entradas', + + 'DISPLAY_LOG' => 'Exibir Entradas anteriores', + + 'NO_ENTRIES' => 'Não há registos neste Período.', + + 'SORT_IP' => 'Endereço de IP', + 'SORT_DATE' => 'Data', + 'SORT_ACTION' => 'Registo da ação', +)); + +// Index page +$lang = array_merge($lang, array( + 'ADMIN_INTRO' => 'Obrigado por usar o phpBB3 no seu Fórum. Esta página apresenta as Estatísticas Gerais do Fórum. À esquerda encontra os menus de acesso ao Painel de Administração. Cada um deles contém instruções de configuração.', + 'ADMIN_LOG' => 'Registos da ações dos Administradores', + 'ADMIN_LOG_INDEX_EXPLAIN' => 'Este registo mostra as últimas cinco ações dos Administradores. Uma cópia completa do registo está disponível no item apropriado do Menu ou seguindo o atalho abaixo.', + 'AVATAR_DIR_SIZE' => 'Tamanho da pasta dos avatares', + + 'BOARD_STARTED' => 'Data de criação do Fórum', + 'BOARD_VERSION' => 'Versão do phpBB', + + 'DATABASE_SERVER_INFO' => 'Servidor da Base de Dados', + 'DATABASE_SIZE' => 'Tamanho da Base de Dados', + + // Enviroment configuration checks, mbstring related + 'ERROR_MBSTRING_FUNC_OVERLOAD' => 'A função de sobrecarga não se encontra configurada corretamente', + 'ERROR_MBSTRING_FUNC_OVERLOAD_EXPLAIN' => 'mbstring.func_overload deve ser definido para 0 ou 4. Pode verificar o valor atual em informação PHP.', + 'ERROR_MBSTRING_ENCODING_TRANSLATION' => 'A codificação de caracteres transparentes não se encontra configurada corretamente', + 'ERROR_MBSTRING_ENCODING_TRANSLATION_EXPLAIN' => 'mbstring.encoding_translation deve ser definido para 0. Pode verificar o valor atual em informação PHP.', + 'ERROR_MBSTRING_HTTP_INPUT' => 'A conversão de entrada de caracteres via HTTP não se encontra configurada corretamente', + 'ERROR_MBSTRING_HTTP_INPUT_EXPLAIN' => 'mbstring.http_input tem de estar configurado como pass. Pode verificar o valor atual em informação PHP.', + 'ERROR_MBSTRING_HTTP_OUTPUT' => 'A conversão de saída de caracteres via HTTP não se encontra configurada corretamente', + 'ERROR_MBSTRING_HTTP_OUTPUT_EXPLAIN' => 'mbstring.http_output tem de estar configurado como pass. Pode verificar o valor atual em informação PHP.', + + 'FILES_PER_DAY' => 'Média de Anexos diários', + 'FORUM_STATS' => 'Estatísticas do Fórum', + + 'GZIP_COMPRESSION' => 'Compressão Gzip', + + 'NO_SEARCH_INDEX' => 'O modo de pesquisa selecionado não possui um índice de pesquisa.
    Por favor, crie o índice para “%1$s†na secção %2$spesquisa de índice%3$s.', + 'NOT_AVAILABLE' => 'Não Disponível', + 'NUMBER_FILES' => 'Número de Anexos', + 'NUMBER_POSTS' => 'Número de Mensagens', + 'NUMBER_TOPICS' => 'Número de Tópicos', + 'NUMBER_USERS' => 'Número de Utilizadores', + 'NUMBER_ORPHAN' => 'Número de Anexos Órfãos', + + 'PHP_VERSION' => 'Versão do PHP', + 'PHP_VERSION_OLD' => 'A versão do PHP no servidor (%1$s) deixará de ser suportada em versões futuras do phpBB. A versão mínima necessária será PHP %2$s. %3$sDetalhes%4$s', + + 'POSTS_PER_DAY' => 'Média de Mensagens diárias', + + 'PURGE_CACHE' => 'Eliminar Cache', + 'PURGE_CACHE_CONFIRM' => 'Tem a certeza que deseja eliminar a Cache?', + 'PURGE_CACHE_EXPLAIN' => 'Apagar a Cache, incluindo a dos Templates e de consulta à Base de Dados.', + 'PURGE_CACHE_SUCCESS' => 'A Cache foi limpa com sucesso.', + + 'PURGE_SESSIONS' => 'Encerrar todas as sessões', + 'PURGE_SESSIONS_CONFIRM' => 'Tem a certeza que desejar para encerrar todas as sessões? Esta ação encerra as sessões de todos os utilizadores.', + 'PURGE_SESSIONS_EXPLAIN' => 'Esta ação encerra a tabela de sessões, provocando a saída de todos os utilizadores.', + 'PURGE_SESSIONS_SUCCESS' => 'Todas as sessões encerradas com sucesso.', + + 'RESET_DATE' => 'Reiniciar data de fundação do Fórum', + 'RESET_DATE_CONFIRM' => 'Tem a certeza que deseja reiniciar a data de fundação do Fórum?', + 'RESET_DATE_SUCCESS' => 'Data de fundação do Fórum reiniciada com sucesso', + 'RESET_ONLINE' => 'Reiniciar estatísticas dos utilizadores online', + 'RESET_ONLINE_CONFIRM' => 'Tem a certeza que deseja reiniciar o contador do recorde de utilizadores online?', + 'RESET_ONLINE_SUCCESS' => 'Recorde de utilizadores online reiniciado com sucesso', + 'RESYNC_POSTCOUNTS' => 'Sincronizar contagem de Mensagens', + 'RESYNC_POSTCOUNTS_EXPLAIN' => 'Apenas são consideradas as mensagens atuais.', + 'RESYNC_POSTCOUNTS_CONFIRM' => 'Tem a certeza que deseja ressincronizar o contador de mensagens?', + 'RESYNC_POSTCOUNTS_SUCCESS' => 'Ressincronizar contador de mensagens', + 'RESYNC_POST_MARKING' => 'Ressincronizar "Tópicos Marcados"', + 'RESYNC_POST_MARKING_CONFIRM' => 'Tem a certeza que deseja sincronizar os "Tópicos Marcados"?', + 'RESYNC_POST_MARKING_EXPLAIN' => '"Tópicos Marcados" são todos aqueles em que o utilizador tem mensagens. Esta opção desmarca todos os "Tópicos Marcados", remarcando os Tópicos com atividade nos últimos seis meses.', + 'RESYNC_POST_MARKING_SUCCESS' => '"Tópicos Marcados" ressincronizar com sucesso', + 'RESYNC_STATS' => 'Sincronizar Estatísticas', + 'RESYNC_STATS_CONFIRM' => 'Tem a certeza que deseja ressincronizar as estatísticas?', + 'RESYNC_STATS_EXPLAIN' => 'Calcular o total de Mensagens, Tópicos, Utilizadores e Ficheiros.', + 'RESYNC_STATS_SUCCESS' => 'Estatísticas ressincronizadas', + 'RUN' => 'Sincronizar', + + 'STATISTIC' => 'Estatísticas', + 'STATISTIC_RESYNC_OPTIONS' => 'Sincronizar ou reiniciar as estatísticas', + + 'TIMEZONE_INVALID' => 'O fuso horário que selecionou é inválido', + 'TIMEZONE_SELECTED' => '(selecionado atualmente)', + 'TOPICS_PER_DAY' => 'Média de Tópicos diários', + + 'UPLOAD_DIR_SIZE' => 'Tamanho da pasta dos anexos', + 'USERS_PER_DAY' => 'Média de Registos diários', + + 'VALUE' => 'Valor', + 'VERSIONCHECK_FAIL' => 'Não foi possível obter informações da versão mais recente.', + 'VERSIONCHECK_FORCE_UPDATE' => 'Forçar verificação da versão', + 'VERSION_CHECK' => 'Verificar versão', + 'VERSION_CHECK_EXPLAIN' => 'Verificar se a instalação do phpBB está atualizada.', + 'VERSIONCHECK_INVALID_ENTRY' => 'A informação da última versão contém uma entrada não suportada.', + 'VERSIONCHECK_INVALID_URL' => 'A informação da última versão contém um URL inválido.', + 'VERSIONCHECK_INVALID_VERSION' => 'A informação da última versão contém uma versão inválida.', + 'VERSION_NOT_UP_TO_DATE_ACP' => 'A tua instalação do phpBB não está atualizada.
    Abaixo está um link para o anúncio de lançamento, que contém mais informações, bem como as instruções sobre como atualizar.', + 'VERSION_NOT_UP_TO_DATE_TITLE' => 'A tua instalação do phpBB não está atualizada.', + 'VERSION_UP_TO_DATE_ACP' => 'A tua instalação do phpBB está atualizada. Não há atualizações disponíveis de momento.', + 'VIEW_ADMIN_LOG' => 'Ver registos do Administrador', + 'VIEW_INACTIVE_USERS' => 'Ver Utilizadores Inativos', + + 'WELCOME_PHPBB' => 'Bem-vindo ao phpBB', + 'WRITABLE_CONFIG' => 'O ficheiro de configuração (config.php) está atualmente com Permissões de gravação. É altamente recomendável que modifique as Permissões do ficheiro para 640 ou 644 (leia: chmod 640 config.php).', +)); + +// Inactive Users +$lang = array_merge($lang, array( + 'INACTIVE_DATE' => 'Data Inativa', + 'INACTIVE_REASON' => 'Razão', + 'INACTIVE_REASON_MANUAL' => 'Registo Desativado pelo Administrador', + 'INACTIVE_REASON_PROFILE' => 'Detalhes do Perfil Alterados', + 'INACTIVE_REASON_REGISTER' => 'Registos Recentes', + 'INACTIVE_REASON_REMIND' => 'Forçar Reativação de Registo do Utilizador', + 'INACTIVE_REASON_UNKNOWN' => 'Desconhecido', + 'INACTIVE_USERS' => 'Utilizadores Inativos', + 'INACTIVE_USERS_EXPLAIN' => 'Esta é uma lista dos Utilizadores Registados, mas com os Registos ainda inativos. Se desejar pode ativar, excluir ou avisar (enviando um email) estes Utilizadores.', + 'INACTIVE_USERS_EXPLAIN_INDEX' => 'Lista dos 10 últimos Utilizadores Registados ainda inativos. As Contas estão inativas porque a sua ativação está configurada para ser feita pelo próprio utilizador e estes ainda o não fizeram ou porque foram desativadas. A lista completa está disponível através do item apropriado do menu ou clicando no atalho abaixo onde pode ativar, excluir ou avisar (enviando um email) estes Utilizadores se desejar.', + + 'NO_INACTIVE_USERS' => 'Não há Utilizadores Inativos', + + 'SORT_INACTIVE' => 'Data Inativa', + 'SORT_LAST_VISIT' => 'Última Visita', + 'SORT_REASON' => 'Razão', + 'SORT_REG_DATE' => 'Data de Registo', + 'SORT_LAST_REMINDER' => 'Último aviso', + 'SORT_REMINDER' => 'Aviso enviado', + + 'USER_IS_INACTIVE' => 'Utilizador Inativo', +)); + +// Send statistics page +$lang = array_merge($lang, array( + 'EXPLAIN_SEND_STATISTICS' => 'Por favor, envie informação acerca do seu servidor e configurações do Fórum para análise de estatística do phpBB. Toda a informação que possa identificá-lo a si ou ao seu website será removida - os dados são totalmente anónimos. Basearemos as nossas decisões sobre as futuras versões de phpBB com esta informação. As estatísticas serão publicamente disponibilizadas. Compartilharemos igualmente os dados com o projeto PHP, a linguagem de programação phpBB é baseada nele.', + 'EXPLAIN_SHOW_STATISTICS' => 'Usando o botão abaixo pode visualizar todas as variáveis que serão transmitidas.', + 'DONT_SEND_STATISTICS' => 'Clique aqui para entrar no ACP, se não deseja enviar as informações estatísticas para o phpBB.', + 'GO_ACP_MAIN' => 'Ir para a página inicial do ACP', + 'HIDE_STATISTICS' => 'Esconder detalhes', + 'SEND_STATISTICS' => 'Enviar estatísticas', + 'SEND_STATISTICS_LONG' => 'Enviar informações estatísticas', + 'SHOW_STATISTICS' => 'Mostrar detalhes', + 'THANKS_SEND_STATISTICS' => 'Obrigado por enviar as suas informações.', + 'FAIL_SEND_STATISTICS' => 'O phpBB não conseguiu enviar as estatísticas', +)); + +// Log Entries +$lang = array_merge($lang, array( + 'LOG_ACL_ADD_USER_GLOBAL_U_' => 'Permissões de Utilizadores a Utilizadores Adicionadas ou Editadas
    » %s', + 'LOG_ACL_ADD_GROUP_GLOBAL_U_' => 'Permissões de Utilizadores a Grupos Adicionadas ou Editadas
    » %s', + 'LOG_ACL_ADD_USER_GLOBAL_M_' => 'Permissões Globais a Utilizadores Adicionadas ou Editadas
    » %s', + 'LOG_ACL_ADD_GROUP_GLOBAL_M_' => 'Permissões Globais a Grupos Adicionadas ou Editadas
    » %s', + 'LOG_ACL_ADD_USER_GLOBAL_A_' => 'Permissões Administrativas a Utilizadores Adicionadas ou Editadas
    » %s', + 'LOG_ACL_ADD_GROUP_GLOBAL_A_' => 'Permissões Administrativas a Grupos Adicionadas ou Editadas
    » %s', + + 'LOG_ACL_ADD_ADMIN_GLOBAL_A_' => 'Administradores Adicionados ou Editados
    » %s', + 'LOG_ACL_ADD_MOD_GLOBAL_M_' => 'Moderadores Globais Adicionados ou Editados
    » %s', + + 'LOG_ACL_ADD_USER_LOCAL_F_' => 'Acessos ao Fórum de Utilizadores Adicionados ou Editados de %1$s
    » %2$s', + 'LOG_ACL_ADD_USER_LOCAL_M_' => 'Acessos de Moderadores a Utilizadores Adicionados ou Editados de %1$s
    » %2$s', + 'LOG_ACL_ADD_GROUP_LOCAL_F_' => 'Acessos do Fórum a Grupos Adicionados ou Editados de %1$s
    » %2$s', + 'LOG_ACL_ADD_GROUP_LOCAL_M_' => 'Acessos de Moderadores a Grupos Adicionados ou Editados de %1$s
    » %2$s', + + 'LOG_ACL_ADD_MOD_LOCAL_M_' => 'Moderadores Adicionados ou Editados de %1$s
    » %2$s', + 'LOG_ACL_ADD_FORUM_LOCAL_F_' => 'Permissões de Fóruns Adicionadas ou Editadas de %1$s
    » %2$s', + + 'LOG_ACL_DEL_ADMIN_GLOBAL_A_' => 'Administradores Apagados
    » %s', + 'LOG_ACL_DEL_MOD_GLOBAL_M_' => 'Moderadores Globais Apagados
    » %s', + 'LOG_ACL_DEL_MOD_LOCAL_M_' => 'Moderadores Apagados de %1$s
    » %2$s', + 'LOG_ACL_DEL_FORUM_LOCAL_F_' => 'Permissões de Fóruns a Utilizadores/Grupos Apagados de %1$s
    » %2$s', + + 'LOG_ACL_TRANSFER_PERMISSIONS' => 'Permissões Transferidas de
    » %s', + 'LOG_ACL_RESTORE_PERMISSIONS' => 'Permissões restauradas depois de utilizar as permissões de
    » %s', + + 'LOG_ADMIN_AUTH_FAIL' => 'Falha no Acesso', + 'LOG_ADMIN_AUTH_SUCCESS' => 'Acesso efetuado com sucesso', + + 'LOG_ATTACHMENTS_DELETED' => 'Remover anexos do Utilizador
    » %s', + + 'LOG_ATTACH_EXT_ADD' => 'Extensão de Anexos Adicionada ou Editada
    » %s', + 'LOG_ATTACH_EXT_DEL' => 'Extensão de Anexos Apagada
    » %s', + 'LOG_ATTACH_EXT_UPDATE' => 'Extensão de Anexos Atualizadas
    » %s', + 'LOG_ATTACH_EXTGROUP_ADD' => 'Grupo de Extensões Adicionado
    » %s', + 'LOG_ATTACH_EXTGROUP_EDIT' => 'Grupo de Extensões Editado
    » %s', + 'LOG_ATTACH_EXTGROUP_DEL' => 'Grupo de Extensões Apagado
    » %s', + 'LOG_ATTACH_FILEUPLOAD' => 'Ficheiro Órfão anexo a Mensagem
    » ID %1$d - %2$s', + 'LOG_ATTACH_ORPHAN_DEL' => 'Ficheiro Órfão Apagado
    » %s', + + 'LOG_BAN_EXCLUDE_USER' => 'Utilizador Apagado por Expulsão porque "%1$s"
    » %2$s ', + 'LOG_BAN_EXCLUDE_IP' => 'Endereço de IP Apagado por Expulsão porque "%1$s"
    » %2$s ', + 'LOG_BAN_EXCLUDE_EMAIL' => 'Endereço de email Apagado por Expulsão porque "%1$s"
    » %2$s ', + 'LOG_BAN_USER' => 'Utilizador Expulso por "%1$s"
    » %2$s ', + 'LOG_BAN_IP' => 'Endereço de IP Banido por "%1$s"
    » %2$s', + 'LOG_BAN_EMAIL' => 'Endereço de email Banido por "%1$s"
    » %2$s', + 'LOG_UNBAN_USER' => 'Utilizador Reintegrado
    » %s', + 'LOG_UNBAN_IP' => 'Endereço de IP Reintegrado
    » %s', + 'LOG_UNBAN_EMAIL' => 'Endereço de email Reintegrado
    » %s', + + 'LOG_BBCODE_ADD' => 'BBCode Adicionado
    » %s', + 'LOG_BBCODE_EDIT' => 'BBCode Editado
    » %s', + 'LOG_BBCODE_DELETE' => 'BBCode Apagado
    » %s', + 'LOG_BBCODE_CONFIGURATION_ERROR' => 'Erro durante a configuração do BBCode: %1$s
    » %2$s', + + 'LOG_BOT_ADDED' => 'Motor de Busca Adicionado
    » %s', + 'LOG_BOT_DELETE' => 'Motor de Busca Apagado
    » %s', + 'LOG_BOT_UPDATED' => 'Motor de Busca Atualizado
    » %s', + + 'LOG_CLEAR_ADMIN' => 'Registo Administrativo Limpo', + 'LOG_CLEAR_CRITICAL' => 'Registo de Erro Limpo', + 'LOG_CLEAR_MOD' => 'Registo Moderação Limpo', + 'LOG_CLEAR_USER' => 'Registo de Utilizador Limpo
    » %s', + 'LOG_CLEAR_USERS' => 'Registo de Utilizadores Limpos', + + 'LOG_CONFIG_ATTACH' => 'Configurações de Anexos Alteradas', + 'LOG_CONFIG_AUTH' => 'Configurações de Autenticação Alteradas', + 'LOG_CONFIG_AVATAR' => 'Configurações de Avatar Alteradas', + 'LOG_CONFIG_COOKIE' => 'Configurações de Cookie Alteradas', + 'LOG_CONFIG_EMAIL' => 'Configurações de emails Alteradas', + 'LOG_CONFIG_FEATURES' => 'Configurações do Fórum Alteradas', + 'LOG_CONFIG_LOAD' => 'Configurações de Carga Alteradas', + 'LOG_CONFIG_MESSAGE' => 'Configurações de Mensagem Privada Alteradas', + 'LOG_CONFIG_POST' => 'Configurações de Mensagem Alteradas', + 'LOG_CONFIG_REGISTRATION' => 'Configurações de Registo Alteradas', + 'LOG_CONFIG_FEED' => 'Configurações de Sindicação de Feeds Alteradas', + 'LOG_CONFIG_SEARCH' => 'Configurações de Pesquisa Alteradas', + 'LOG_CONFIG_SECURITY' => 'Configurações de Segurança Alteradas', + 'LOG_CONFIG_SERVER' => 'Configurações do Servidor Alteradas', + 'LOG_CONFIG_SETTINGS' => 'Configurações do Fórum Alteradas', + 'LOG_CONFIG_SIGNATURE' => 'Configurações de Assinatura Alteradas', + 'LOG_CONFIG_VISUAL' => 'Alterou as definições anti-spam', + + 'LOG_APPROVE_TOPIC' => 'Tópico Aprovado
    » %s', + 'LOG_BUMP_TOPIC' => 'Tópico Ressuscitado
    » %s', + 'LOG_DELETE_POST' => 'Mensagem apagada “%1$s†escrita por “%2$s†pelo seguinte motivo
    » %3$s', + 'LOG_DELETE_SHADOW_TOPIC' => 'Tópico fantasma eliminado
    » %s', + 'LOG_DELETE_TOPIC' => 'Tópico apagado “%1$s†escrito por “%2$s†pelo seguinte motivo
    » %3$s', + 'LOG_FORK' => 'Tópico Copiado
    » de %s', + 'LOG_LOCK' => 'Tópico Bloqueado
    » %s', + 'LOG_LOCK_POST' => 'Mensagem Bloqueada
    » %s', + 'LOG_MERGE' => 'Mensagens fundidas no Tópico
    » %s', + 'LOG_MOVE' => 'Tópico movido
    » de %1$s para %2$s', + 'LOG_MOVED_TOPIC' => 'Tópico movido
    » %s', + 'LOG_PM_REPORT_CLOSED' => 'Denúncia de MP fechada
    » %s', + 'LOG_PM_REPORT_DELETED' => 'Denúncia de MP apagada
    » %s', + 'LOG_POST_APPROVED' => 'Mensagem Aprovada
    » %s', + 'LOG_POST_DISAPPROVED' => 'Mensagem Desaprovada “%1$s†escrita por “%3$s†pelo seguinte motivo
    » %2$s', + 'LOG_POST_EDITED' => 'Mensagem editada “%1$s†escrita por “%2$s†pelo seguinte motivo
    » %3$s', + 'LOG_POST_RESTORED' => 'Mensagem recuperada
    » %s', + 'LOG_REPORT_CLOSED' => 'Denúncia Bloqueada
    » %s', + 'LOG_REPORT_DELETED' => 'Denúncia Apagada
    » %s', + 'LOG_RESTORE_TOPIC' => 'Foi restaurado o Tópico “%1$s†escrito por
    » %2$s', + 'LOG_SOFTDELETE_POST' => 'Foi excluída a mensagem “%1$s†escrita por “%2$s†pelo seguinte motivo
    » %3$s', + 'LOG_SOFTDELETE_TOPIC' => 'Foi excluído o Tópico “%1$s†escrito por “%2$s†pelo seguinte motivo
    » %3$s', + 'LOG_SPLIT_DESTINATION' => 'Tópico Subdividido
    » para %s', + 'LOG_SPLIT_SOURCE' => 'Mensagens Subdivididas
    » de %s', + + 'LOG_TOPIC_APPROVED' => 'Tópico Aprovado
    » %s', + 'LOG_TOPIC_RESTORED' => 'Foi restaurado o Tópico
    » %s', + 'LOG_TOPIC_DISAPPROVED' => 'Tópico Desaprovado “%1$s†escrito por “%3$s†pelo seguinte motivo
    » %2$s', + 'LOG_TOPIC_RESYNC' => 'Contadores de Tópicos Ressincronizados
    » %s', + 'LOG_TOPIC_TYPE_CHANGED' => 'Tipo de Tópico alterado
    » %s', + 'LOG_UNLOCK' => 'Tópico desbloqueado
    » %s', + 'LOG_UNLOCK_POST' => 'Mensagem desbloqueada
    » %s', + + 'LOG_DISALLOW_ADD' => 'Nome Proibido Adicionado
    » %s', + 'LOG_DISALLOW_DELETE' => 'Nome Proibido Apagado', + + 'LOG_DB_BACKUP' => 'Copiar Base de Dados', + 'LOG_DB_DELETE' => 'Backup da Base de Dados Apagado', + 'LOG_DB_RESTORE' => 'Restaurar Base de Dados', + + 'LOG_DOWNLOAD_EXCLUDE_IP' => 'Endereço de IP/hostname apagado da Lista de Transferências
    » %s', + 'LOG_DOWNLOAD_IP' => 'Endereço de IP/hostname adicionado à Lista de Transferências
    » %s', + 'LOG_DOWNLOAD_REMOVE_IP' => 'Endereço de IP/hostname apagado da Lista de Transferências
    » %s', + + 'LOG_ERROR_JABBER' => 'Erro de Jabber
    » %s', + 'LOG_ERROR_EMAIL' => 'Erro no email
    » %s', + 'LOG_ERROR_CAPTCHA' => 'Erro no CAPTCHA
    » %s', + + 'LOG_FORUM_ADD' => 'Criar um novo Fórum
    » %s', + 'LOG_FORUM_COPIED_PERMISSIONS' => 'Permissões do Fórum copiadas de %1$s
    » %2$s', + 'LOG_FORUM_DEL_FORUM' => 'Fórum apagado
    » %s', + 'LOG_FORUM_DEL_FORUMS' => 'Fórum e Sub-fórum apagados
    » %s', + 'LOG_FORUM_DEL_MOVE_FORUMS' => 'Fórum apagado e Sub-fórum Movido para %1$s
    » %2$s', + 'LOG_FORUM_DEL_MOVE_POSTS' => 'Fórum apagado e Mensagens Movidas para %1$s
    » %2$s', + 'LOG_FORUM_DEL_MOVE_POSTS_FORUMS' => 'Eliminado Fórum e Sub-fóruns, movidas mensagens para %1$s
    » %2$s', + 'LOG_FORUM_DEL_MOVE_POSTS_MOVE_FORUMS' => 'Eliminado Fórum, movidas mensagens para %1$s e Sub-fóruns para %2$s
    » %3$s', + 'LOG_FORUM_DEL_POSTS' => 'Eliminado Fórum e as mensagens
    » %s', + 'LOG_FORUM_DEL_POSTS_FORUMS' => 'Eliminado Fórum, as mensagens e Sub-fóruns
    » %s', + 'LOG_FORUM_DEL_POSTS_MOVE_FORUMS' => 'Eliminado Fórum e as mensagens, movidos Sub-fóruns para %1$s
    » %2$s', + 'LOG_FORUM_EDIT' => 'Detalhes do Fórum editados
    » %s', + 'LOG_FORUM_MOVE_DOWN' => 'Fórum Movido %1$s abaixo/acima %2$s', + 'LOG_FORUM_MOVE_UP' => 'Fórum Movido %1$s acima/abaixo %2$s', + 'LOG_FORUM_SYNC' => 'Fórum ressincronizado
    » %s', + + 'LOG_GENERAL_ERROR' => 'Ocorreu um erro geral: %1$s
    » %2$s', + + 'LOG_GROUP_CREATED' => 'Novo Grupo criado
    » %s', + 'LOG_GROUP_DEFAULTS' => 'Grupo “%1$s†definido padrão para membros
    » %2$s', + 'LOG_GROUP_DELETE' => 'Grupo apagado
    » %s', + 'LOG_GROUP_DEMOTED' => 'Líderes demitidos do Grupo %1$s
    » %2$s', + 'LOG_GROUP_PROMOTED' => 'Membros promovidos a Líderes do Grupo %1$s
    » %2$s', + 'LOG_GROUP_REMOVE' => 'Membros apagados do Grupo %1$s
    » %2$s', + 'LOG_GROUP_UPDATED' => 'Detalhes do Grupo atualizados
    » %s', + 'LOG_MODS_ADDED' => 'Novos Líderes adicionados ao Grupo %1$s
    » %2$s', + 'LOG_USERS_ADDED' => 'Novos Membros adicionados ao Grupo %1$s
    » %2$s', + 'LOG_USERS_APPROVED' => 'Utilizadores aprovados no grupo de utilizadores %1$s
    » %2$s', + 'LOG_USERS_PENDING' => 'Pedido de utilizadores para pertencer ao grupo “%1$s†e que necessitam de aprovação
    » %2$s', + + 'LOG_IMAGE_GENERATION_ERROR' => 'Erro ao criar a imagem
    » Erro em %1$s na linha %2$s: %3$s', + + 'LOG_INACTIVE_ACTIVATE' => 'Utilizadores Inativos Ativados
    » %s', + 'LOG_INACTIVE_DELETE' => 'Utilizadores Inativos Apagados
    » %s', + 'LOG_INACTIVE_REMIND' => 'Foram enviados emails de aviso aos seguintes Utilizadores Inativos
    » %s', + 'LOG_INSTALL_CONVERTED' => 'Atualizado de %1$s para o phpBB %2$s', + 'LOG_INSTALL_INSTALLED' => 'Versão do phpBB instalada %s', + + 'LOG_IP_BROWSER_FORWARDED_CHECK' => 'A verificação da sessão de IP/navegador/X_FORWARDED_FOR falhou
    »Verificado o endereço de IP do Utilizador "%1$s" em contraste com a sessão de IP "%2$s", verificado o navegador dos Utilizadores "%3$s" em contraste com a sessão de navegador "%4$s" e verificado o X_FORWARDED_FOR do utilizador "%5$s" em contraste com a sessão de X_FORWARDED_FOR "%6$s".', + + 'LOG_JAB_CHANGED' => 'Registo de Jabber Alterado', + 'LOG_JAB_PASSCHG' => 'Senha de Jabber Alterada', + 'LOG_JAB_REGISTER' => 'Jabber Registado', + 'LOG_JAB_SETTINGS_CHANGED' => 'Configurações de Jabber alteradas', + + 'LOG_LANGUAGE_PACK_DELETED' => 'Pacotes de idiomas Apagados
    » %s', + 'LOG_LANGUAGE_PACK_INSTALLED' => 'Pacotes de idiomas instalados
    » %s', + 'LOG_LANGUAGE_PACK_UPDATED' => 'Detalhes do Pacote de idiomas atualizados
    » %s', + 'LOG_LANGUAGE_FILE_REPLACED' => 'Ficheiros de Linguagem substituídos
    » %s', + 'LOG_LANGUAGE_FILE_SUBMITTED' => 'Ficheiro de Linguagem enviado e armazenado na pasta \store
    » %s', + + 'LOG_MASS_EMAIL' => 'Enviar Email em Massa
    » %s', + + 'LOG_MCP_CHANGE_POSTER' => 'Autor do Tópico alterado "%1$s"
    » de %2$s para %3$s', + + 'LOG_MODULE_DISABLE' => 'Módulo desativado
    » %s', + 'LOG_MODULE_ENABLE' => 'Módulo ativado
    » %s', + 'LOG_MODULE_MOVE_DOWN' => 'Módulo movido
    » %1$s para baixo %2$s', + 'LOG_MODULE_MOVE_UP' => 'Módulo movido
    » %1$s para cima %2$s', + 'LOG_MODULE_REMOVED' => 'Módulo Apagado
    » %s', + 'LOG_MODULE_ADD' => 'Módulo Adicionado
    » %s', + 'LOG_MODULE_EDIT' => 'Módulo Editado
    » %s', + + 'LOG_A_ROLE_ADD' => 'Tarefa Administrativa Adicionada
    » %s', + 'LOG_A_ROLE_EDIT' => 'Tarefa Administrativa Editada
    » %s', + 'LOG_A_ROLE_REMOVED' => 'Tarefa Administrativa Apagada
    » %s', + 'LOG_F_ROLE_ADD' => 'Tarefa do Fórum Adicionada
    » %s', + 'LOG_F_ROLE_EDIT' => 'Tarefa do Fórum Editada
    » %s', + 'LOG_F_ROLE_REMOVED' => 'Tarefa do Fórum Apagada
    » %s', + 'LOG_M_ROLE_ADD' => 'Tarefa de Moderação Adicionada
    » %s', + 'LOG_M_ROLE_EDIT' => 'Tarefa de Moderação Editada
    » %s', + 'LOG_M_ROLE_REMOVED' => 'Tarefa de Moderação Apagada
    » %s', + 'LOG_U_ROLE_ADD' => 'Tarefa do Utilizador Adicionada
    » %s', + 'LOG_U_ROLE_EDIT' => 'Tarefa do Utilizador Editada
    » %s', + 'LOG_U_ROLE_REMOVED' => 'Tarefa do Utilizador Apagada
    » %s', + + 'LOG_PLUPLOAD_TIDY_FAILED' => 'Não foi possível abrir %1$s para arrumação, verifique as permissões.
    Exceção: %2$s
    Rastreio: %3$s', + + 'LOG_PROFILE_FIELD_ACTIVATE' => 'Campo do Perfil Ativado
    » %s', + 'LOG_PROFILE_FIELD_CREATE' => 'Campo do Perfil Adicionado
    » %s', + 'LOG_PROFILE_FIELD_DEACTIVATE' => 'Campo do Perfil Desativado
    » %s', + 'LOG_PROFILE_FIELD_EDIT' => 'Campo do Perfil Editado
    » %s', + 'LOG_PROFILE_FIELD_REMOVED' => 'Campo do Perfil Apagado
    » %s', + + 'LOG_PRUNE' => 'Fóruns Limpos
    » %s', + 'LOG_AUTO_PRUNE' => 'Fóruns Limpos Automaticamente
    » %s', + 'LOG_PRUNE_SHADOW' => 'Auto limpeza de Tópicos Fantasma
    » %s', + 'LOG_PRUNE_USER_DEAC' => 'Utilizadores Desativados
    » %s', + 'LOG_PRUNE_USER_DEL_DEL' => 'Utilizadores Limpos e Mensagens Apagadas
    » %s', + 'LOG_PRUNE_USER_DEL_ANON' => 'Utilizadores Limpos e Mensagens Guardadas
    » %s', + + 'LOG_PURGE_CACHE' => 'Cache Removido', + 'LOG_PURGE_SESSIONS' => 'Sessões terminadas', + + 'LOG_RANK_ADDED' => 'Classificação Adicionada
    » %s', + 'LOG_RANK_REMOVED' => 'Classificação Apagada
    » %s', + 'LOG_RANK_UPDATED' => 'Classificação Atualizada
    » %s', + + 'LOG_REASON_ADDED' => 'Razão de Denúncia/Negação Adicionada
    » %s', + 'LOG_REASON_REMOVED' => 'Razão de Denúncia/Negação Apagada
    » %s', + 'LOG_REASON_UPDATED' => 'Razão de Denúncia/Negação Atualizada
    » %s', + + 'LOG_REFERER_INVALID' => 'Validação de referência falhou
    »Referência foi “%1$sâ€. A requisição foi rejeitada e a sessão encerrada.', + 'LOG_RESET_DATE' => 'Reiniciar Início do Fórum', + 'LOG_RESET_ONLINE' => 'Reiniciar Utilizadores Mais Ativos', + 'LOG_RESYNC_FILES_STATS' => 'Estatísticas dos ficheiros ressincronizadas', + 'LOG_RESYNC_POSTCOUNTS' => 'Contagem de Mensagens ressincronizadas', + 'LOG_RESYNC_POST_MARKING' => '"Tópicos Marcados" ressincronizados', + 'LOG_RESYNC_STATS' => 'Estatísticas de Utilizadores, Tópicos e Mensagens ressincronizadas', + + 'LOG_SEARCH_INDEX_CREATED' => 'Ãndice de busca criado por
    » %s', + 'LOG_SEARCH_INDEX_REMOVED' => 'Ãndice de busca excluído por
    » %s', + 'LOG_SPHINX_ERROR' => 'Erro de Sphinx
    » %s', + 'LOG_STYLE_ADD' => 'Template Adicionado
    » %s', + 'LOG_STYLE_DELETE' => 'Template Apagado
    » %s', + 'LOG_STYLE_EDIT_DETAILS' => 'Template Editado
    » %s', + 'LOG_STYLE_EXPORT' => 'Template Exportado
    » %s', + + // @deprecated 3.1 + 'LOG_TEMPLATE_ADD_DB' => 'Novo Template Adicionado à Base de Dados
    » %s', + // @deprecated 3.1 + 'LOG_TEMPLATE_ADD_FS' => 'Adicionar novo Template no Sistema
    » %s', + 'LOG_TEMPLATE_CACHE_CLEARED' => 'Versões da Cache de Ficheiros do Template Apagados %1$s
    » %2$s', + 'LOG_TEMPLATE_DELETE' => 'Template Apagado
    » %s', + 'LOG_TEMPLATE_EDIT' => 'Template Editado %1$s
    » %2$s', + 'LOG_TEMPLATE_EDIT_DETAILS' => 'Detalhes do Template Editados
    » %s', + 'LOG_TEMPLATE_EXPORT' => 'Template Exportado
    » %s', + // @deprecated 3.1 + 'LOG_TEMPLATE_REFRESHED' => 'Template Atualizado
    » %s', + + // @deprecated 3.1 + 'LOG_THEME_ADD_DB' => 'Novo Tema adicionado à Base de Dados
    » %s', + // @deprecated 3.1 + 'LOG_THEME_ADD_FS' => 'Novo Tema adicionado ao Sistema
    » %s', + 'LOG_THEME_DELETE' => 'Tema Apagado
    » %s', + 'LOG_THEME_EDIT_DETAILS' => 'Detalhes do Tema Editados
    » %s', + 'LOG_THEME_EDIT' => 'Tema editado %1$s', + 'LOG_THEME_EDIT_FILE' => 'Tema Editado %1$s
    » Ficheiro Modificado %2$s', + 'LOG_THEME_EXPORT' => 'Tema Exportado
    » %s', + // @deprecated 3.1 + 'LOG_THEME_REFRESHED' => 'Tema Atualizado
    » %s', + + 'LOG_UPDATE_DATABASE' => 'A Base de Dados foi atualizada da Versão %1$s para a Versão %2$s', + 'LOG_UPDATE_PHPBB' => 'O phpBB foi atualizado da Versão %1$s para a Versão %2$s', + + 'LOG_USER_ACTIVE' => 'Utilizador Ativado
    » %s', + 'LOG_USER_BAN_USER' => 'Utilizador Banido pela Administração de Utilizadores pela razão "%1$s"
    » %2$s', + 'LOG_USER_BAN_IP' => 'Endereço de IP Banido pela Administração de Utilizadores pela razão "%1$s"
    » %2$s', + 'LOG_USER_BAN_EMAIL' => 'Endereço de email Banido pela Administração de Utilizadores pela razão "%1$s"
    » %2$s', + 'LOG_USER_DELETED' => 'Utilizador Apagado
    » %s', + 'LOG_USER_DEL_ATTACH' => 'Todos os Anexos do Utilizador Apagados
    » %s', + 'LOG_USER_DEL_AVATAR' => 'Avatar do Utilizador Apagado
    » %s', + 'LOG_USER_DEL_OUTBOX' => 'Caixa de saída
    » %s', + 'LOG_USER_DEL_POSTS' => 'Todas as Mensagens do Utilizador Apagadas
    » %s', + 'LOG_USER_DEL_SIG' => 'Assinatura do Utilizador Apagada
    » %s', + 'LOG_USER_INACTIVE' => 'Utilizador Desativado
    » %s', + 'LOG_USER_MOVE_POSTS' => 'Mensagens do Utilizador Movidas
    » Mensagens por "%1$s" para o Fórum "%2$s"', + 'LOG_USER_NEW_PASSWORD' => 'Senha do Utilizador Alterada
    » %s', + 'LOG_USER_REACTIVATE' => 'Reativação de Registo do Utilizador Forçada
    » %s', + 'LOG_USER_REMOVED_NR' => 'Removida bandeira de utilizador recente
    » %s', + + 'LOG_USER_UPDATE_EMAIL' => 'Endereço de email do Utilizador "%1$s" alterado
    » de "%2$s" para "%3$s"', + 'LOG_USER_UPDATE_NAME' => 'Nome de Utilizador Alterado
    » de "%1$s" para "%2$s"', + 'LOG_USER_USER_UPDATE' => 'Detalhes do Utilizador Atualizados
    » %s', + + 'LOG_USER_ACTIVE_USER' => 'Registo de Utilizador Ativado', + 'LOG_USER_DEL_AVATAR_USER' => 'Avatar do Utilizador Apagado', + 'LOG_USER_DEL_SIG_USER' => 'Assinatura do Utilizador Apagada', + 'LOG_USER_FEEDBACK' => 'Utilizador adicionado ao Feedback
    » %s', + 'LOG_USER_GENERAL' => '%s', + 'LOG_USER_INACTIVE_USER' => 'Registo do Utilizador Reativado', + 'LOG_USER_LOCK' => 'Tópicos Bloqueados pelo próprio Utilizador
    » %s', + 'LOG_USER_MOVE_POSTS_USER' => 'Todas as Mensagens Movidas para o Fórum» %s', + 'LOG_USER_REACTIVATE_USER' => 'Reativação de Registo Forçada', + 'LOG_USER_UNLOCK' => 'Tópicos Desbloqueados pelo próprio Utilizador
    » %s', + 'LOG_USER_WARNING' => 'Aviso criado
    » %s', + 'LOG_USER_WARNING_BODY' => 'Este Utilizador recebeu o seguinte Aviso:
    » %s', + + 'LOG_USER_GROUP_CHANGE' => 'Grupo Padrão Editado
    » %s', + 'LOG_USER_GROUP_DEMOTE' => 'Utilizadores Demitidos de Líderes no Grupo
    » %s', + 'LOG_USER_GROUP_JOIN' => 'Inscrição do Utilizador no Grupo
    » %s', + 'LOG_USER_GROUP_JOIN_PENDING' => 'O Utilizador inscreveu-se no Grupo e precisa de ser Aprovado
    » %s', + 'LOG_USER_GROUP_RESIGN' => 'Utilizador excluído do Grupo
    » %s', + + 'LOG_WARNING_DELETED' => 'Eliminados utilizadores avisados
    » %s', + 'LOG_WARNINGS_DELETED' => array( + 1 => 'Apagado utilizador avisado
    » %1$s', + 2 => 'Apagados %2$d utilizadores avisados
    » %1$s', // Example: 'Deleted 2 user warnings
    » username' + ), + 'LOG_WARNINGS_DELETED_ALL' => 'Eliminados todos os utilizadores avisados
    » %s', + + 'LOG_WORD_ADD' => 'Palavra Censurada Adicionada
    » %s', + 'LOG_WORD_DELETE' => 'Palavra Censurada Apagada
    » %s', + 'LOG_WORD_EDIT' => 'Palavra Censurada Editada
    » %s', + + 'LOG_EXT_ENABLE' => 'Extensão ativada
    » %s', + 'LOG_EXT_DISABLE' => 'Extensão desativada
    » %s', + 'LOG_EXT_PURGE' => 'Dados da extensão apagados
    » %s', + 'LOG_EXT_UPDATE' => 'Extensão atualizada
    » %s', +)); diff --git a/includes/shared/phpbb3/language/lang_portugese/acp/index.htm b/includes/shared/phpbb3/language/lang_portugese/acp/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_portugese/acp/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_portugese/acp/posting.php b/includes/shared/phpbb3/language/lang_portugese/acp/posting.php new file mode 100644 index 00000000..30055bfe --- /dev/null +++ b/includes/shared/phpbb3/language/lang_portugese/acp/posting.php @@ -0,0 +1,291 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* @Traduzido por: http://www.phpbb-pt.com - segundo as normas do Acordo Ortográfico +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +// BBCodes +// Note to translators: you can translate everything but what's between { and } +$lang = array_merge($lang, array( + 'ACP_BBCODES_EXPLAIN' => 'BBCode (Bulletin Board Code) é uma linguagem originalmente desenvolvida para phpBB. Permite configurar o que é, e como é exibido. Aqui é possível adicionar, editar e apagar BBCodes.', + 'ADD_BBCODE' => 'Adicionar novo BBCode', + + 'BBCODE_DANGER' => 'O BBCode que está a tentar adicionar parece usar um {TEXT} dentro de um atributo de HTML. Esta é uma possível questão de segurança XSS. Em alternativa, tente usar o mais restritivo {SimpleText} ou {INTTEXT}. Só prossiga se compreende os riscos de segurança envolvidos e se considera inevitável o uso de {TEXT}.', + 'BBCODE_DANGER_PROCEED' => 'Continuar', //'I understand the risk', + + 'BBCODE_ADDED' => 'O BBCode foi adicionado com sucesso.', + 'BBCODE_EDITED' => 'O BBCode foi editado com sucesso.', + 'BBCODE_DELETED' => 'O BBCode foi apagado com sucesso.', + 'BBCODE_NOT_EXIST' => 'O BBCode que selecionou não existe.', + 'BBCODE_HELPLINE' => 'Linha de Ajuda', + 'BBCODE_HELPLINE_EXPLAIN' => 'Neste Campo deve ser inserido o texto mostrado quando se coloca o cursor sobre o BBCode.', + 'BBCODE_HELPLINE_TEXT' => 'Texto da Linha de Ajuda', + 'BBCODE_HELPLINE_TOO_LONG' => 'A linha de ajuda que escreveu é muito longa.', + + 'BBCODE_INVALID_TAG_NAME' => 'O Nome da TAG de BBCode selecionado já existe.', + 'BBCODE_INVALID' => 'A construção do seu BBCode é invalido.', + 'BBCODE_OPEN_ENDED_TAG' => 'O BBCode personalizado deve conter uma TAG de início e outra de fim.', + 'BBCODE_TAG' => 'TAG', + 'BBCODE_TAG_TOO_LONG' => 'O Nome da TAG selecionado é muito grande.', + 'BBCODE_TAG_DEF_TOO_LONG' => 'A Definição da TAG escrita é muito grande. Por Favor, reescreva de forma mais curta.', + 'BBCODE_USAGE' => 'Uso do BBCode', + 'BBCODE_USAGE_EXAMPLE' => '[highlight={COLOR}]{TEXT}[/highlight]

    [font={SIMPLETEXT1}]{SIMPLETEXT2}[/font]', + 'BBCODE_USAGE_EXPLAIN' => 'Aqui pode definir como utilizar o BBCode. Substitua qualquer variável inserida pelo símbolo correspondente (%sleia as instruções%s).', + + 'EXAMPLE' => 'Exemplo:', + 'EXAMPLES' => 'Exemplos:', + + 'HTML_REPLACEMENT' => 'Substituição do HTML', + 'HTML_REPLACEMENT_EXAMPLE' => '<span style="background-color: {COLOR};">{TEXT}</span>

    <span style="font-family: {SIMPLETEXT1};">{SIMPLETEXT2}</span>', + 'HTML_REPLACEMENT_EXPLAIN' => 'Aqui pode definir a substituição padrão do HTML. Não se esqueça de colocar os símbolos utilizados acima!', + + 'TOKEN' => 'Símbolo', + 'TOKENS' => 'Símbolos', + 'TOKENS_EXPLAIN' => 'Os Símbolos são campos especiais a serem adicionados pelos Utilizadores. Mas estes apenas serão válidos se tiverem as definições correspondentes. Se necessário, pode numerá-los adicionando um número como o último carácter: Exemplo: {Utilizador}, {Utilizador1}.

    Pode ainda utilizar estes Símbolos com qualquer sequência de linguagem presente na pasta /language como esta: {L_<STRINGNAME>} onde <STRINGNAME> é o nome da sequência traduzida que deseja adicionar. Por exemplo, {L_WROTE} será exibido como “Escreveu†ou traduzido de acordo com a localidade do Utilizador.

    Tenha em atenção que apenas os Símbolos listados abaixo podem ser utilizados com os BBCodes personalizados.', + 'TOKEN_DEFINITION' => 'O que é que isto pode ser?', + 'TOO_MANY_BBCODES' => 'Não pode criar mais BBCodes. Elimine alguns BBCodes para poder criar outros.', + + 'tokens' => array( + 'TEXT' => 'Qualquer texto, incluindo caracteres estrangeiros, números, etc ... Não deve usar o símbolo TEXT em tags HTML. Em vez disso tente usar intText ou SimpleText.', + 'SIMPLETEXT' => 'Caracteres do alfabeto latino (A-Z), números, espaços, vírgulas, pontos, menos, mais, hífen e sublinhado.', + 'INTTEXT' => 'Caracteres Unicode, números, espaços, vírgulas, pontos, menos, mais, hífen, sublinhado e espaços em branco.', + 'IDENTIFIER' => 'Caracteres do alfabeto latino (A-Z), números, hífen e sublinhado', + 'NUMBER' => 'Qualquer Séries de Dígitos', + 'EMAIL' => 'Um endereço de email válido', + 'URL' => 'Uma URL válida utilizando qualquer protocolo (http, ftp, etc. não pode ser utilizada para javascript). Se nenhum for concedido, “http://†é o prefixado para a sequência.', + 'LOCAL_URL' => 'Uma URL local. O URL deve ser relativo à página do tópico e não pode conter o nome do servidor ou o protocolo, como as ligações são prefixados com “%sâ€', + 'RELATIVE_URL' => 'Uma URL relativa. Pode combinar partes de uma URL, mas tenha cuidado: a URL completa é uma URL relativa válida. Quando quiser usar URLs relativas do seu fórum, use o token LOCAL_URL.', + 'COLOR' => 'Uma Cor de HTML, pode ser tanto na forma numérica #FF1234 ou uma CSS colour keyword assim como fuchsia ou InativeBorder', + ), +)); + +// Smilies and topic icons +$lang = array_merge($lang, array( + 'ACP_ICONS_EXPLAIN' => 'Aqui pode adicionar, editar e apagar os ícones que os Utilizador terão disponíveis para adicionar nos Tópicos e Mensagens. Estes ícones são exibidos geralmente perto do Título dos Tópicos na lista de Fóruns, ou o título do Tópico na lista de Tópicos. Também pode instalar e criar Pacotes de Ãcones novos.', + 'ACP_SMILIES_EXPLAIN' => 'Emoções ou Smilies são tipicamente pequenas, às vezes imagens animadas utilizadas para mostrar alguma emoção ou sentimento. Aqui pode adicionar, editar e apagar as Emoções que os Utilizadores terão disponíveis nos Tópicos e Mensagens Privadas. Também pode instalar e criar Pacotes de Emoções.', + 'ADD_SMILIES' => 'Adicionar Múltiplas Emoções', + 'ADD_SMILEY_CODE' => 'Adicionar Código Adicional à Emoção', + 'ADD_ICONS' => 'Adicionar Ãcones Múltiplos', + 'AFTER_ICONS' => 'Depois %s', + 'AFTER_SMILIES' => 'Depois %s', + + 'CODE' => 'Código', + 'CURRENT_ICONS' => 'Ãcones atuais', + 'CURRENT_ICONS_EXPLAIN' => 'Escolha o que fazer com os ícones atualmente instalados.', + 'CURRENT_SMILIES' => 'Emoções atuais', + 'CURRENT_SMILIES_EXPLAIN' => 'Escolha o que fazer com as Emoções atualmente instaladas.', + + 'DISPLAY_ON_POSTING' => 'Exibir na Mensagem', + 'DISPLAY_POSTING' => 'Na Mensagem', + 'DISPLAY_POSTING_NO' => 'Não Exibir na Mensagem', + + 'EDIT_ICONS' => 'Editar Ãcones', + 'EDIT_SMILIES' => 'Editar Emoções', + 'EMOTION' => 'Emoção', + 'EXPORT_ICONS' => 'Exportar e descarregar Pacote de ícones (smilies.pak)', + 'EXPORT_ICONS_EXPLAIN' => '%sClicando neste atalho, as configurações para os seus ícones instalados serão compactadas para icons.pak que uma vez descarregado pode ser utilizado para criar um ficheiro .zip ou .tgz contendo todos os seus ícones mais este ficheiro de configuraçãoicons.pak%s.', + 'EXPORT_SMILIES' => 'Exportar e descarregar um pack de Emoções', + 'EXPORT_SMILIES_EXPLAIN' => '%sClicando neste atalho, os ícones de emoções instalados será compactado para smilies.pak que uma vez descarregado pode ser utilizado para criar um ficheiro .zip ou .tgz contendo todas as suas emoções mais este ficheiro de configuraçãosmilies.pak%s.', + + 'FIRST' => 'Primeiro', + + 'ICONS_ADD' => 'Adicionar novo ícone', + 'ICONS_ADDED' => array( + 0 => 'Não foram adicionados ícones.', + 1 => 'O ícone foi adicionado com sucesso.', + 2 => 'Os ícones foram adicionados com sucesso.', + ), + 'ICONS_CONFIG' => 'Configuração dos ícones', + 'ICONS_DELETED' => 'O ícone foi apagado com sucesso.', + 'ICONS_EDIT' => 'Editar ícone', + 'ICONS_EDITED' => array( + 0 => 'Não há ícones para atualizar.', + 1 => 'O ícone foi atualizado com sucesso.', + 2 => 'Os ícones foram atualizados com sucesso.', + ), + 'ICONS_HEIGHT' => 'Altura do ícone', + 'ICONS_IMAGE' => 'Imagem do ícone', + 'ICONS_IMPORTED' => 'O Pacote de ícones foi instalado com sucesso.', + 'ICONS_IMPORT_SUCCESS' => 'O Pacote de ícones foi importado com sucesso.', + 'ICONS_LOCATION' => 'Local do ícone', + 'ICONS_NOT_DISPLAYED' => 'Os ícones seguintes não serão exibidos na página de mensagens', + 'ICONS_ORDER' => 'Ordem do Ãcone', + 'ICONS_URL' => 'Ficheiro de imagem do ícone', + 'ICONS_WIDTH' => 'Largura do Ãcone', + 'IMPORT_ICONS' => 'Instalar Pacote de ícones', + 'IMPORT_SMILIES' => 'Instalar Pacote de Emoções', + + 'KEEP_ALL' => 'Guardar Todas', + + 'MASS_ADD_SMILIES' => 'Adicionar Múltiplas Emoções', + + 'NO_ICONS_ADD' => 'Não há ícones disponíveis para adicionar.', + 'NO_ICONS_EDIT' => 'Não há ícones disponíveis para modificar.', + 'NO_ICONS_EXPORT' => 'Não tem ícones para Criar um Pacote.', + 'NO_ICONS_PAK' => 'Não foi encontrado nenhum Pacote de ícones.', + 'NO_SMILIES_ADD' => 'Não há Emoções disponíveis para adicionar.', + 'NO_SMILIES_EDIT' => 'Não há Emoções disponíveis para modificar.', + 'NO_SMILIES_EXPORT' => 'Não tem Emoções para criar um Pacote.', + 'NO_SMILIES_PAK' => 'Não foi encontrado nenhum Pacote de Emoções.', + + 'PAK_FILE_NOT_READABLE' => 'Não é possível ler o ficheiro .pak.', + + 'REPLACE_MATCHES' => 'Substituir entradas', + + 'SELECT_PACKAGE' => 'Selecionar o Ficheiro do Pacote', + 'SMILIES_ADD' => 'Adicionar nova Emoção', + 'SMILIES_ADDED' => array( + 0 => 'Não foram adicionadas emoções.', + 1 => 'A emoção foi adicionada com sucesso.', + 2 => 'As emoções foram adicionadas com sucesso.', + ), + 'SMILIES_CODE' => 'Código da Emoção', + 'SMILIES_CONFIG' => 'Configuração da Emoção', + 'SMILIES_DELETED' => 'A Emoção foi apagada com sucesso.', + 'SMILIES_EDIT' => 'Editar Emoção', + 'SMILIE_NO_CODE' => 'A Emoção "%s" foi ignorada, como se nenhum código tivesse sido escrito.', + 'SMILIE_NO_EMOTION' => 'A Emoção "%s" foi ignorada, como se nenhuma emoção tivesse sido escrita.', + 'SMILIE_NO_FILE' => 'A Emoção “%s†foi ignorada, porque falta o ficheiro.', + 'SMILIES_EDITED' => array( + 0 => 'Não foram atualizadas emoções.', + 1 => 'A emoção foi atualizada com sucesso.', + 2 => 'As emoções foram atualizadas com sucesso.', + ), + 'SMILIES_EMOTION' => 'Emoção', + 'SMILIES_HEIGHT' => 'Altura da Emoção', + 'SMILIES_IMAGE' => 'Imagem da Emoção', + 'SMILIES_IMPORTED' => 'O Pacote de Emoções foi instalado com sucesso.', + 'SMILIES_IMPORT_SUCCESS' => 'O Pacote de Emoções foi importado com sucesso.', + 'SMILIES_LOCATION' => 'Local do Emoção', + 'SMILIES_NOT_DISPLAYED' => 'As Emoções seguintes são exibidos na página de mensagens', + 'SMILIES_ORDER' => 'Ordem da Emoção', + 'SMILIES_URL' => 'Ficheiro de Imagem da Emoção', + 'SMILIES_WIDTH' => 'Largura da Emoção', + + 'TOO_MANY_SMILIES' => array( + 1 => 'Limite de %d emoção atingido.', + 2 => 'Limite de %d emoções atingido.', + ), + + 'WRONG_PAK_TYPE' => 'O Pacote selecionado não tem as informações necessárias', +)); + +// Word censors +$lang = array_merge($lang, array( + 'ACP_WORDS_EXPLAIN' => 'Aqui pode adicionar, editar e apagar palavras que serão automaticamente censuradas no Fórum. Adicionando esta opção, os visitantes continuarão a poder registar-se com Nomes de utilizadores contendo estas palavras. Podem ser utilizados asteriscos (*) aumentando as possibilidades de abranger variações de uma mesma palavra. Por exemplo, testa* abrangerá testar e detesta.', + 'ADD_WORD' => 'Adicionar nova Palavra', + + 'EDIT_WORD' => 'Editar Palavra Censurada', + 'ENTER_WORD' => 'Tem que escrever uma palavra e a sua substituição.', + + 'NO_WORD' => 'Não foi selecionada nenhuma palavra para poder ser editada.', + + 'REPLACEMENT' => 'Substituição', + + 'UPDATE_WORD' => 'Atualizar Palavra Censurada', + + 'WORD' => 'Palavra', + 'WORD_ADDED' => 'A Palavra Censurada foi adicionada com sucesso.', + 'WORD_REMOVED' => 'A Palavra Censurada foi apagada com sucesso.', + 'WORD_UPDATED' => 'A Palavra Censurada foi atualizada com sucesso.', +)); + +// Ranks +$lang = array_merge($lang, array( + 'ACP_RANKS_EXPLAIN' => 'Aqui poderá adicionar, editar, visualizar e apagar classificações. Pode também criar classificações personalizadas que podem ser aplicados a um Utilizador nas Ferramentas de Administração de Utilizadores.', + 'ADD_RANK' => 'Adicionar nova classificação', + + 'MUST_SELECT_RANK' => 'Tem de selecionar uma classificação.', + + 'NO_ASSIGNED_RANK' => 'Nenhuma Classificação Especial existente.', + 'NO_RANK_TITLE' => 'Tem que escrever o Título da Classificação.', + 'NO_UPDATE_RANKS' => 'A classificação foi apagada com sucesso. De qualquer modo, os registos que utilizavam esta classificação não foram atualizados. Tem que atualizar as classificações nestes registos manualmente.', + + 'RANK_ADDED' => 'A classificação foi adicionada com sucesso.', + 'RANK_IMAGE' => 'Imagem da Classificação', + 'RANK_IMAGE_EXPLAIN' => 'Imagem da Classificação (relativo à pasta raiz do phpBB).', + 'RANK_IMAGE_IN_USE' => '(em uso)', + 'RANK_MINIMUM' => 'Número Mínimo de Mensagens', + 'RANK_REMOVED' => 'A classificação foi apagada com sucesso.', + 'RANK_SPECIAL' => 'Escreva uma Classificação Especial', + 'RANK_TITLE' => 'Título da Classificação', + 'RANK_UPDATED' => 'A Classificação foi atualizada com sucesso.', +)); + +// Disallow Usernames +$lang = array_merge($lang, array( + 'ACP_DISALLOW_EXPLAIN' => 'Aqui pode gerir os nomes cuja utilização é proibida. Utilize o asterisco (*) para facilitar a construção de nomes.', + 'ADD_DISALLOW_EXPLAIN' => 'Pode proibir nomes de utilizadores combinando o asterisco (*) com outros caracteres.', + 'ADD_DISALLOW_TITLE' => 'Adicionar um Nome Proibido', + + 'DELETE_DISALLOW_EXPLAIN' => 'Aqui pode eliminar uma proibição, ao selecionar na lista o nome cuja proibição pretende anular, clicando de seguida em enviar.', + 'DELETE_DISALLOW_TITLE' => 'Apagar um Nome Proibido', + 'DISALLOWED_ALREADY' => 'O Nome especificado já está proibido.', + 'DISALLOWED_DELETED' => 'O Nome Proibido foi apagado com sucesso.', + 'DISALLOW_SUCCESSFUL' => 'O Nome Proibido foi adicionado com sucesso.', + + 'NO_DISALLOWED' => 'Não há Nomes Proibidos', + 'NO_USERNAME_SPECIFIED' => 'O Nome Proibido não foi selecionado.', +)); + +// Reasons +$lang = array_merge($lang, array( + 'ACP_REASONS_EXPLAIN' => 'Aqui pode gerir as razões utilizadas em denúncias e mensagens negativas quando desaprovando mensagens. Existe uma razão padrão (marcada com um (*)) em que não pode apagar, esta razão é normalmente utilizada para mensagens Personalizadas se não possuírem motivos plausíveis.', + 'ADD_NEW_REASON' => 'Adicionar nova Razão', + 'AVAILABLE_TITLES' => 'Títulos de Razões Locais Disponíveis', + + 'IS_NOT_TRANSLATED' => 'A Razão não foi encontrada.', + 'IS_NOT_TRANSLATED_EXPLAIN' => 'A Razão não foi encontrada. Se deseja estabelecer a forma local, especifique a chave correta através dos ficheiros de linguagem do Fórum de razões para denúncias.', + 'IS_TRANSLATED' => 'A Razão foi encontrada.', + 'IS_TRANSLATED_EXPLAIN' => 'A Razão foi encontrada. Se o título que escreveu aqui for especificado com os ficheiros de linguagem do Fórum de razões para denúncias, a forma localizada para o título e a descrição serão utilizadas.', + + 'NO_REASON' => 'A Razão não pôde ser encontrada.', + 'NO_REASON_INFO' => 'O Título e a Descrição para esta Razão devem ser escritos.', + 'NO_REMOVE_DEFAULT_REASON' => 'Não está autorizado a apagar a Razão Padrão "Outros".', + + 'REASON_ADD' => 'Adicionar Razão para Denúncia/Negação', + 'REASON_ADDED' => 'A Razão para Denúncia/Negação foi adicionada com sucesso.', + 'REASON_ALREADY_EXIST' => 'O Título escrito já existe. Por Favor, escreva outro título para esta razão.', + 'REASON_DESCRIPTION' => 'Descrição da Razão', + 'REASON_DESC_TRANSLATED' => 'Descrição da Razão exibida', + 'REASON_EDIT' => 'Editar Razão para Denúncia/Negação', + 'REASON_EDIT_EXPLAIN' => 'Aqui pode adicionar ou editar uma razão. Se a razão for traduzida, a versão localizada é utilizada ao invés da descrição descrita aqui.', + 'REASON_REMOVED' => 'A razão foi apagada por sucesso.', + 'REASON_TITLE' => 'Título da Razão', + 'REASON_TITLE_TRANSLATED' => 'Título da Razão exibida', + 'REASON_UPDATED' => 'A Razão para Denúncia/Negação foi atualizada com sucesso.', + + 'USED_IN_REPORTS' => 'Utilizado em Denúncias', +)); diff --git a/includes/shared/phpbb3/language/lang_portugese/common.php b/includes/shared/phpbb3/language/lang_portugese/common.php new file mode 100644 index 00000000..d13a2012 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_portugese/common.php @@ -0,0 +1,1435 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* @Traduzido por: http://www.phpbb-pt.com - segundo as normas do Acordo Ortográfico +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » “ †... +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Traduzido por: phpBB Portugal', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'pt', + + // You can define different rules for the determination of plural forms here. + // See https://area51.phpbb.com/docs/dev/32x/language/plurals.html for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 2, + + '1_DAY' => '1 Dia', + '1_MONTH' => '1 Mês', + '1_YEAR' => '1 Ano', + '2_WEEKS' => '2 Semanas', + '3_MONTHS' => '3 Meses', + '6_MONTHS' => '6 Meses', + '7_DAYS' => '7 Dias', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'O seu registo já se encontra ativo.', + 'ACCOUNT_DEACTIVATED' => 'O seu registo foi desativado manualmente e apenas pode ser reativado por um Administrador.', + 'ACCOUNT_NOT_ACTIVATED' => 'O seu registo ainda não se encontra ativo', + 'ACP' => 'Painel de Administração', + 'ACP_SHORT' => 'ACP', + 'ACTIVE' => 'Ativo', + 'ACTIVE_ERROR' => 'Especificou um Utilizador inativo. Se continuar com problemas, contacte um Administrador.', + 'ADMINISTRATOR' => 'Administrador', + 'ADMINISTRATORS' => 'Administradores', + 'AGE' => 'Idade', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'Erro AJAX', + 'AJAX_ERROR_TEXT' => 'Algo de errado ocorreu enquanto o seu pedido era processado.', + 'AJAX_ERROR_TEXT_ABORT' => 'Utilizador abortou pedido.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'O seu pedido expirou; tente novamente.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Algo de errado ocorreu com o pedido e o servidor devolveu uma resposta inválida.', + 'ALLOWED' => 'Permitido', + 'ALL_FILES' => 'Todos os Ficheiros', + 'ALL_FORUMS' => 'Todos os Fóruns', + 'ALL_MESSAGES' => 'Todas as Mensagens', + 'ALL_POSTS' => 'Todas as Mensagens', + 'ALL_TIMES' => 'O Fuso Horário do Fórum é %1$s', + 'ALL_TOPICS' => 'Todos os Tópicos', + 'ALT_TEXT' => 'Texto alternativo', + 'AND' => 'E', + 'ARE_WATCHING_FORUM' => 'Optou por receber atualizações deste Fórum.', + 'ARE_WATCHING_TOPIC' => 'Optou por receber atualizações deste Tópico.', + 'ASCENDING' => 'Crescente', + 'ATTACHMENTS' => 'Anexos', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'O Ficheiro de imagem que anexou é inválido', + 'AUTHOR' => 'Autor', + 'AUTH_NO_PROFILE_CREATED' => 'Não foi possível criar o Perfil do Utilizador.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'A entrada da Base de Dados é inválida.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'O tipo de serviço enviado à rotina de tratamento de serviços "OAuth" é inválido.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'O serviço OAuth não foi criado', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_SERVICE_TWITTER' => 'Twitter', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'OAuth token não guardados.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'OAuth token guardados incorretamente.', + 'AVATAR_DISALLOWED_CONTENT' => 'O envio foi recusado porque o Ficheiro foi identificado como potencialmente malicioso.', + 'AVATAR_DISALLOWED_EXTENSION' => 'A extensão %s não é permitida.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Avatar não foi enviado, por favor, tente enviar o Ficheiro manualmente.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'O Ficheiro de Avatar enviado está vazio.', + 'AVATAR_INVALID_FILENAME' => '%s é um nome de Ficheiro inválido.', + 'AVATAR_NOT_UPLOADED' => 'O Avatar não foi enviado.', + 'AVATAR_NO_TEMP_DIR' => 'A pasta temporária não pôde ser encontrada ou não tem permissões de escrita.', + 'AVATAR_NO_SIZE' => 'Não foi possível obter a largura e a altura do Avatar, por favor, indique-os manualmente.', + 'AVATAR_PARTIAL_UPLOAD' => 'O Ficheiro foi parcialmente enviado.', + 'AVATAR_PHP_SIZE_NA' => 'O Ficheiro do Avatar é demasiado grande.
    Não foi possível determinar o tamanho máximo definido pelo PHP no php.ini.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'O Ficheiro do Avatar é demasiado grande, sendo o máximo permitido de envio %1$d %2$s.
    Por favor, note que isto é definido no php.ini e não pode ser alterado.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'O Avatar especificado não pôde ser carregado porque o pedido excedeu o tempo.', + 'AVATAR_PHP_UPLOAD_STOPPED' => 'Uma extensão PHP parou o upload de ficheiros.', + 'AVATAR_URL_INVALID' => 'A URL que especificou é inválida.', + 'AVATAR_URL_NOT_FOUND' => 'O Ficheiro indicado não foi encontrado.', + 'AVATAR_WRONG_FILESIZE' => 'O tamanho do Avatar deve estar entre 0 e %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'O avatar submetido tem %5$s de largura e %6$s de altura. Avatares devem ter pelo menos %1$s de largura e %2$s de altura, e não maiores do que %3$s de largura %4$s de altura.', + + 'BACK_TO_TOP' => 'Topo', + 'BACK_TO_PREV' => 'Voltar à página anterior', + 'BAN_TRIGGERED_BY_EMAIL' => 'O seu endereço de email foi banido do Fórum.', + 'BAN_TRIGGERED_BY_IP' => 'O seu endereço IP foi banido do Fórum.', + 'BAN_TRIGGERED_BY_USER' => 'O seu Nome de Utilizador foi banido do Fórum.', + 'BBCODE_GUIDE' => 'Guia BBCode', + 'BCC' => 'Bcc', + 'BIRTHDAYS' => 'Aniversariantes', + 'BOARD_BAN_PERM' => 'Foi expulso permanentemente deste Fórum.

    Por favor, contacte o %2$sAdministrador%3$s para mais informações.', + 'BOARD_BAN_REASON' => 'Razão da expulsão: %s', + 'BOARD_BAN_TIME' => 'Foi expulso deste Fórum até %1$s.

    Por favor, contacte o %2$sAdministrador%3$s para mais informações.', + 'BOARD_DISABLE' => 'Este Fórum está, de momento, indisponível.', + 'BOARD_DISABLED' => 'Este Fórum está atualmente desativado.', + 'BOARD_UNAVAILABLE' => 'Este Fórum não se encontra disponível neste momento. Por Favor, tente novamente mais tarde.', + 'BROWSING_FORUM' => 'Utilizadores a ver este Fórum: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Utilizadores neste fórum: %2$s e %1$d visitante', + 2 => 'Utilizadores neste fórum: %2$s e %1$d visitantes', + ), + 'BUTTON_DELETE' => 'Excluir', + 'BUTTON_EDIT' => 'Editar', + 'BUTTON_FORUM_LOCKED' => 'Fórum Bloqueado', + 'BUTTON_INFORMATION' => 'Informação', + 'BUTTON_NEW_TOPIC' => 'Novo Tópico', + 'BUTTON_PM' => 'MP', + 'BUTTON_PM_FORWARD' => 'Reenviar', + 'BUTTON_PM_NEW' => 'Nova MP', + 'BUTTON_PM_REPLY' => 'Responder MP', + 'BUTTON_PM_REPLY_ALL' => 'Responder a todos', + 'BUTTON_POST_REPLY' => 'Responder', + 'BUTTON_QUOTE' => 'Citar', + 'BUTTON_REPORT' => 'Denunciar', + 'BUTTON_TOPIC_LOCKED' => 'Bloqueado', + 'BUTTON_WARN' => 'Advertir', + 'BYTES' => 'Bytes', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Cancelar', + 'CHANGE' => 'Alterar', + 'CHANGE_FONT_SIZE' => 'Alterar o tamanho do tipo de letra', + 'CHANGING_PREFERENCES' => 'Alterando as Preferências do Fórum', + 'CHANGING_PROFILE' => 'Alterando as Configurações de Perfil', + 'CHARACTERS' => array( + 1 => '%d carácter', + 2 => '%d caracteres', + ), + 'COLLAPSE_VIEW' => 'Recolher vista', + 'CLOSE_WINDOW' => 'Fechar Janela', + 'COLOUR_SWATCH' => 'Paleta de Cores', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Comma used to join lists into a single string, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirmar', + 'CONFIRM_CODE' => 'Código de Confirmação', + 'CONFIRM_CODE_EXPLAIN' => 'As letras são maiúsculas e minúsculas. Escreva-as exatamente como aparecem.', + 'CONFIRM_CODE_WRONG' => 'O Código de Confirmação está incorreto.', + 'CONFIRM_OPERATION' => 'Deseja continuar com esta operação?', + 'CONFIRM_AVATAR_DELETE' => 'Tem a certeza que deseja apagar este avatar?', + 'CONGRATULATIONS' => 'Parabéns a', + 'CONNECTION_FAILED' => 'A ligação falhou.', + 'CONNECTION_SUCCESS' => 'A ligação foi efetuada!', + 'CONTACT' => 'Contacto', + 'CONTACT_USER' => 'Contacto %s', + 'CONTACT_US' => 'Contacte-nos', + 'COOKIE_CONSENT_INFO' => 'Saiba mais', + 'COOKIE_CONSENT_MSG' => 'Este site utiliza cookies para lhe proporcionar uma melhor experiência.', + 'COOKIE_CONSENT_OK' => 'Entendido!', + 'COOKIE_CONSENT_HREF' => 'http://cookiesandyou.com', + 'COOKIES_DELETED' => 'Todos os cookies deste Fórum foram apagados.', + 'CURRENT_TIME' => 'Data/Hora: %s', + + 'DAY' => 'Dia', + 'DAYS' => 'Dias', + 'DELETE' => 'Apagar', + 'DELETE_ALL' => 'Apagar Todos', + 'DELETE_COOKIES' => 'Apagar cookies', + 'DELETE_MARKED' => 'Apagar Selecionados', + 'DELETE_POST' => 'Apagar esta Mensagem', + 'DELIMITER' => 'Delimitador', + 'DESCENDING' => 'Decrescente', + 'DISABLED' => 'Desativado', + 'DISPLAY' => 'Mostrar', + 'DISPLAY_GUESTS' => 'Mostrar Visitantes', + 'DISPLAY_MESSAGES' => 'Mostrar mensagens anteriores', + 'DISPLAY_POSTS' => 'Mostrar mensagens anteriores', + 'DISPLAY_TOPICS' => 'Mostrar Tópicos anteriores', + 'DOWNLOADED' => 'Transferido', + 'DOWNLOADING_FILE' => 'A Transferir ficheiro', + 'DOWNLOAD_COUNTS' => array( + 0 => 'Não foi transferido ainda', + 1 => 'Transferido %d vez', + 2 => 'Transferido %d vezes', + ), + + 'EDIT_POST' => 'Editar esta Mensagem', + 'ELLIPSIS' => '...', + 'EMAIL' => 'Correio eletrónico', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Email', + 'EMAIL_INVALID_EMAIL' => 'O endereço de email que introduziu é inválido.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Ocorreu um problema ao enviar o email na Linha %1$s. Erro: %2$s.', + 'EMPTY_SUBJECT' => 'Quando se envia uma mensagem, deve ser especificado um assunto.', + 'EMPTY_MESSAGE_SUBJECT' => 'Precisa especificar um assunto quando escrever uma nova mensagem.', + 'ENABLED' => 'Ativado', + 'ENCLOSURE' => 'Documento anexo', + 'ENTER_USERNAME' => 'Introduza o Utilizador', + 'ERR_CHANGING_DIRECTORY' => 'Não foi possível alterar a pasta.', + 'ERR_CONNECTING_SERVER' => 'Erro ao ligar-se ao servidor.', + 'ERR_JAB_AUTH' => 'Não foi autorizado a entrar no servidor Jabber.', + 'ERR_JAB_CONNECT' => 'Não foi possível fazer a ligação ao servidor Jabber.', + 'ERR_UNABLE_TO_LOGIN' => 'Ocorreu um erro no acesso. Nome de Utilizador ou Senha incorretos.', + 'ERR_UNWATCHING' => 'Um erro ocorreu durante o cancelamento da subscrição.', + 'ERR_WATCHING' => 'Um erro ocorreu durante a subscrição.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'O local do script phpBB indicado parece não ser válido.', + 'ERROR' => 'Erro', + 'EXPAND_VIEW' => 'Ver mais detalhes', + 'EXTENSION' => 'Extensão', + 'EXTENSION_DISABLED' => 'A extensão %s não está ativada.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'A extensão %s foi desativada e não pode ser exibida.', + 'EXTENSION_DOES_NOT_EXIST' => 'A extensão %s não existe.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'Questões Mais Frequentes', + 'FEATURE_NOT_AVAILABLE' => 'A funcionalidade não está disponível neste fórum.', + 'FILENAME' => 'Nome do Ficheiro', + 'FILESIZE' => 'Tamanho do Ficheiro', + 'FILEDATE' => 'Data do Ficheiro', + 'FILE_COMMENT' => 'Comentário do Ficheiro', + 'FILE_CONTENT_ERR' => 'Não foi possível ler o conteúdo do ficheiro: %s', + 'FILE_JSON_DECODE_ERR' => 'Falha ao descodificar ficheiro json: %s', + 'FILE_NOT_FOUND' => 'Ficheiro não encontrado: %s', + 'FIND_USERNAME' => 'Procurar Utilizador', + 'FOLDER' => 'Pasta', + 'FORGOT_PASS' => 'Esqueci-me da senha', + 'FORM_INVALID' => 'O formulário apresentado não era válido. Tente enviar novamente.', + 'FORUM' => 'Fórum', + 'FORUMS' => 'Fóruns', + 'FORUMS_MARKED' => 'Os Fóruns foram marcados como lidos.', + 'FORUM_CAT' => 'Categoria do Fórum', + 'FORUM_INDEX' => 'Ãndice do Fórum', + 'FORUM_LINK' => 'Endereço do Fórum', + 'FORUM_LOCATION' => 'Local do Fórum', + 'FORUM_LOCKED' => 'Fórum Bloqueado', + 'FORUM_RULES' => 'Regras do Fórum', + 'FORUM_RULES_LINK' => 'Por Favor, clique aqui para ver as regras do Fórum', + 'FROM' => 'de', + 'FSOCK_DISABLED' => 'Não foi possível concluir esta operação, porque a função fsockopen está desativada ou o servidor solicitado não foi encontrado.', + 'FSOCK_TIMEOUT' => 'O tempo limite esgotou-se durante a leitura do fluxo de rede', + + 'FTP_FSOCK_HOST' => 'Servidor FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Servidor FTP utilizada para se ligar ao seu site.', + 'FTP_FSOCK_PASSWORD' => 'Senha do FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Senha para o seu Nome de Utilizador do FTP.', + 'FTP_FSOCK_PORT' => 'Porta FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Porta utilizada para se ligar ao seu servidor FTP.', + 'FTP_FSOCK_ROOT_PATH' => 'Local do phpBB', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Caminho desde a raiz até ao seu Fórum phpBB.', + 'FTP_FSOCK_TIMEOUT' => 'Intervalo do FTP', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Tempo, em segundos, que o sistema irá aguardar por uma resposta do servidor.', + 'FTP_FSOCK_USERNAME' => 'Nome de utilizador FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Nome de utilizador utilizado para se ligar ao seu servidor.', + + 'FTP_HOST' => 'Servidor FTP', + 'FTP_HOST_EXPLAIN' => 'Servidor FTP utilizado para se ligar ao seu site.', + 'FTP_PASSWORD' => 'Senha do FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Senha para de Utilizador do seu FTP.', + 'FTP_PORT' => 'Porta FTP', + 'FTP_PORT_EXPLAIN' => 'Porta utilizada para ligar ao seu servidor FTP.', + 'FTP_ROOT_PATH' => 'Local do phpBB', + 'FTP_ROOT_PATH_EXPLAIN' => 'Local desde a raiz até ao seu Fórum phpBB.', + 'FTP_TIMEOUT' => 'Intervalo FTP', + 'FTP_TIMEOUT_EXPLAIN' => 'Tempo, em segundos, que o sistema irá aguardar por uma resposta do seu servidor.', + 'FTP_USERNAME' => 'Nome do Utilizador do FTP', + 'FTP_USERNAME_EXPLAIN' => 'Nome de Utilizador utilizado para se conectar ao seu servidor.', + + 'GENERAL_ERROR' => 'Erro Geral', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GO' => 'Avançar', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Ir para a primeira página', + 'GOTO_LAST_POST' => 'Ir para a última página', + 'GOTO_PAGE' => 'Ir para a página', + 'GROUP' => 'Grupo', + 'GROUPS' => 'Grupos', + 'GROUP_ERR_TYPE' => 'O tipo de grupo especificado é inapropriado.', + 'GROUP_ERR_USERNAME' => 'Especifique um nome para o Grupo.', + 'GROUP_ERR_USER_LONG' => 'O Nome do Grupo é muito grande.', + 'GUEST' => 'Visitante', + 'GUEST_USERS_ONLINE' => array( + 1 => 'Há %d visite', + 2 => 'Há %d visitantes', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d visitante', + 2 => '%d visitantes', + ), + 'G_ADMINISTRATORS' => 'Administrador', + 'G_BOTS' => 'Motores de Busca', + 'G_GUESTS' => 'Visitantes', + 'G_REGISTERED' => 'Utilizadores', + 'G_REGISTERED_COPPA' => 'Utilizadores COPPA Registados', + 'G_GLOBAL_MODERATORS' => 'Moderador Global', + 'G_NEWLY_REGISTERED' => 'Utilizadores Registados Recentemente', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d utilizador escondido', + 2 => '%d utilizadores escondidos', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d escondido', + 2 => '%d escondidos', + ), + 'HIDE_GUESTS' => 'Visitantes invisíveis', + 'HIDE_ME' => 'Ocultar o meu estado nesta sessão', + 'HOURS' => 'Horas', + 'HOME' => 'Página Principal', + + 'ICQ' => 'ICQ', + 'IF' => 'Se', + 'IMAGE' => 'Imagem', + 'IMAGE_FILETYPE_INVALID' => 'O formato de imagem %d não é suportado para a miniatura %s.', + 'IMAGE_FILETYPE_MISMATCH' => 'Tipo de Ficheiro da imagem em desacordo: extensão esperada %1$s mas a extensão informada foi %2$s.', + 'IN' => 'em', + 'INACTIVE' => 'Inativo', + 'INDEX' => 'Ãndice', + 'INFORMATION' => 'Detalhes da mensagem', + 'INSECURE_REDIRECT' => 'Tentativa de redirecionamento para url potencialmente insegura.', + 'INTERESTS' => 'Interesses', + 'INVALID_DIGEST_CHALLENGE' => 'Desafio de Sumário Inválido.', + 'INVALID_EMAIL_LOG' => '%s é um endereço de email possivelmente incorreto?', + 'INVALID_FEED_ATTACHMENTS' => 'O Feed selecionado tentou processar anexos com restrições inválidas.', + 'INVALID_PLURAL_RULE' => 'A regra do plural escolhida é inválida. Os valores válidos são números inteiros entre 0 e 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'O Seu endereço de IP %1$s foi expulso porque está na lista negra. Para mais detalhes leia %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Registado', + 'JUMP_PAGE' => 'Número da página para onde deseja ir.', + 'JUMP_TO' => 'Ir para', + 'JUMP_TO_PAGE' => 'Ir para a página.', + 'JUMP_TO_PAGE_CLICK' => 'Clique para ir para a página…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Última Mensagem', + 'LAST_UPDATED' => 'Última Atualização', + 'LAST_VISIT' => 'Última visita', + 'LDAP_NO_LDAP_EXTENSION' => 'Extensão LDAP não disponível.', + 'LDAP_NO_SERVER_CONNECTION' => 'Não foi possível ligar-se ao servidor LDAP.', + 'LDAP_SEARCH_FAILED' => 'Ocorreu um erro durante a pesquisa na pasta LDAP.', + 'LEGEND' => 'Legenda', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Não são permitidas pesquisas ativas.', + 'LOADING' => 'Carregando', + 'LOCATION' => 'Localização', + 'LOCK_POST' => 'Bloquear Mensagem', + 'LOCK_POST_EXPLAIN' => 'Edição Prévia', + 'LOCK_TOPIC' => 'Bloquear Tópico', + 'LOGIN' => 'Ligue-se', + 'LOGIN_CHECK_PM' => 'Ver Mensagens Privadas.', + 'LOGIN_CONFIRMATION' => 'Confirmação de acesso', + 'LOGIN_CONFIRM_EXPLAIN' => 'Para prevenir ataques "brute force" o Administrador exige o código de confirmação após sucessivas tentativas falhadas de acesso. O código é exibido na imagem abaixo. Se tiver problemas em ver esta imagem, por favor, contacte um %sAdministrador%s.', // unused + 'LOGIN_ERROR_ATTEMPTS' => 'Excedeu o número máximo de tentativas de acesso. Além do seu nome de Utilizador e Senha tem de resolver o CAPTCHA abaixo', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Não foi autenticado pelo Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'O serviço OAuth indicado não existe.', + 'LOGIN_ERROR_PASSWORD' => 'A Senha introduzida não está correta, tente novamente. Se continuar com problemas, contacte um %sAdministrador do Fórum%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Não foi possível converter a sua Senha ao atualizar este Fórum. Por favor peça uma %snova senha%s. Se continuar com problemas, contacte um %sAdministrador do Fórum%s.', + 'LOGIN_ERROR_USERNAME' => 'Especificou um nome de Utilizador incorreto. Confirme o seu nome de Utilizador e tente novamente. Se continuar com problemas, por favor, contacte um %sAdministrador do Fórum%s.', + 'LOGIN_FORUM' => 'Para ver ou enviar mensagens neste Fórum deve inserir a Senha.', + 'LOGIN_INFO' => 'O acesso completo ao Fórum necessita dum Registo que demora apenas alguns segundos. Antes de se Registar leia: FAQ - Condições de Utilização - Política de Privacidade Respeite as regras do Fórum.', + 'LOGIN_VIEWFORUM' => 'Para ver o conteúdo completo deste Fórum é necessário estar ligado.', + 'LOGIN_EXPLAIN_EDIT' => 'Para editar Mensagens neste Fórum tem de estar registado e ligado.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Para aparecer na lista tem de estar registado e ligado.', + 'LOGIN_REQUIRED' => 'Tem que ligar-se para realizar esta ação.', + 'LOGOUT' => 'Desligar Sessão', + 'LOGOUT_USER' => 'Sair [ %s ]', + 'LOG_ME_IN' => 'Lembrar-me', + + 'MAIN' => 'Principal', + 'MARK' => 'Marcar', + 'MARK_ALL' => 'Marcar Todos', + 'MARK_ALL_READ' => 'Marcar todos como lidos', + 'MARK_FORUMS_READ' => 'Marcar todos os Fóruns como lidos', + 'MARK_READ' => 'Marcar como lido', + 'MARK_SUBFORUMS_READ' => 'Marcar todos os sub-fóruns como lidos', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Painel de Moderação', + 'MCP_SHORT' => 'MCP', + 'MEMBERLIST' => 'Utilizadores', + 'MEMBERLIST_EXPLAIN' => 'Ver a lista completa de Utilizadores', + 'MERGE' => 'Fundir', + 'MERGE_POSTS' => 'Mover Mensagens', + 'MERGE_TOPIC' => 'Fundir Tópicos', + 'MESSAGE' => 'Mensagem', + 'MESSAGES' => 'Mensagens', + 'MESSAGES_COUNT' => array( + 1 => '%d mensagem', + 2 => '%d mensagens', + ), + 'MESSAGE_BODY' => 'Corpo da Mensagem', + 'MINUTES' => 'Minutos', + 'MODERATE' => 'Moderado', + 'MODERATOR' => 'Moderador', + 'MODERATORS' => 'Moderadores', + 'MODULE_NOT_ACCESS' => 'Módulo não está acessível', + 'MODULE_NOT_FIND' => 'Não foi possível encontrar módulo %s', + 'MODULE_FILE_INCORRECT_CLASS' => 'O ficheiro do módulo %s não contém a classe correta [%s]', + 'MONTH' => 'Mês', + 'MOVE' => 'Mover', + + 'NA' => 'N/A', + 'NEWEST_USER' => '%s é o(a) nosso(a) Utilizador(a) mais recente. Bem-vindo(a) ao Fórum', + 'NEW_MESSAGE' => 'Nova Mensagem', + 'NEW_MESSAGES' => 'Novas Mensagens', + 'NEW_POST' => 'Nova Mensagem', // Not used anymore + 'NEW_POSTS' => 'Novas Mensagens', // Not used anymore + 'NEXT' => 'Próximo', // Used in pagination + 'NEXT_STEP' => 'Próximo', + 'NEVER' => 'Nunca', + 'NO' => 'Não', + 'NO_NOTIFICATIONS' => 'Não tem notificações', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Não está autorizado a administrar este grupo do “Painel de Administraçãoâ€.', + 'NOT_AUTHORISED' => 'Não está autorizado a aceder esta área.', + 'NOT_WATCHING_FORUM' => 'Já não se encontra a receber atualizações deste Fórum.', + 'NOT_WATCHING_TOPIC' => 'Já não se encontra a receber atualizações deste Tópico.', + 'NOTIFICATIONS' => 'Notificações', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Resposta de %1$s no Tópico em observação:', + ), + 'NOTIFICATION_FORUM' => 'Fórum: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Pedido de adesão de %1$s ao Grupo %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Pedido de adesão aprovado ao Grupo %1$s.', + 'NOTIFICATION_METHOD_INVALID' => 'O método "%s" não se refere a um método de notificação válido.', + 'NOTIFICATION_PM' => 'Mensagem Privada de %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Resposta de %1$s ao Tópico:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Mensagem aprovada:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Mensagem não aprovada:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Aprovação de Mensagem pedida por %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Citação de %1$s em:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Razão: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'Mensagem Privada denunciada por %1$s:', + 'NOTIFICATION_REPORT_POST' => 'Mensagem denunciada por %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Denúncia fechada por %1$s para:', + 'NOTIFICATION_TOPIC' => 'Novo Tópico de %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Tópico aprovado:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Tópico não aprovado:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Aprovação do Tópico pedida por %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'A notificação do tipo "%s" falta no sistema de ficheiros.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Aprovação necessária do Utilizador Registado Recentemente: “%1$sâ€', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'outros', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d outros', + ), + 'NOTIFY_ADMIN' => 'Por favor, notifique o Administrador ou webmaster deste Fórum.', + 'NOTIFY_ADMIN_EMAIL' => 'Por favor, notifique o Administrador ou webmaster deste Fórum: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Não está autorizado a aceder este Ficheiro.', + 'NO_ACTION' => 'Nenhuma ação especificada.', + 'NO_ADMINISTRATORS' => 'Este Fórum não tem Administradores.', + 'NO_AUTH_ADMIN' => 'Não tem permissões de Administrador, logo não pode aceder ao Painel de Administração.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Não pode autenticar-se novamente com outro nome de utilizador.', + 'NO_AUTH_OPERATION' => 'Não tem as permissões necessárias para completar esta operação.', + 'NO_AVATARS' => 'Atualmente não há avatares disponíveis', + 'NO_CONNECT_TO_SMTP_HOST' => 'Não foi possível ligar ao servidor SMTP : %s : %s', + 'NO_BIRTHDAYS' => 'Hoje não há aniversariantes', + 'NO_EMAIL_MESSAGE' => 'Mensagem do email estava em branco.', + 'NO_EMAIL_RESPONSE_CODE' => 'Não foi possível receber os códigos de erro do servidor de email.', + 'NO_EMAIL_SUBJECT' => 'Não foi definido um assunto para este email', + 'NO_FORUM' => 'O Fórum selecionado não existe.', + 'NO_FORUMS' => 'Este Fórum não tem Tópicos.', + 'NO_GROUP' => 'Este Grupo não existe.', + 'NO_GROUP_MEMBERS' => 'Este Grupo não tem Utilizadores.', + 'NO_IPS_DEFINED' => 'Nenhum endereço de IP ou nome de Servidor definido', + 'NO_MEMBERS' => 'Nenhum Utilizador foi encontrado com estes critérios de pesquisa.', + 'NO_MESSAGES' => 'Sem Mensagens', + 'NO_MODE' => 'Nenhum modo foi especificado.', + 'NO_MODERATORS' => 'Este Fórum não tem Moderadores.', + 'NO_NEW_MESSAGES' => 'Sem novas mensagens', + 'NO_NEW_POSTS' => 'Sem mensagens novas', // Not used anymore + 'NO_ONLINE_USERS' => 'Nenhum utilizador registado', + 'NO_POSTS' => 'Nenhuma mensagem', + 'NO_POSTS_TIME_FRAME' => 'Não existem mensagens neste Tópico no prazo selecionado.', + 'NO_FEED_ENABLED' => 'Os Feeds não estão disponíveis neste Fórum.', + 'NO_FEED' => 'O Feed solicitado não está disponível.', + 'NO_STYLE_DATA' => 'Não foi possível obter os dados do estilo', + 'NO_SUBJECT' => 'Sem assunto.', + 'NO_SUCH_SEARCH_MODULE' => 'A Pesquisa especificada não existe.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Nenhum método de autenticação suportado.', + 'NO_TOPIC' => 'Este Tópico não existe.', + 'NO_TOPIC_FORUM' => 'Este Tópico ou Fórum não existem.', + 'NO_TOPICS' => 'Não há mensagens ou Tópicos neste Fórum.', + 'NO_TOPICS_TIME_FRAME' => 'Não há Tópicos neste Fórum no prazo selecionado.', + 'NO_UNREAD_POSTS' => 'Não há novas mensagens', + 'NO_UPLOAD_FORM_FOUND' => 'O envio do ficheiro foi iniciado, mas nenhuma forma de envio válida foi encontrada.', + 'NO_USER' => 'Este Utilizador não existe.', + 'NO_USERS' => 'Estes Utilizadores não existem.', + 'NO_USER_SPECIFIED' => 'Nenhum nome de Utilizador foi especificado.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d anexo', + 2 => '%d anexos', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Nenhuma mensagem na lista', // 0 + 1 => '1 mensagem na lista', // 1 + 2 => '%d mensagens na lista', // 2+ + ), + + 'OCCUPATION' => 'Ocupação', + 'OFFLINE' => 'Desligado', + 'ONLINE' => 'Ligado', + 'ONLINE_BUDDIES' => 'Amigos ligados', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'No total, há %1$d utilizador ligado :: %2$s 1 %3$s', + 2 => 'No total, há %1$d utilizadores ligados :: %2$s e %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'No total, há %1$d utilizador ligado :: %2$s, %3$s e %4$s', + 2 => 'No total, há %1$d utilizadores ligados :: %2$s, %3$s e %4$s', + ), + 'OPTIONS' => 'Opções', + + 'PAGE_NOT_FOUND' => 'A página solicitada não foi encontrada.', + 'PAGE_OF' => 'Página %1$d de %2$d', + 'PAGE_TITLE_NUMBER' => 'Página %s', + 'PASSWORD' => 'Senha', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d píxel', + 2 => '%d píxeis', + ), + 'PLEASE_WAIT' => 'Por favor, aguarde.', + 'PM' => 'MP', + 'PM_REPORTED' => 'Clique para ver relatório', + 'POSTING_MESSAGE' => 'Enviar mensagem para %s', + 'POSTING_PRIVATE_MESSAGE' => 'Escrevendo Mensagem Privada', + 'POST' => 'Mensagem', + 'POST_ANNOUNCEMENT' => 'Anúncio', + 'POST_STICKY' => 'Fixo', + 'POSTED' => 'Enviado', + 'POSTED_IN_FORUM' => 'no', + 'POSTED_ON_DATE' => 'em', + 'POSTS' => 'Mensagens', + 'POSTS_UNAPPROVED' => 'Pelo menos uma mensagem neste Tópico não foi aprovada.', + 'POSTS_UNAPPROVED_FORUM' => 'Pelo menos uma mensagem neste fórum não foi aprovada.', + 'POST_BY_AUTHOR' => 'por', + 'POST_BY_FOE' => '%1$s, que atualmente está em sua lista de ignorados, fez esta mensagem.', + 'POST_DISPLAY' => '%1$sMostrar esta mensagem%2$s.', + 'POST_DAY' => '%.2f mensagens por dia', + 'POST_DELETED_ACTION' => 'Mensagem apagada:', + 'POST_DELETED' => 'Esta mensagem foi apagada.', + 'POST_DELETED_BY' => '%2$s excluiu a mensagem por %1$s em %3$s.', + 'POST_DELETED_BY_REASON' => '%2$s excluiu a mensagem por %1$s em %3$s pela seguinte razão: %4$s', + 'POST_DETAILS' => 'Detalhes da mensagem', + 'POST_NEW_TOPIC' => 'Criar Novo Tópico', + 'POST_PCT' => '%.2f%% de todas as mensagens', + 'POST_PCT_ACTIVE' => '%.2f%% das mensagens dos Utilizadores', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% das suas mensagens', + 'POST_REPLY' => 'Responder', + 'POST_REPORTED' => 'Clique aqui para ver as denúncias', + 'POST_SUBJECT' => 'Assunto da Mensagem', + 'POST_TIME' => 'Data da Mensagem', + 'POST_TOPIC' => 'Criar um novo Tópico', + 'POST_UNAPPROVED_ACTION' => 'Mensagem a aguardar aprovação:', + 'POST_UNAPPROVED' => 'Esta mensagem não foi aprovada.', + 'POWERED_BY' => 'Desenvolvido por %s', + 'PREVIEW' => 'Prever', + 'PREVIOUS' => 'Anterior', // Used in pagination + 'PREVIOUS_STEP' => 'Anterior', + 'PRIVACY' => 'Política de Privacidade', + 'PRIVACY_LINK' => 'Privacidade', + 'PRIVATE_MESSAGE' => 'Mensagem Privada', + 'PRIVATE_MESSAGES' => 'Mensagens Privadas', + 'PRIVATE_MESSAGING' => 'A enviar Mensagem Privada', + 'PROFILE' => 'Painel de Controlo do Utilizador', + + 'QUICK_LINKS' => 'Links rápidos', + + 'RANK' => 'Classificação', + 'READING_FORUM' => 'Ver Tópicos em %s', + 'READING_GLOBAL_ANNOUNCE' => 'A ler Anúncio Global', + 'READING_LINK' => 'Seguinte endereço do Fórum %s', + 'READING_TOPIC' => 'A ler Tópico em %s', + 'READ_PROFILE' => 'Perfil', + 'REASON' => 'Razão', + 'RECORD_ONLINE_USERS' => 'O recorde de utilizadores online foi de %1$s em %2$s', + 'REDIRECT' => 'Redirecionar', + 'REDIRECTS' => 'Total de redirecionamentos', + 'REGISTER' => 'Registe-se', + 'REGISTERED_USERS' => 'Membros ligados:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'Há %1$d utilizador registado e %2$s ligado', + 2 => 'Há %1$d utilizadores registados e %2$s ligados', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d registado', + 2 => '%d registados', + ), + 'REMOVE' => 'Remover', + 'REMOVE_INSTALL' => 'Apague, mova ou renomeie a pasta de instalação.', + 'REPLIES' => 'Respostas', + 'REPLY_WITH_QUOTE' => 'Responder citando esta mensagem', + 'REPLYING_GLOBAL_ANNOUNCE' => 'A responder a Anúncio Global', + 'REPLYING_MESSAGE' => 'A responder a mensagem em %s', + 'REPORT_BY' => 'Denunciada por', + 'REPORT_POST' => 'Denunciar esta mensagem', + 'REPORTING_POST' => 'A denunciar Mensagem', + 'RESEND_ACTIVATION' => 'Reenviar email de Ativação', + 'RESET' => 'Reiniciar', + 'RESTORE_PERMISSIONS' => 'Restaurar Permissões', + 'RETURN_INDEX' => 'Clique %saqui%s para voltar ao Ãndice', + 'RETURN_FORUM' => 'Clique %saqui%s para voltar ao Fórum', + 'RETURN_PAGE' => 'Clique %saqui%s para voltar à página anterior', + 'RETURN_TOPIC' => 'Clique %saqui%s para voltar ao Tópico', + 'RETURN_TO' => 'Voltar para “%sâ€', + 'RETURN_TO_INDEX' => 'Regressar ao índice do fórum', + 'FEED' => 'Feed', + 'FEED_NEWS' => 'Novidades', + 'FEED_TOPICS_ACTIVE' => 'Tópicos ativos', + 'FEED_TOPICS_NEW' => 'Novos Tópicos', + 'RULES_ATTACH_CAN' => 'Enviar anexos: Permitido', + 'RULES_ATTACH_CANNOT' => 'Enviar anexos: Proibido', + 'RULES_DELETE_CAN' => 'Apagar Mensagens: Permitido', + 'RULES_DELETE_CANNOT' => 'Apagar Mensagens: Proibido', + 'RULES_DOWNLOAD_CAN' => 'Transferir anexos: Permitido', + 'RULES_DOWNLOAD_CANNOT' => 'Transferir anexos: Proibido', + 'RULES_EDIT_CAN' => 'Editar Mensagens: Permitido', + 'RULES_EDIT_CANNOT' => 'Editar Mensagens: Proibido', + 'RULES_LOCK_CAN' => 'Bloquear Tópicos: Permitido', + 'RULES_LOCK_CANNOT' => 'Bloquear Tópicos: Proibido', + 'RULES_POST_CAN' => 'Criar Tópicos: Permitido', + 'RULES_POST_CANNOT' => 'Criar Tópicos: Proibido', + 'RULES_REPLY_CAN' => 'Responder Tópicos: Permitido', + 'RULES_REPLY_CANNOT' => 'Responder Tópicos: Proibido', + 'RULES_VOTE_CAN' => 'Votar em votações: Permitido', + 'RULES_VOTE_CANNOT' => 'Votar em votações: Proibido', + + 'SEARCH' => 'Pesquisar', + 'SEARCH_MINI' => 'Pesquisar…', + 'SEARCH_ADV' => 'Pesquisa avançada', + 'SEARCH_ADV_EXPLAIN' => 'Ver opções avançadas de pesquisa', + 'SEARCH_KEYWORDS' => 'Palavra-Chave', + 'SEARCHING_FORUMS' => 'Pesquisando nos Fóruns', + 'SEARCH_ACTIVE_TOPICS' => 'Tópicos ativos', + 'SEARCH_FOR' => 'Pesquisar por', + 'SEARCH_FORUM' => 'Neste Fórum…', + 'SEARCH_NEW' => 'Mensagens novas', + 'SEARCH_POSTS_BY' => 'Pesquisar mensagens por', + 'SEARCH_SELF' => 'As minhas Mensagens', + 'SEARCH_TOPIC' => 'Pesquisar neste Tópico…', + 'SEARCH_UNANSWERED' => 'Tópicos sem resposta', + 'SEARCH_UNREAD' => 'Mensagens por ler', + 'SEARCH_USER_POSTS' => 'Pesquisar mensagens dos utilizadores', + 'SECONDS' => 'Segundos', + 'SEE_ALL' => 'Ver todos', + 'SELECT' => 'Selecionar', + 'SELECT_ALL_CODE' => 'Selecionar todos', + 'SELECT_DESTINATION_FORUM' => 'Selecione o Fórum de destino', + 'SELECT_FORUM' => 'Selecione o Fórum', + 'SEND_EMAIL' => 'Enviar email', // Used for submit buttons + 'SEND_EMAIL_USER' => 'Enviar email para %s', + 'SEND_PRIVATE_MESSAGE' => 'Enviar Mensagem Privada', + 'SETTINGS' => 'Configurações', + 'SIGNATURE' => 'Assinatura', + 'SKIP' => 'Ir para o conteúdo', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'O Servidor SMTP não suporta autenticação.', + 'SORRY_AUTH_READ' => 'Não está autorizado a ver este Fórum.', + 'SORRY_AUTH_READ_TOPIC' => 'Não está autorizado a ler este Tópico.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Não está autorizado a transferir este anexo.', + 'SORT_BY' => 'Ordenar por', + 'SORT_DIRECTION' => 'Direção', + 'SORT_JOINED' => 'Data de Registo', + 'SORT_LOCATION' => 'Localização', + 'SORT_OPTIONS' => 'Opções de visualização e ordenação', + 'SORT_RANK' => 'Classificação', + 'SORT_POSTS' => 'Mensagens', + 'SORT_TOPIC_TITLE' => 'Título do Tópico', + 'SORT_USERNAME' => 'Utilizador', + 'SPLIT_TOPIC' => 'Dividir Tópico', + 'SQL_ERROR_OCCURRED' => 'Ocorreu um erro SQL enquanto esta página era processada. Contacte um %sAdministrador do Fórum%s se o problema persistir', + 'STATISTICS' => 'Estatísticas do Fórum:', + 'START_WATCHING_FORUM' => 'Observar Fórum', + 'START_WATCHING_TOPIC' => 'Observar Tópico', + 'STOP_WATCHING_FORUM' => 'Parar de Observar Fórum', + 'STOP_WATCHING_TOPIC' => 'Parar de Observar Tópico', + 'STRING_LIST_MULTI' => '%1$s, e %2$s', + 'STRING_LIST_SIMPLE' => '%1$s e %2$s', + 'SUBFORUM' => 'Sub-fórum', + 'SUBFORUMS' => 'Sub-fóruns', + 'SUBJECT' => 'Assunto', + 'SUBMIT' => 'Enviar', + + 'TB' => 'TB', + 'TERMS_LINK' => 'Termos', + 'TERMS_USE' => 'Condições de utilização', + 'TEST_CONNECTION' => 'Testar Ligação', + 'THE_TEAM' => 'Equipa', + 'TIB' => 'TiB', + 'TIME' => 'Data', + 'TIMEOUT_PROCESSING_REQ' => 'O pedido excedeu o tempo.', + + 'TOO_LARGE' => 'O valor que inseriu é muito grande.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'O valor definido para o número máximo de destinatários permitidos por Mensagem Privada é muito grande.', + + 'TOO_LONG' => 'O valor definido é muito longo.', + + 'TOO_LONG_CONFIRM_CODE' => 'O código de confirmação indicado é muito curto.', + 'TOO_LONG_DATEFORMAT' => 'O formato da data indicada é muito longa.', + 'TOO_LONG_JABBER' => 'A nome da conta Jabber indicada é muito longa.', + 'TOO_LONG_NEW_PASSWORD' => 'A Senha indicada é muito longa.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'A confirmação da Senha indicada é muito longa.', + 'TOO_LONG_USER_PASSWORD' => 'A Senha é muito longa.', + 'TOO_LONG_USERNAME' => 'O nome de Utilizador indicado é muito curto.', + 'TOO_LONG_EMAIL' => 'O endereço de email indicado é muito curto.', + + 'TOO_MANY_VOTE_OPTIONS' => 'Escolheu muitas opções.', + + 'TOO_SHORT' => 'O valor definido é muito curto.', + + 'TOO_SHORT_CONFIRM_CODE' => 'O Código de Confirmação indicado é muito curto.', + 'TOO_SHORT_DATEFORMAT' => 'O formato da data indicada é muito curta.', + 'TOO_SHORT_JABBER' => 'O nome da conta Jabber indicado é muito curto.', + 'TOO_SHORT_NEW_PASSWORD' => 'A senha é muito curta.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'A confirmação da senha é muito curta.', + 'TOO_SHORT_USER_PASSWORD' => 'A senha é muito curta.', + 'TOO_SHORT_USERNAME' => 'O nome de utilizador é muito curto.', + 'TOO_SHORT_EMAIL' => 'O endereço de email é muito curto.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'A confirmação do endereço de email que digitou é muito curta.', + 'TOO_SMALL' => 'O valor que inseriu é muito pequeno.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'O valor definido para o número máximo de destinatários permitidos por Mensagem Privada é muito pequeno.', + + 'TOPIC' => 'Tópico', + 'TOPICS' => 'Tópicos', + 'TOPICS_UNAPPROVED' => 'Pelo menos um Tópico neste Fórum ainda não foi aprovado.', + 'TOPIC_ICON' => 'Ãcone do Tópico', + 'TOPIC_LOCKED' => 'Este Tópico está bloqueado. Não pode editar mensagens ou responder.', + 'TOPIC_LOCKED_SHORT' => 'Tópico Bloqueado', + 'TOPIC_MOVED' => 'Tópico Movido', + 'TOPIC_REVIEW' => 'Rever o Tópico', + 'TOPIC_TITLE' => 'Título do Tópico', + 'TOPIC_UNAPPROVED' => 'Este Tópico ainda não foi aprovado.', + 'TOPIC_DELETED' => 'Este Tópico foi apagado.', + 'TOTAL_ATTACHMENTS' => 'Anexo(s)', + 'TOTAL_LOGS' => array( + 1 => '%d log', + 2 => '%d logs', + ), + 'TOTAL_PMS' => array( + 1 => '%d mensagem privada no total', + 2 => '%d mensagens privadas no total', + ), + 'TOPIC_POLL' => 'Este Tópico tem uma votação.', + 'TOTAL_POSTS' => 'Total de mensagens', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Total de mensagens %d', + ), + 'TOPIC_REPORTED' => 'Este tópico foi denunciado', + 'TOTAL_TOPICS' => array( + 2 => 'Total de tópicos %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Total de membros %d', + ), + 'TRACKED_PHP_ERROR' => 'Erros PHP encontrados: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'É impossível aceder ao Ficheiro de imagem, porque não é uma imagem válida. Por favor, verifique se o URL que inseriu está correto.', + 'UNABLE_TO_DELIVER_FILE' => 'Incapaz de entregar Ficheiro.', + 'UNKNOWN_BROWSER' => 'Navegador Desconhecido', + 'UNMARK_ALL' => 'Desmarcar todos', + 'UNREAD_MESSAGES' => 'Mensagens não lidas', + 'UNREAD_POST' => 'Mensagem não lida', + 'UNREAD_POSTS' => 'Mensagens não lidas', + 'UNWATCH_FORUM_CONFIRM' => 'Tem a certeza que deseja cancelar a assinatura deste fórum?', + 'UNWATCH_FORUM_DETAILED' => 'Tem a certeza que deseja cancelar a assinatura do fórum “%sâ€?', + 'UNWATCH_TOPIC_CONFIRM' => 'Tem a certeza que deseja cancelar a assinatura deste Tópico?', + 'UNWATCH_TOPIC_DETAILED' => 'Tem a certeza que deseja cancelar a assinatura do Tópico “%sâ€?', + 'UNWATCHED_FORUMS' => 'Já não se encontra a observar este Fórum.', + 'UNWATCHED_TOPICS' => 'Já não se encontra a observar este Tópico.', + 'UNWATCHED_FORUMS_TOPICS' => 'Já não se encontra a observar as entradas selecionadas.', + 'UPDATE' => 'Atualizar', + 'UPLOAD_IN_PROGRESS' => 'O envio está em progresso.', + 'URL_REDIRECT' => 'Se o seu navegador não suporta redirecionamentos, %sPor Favor, clique aqui para ser redirecionado%s.', + 'USERGROUPS' => 'Grupos', + 'USERNAME' => 'Utilizador', + 'USERNAMES' => 'Utilizadores', + 'USER_AVATAR' => 'Avatar do Utilizador', + 'USER_CANNOT_READ' => 'Não pode ler mensagens neste Fórum.', + 'USER_POSTS' => array( + 1 => '%d Mensagem', + 2 => '%d Mensagens', + ), + 'USERS' => 'Utilizadores', + 'USE_PERMISSIONS' => 'Testar permissões deste utilizador', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Pedimos desculpa, mas não está autorizado a utilizar esta funcionalidade. Pode ter que estar registado, e ter que participar mais para usar esta funcionalidade.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', + 'VIEWED' => 'Visto', + 'VIEWED_COUNTS' => array( + 0 => 'Não visto ainda', + 1 => 'Visto %d vez', + 2 => 'Visto %d vezes', + ), + 'VIEWING_CONTACT_ADMIN' => 'Vendo página de contacto', + 'VIEWING_FAQ' => 'A ver a FAQ', + 'VIEWING_MEMBERS' => 'A Ver detalhes dos Utilizadores', + 'VIEWING_ONLINE' => 'A Ver quem está online', + 'VIEWING_MCP' => 'A Ver Painel de Moderação', + 'VIEWING_MEMBER_PROFILE' => 'A Ver Perfil dos Utilizadores', + 'VIEWING_PRIVATE_MESSAGES' => 'A Ver Mensagens Privadas', + 'VIEWING_REGISTER' => 'Registar uma nova conta', + 'VIEWING_UCP' => 'A Ver o Painel de Controlo do Utilizador', + 'VIEWS' => 'Visualizações', + 'VIEW_BOOKMARKS' => 'Ver Favoritos', + 'VIEW_FORUM_LOGS' => 'Ver registos', + 'VIEW_LATEST_POST' => 'Veja a última Mensagem', + 'VIEW_NEWEST_POST' => 'A ver Mensagens Novas', + 'VIEW_NOTES' => 'Ver Notas do Utilizador', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'baseado nos utilizadores ativos no último %d minuto', + 2 => 'baseado nos utilizadores ativos nos últimos %d minutos', + ), + 'VIEW_TOPIC' => 'Ver Tópico', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'Anúncio: ', + 'VIEW_TOPIC_GLOBAL' => 'Anúncio Global: ', + 'VIEW_TOPIC_LOCKED' => 'Bloqueado: ', + 'VIEW_TOPIC_LOGS' => 'Ver registos', + 'VIEW_TOPIC_MOVED' => 'Movido: ', + 'VIEW_TOPIC_POLL' => 'Votação: ', + 'VIEW_TOPIC_STICKY' => 'Fixo: ', + 'VISIT_WEBSITE' => 'Visitar o sítio web', + + 'WARNINGS' => 'Avisos', + 'WARN_USER' => 'Avisar Utilizador', + 'WATCH_FORUM_CONFIRM' => 'Tem a certeza que deseja subscrever este Fórum?', + 'WATCH_FORUM_DETAILED' => 'Tem a certeza que deseja subscrever o Fórum “%sâ€?', + 'WATCH_TOPIC_CONFIRM' => 'Tem a certeza que deseja subscrever este Tópico?', + 'WATCH_TOPIC_DETAILED' => 'Tem a certeza que deseja subscrever o Tópico “%sâ€?', + 'WELCOME_SUBJECT' => 'Bem-vindo ao %s Fóruns', + 'WEBSITE' => 'Sítio web', + 'WHOIS' => 'Quem', + 'WHO_IS_ONLINE' => 'Quem está ligado:', + 'WRONG_PASSWORD' => 'Senha errada.', + + 'WRONG_DATA_COLOUR' => 'O valor da cor digitado é inválido.', + 'WRONG_DATA_JABBER' => 'O nome indicado não é um nome de conta Jabber válido.', + 'WRONG_DATA_LANG' => 'A linguagem indicada não é válida.', + 'WRONG_DATA_POST_SD' => 'A ordenação de mensagens especificada é inválida.', + 'WRONG_DATA_POST_SK' => 'A opção de ordenação de mensagens especificada é inválida.', + 'WRONG_DATA_TOPIC_SD' => 'A ordenação de tópicos especificada é inválida.', + 'WRONG_DATA_TOPIC_SK' => 'A opção de ordenação de tópicos especificada é inválida.', + 'WROTE' => 'Escreveu', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'Ano', + 'YEAR_MONTH_DAY' => '(DD-MM-YYYY)', + 'YES' => 'Sim', + 'YOU_LAST_VISIT' => 'Última visita: %s', + + 'datetime' => array( + 'TODAY' => 'Hoje', + 'TOMORROW' => 'Amanhã', + 'YESTERDAY' => 'Ontem', + 'AGO' => array( + 0 => 'menos de um minuto atrás', + 1 => '%d minuto atrás', + 2 => '%d minutos atrás', + ), + + 'Sunday' => 'domingo', + 'Monday' => 'segunda-feira', + 'Tuesday' => 'terça-feira', + 'Wednesday' => 'quarta-feira', + 'Thursday' => 'quinta-feira', + 'Friday' => 'sexta-feira', + 'Saturday' => 'sábado', + + 'Sun' => 'domingo', + 'Mon' => 'segunda', + 'Tue' => 'terça', + 'Wed' => 'quarta', + 'Thu' => 'quinta', + 'Fri' => 'sexta', + 'Sat' => 'sábado', + + 'January' => 'janeiro', + 'February' => 'fevereiro', + 'March' => 'março', + 'April' => 'abril', + 'May' => 'maio', + 'June' => 'junho', + 'July' => 'julho', + 'August' => 'agosto', + 'September' => 'setembro', + 'October' => 'outubro', + 'November' => 'novembro', + 'December' => 'dezembro', + + 'Jan' => 'jan', + 'Feb' => 'fev', + 'Mar' => 'mar', + 'Apr' => 'abr', + 'May_short' => 'mai', // Short representation of "May". May_short used because in english the short and long date are the same for May. + 'Jun' => 'jun', + 'Jul' => 'jul', + 'Aug' => 'ago', + 'Sep' => 'set', + 'Oct' => 'out', + 'Nov' => 'nov', + 'Dec' => 'dez', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + 'Africa/Abidjan' => 'Ãfrica/Abidjan', + 'Africa/Accra' => 'Ãfrica/Accra', + 'Africa/Addis_Ababa' => 'Ãfrica/Addis Ababa', + 'Africa/Algiers' => 'Ãfrica/Algiers', + 'Africa/Asmara' => 'Ãfrica/Asmara', + 'Africa/Bamako' => 'Ãfrica/Bamako', + 'Africa/Bangui' => 'Ãfrica/Bangui', + 'Africa/Banjul' => 'Ãfrica/Banjul', + 'Africa/Bissau' => 'Ãfrica/Bissau', + 'Africa/Blantyre' => 'Ãfrica/Blantyre', + 'Africa/Brazzaville' => 'Ãfrica/Brazzaville', + 'Africa/Bujumbura' => 'Ãfrica/Bujumbura', + 'Africa/Cairo' => 'Ãfrica/Cairo', + 'Africa/Casablanca' => 'Ãfrica/Casablanca', + 'Africa/Ceuta' => 'Ãfrica/Ceuta', + 'Africa/Conakry' => 'Ãfrica/Conakry', + 'Africa/Dakar' => 'Ãfrica/Dakar', + 'Africa/Dar_es_Salaam' => 'Ãfrica/Dar es Salaam', + 'Africa/Djibouti' => 'Ãfrica/Djibouti', + 'Africa/Douala' => 'Ãfrica/Douala', + 'Africa/El_Aaiun' => 'Ãfrica/El Aaiun', + 'Africa/Freetown' => 'Ãfrica/Freetown', + 'Africa/Gaborone' => 'Ãfrica/Gaborone', + 'Africa/Harare' => 'Ãfrica/Harare', + 'Africa/Johannesburg' => 'Ãfrica/Johannesburg', + 'Africa/Juba' => 'Ãfrica/Juba', + 'Africa/Kampala' => 'Ãfrica/Kampala', + 'Africa/Khartoum' => 'Ãfrica/Khartoum', + 'Africa/Kigali' => 'Ãfrica/Kigali', + 'Africa/Kinshasa' => 'Ãfrica/Kinshasa', + 'Africa/Lagos' => 'Ãfrica/Lagos', + 'Africa/Libreville' => 'Ãfrica/Libreville', + 'Africa/Lome' => 'Ãfrica/Lome', + 'Africa/Luanda' => 'Ãfrica/Luanda', + 'Africa/Lubumbashi' => 'Ãfrica/Lubumbashi', + 'Africa/Lusaka' => 'Ãfrica/Lusaka', + 'Africa/Malabo' => 'Ãfrica/Malabo', + 'Africa/Maputo' => 'Ãfrica/Maputo', + 'Africa/Maseru' => 'Ãfrica/Maseru', + 'Africa/Mbabane' => 'Ãfrica/Mbabane', + 'Africa/Mogadishu' => 'Ãfrica/Mogadishu', + 'Africa/Monrovia' => 'Ãfrica/Monrovia', + 'Africa/Nairobi' => 'Ãfrica/Nairobi', + 'Africa/Ndjamena' => 'Ãfrica/Ndjamena', + 'Africa/Niamey' => 'Ãfrica/Niamey', + 'Africa/Nouakchott' => 'Ãfrica/Nouakchott', + 'Africa/Ouagadougou' => 'Ãfrica/Ouagadougou', + 'Africa/Porto-Novo' => 'Ãfrica/Porto-Novo', + 'Africa/Sao_Tome' => 'Ãfrica/Sao Tome', + 'Africa/Tripoli' => 'Ãfrica/Tripoli', + 'Africa/Tunis' => 'Ãfrica/Tunis', + 'Africa/Windhoek' => 'Ãfrica/Windhoek', + + 'America/Adak' => 'América/Adak', + 'America/Anchorage' => 'América/Anchorage', + 'America/Anguilla' => 'América/Anguilla', + 'America/Antigua' => 'América/Antigua', + 'America/Araguaina' => 'América/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'América/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'América/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'América/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'América/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'América/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'América/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'América/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'América/Argentina/Salta', + 'America/Argentina/San_Juan' => 'América/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'América/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'América/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'América/Argentina/Ushuaia', + + 'America/Aruba' => 'América/Aruba', + 'America/Asuncion' => 'América/Asuncion', + 'America/Atikokan' => 'América/Atikokan', + 'America/Bahia' => 'América/Bahia', + 'America/Bahia_Banderas' => 'América/Bahia Banderas', + 'America/Barbados' => 'América/Barbados', + 'America/Belem' => 'América/Belem', + 'America/Belize' => 'América/Belize', + 'America/Blanc-Sablon' => 'América/Blanc-Sablon', + 'America/Boa_Vista' => 'América/Boa Vista', + 'America/Bogota' => 'América/Bogota', + 'America/Boise' => 'América/Boise', + 'America/Cambridge_Bay' => 'América/Cambridge Bay', + 'America/Campo_Grande' => 'América/Campo Grande', + 'America/Cancun' => 'América/Cancun', + 'America/Caracas' => 'América/Caracas', + 'America/Cayenne' => 'América/Cayenne', + 'America/Cayman' => 'América/Cayman', + 'America/Chicago' => 'América/Chicago', + 'America/Chihuahua' => 'América/Chihuahua', + 'America/Costa_Rica' => 'América/Costa Rica', + 'America/Creston' => 'América/Creston', + 'America/Cuiaba' => 'América/Cuiaba', + 'America/Curacao' => 'América/Curacao', + 'America/Danmarkshavn' => 'América/Danmarkshavn', + 'America/Dawson' => 'América/Dawson', + 'America/Dawson_Creek' => 'América/Dawson Creek', + 'America/Denver' => 'América/Denver', + 'America/Detroit' => 'América/Detroit', + 'America/Dominica' => 'América/Dominica', + 'America/Edmonton' => 'América/Edmonton', + 'America/Eirunepe' => 'América/Eirunepe', + 'America/El_Salvador' => 'América/El Salvador', + 'America/Fortaleza' => 'América/Fortaleza', + 'America/Glace_Bay' => 'América/Glace Bay', + 'America/Godthab' => 'América/Godthab', + 'America/Goose_Bay' => 'América/Goose Bay', + 'America/Grand_Turk' => 'América/Grand Turk', + 'America/Grenada' => 'América/Grenada', + 'America/Guadeloupe' => 'América/Guadeloupe', + 'America/Guatemala' => 'América/Guatemala', + 'America/Guayaquil' => 'América/Guayaquil', + 'America/Guyana' => 'América/Guyana', + 'America/Halifax' => 'América/Halifax', + 'America/Havana' => 'América/Havana', + 'America/Hermosillo' => 'América/Hermosillo', + 'America/Indiana/Indianapolis' => 'América/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'América/Indiana/Knox', + 'America/Indiana/Marengo' => 'América/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'América/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'América/Indiana/Tell City', + 'America/Indiana/Vevay' => 'América/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'América/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'América/Indiana/Winamac', + 'America/Inuvik' => 'América/Inuvik', + 'America/Iqaluit' => 'América/Iqaluit', + 'America/Jamaica' => 'América/Jamaica', + 'America/Juneau' => 'América/Juneau', + 'America/Kentucky/Louisville' => 'América/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'América/Kentucky/Monticello', + 'America/Kralendijk' => 'América/Kralendijk', + 'America/La_Paz' => 'América/La Paz', + 'America/Lima' => 'América/Lima', + 'America/Los_Angeles' => 'América/Los Angeles', + 'America/Lower_Princes' => 'América/Lower Princes', + 'America/Maceio' => 'América/Maceio', + 'America/Managua' => 'América/Managua', + 'America/Manaus' => 'América/Manaus', + 'America/Marigot' => 'América/Marigot', + 'America/Martinique' => 'América/Martinique', + 'America/Matamoros' => 'América/Matamoros', + 'America/Mazatlan' => 'América/Mazatlan', + 'America/Menominee' => 'América/Menominee', + 'America/Merida' => 'América/Merida', + 'America/Metlakatla' => 'América/Metlakatla', + 'America/Mexico_City' => 'América/Mexico City', + 'America/Miquelon' => 'América/Miquelon', + 'America/Moncton' => 'América/Moncton', + 'America/Monterrey' => 'América/Monterrey', + 'America/Montevideo' => 'América/Montevideo', + 'America/Montreal' => 'América/Montreal', + 'America/Montserrat' => 'América/Montserrat', + 'America/Nassau' => 'América/Nassau', + 'America/New_York' => 'América/New York', + 'America/Nipigon' => 'América/Nipigon', + 'America/Nome' => 'América/Nome', + 'America/Noronha' => 'América/Noronha', + 'America/North_Dakota/Beulah' => 'América/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'América/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'América/North Dakota/New Salem', + 'America/Ojinaga' => 'América/Ojinaga', + 'America/Panama' => 'América/Panama', + 'America/Pangnirtung' => 'América/Pangnirtung', + 'America/Paramaribo' => 'América/Paramaribo', + 'America/Phoenix' => 'América/Phoenix', + 'America/Port-au-Prince' => 'América/Port-au-Prince', + 'America/Port_of_Spain' => 'América/Port of Spain', + 'America/Porto_Velho' => 'América/Porto Velho', + 'America/Puerto_Rico' => 'América/Puerto Rico', + 'America/Rainy_River' => 'América/Rainy River', + 'America/Rankin_Inlet' => 'América/Rankin Inlet', + 'America/Recife' => 'América/Recife', + 'America/Regina' => 'América/Regina', + 'America/Resolute' => 'América/Resolute', + 'America/Rio_Branco' => 'América/Rio Branco', + 'America/Santa_Isabel' => 'América/Santa Isabel', + 'America/Santarem' => 'América/Santarem', + 'America/Santiago' => 'América/Santiago', + 'America/Santo_Domingo' => 'América/Santo Domingo', + 'America/Sao_Paulo' => 'América/Sao Paulo', + 'America/Scoresbysund' => 'América/Scoresbysund', + 'America/Shiprock' => 'América/Shiprock', + 'America/Sitka' => 'América/Sitka', + 'America/St_Barthelemy' => 'América/St. Barthelemy', + 'America/St_Johns' => 'América/St. Johns', + 'America/St_Kitts' => 'América/St. Kitts', + 'America/St_Lucia' => 'América/St. Lucia', + 'America/St_Thomas' => 'América/St. Thomas', + 'America/St_Vincent' => 'América/St. Vincent', + 'America/Swift_Current' => 'América/Swift Current', + 'America/Tegucigalpa' => 'América/Tegucigalpa', + 'America/Thule' => 'América/Thule', + 'America/Thunder_Bay' => 'América/Thunder Bay', + 'America/Tijuana' => 'América/Tijuana', + 'America/Toronto' => 'América/Toronto', + 'America/Tortola' => 'América/Tortola', + 'America/Vancouver' => 'América/Vancouver', + 'America/Whitehorse' => 'América/Whitehorse', + 'America/Winnipeg' => 'América/Winnipeg', + 'America/Yakutat' => 'América/Yakutat', + 'America/Yellowknife' => 'América/Yellowknife', + + 'Antarctica/Casey' => 'Antártida/Casey', + 'Antarctica/Davis' => 'Antártida/Davis', + 'Antarctica/DumontDUrville' => 'Antártida/DumontDUrville', + 'Antarctica/Macquarie' => 'Antártida/Macquarie', + 'Antarctica/Mawson' => 'Antártida/Mawson', + 'Antarctica/McMurdo' => 'Antártida/McMurdo', + 'Antarctica/Palmer' => 'Antártida/Palmer', + 'Antarctica/Rothera' => 'Antártida/Rothera', + 'Antarctica/South_Pole' => 'Antártida/South Pole', + 'Antarctica/Syowa' => 'Antártida/Syowa', + 'Antarctica/Vostok' => 'Antártida/Vostok', + + 'Arctic/Longyearbyen' => 'Ãrtico/Longyearbyen', + + 'Asia/Aden' => 'Ãsia/Aden', + 'Asia/Almaty' => 'Ãsia/Almaty', + 'Asia/Amman' => 'Ãsia/Amman', + 'Asia/Anadyr' => 'Ãsia/Anadyr', + 'Asia/Aqtau' => 'Ãsia/Aqtau', + 'Asia/Aqtobe' => 'Ãsia/Aqtobe', + 'Asia/Ashgabat' => 'Ãsia/Ashgabat', + 'Asia/Baghdad' => 'Ãsia/Baghdad', + 'Asia/Bahrain' => 'Ãsia/Bahrain', + 'Asia/Baku' => 'Ãsia/Baku', + 'Asia/Bangkok' => 'Ãsia/Bangkok', + 'Asia/Beirut' => 'Ãsia/Beirut', + 'Asia/Bishkek' => 'Ãsia/Bishkek', + 'Asia/Brunei' => 'Ãsia/Brunei', + 'Asia/Choibalsan' => 'Ãsia/Choibalsan', + 'Asia/Chongqing' => 'Ãsia/Chongqing', + 'Asia/Colombo' => 'Ãsia/Colombo', + 'Asia/Damascus' => 'Ãsia/Damascus', + 'Asia/Dhaka' => 'Ãsia/Dhaka', + 'Asia/Dili' => 'Ãsia/Dili', + 'Asia/Dubai' => 'Ãsia/Dubai', + 'Asia/Dushanbe' => 'Ãsia/Dushanbe', + 'Asia/Gaza' => 'Ãsia/Gaza', + 'Asia/Harbin' => 'Ãsia/Harbin', + 'Asia/Hebron' => 'Ãsia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Ãsia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Ãsia/Hong Kong', + 'Asia/Hovd' => 'Ãsia/Hovd', + 'Asia/Irkutsk' => 'Ãsia/Irkutsk', + 'Asia/Jakarta' => 'Ãsia/Jakarta', + 'Asia/Jayapura' => 'Ãsia/Jayapura', + 'Asia/Jerusalem' => 'Ãsia/Jerusalem', + 'Asia/Kabul' => 'Ãsia/Kabul', + 'Asia/Kamchatka' => 'Ãsia/Kamchatka', + 'Asia/Karachi' => 'Ãsia/Karachi', + 'Asia/Kashgar' => 'Ãsia/Kashgar', + 'Asia/Kathmandu' => 'Ãsia/Kathmandu', + 'Asia/Khandyga' => 'Ãsia/Khandyga', + 'Asia/Kolkata' => 'Ãsia/Kolkata', + 'Asia/Krasnoyarsk' => 'Ãsia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Ãsia/Kuala Lumpur', + 'Asia/Kuching' => 'Ãsia/Kuching', + 'Asia/Kuwait' => 'Ãsia/Kuwait', + 'Asia/Macau' => 'Ãsia/Macau', + 'Asia/Magadan' => 'Ãsia/Magadan', + 'Asia/Makassar' => 'Ãsia/Makassar', + 'Asia/Manila' => 'Ãsia/Manila', + 'Asia/Muscat' => 'Ãsia/Muscat', + 'Asia/Nicosia' => 'Ãsia/Nicosia', + 'Asia/Novokuznetsk' => 'Ãsia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Ãsia/Novosibirsk', + 'Asia/Omsk' => 'Ãsia/Omsk', + 'Asia/Oral' => 'Ãsia/Oral', + 'Asia/Phnom_Penh' => 'Ãsia/Phnom Penh', + 'Asia/Pontianak' => 'Ãsia/Pontianak', + 'Asia/Pyongyang' => 'Ãsia/Pyongyang', + 'Asia/Qatar' => 'Ãsia/Qatar', + 'Asia/Qyzylorda' => 'Ãsia/Qyzylorda', + 'Asia/Rangoon' => 'Ãsia/Rangoon', + 'Asia/Riyadh' => 'Ãsia/Riyadh', + 'Asia/Sakhalin' => 'Ãsia/Sakhalin', + 'Asia/Samarkand' => 'Ãsia/Samarkand', + 'Asia/Seoul' => 'Ãsia/Seoul', + 'Asia/Shanghai' => 'Ãsia/Shanghai', + 'Asia/Singapore' => 'Ãsia/Singapore', + 'Asia/Taipei' => 'Ãsia/Taipei', + 'Asia/Tashkent' => 'Ãsia/Tashkent', + 'Asia/Tbilisi' => 'Ãsia/Tbilisi', + 'Asia/Tehran' => 'Ãsia/Tehran', + 'Asia/Thimphu' => 'Ãsia/Thimphu', + 'Asia/Tokyo' => 'Ãsia/Tokyo', + 'Asia/Ulaanbaatar' => 'Ãsia/Ulaanbaatar', + 'Asia/Urumqi' => 'Ãsia/Urumqi', + 'Asia/Ust-Nera' => 'Ãsia/Ust-Nera', + 'Asia/Vientiane' => 'Ãsia/Vientiane', + 'Asia/Vladivostok' => 'Ãsia/Vladivostok', + 'Asia/Yakutsk' => 'Ãsia/Yakutsk', + 'Asia/Yekaterinburg' => 'Ãsia/Yekaterinburg', + 'Asia/Yerevan' => 'Ãsia/Yerevan', + + 'Atlantic/Azores' => 'Atlântico/Azores', + 'Atlantic/Bermuda' => 'Atlântico/Bermuda', + 'Atlantic/Canary' => 'Atlântico/Canary', + 'Atlantic/Cape_Verde' => 'Atlântico/Cape Verde', + 'Atlantic/Faroe' => 'Atlântico/Faroe', + 'Atlantic/Madeira' => 'Atlântico/Madeira', + 'Atlantic/Reykjavik' => 'Atlântico/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlântico/South Georgia', + 'Atlantic/St_Helena' => 'Atlântico/St. Helena', + 'Atlantic/Stanley' => 'Atlântico/Stanley', + + 'Australia/Adelaide' => 'Austrália/Adelaide', + 'Australia/Brisbane' => 'Austrália/Brisbane', + 'Australia/Broken_Hill' => 'Austrália/Broken Hill', + 'Australia/Currie' => 'Austrália/Currie', + 'Australia/Darwin' => 'Austrália/Darwin', + 'Australia/Eucla' => 'Austrália/Eucla', + 'Australia/Hobart' => 'Austrália/Hobart', + 'Australia/Lindeman' => 'Austrália/Lindeman', + 'Australia/Lord_Howe' => 'Austrália/Lord Howe', + 'Australia/Melbourne' => 'Austrália/Melbourne', + 'Australia/Perth' => 'Austrália/Perth', + 'Australia/Sydney' => 'Austrália/Sydney', + + 'Europe/Amsterdam' => 'Europa/Amsterdam', + 'Europe/Andorra' => 'Europa/Andorra', + 'Europe/Athens' => 'Europa/Athens', + 'Europe/Belgrade' => 'Europa/Belgrade', + 'Europe/Berlin' => 'Europa/Berlin', + 'Europe/Bratislava' => 'Europa/Bratislava', + 'Europe/Brussels' => 'Europa/Brussels', + 'Europe/Bucharest' => 'Europa/Bucharest', + 'Europe/Budapest' => 'Europa/Budapest', + 'Europe/Busingen' => 'Europa/Busingen', + 'Europe/Chisinau' => 'Europa/Chisinau', + 'Europe/Copenhagen' => 'Europa/Copenhagen', + 'Europe/Dublin' => 'Europa/Dublin', + 'Europe/Gibraltar' => 'Europa/Gibraltar', + 'Europe/Guernsey' => 'Europa/Guernsey', + 'Europe/Helsinki' => 'Europa/Helsinki', + 'Europe/Isle_of_Man' => 'Europa/Isle of Man', + 'Europe/Istanbul' => 'Europa/Istanbul', + 'Europe/Jersey' => 'Europa/Jersey', + 'Europe/Kaliningrad' => 'Europa/Kaliningrad', + 'Europe/Kiev' => 'Europa/Kiev', + 'Europe/Lisbon' => 'Europa/Lisbon', + 'Europe/Ljubljana' => 'Europa/Ljubljana', + 'Europe/London' => 'Europa/London', + 'Europe/Luxembourg' => 'Europa/Luxembourg', + 'Europe/Madrid' => 'Europa/Madrid', + 'Europe/Malta' => 'Europa/Malta', + 'Europe/Mariehamn' => 'Europa/Mariehamn', + 'Europe/Minsk' => 'Europa/Minsk', + 'Europe/Monaco' => 'Europa/Monaco', + 'Europe/Moscow' => 'Europa/Moscow', + 'Europe/Oslo' => 'Europa/Oslo', + 'Europe/Paris' => 'Europa/Paris', + 'Europe/Podgorica' => 'Europa/Podgorica', + 'Europe/Prague' => 'Europa/Prague', + 'Europe/Riga' => 'Europa/Riga', + 'Europe/Rome' => 'Europa/Rome', + 'Europe/Samara' => 'Europa/Samara', + 'Europe/San_Marino' => 'Europa/San Marino', + 'Europe/Sarajevo' => 'Europa/Sarajevo', + 'Europe/Simferopol' => 'Europa/Simferopol', + 'Europe/Skopje' => 'Europa/Skopje', + 'Europe/Sofia' => 'Europa/Sofia', + 'Europe/Stockholm' => 'Europa/Stockholm', + 'Europe/Tallinn' => 'Europa/Tallinn', + 'Europe/Tirane' => 'Europa/Tirane', + 'Europe/Uzhgorod' => 'Europa/Uzhgorod', + 'Europe/Vaduz' => 'Europa/Vaduz', + 'Europe/Vatican' => 'Europa/Vatican', + 'Europe/Vienna' => 'Europa/Vienna', + 'Europe/Vilnius' => 'Europa/Vilnius', + 'Europe/Volgograd' => 'Europa/Volgograd', + 'Europe/Warsaw' => 'Europa/Warsaw', + 'Europe/Zagreb' => 'Europa/Zagreb', + 'Europe/Zaporozhye' => 'Europa/Zaporozhye', + 'Europe/Zurich' => 'Europa/Zurich', + + 'Indian/Antananarivo' => 'Ãndico/Antananarivo', + 'Indian/Chagos' => 'Ãndico/Chagos', + 'Indian/Christmas' => 'Ãndico/Christmas', + 'Indian/Cocos' => 'Ãndico/Cocos', + 'Indian/Comoro' => 'Ãndico/Comoro', + 'Indian/Kerguelen' => 'Ãndico/Kerguelen', + 'Indian/Mahe' => 'Ãndico/Mahe', + 'Indian/Maldives' => 'Ãndico/Maldives', + 'Indian/Mauritius' => 'Ãndico/Mauritius', + 'Indian/Mayotte' => 'Ãndico/Mayotte', + 'Indian/Reunion' => 'Ãndico/Reunion', + + 'Pacific/Apia' => 'Pacífico/Apia', + 'Pacific/Auckland' => 'Pacífico/Auckland', + 'Pacific/Chatham' => 'Pacífico/Chatham', + 'Pacific/Chuuk' => 'Pacífico/Chuuk', + 'Pacific/Easter' => 'Pacífico/Easter', + 'Pacific/Efate' => 'Pacífico/Efate', + 'Pacific/Enderbury' => 'Pacífico/Enderbury', + 'Pacific/Fakaofo' => 'Pacífico/Fakaofo', + 'Pacific/Fiji' => 'Pacífico/Fiji', + 'Pacific/Funafuti' => 'Pacífico/Funafuti', + 'Pacific/Galapagos' => 'Pacífico/Galapagos', + 'Pacific/Gambier' => 'Pacífico/Gambier', + 'Pacific/Guadalcanal' => 'Pacífico/Guadalcanal', + 'Pacific/Guam' => 'Pacífico/Guam', + 'Pacific/Honolulu' => 'Pacífico/Honolulu', + 'Pacific/Johnston' => 'Pacífico/Johnston', + 'Pacific/Kiritimati' => 'Pacífico/Kiritimati', + 'Pacific/Kosrae' => 'Pacífico/Kosrae', + 'Pacific/Kwajalein' => 'Pacífico/Kwajalein', + 'Pacific/Majuro' => 'Pacífico/Majuro', + 'Pacific/Marquesas' => 'Pacífico/Marquesas', + 'Pacific/Midway' => 'Pacífico/Midway', + 'Pacific/Nauru' => 'Pacífico/Nauru', + 'Pacific/Niue' => 'Pacífico/Niue', + 'Pacific/Norfolk' => 'Pacífico/Norfolk', + 'Pacific/Noumea' => 'Pacífico/Noumea', + 'Pacific/Pago_Pago' => 'Pacífico/Pago Pago', + 'Pacific/Palau' => 'Pacífico/Palau', + 'Pacific/Pitcairn' => 'Pacífico/Pitcairn', + 'Pacific/Pohnpei' => 'Pacífico/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacífico/Port Moresby', + 'Pacific/Rarotonga' => 'Pacífico/Rarotonga', + 'Pacific/Saipan' => 'Pacífico/Saipan', + 'Pacific/Tahiti' => 'Pacífico/Tahiti', + 'Pacific/Tarawa' => 'Pacífico/Tarawa', + 'Pacific/Tongatapu' => 'Pacífico/Tongatapu', + 'Pacific/Wake' => 'Pacífico/Wake', + 'Pacific/Wallis' => 'Pacífico/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Jan 2008, 17:37', + 'd M Y H:i' => '01 Jan 2008 17:37', + 'M jS, \'y, H:i' => 'Jan 1st, \'07, 17:37', + 'D M d, Y g:i a' => 'Seg Jan 01, 2008 5:37 pm', + 'F jS, Y, g:i a' => 'Janeiro 1st, 2008, 5:37 pm', + '|d M Y|, H:i' => 'Hoje, 17:37 / 01 Jan 2008, 17:37', + '|F jS, Y|, g:i a' => 'Hoje, 1:37 pm / 1º Janeiro, 2007, 1:37 pm', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'd/M/Y, H:i', // 20/Abr/2009, 09:17 + +)); diff --git a/includes/shared/phpbb3/language/lang_portugese/index.htm b/includes/shared/phpbb3/language/lang_portugese/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_portugese/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_portugese/posting.php b/includes/shared/phpbb3/language/lang_portugese/posting.php new file mode 100644 index 00000000..0346d1bc --- /dev/null +++ b/includes/shared/phpbb3/language/lang_portugese/posting.php @@ -0,0 +1,286 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* @Traduzido por: http://www.phpbb-pt.com - segundo as normas do Acordo Ortográfico +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine + +$lang = array_merge($lang, array( + 'ADD_ATTACHMENT' => 'Anexar Ficheiro', + 'ADD_ATTACHMENT_EXPLAIN' => 'Se deseja anexar um ou mais Ficheiros preencha use os campos abaixo:', + 'ADD_FILE' => 'Adicionar o Ficheiro', + 'ADD_POLL' => 'Criar Votação', + 'ADD_POLL_EXPLAIN' => 'Se não deseja adicionar uma votação ao Tópico deixe os campos em branco.', + 'ALREADY_DELETED' => 'Esta Mensagem já foi apagada.', + 'ATTACH_DISK_FULL' => 'Não existe espaço livre suficiente no servidor onde se encontra este fórum para enviar o anexo.', + 'ATTACH_QUOTA_REACHED' => 'A cota máxima de anexos para este painel foi alcançada.', + 'ATTACH_SIG' => 'Anexar a minha assinatura (pode alterar a assinatura no Painel de Controlo do Utilizador)', + + 'BBCODE_A_HELP' => 'Anexo enviado: [attachment=]nome do Ficheiro.ext[/attachment]', + 'BBCODE_B_HELP' => 'Texto em Negrito: [b]texto[/b] (alt+b)', + 'BBCODE_C_HELP' => 'Exibir código: [code]código[/code] (alt+c)', + 'BBCODE_D_HELP' => 'Flash: [flash=width,height]http://url[/flash]', + 'BBCODE_F_HELP' => 'Tamanho da fonte: [size=85]texto pequeno[/size]', + 'BBCODE_IS_OFF' => '%sBBCode%s está DESLIGADO', + 'BBCODE_IS_ON' => '%sBBCode%s está LIGADO', + 'BBCODE_I_HELP' => 'Texto em Itálico: [i]texto[/i] (alt+i)', + 'BBCODE_L_HELP' => 'Lista: [list][*]texto[/list]', + 'BBCODE_LISTITEM_HELP' => 'Listar Itens: [*]texto', + 'BBCODE_O_HELP' => 'Lista Ordenada: e.g. [list=1][*]Primeiro Ponto[/list] ou [list=a][*]Ponto a[/list]', + 'BBCODE_P_HELP' => 'Inserir imagem: [img]http://url_da_imagem[/img] (alt+p)', + 'BBCODE_Q_HELP' => 'Citar Texto: [quote]texto[/quote] (alt+q)', + 'BBCODE_S_HELP' => 'Cor da fonte: [color=red]texto[/color] ou [color=#FF0000]texto[/color]', + 'BBCODE_U_HELP' => 'Texto Sublinhado: [u]texto[/u] (alt+u)', + 'BBCODE_W_HELP' => 'Inserir URL: [url]http://url[/url] ou [url=http://url]texto da URL[/url] (alt+w)', + 'BBCODE_Y_HELP' => 'Lista: Adicionar um elemento à lista', + 'BUMP_ERROR' => 'Não pode ressuscitar este Tópico com uma última Mensagem tão recente.', + + 'CANNOT_DELETE_REPLIED' => 'Não pode pode apagar Mensagens que não foram respondidas.', + 'CANNOT_EDIT_POST_LOCKED' => 'Esta Mensagem foi bloqueada. Não pode pode editá-la.', + 'CANNOT_EDIT_TIME' => 'Não pode pode editar ou apagar esta Mensagem.', + 'CANNOT_POST_ANNOUNCE' => 'Não pode pode criar anúncios.', + 'CANNOT_POST_STICKY' => 'Não pode pode criar Tópicos fixos.', + 'CHANGE_TOPIC_TO' => 'Alterar Tópico para', + 'CHARS_POST_CONTAINS' => array( + 1 => 'A sua mensagem tem %1$d carácter.', + 2 => 'A sua mensagem tem %1$d caracteres.', + ), + 'CHARS_SIG_CONTAINS' => array( + 1 => 'A sua assinatura tem %1$d carácter.', + 2 => 'A sua assinatura tem %1$d caracteres.', + ), + 'CLOSE_TAGS' => 'Fechar tags', + 'CURRENT_TOPIC' => 'Tópico atual', + + 'DELETE_FILE' => 'Apagar Ficheiro', + 'DELETE_MESSAGE' => 'Apagar Mensagem', + 'DELETE_MESSAGE_CONFIRM' => 'Tem a certeza que deseja apagar esta Mensagem?', + 'DELETE_OWN_POSTS' => 'Só pode apagar as suas Mensagens.', + 'DELETE_PERMANENTLY' => 'Eliminar', + 'DELETE_POST_CONFIRM' => 'Tem a certeza que deseja apagar esta mensagem?', + 'DELETE_POST_PERMANENTLY_CONFIRM' => 'Tem a certeza que deseja eliminar permanentemente esta mensagem?', + 'DELETE_POST_PERMANENTLY' => array( + 1 => 'Excluir permanentemente esta mensagem, não poderá ser depois recuperada', + 2 => 'Excluir permanentemente %1$d mensagens, não poderão ser depois recuperadas', + ), + 'DELETE_POSTS_CONFIRM' => 'Tem a certeza que deseja apagar estas mensagens?', + 'DELETE_POSTS_PERMANENTLY_CONFIRM' => 'Tem a certeza que deseja eliminar permanentemente estas mensagens?', + 'DELETE_REASON' => 'Motivos para apagar', + 'DELETE_REASON_EXPLAIN' => 'O motivo indicado será visível pelos moderadores.', + 'DELETE_POST_WARN' => 'Apagar esta mensagem', + 'DELETE_TOPIC_CONFIRM' => 'Tem a certeza que deseja apagar este tópico?', + 'DELETE_TOPIC_PERMANENTLY' => array( + 1 => 'Excluir permanentemente este tópico, não poderá ser depois recuperado', + 2 => 'Excluir permanentemente %1$d tópicos, não poderão ser depois recuperados', + ), + 'DELETE_TOPIC_PERMANENTLY_CONFIRM' => 'Tem a certeza que deseja eliminar permanentemente este tópico?', + 'DELETE_TOPICS_CONFIRM' => 'Tem a certeza que deseja apagar estes tópicos?', + 'DELETE_TOPICS_PERMANENTLY_CONFIRM' => 'Tem a certeza que deseja eliminar permanentemente estes tópicos?', + 'DISABLE_BBCODE' => 'Desativar o BBCode', + 'DISABLE_MAGIC_URL' => 'Não processar as URLs automaticamente', + 'DISABLE_SMILIES' => 'Desativar as Emoções', + 'DISALLOWED_CONTENT' => 'O envio foi rejeitado porque o ficheiro enviado foi identificado como potencialmente malicioso.', + 'DISALLOWED_EXTENSION' => 'A extensão %s não é permitida.', + 'DRAFT_LOADED' => 'Rascunho carregado, pode terminar a sua Mensagem. O rascunho será apagado ao enviar a Mensagem.', + 'DRAFT_LOADED_PM' => 'Rascunho carregado, pode terminar a sua Mensagem Privada. O seu rascunho será apagado ao enviar a Mensagem Privada.', + 'DRAFT_SAVED' => 'Rascunho guardado com sucesso.', + 'DRAFT_TITLE' => 'Título do rascunho', + + 'EDIT_REASON' => 'Motivos para editar esta Mensagem', + 'EMPTY_FILEUPLOAD' => 'O Ficheiro enviado está vazio.', + 'EMPTY_MESSAGE' => 'Tem que escrever uma Mensagem.', + 'EMPTY_REMOTE_DATA' => 'O Ficheiro não pode ser enviado, tente enviá-lo manualmente.', + + 'FLASH_IS_OFF' => '[flash] está DESLIGADO', + 'FLASH_IS_ON' => '[flash] está LIGADO', + 'FLOOD_ERROR' => 'Não pode enviar uma nova Mensagem tão rapidamente. Aguarde algum tempo e tente novamente mais tarde.', + 'FONT_COLOR' => 'Cor da Fonte', + 'FONT_COLOR_HIDE' => 'Ocultar cor da fonte', + 'FONT_HUGE' => 'Enorme', + 'FONT_LARGE' => 'Grande', + 'FONT_NORMAL' => 'Normal', + 'FONT_SIZE' => 'Tamanho da Fonte', + 'FONT_SMALL' => 'Pequena', + 'FONT_TINY' => 'Minúscula', + + 'GENERAL_UPLOAD_ERROR' => 'Não foi possível enviar o anexo para %s.', + + 'IMAGES_ARE_OFF' => '[img] está DESLIGADO', + 'IMAGES_ARE_ON' => '[img] está LIGADO', + 'INVALID_FILENAME' => '%s é um nome de Ficheiro Inválido.', + + 'LOAD' => 'Carregar', + 'LOAD_DRAFT' => 'Carregar rascunho', + 'LOAD_DRAFT_EXPLAIN' => 'Selecione o rascunho. Tenha em atenção que ao selecionar um rascunho o mesmo deixará de ficar guardado. No entanto pode voltar a guardar a mensagem, criando um novo rascunho. Pode ver, editar e apagar rascunhos no Painel de Controlo do Utilizador.', + 'LOGIN_EXPLAIN_BUMP' => 'Tem que ligar-se para ressuscitar Tópicos neste Fórum.', + 'LOGIN_EXPLAIN_DELETE' => 'Tem que ligar-se para apagar Mensagens neste Fórum.', + 'LOGIN_EXPLAIN_POST' => 'Tem que ligar-se para enviar Mensagens neste Fórum.', + 'LOGIN_EXPLAIN_QUOTE' => 'Tem que ligar-se para citar Mensagens neste Fórum.', + 'LOGIN_EXPLAIN_REPLY' => 'Tem que ligar-se para responder Tópicos neste Fórum.', + + 'MAX_FONT_SIZE_EXCEEDED' => 'Só pode usar tipos de letra até ao tamanho %d.', + 'MAX_FLASH_HEIGHT_EXCEEDED' => array( + 1 => 'O seu ficheiro flash só pode ter até %d píxel de altura.', + 2 => 'Os seus ficheiros flash só podem ter até %d píxeis de altura.', + ), + 'MAX_FLASH_WIDTH_EXCEEDED' => array( + 1 => 'O seu ficheiro flash só pode ter até %d píxel de largura.', + 2 => 'Os seus ficheiros flash só podem ter até %d píxeis de largura.', + ), + 'MAX_IMG_HEIGHT_EXCEEDED' => array( + 1 => 'A sua imagem só pode ter até %1$d píxel de altura.', + 2 => 'As suas imagens só podem ter até %1$d píxeis de altura.', + ), + 'MAX_IMG_WIDTH_EXCEEDED' => array( + 1 => 'A sua imagem só pode ter até %d píxel de largura.', + 2 => 'As suas imagens só podem ter até %d píxeis de largura.', + ), + + 'MESSAGE_BODY_EXPLAIN' => array( + 0 => '', // zero means no limit, so we don't view a message here. + 1 => 'Digite aqui a sua mensagem, pode conter mais do que %d carácter.', + 2 => 'Digite aqui a sua mensagem, pode conter mais do que %d caracteres.', + ), + 'MESSAGE_DELETED' => 'A Mensagem foi apagada com sucesso.', + 'MORE_SMILIES' => 'Ver mais Emoções', + + 'NOTIFY_REPLY' => 'Enviar-me email sempre que tiver uma nova resposta', + 'NOT_UPLOADED' => 'Não foi possível enviar o Ficheiro.', + 'NO_DELETE_POLL_OPTIONS' => 'Não pode apagar opções de votação existentes.', + 'NO_PM_ICON' => 'MP sem ícone', + 'NO_POLL_TITLE' => 'Tem que dar um Título à votação.', + 'NO_POST' => 'Esta Mensagem não existe.', + 'NO_POST_MODE' => 'Nenhum modo de Mensagem foi indicado.', + 'NO_TEMP_DIR' => 'A pasta temporária não pôde ser encontrada ou não tem permissões de escrita.', + + 'PARTIAL_UPLOAD' => 'O Ficheiro foi enviado parcialmente.', + 'PHP_UPLOAD_STOPPED' => 'Uma extensão PHP parou o upload de ficheiros.', + 'PHP_SIZE_NA' => 'O Ficheiro é muito grande.
    Não foi possível determinar o tamanho máximo definido no php.ini do PHP.', + 'PHP_SIZE_OVERRUN' => 'O Ficheiro é muito grande. O limite máximo é de %1$d %2$s.
    Este tamanho é configurado no php.ini e não pode ser alterado.', + 'PLACE_INLINE' => 'Insira na linha', + 'POLL_DELETE' => 'Apagar votação', + 'POLL_FOR' => 'Votação expira em', + 'POLL_FOR_EXPLAIN' => 'Insira 0 ou deixe o campo em branco para uma votação sem tempo limite.', + 'POLL_MAX_OPTIONS' => 'Opções por Utilizador', + 'POLL_MAX_OPTIONS_EXPLAIN' => 'Este é o número de opções que cada Utilizador poderá votar.', + 'POLL_OPTIONS' => 'Opções da votação', + 'POLL_OPTIONS_EXPLAIN' => array( + 1 => 'Coloque uma opção por linha. Não pode colocar mais do que %d opção.', + 2 => 'Coloque uma opção por linha. Não pode colocar mais do que %d opções.', + ), + 'POLL_OPTIONS_EDIT_EXPLAIN' => array( + 1 => 'Coloque uma opção por linha. Não pode colocar mais do que %d opção. Se adicionar ou remover opções, os votos anteriores serão apagados.', + 2 => 'Coloque uma opção por linha. Não pode colocar mais do que %d opções. Se adicionar ou remover opções, os votos anteriores serão apagados.', + ), + 'POLL_QUESTION' => 'Pergunta da votação', + 'POLL_TITLE_TOO_LONG' => 'O Título da votação deve conter no máximo 100 caracteres.', + 'POLL_TITLE_COMP_TOO_LONG' => 'O Título da votação é muito longo, considerar remoção de BBCodes ou Emoções.', + 'POLL_VOTE_CHANGE' => 'Permitir mudança de voto', + 'POLL_VOTE_CHANGE_EXPLAIN' => 'Se selecionado, os Utilizadores podem alterar o voto.', + 'POSTED_ATTACHMENTS' => 'Anexos', + 'POST_APPROVAL_NOTIFY' => 'Será avisado quando a mensagem for aprovada.', + 'POST_CONFIRMATION' => 'Confirmação da Mensagem', + 'POST_CONFIRM_EXPLAIN' => 'Para evitar Mensagens automáticas, o fórum exige que digite o código de confirmação. O código é mostrado na imagem abaixo. Se não consegue ver a imagem, por favor contacte o %sAdministrador%s.', + 'POST_DELETED' => 'A Mensagem foi apagada com sucesso.', + 'POST_EDITED' => 'A Mensagem foi editada com sucesso.', + 'POST_EDITED_MOD' => 'A Mensagem foi editada mas necessita de ser aprovada por um Moderador antes de se tornar visível. Será avisado quando a sua Mensagem for aprovada.', + 'POST_GLOBAL' => 'Anúncio Global', + 'POST_ICON' => 'Ãcone da Mensagem', + 'POST_NORMAL' => 'Normal', + 'POST_REVIEW' => 'Rever Mensagem', + 'POST_REVIEW_EDIT' => 'Revisão da mensagem', + 'POST_REVIEW_EDIT_EXPLAIN' => 'Esta mensagem foi alterada por outro utilizador enquanto estava a editá-la. Pode rever a versão atual desta mensagem e ajustar a sua edição.', + 'POST_REVIEW_EXPLAIN' => 'Pelo menos uma nova Mensagem foi feita neste Tópico. Deseja rever a sua Mensagem levando isso em conta.', + 'POST_STORED' => 'Esta Mensagem foi enviada com sucesso.', + 'POST_STORED_MOD' => 'Esta Mensagem foi enviada, mas necessita ser Aprovada.', + 'POST_TOPIC_AS' => 'Tipo de Tópico', + 'PROGRESS_BAR' => 'Barra de Progresso', + + 'QUOTE_DEPTH_EXCEEDED' => array( + 1 => 'Só pode sobrepor %d citação.', + 2 => 'Só pode sobrepor %d citações.', + ), + 'QUOTE_NO_NESTING' => 'Não pode inserir citações dentro de outra citação.', + + 'REMOTE_UPLOAD_TIMEOUT' => 'O ficheiro selecionado não pôde ser carregado porque o pedido excedeu o tempo.', + 'SAVE' => 'Guardar', + 'SAVE_DATE' => 'Guardar em', + 'SAVE_DRAFT' => 'Guardar rascunho', + 'SAVE_DRAFT_CONFIRM' => 'Os rascunhos guardados só incluem o assunto e o conteúdo da Mensagem. Outros elementos serão removidos. Guardar o rascunho?', + 'SMILIES' => 'Emoções', + 'SMILIES_ARE_OFF' => 'Emoções estão Desligadas', + 'SMILIES_ARE_ON' => 'Emoções estão Ligadas', + 'STICKY_ANNOUNCE_TIME_LIMIT' => 'Tempo limite do Fixo/Anúncio/Global', + 'STICK_TOPIC_FOR' => 'Fixar Tópico por', + 'STICK_TOPIC_FOR_EXPLAIN' => 'Digite 0 para manter Fixo/Anúncio/Global por tempo indeterminado. Por favor, note que este número é relativo à data do envio da mensagem.', + 'STYLES_TIP' => 'Dica: Estilos podem ser aplicados a textos selecionados.', + + 'TOO_FEW_CHARS' => 'A Mensagem contém poucos caracteres.', + 'TOO_FEW_CHARS_LIMIT' => array( + 1 => 'Tem que inserir pelo menos %1$d carácter.', + 2 => 'Tem que inserir pelo menos %1$d caracteres.', + ), + 'TOO_FEW_POLL_OPTIONS' => 'A votação tem que ter pelo menos duas opções.', + 'TOO_MANY_ATTACHMENTS' => 'Não pode adicionar outro anexo, o limite é de %d anexos.', + 'TOO_MANY_CHARS' => 'A Mensagem contém muitos caracteres.', + 'TOO_MANY_CHARS_LIMIT' => array( + 2 => 'O número máximo de caracteres permitidos é de %1$d.', + ), + 'TOO_MANY_POLL_OPTIONS' => 'Tentou inserir muitas opções de votação.', + 'TOO_MANY_SMILIES' => 'A Mensagem contém muitas Emoções. O número máximo de Emoções permitidas é de %d.', + 'TOO_MANY_URLS' => 'A Mensagem contém muitas URLs. O número máximo de URLs permitidas é de %d.', + 'TOO_MANY_USER_OPTIONS' => 'Não pode especificar mais opções por Utilizador do que na votação.', + 'TOPIC_BUMPED' => 'O Tópico foi Ressuscitado com sucesso.', + + 'UNAUTHORISED_BBCODE' => 'Não pode usar certos BBCodes: %s.', + 'UNGLOBALISE_EXPLAIN' => 'Para alterar um anúncio para um Tópico normal, tem que selecionar o Fórum onde será exibido.', + 'UNSUPPORTED_CHARACTERS_MESSAGE' => 'A sua mensagem contém os seguintes caracteres não suportados:
    %s', + 'UNSUPPORTED_CHARACTERS_SUBJECT' => 'O assunto contém os seguintes caracteres não suportados:
    %s', + 'UPDATE_COMMENT' => 'Atualizar comentário', + 'URL_INVALID' => 'A URL indicada é inválida.', + 'URL_NOT_FOUND' => 'O Ficheiro indicado não foi encontrado.', + 'URL_IS_OFF' => '[url] está Desligado', + 'URL_IS_ON' => '[url] está Ligado', + 'USER_CANNOT_BUMP' => 'Não pode ressuscitar Tópicos neste Fórum.', + 'USER_CANNOT_DELETE' => 'Não pode apagar Mensagens neste Fórum.', + 'USER_CANNOT_EDIT' => 'Não pode editar Mensagens neste Fórum.', + 'USER_CANNOT_REPLY' => 'Não pode responder neste Fórum.', + 'USER_CANNOT_FORUM_POST' => 'Não pode utilizar estas operações porque este Fórum não as suporta.', + + 'VIEW_MESSAGE' => '%sVer a Mensagem enviada%s', + 'VIEW_PRIVATE_MESSAGE' => '%sVer a Mensagem Privada enviada%s', + + 'WRONG_FILESIZE' => 'O ficheiro é muito grande. O tamanho máximo permitido é de %1$d %2$s.', + 'WRONG_SIZE' => 'A imagem deve ter pelo menos %1$s de largura, %2$s de altura e, no máximo, %3$s de largura e %4$s de altura. A imagem submetida tem %5$s de largura e %6$s de altura.', +)); diff --git a/includes/shared/phpbb3/language/lang_punjabi/index.htm b/includes/shared/phpbb3/language/lang_punjabi/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_punjabi/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_romanian/common.php b/includes/shared/phpbb3/language/lang_romanian/common.php new file mode 100644 index 00000000..3d623705 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian/common.php @@ -0,0 +1,1416 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » “ †… +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Translation/Traducere: phpBB România', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'ro', + + // You can define different rules for the determination of plural forms here. + // See http://wiki.phpbb.com/Plural_Rules for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 1, + + '1_DAY' => '1 zi', + '1_MONTH' => '1 lună', + '1_YEAR' => '1 an', + '2_WEEKS' => '2 săptămâni', + '3_MONTHS' => '3 luni', + '6_MONTHS' => '6 luni', + '7_DAYS' => '7 zile', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Contul dumneavoastră a fost deja activat.', + 'ACCOUNT_DEACTIVATED' => 'Contul dumneavoastră a fost dezactivat manual şi poate fi reactivat doar de către un administrator.', + 'ACCOUNT_NOT_ACTIVATED' => 'Contul dumneavoastră încă nu a fost activat.', + 'ACP' => 'Panoul administratorului', + 'ACP_SHORT' => 'ACP', + 'ACTIVE' => 'activ', + 'ACTIVE_ERROR' => 'Numele de utilizator specificat este momentan inactiv. Dacă aveţi probleme cu activarea contului, vă rugăm să contactaţi un administrator.', + 'ADMINISTRATOR' => 'Administrator', + 'ADMINISTRATORS' => 'Administratori', + 'AGE' => 'Vârsta', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'Eroare AJAX', + 'AJAX_ERROR_TEXT' => 'Ceva a funcționat eronat la procesarea cererii dvs.', + 'AJAX_ERROR_TEXT_ABORT' => 'Cerere abandonată.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'Cerera a expirat, încercați din nou.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Ceva a funcționat prost și serverul a returnat o valoare invalidă.', + 'ALLOWED' => 'Permis', + 'ALL_FILES' => 'Toate fişierele', + 'ALL_FORUMS' => 'Toate forumurile', + 'ALL_MESSAGES' => 'Toate mesajele', + 'ALL_POSTS' => 'Toate mesajele', + 'ALL_TIMES' => 'Ora este %1$s %2$s', + 'ALL_TOPICS' => 'Toate subiectele', + 'AND' => 'Şi', + 'ARE_WATCHING_FORUM' => 'Aţi subscris pentru a fi notificat de mesajele noi publicate în acest forum.', + 'ARE_WATCHING_TOPIC' => 'Aţi subscris pentru a fi notificat de mesajele noi publicate în acest subiect.', + 'ASCENDING' => 'Crescător', + 'ATTACHMENTS' => 'Fişiere ataşate', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'Fişierul imagine pe care încercaţi să-l ataşaţi este invalid.', + 'AUTHOR' => 'Autor', + 'AUTH_NO_PROFILE_CREATED' => 'Crearea profilului de utilizator nu a fost efectuată cu succes.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'Înregistrarea nevalidă în baza de date.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Serviciu invalid furnizat de OAuth.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'Serviciul OAuth nu a fost creat', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'Tokenul OAuth nu e stocat.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'Token OAuth stocat incorect.', + 'AVATAR_DISALLOWED_CONTENT' => 'Încărcarea a fost respinsă deoarece fişierul încărcat a fost identificat ca un posibil atac vector.', + 'AVATAR_DISALLOWED_EXTENSION' => 'Fişierul nu poate fi afişat deoarece extensia %s nu este permisă.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Avatarul specificat nu a putut fi încărcat pentru că datele de la distanţă sunt invalide sau corupte.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'Fişierul avatar încărcat este gol.', + 'AVATAR_INVALID_FILENAME' => '%s este un nume de fişier invalid.', + 'AVATAR_NOT_UPLOADED' => 'Avatarul nu a putut fi încărcat.', + 'AVATAR_NO_SIZE' => 'Lungimea sau înălţimea avatarului specificat în legătură nu a putut fi determinată. Vă rugăm să le introduceţi manual.', + 'AVATAR_PARTIAL_UPLOAD' => 'Fişierul specificat a fost încărcat doar parţial.', + 'AVATAR_PHP_SIZE_NA' => 'Dimensiunea fişierului avatar este prea mare.
    Dimensiunea maximă permisă setată în php.ini nu a putut fi determinată.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Dimensiunea fişierului avatar este prea mare. Dimensiunea maximă permisă pentru încărcare este de %1$d %2$s.
    Ţineţi minte că aceasta este setată în php.ini şi nu poate fi suprascrisă.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'Avatarul specificat nu poate fi încărcat deoarece cererea a fost întreruptă.', + 'AVATAR_URL_INVALID' => 'URL-ul specificat este invalid.', + 'AVATAR_URL_NOT_FOUND' => 'Fişierul specificat nu a putut fi găsit.', + 'AVATAR_WRONG_FILESIZE' => 'Dimensiunea fişierului avatar trebuie să fie între 0 şi %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'Avatarul trimis este de %5$s pixeli lungime şi %6$s pixeli înălţime. Avatarurile trebuie să fie de cel puţin %1$s pixeli lungime şi %2$s pixeli înălţime, dar nu mai mari de %3$s pixeli lungime şi %4$s pixeli înălţime.', + + 'BACK_TO_TOP' => 'Sus', + 'BACK_TO_PREV' => 'Înapoi la pagina anterioară', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Adresa dumneavostră de e-mail a fost interzisă.', + 'BAN_TRIGGERED_BY_IP' => 'Adresa dumneavostră de IP a fost interzisă.', + 'BAN_TRIGGERED_BY_USER' => 'Numele dumneavostră de utilizator a fost interzis.', + 'BBCODE_GUIDE' => 'Ghidul codului BB', + 'BCC' => 'BCC', + 'BIRTHDAYS' => 'Zile de naştere', + 'BOARD_BAN_PERM' => 'Accesul dumneavoastră a fost interzis permanent pe acest forum.

    Vă rugăm să contactaţi %2$sadministratorul forumului%3$s pentru mai multe informaţii.', + 'BOARD_BAN_REASON' => 'Motivul interzicerii: %s', + 'BOARD_BAN_TIME' => 'Accesul dumneavoastră a fost interzis pe acest forum până%1$s.

    Vă rugăm să contactaÅ£i %2$sadministratorul forumului%3$s pentru mai multe informaÅ£ii.', + 'BOARD_DISABLE' => 'Ne pare rău, dar acest forum este momentan indisponibil.', + 'BOARD_DISABLED' => 'Acest forum este momentan dezactivat.', + 'BOARD_UNAVAILABLE' => 'Ne pare rău, dar acest forum, momentan nu este disponibil. Vă rugăm să încercaÅ£i din nou în câteva minute.', + 'BROWSING_FORUM' => 'Utilizatorii ce navighează pe acest forum: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitator', + 2 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitatori', + ), + 'BUTTON_EDIT' => 'Modificare', + 'BUTTON_FORUM_LOCKED' => 'ÃŽnchis', + 'BUTTON_NEW_TOPIC' => 'Subiect nou', + 'BUTTON_PM' => 'MP', + 'BUTTON_PM_FORWARD' => 'Trimite mai departe', + 'BUTTON_PM_NEW' => 'MP nou', + 'BUTTON_PM_REPLY' => 'Trimite răspuns', + 'BUTTON_PM_REPLY_ALL' => 'Răspunde la toÈ›i', + 'BUTTON_POST_REPLY' => 'Scrie răspuns', + 'BUTTON_QUOTE' => 'Citează', + 'BUTTON_TOPIC_LOCKED' => 'ÃŽnchis', + 'BYTES' => 'OcteÅ£i', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Anulează', + 'CHANGE' => 'Schimbă', + 'CHANGE_FONT_SIZE' => 'Schimbă dimensiunea fontului', + 'CHANGING_PREFERENCES' => 'Schimbare preferinÅ£e forum', + 'CHANGING_PROFILE' => 'Schimbare preferinÅ£e profil', + 'CHARACTERS' => array( + 1 => '%d caracter', + 2 => '%d caractere', + ), + 'COLLAPSE_VIEW' => 'Vizualizare restrânsă', + 'CLOSE_WINDOW' => 'ÃŽnchide fereastra', + 'COLOUR_SWATCH' => 'Schimbă culoarea', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirmă', + 'CONFIRM_CODE' => 'Codul de confirmare', + 'CONFIRM_CODE_EXPLAIN' => 'IntroduceÅ£i codul exact cum apare. Nu există diferenţă între literele mari ÅŸi cele mici.', + 'CONFIRM_CODE_WRONG' => 'Codul de confirmare introdus este incorect.', + 'CONFIRM_OPERATION' => 'SunteÅ£i sigur că vreÅ£i să continuaÅ£i această operaÅ£iune?', + 'CONFIRM_AVATAR_DELETE' => 'EÈ™ti sigur că vrei să stergi acest avatar?', + 'CONGRATULATIONS' => 'La mulÈ›i ani! ', + 'CONNECTION_FAILED' => 'Conexiune eÅŸuată.', + 'CONNECTION_SUCCESS' => 'Conexiunea a fost efectuată cu succes!', + 'CONTACT' => 'Contact', + 'CONTACT_USER' => 'Contactează pe %s', + 'CONTACT_US' => 'Contactează-ne', + 'COOKIES_DELETED' => 'Toate cookie-urile forumului au fost ÅŸterse cu succes.', + 'CURRENT_TIME' => 'Acum este %s', + + 'DAY' => 'Zi', + 'DAYS' => 'Zile', + 'DELETE' => 'Åžterge', + 'DELETE_ALL' => 'Åžterge tot', + 'DELETE_COOKIES' => 'Åžterge toate cookie-urile forumului', + 'DELETE_MARKED' => 'Åžterge mesajele marcate', + 'DELETE_POST' => 'Åžterge mesaj', + 'DELIMITER' => 'Delimitator', + 'DESCENDING' => 'Descrescător', + 'DISABLED' => 'Dezactivat', + 'DISPLAY' => 'AfiÅŸează', + 'DISPLAY_GUESTS' => 'AfiÅŸează vizitatori', + 'DISPLAY_MESSAGES' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_POSTS' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_TOPICS' => 'AfiÅŸează subiectele din ultimele', + 'DOWNLOADED' => 'Descărcat', + 'DOWNLOADING_FILE' => 'FiÅŸierul se descarcă', + 'DOWNLOAD_COUNTS' => array( + 0 => 'ÃŽncă nu a fost nedescărcat', + 1 => 'Descărcat %d dată', + 2 => 'Descărcat de %d ori', + ), + + 'EDIT_POST' => 'Modifică mesaj', + 'ELLIPSIS' => '…', + 'EMAIL' => 'Email', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Adresă email', + 'EMAIL_INVALID_EMAIL' => 'Adresa de email introdusă este invalidă.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Probleme în trimiterea email-ului la Linia %1$s. Răspuns: %2$s.', + 'EMPTY_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când scrieÅ£i un subiect nou.', + 'EMPTY_MESSAGE_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când compuneÅ£i un mesaj nou.', + 'ENABLED' => 'Activat', + 'ENCLOSURE' => 'ÃŽmprejmuire', + 'ENTER_USERNAME' => 'IntroduceÈ›i nume utilizator', + 'ERR_CHANGING_DIRECTORY' => 'Nu s-a putut schimba directorul.', + 'ERR_CONNECTING_SERVER' => 'Eroare în efectuarea conexiunii către server.', + 'ERR_JAB_AUTH' => 'Nu s-a putut autentifica la serverul de Jabber.', + 'ERR_JAB_CONNECT' => 'Nu s-a putut conecta la serverul de Jabber.', + 'ERR_UNABLE_TO_LOGIN' => 'Numele de utilizator sau parola specificată sunt greÅŸite.', + 'ERR_UNWATCHING' => 'Eroare la încercarea de dezabonare.', + 'ERR_WATCHING' => 'Eroare la încercarea de abonare.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'Calea specificată către phpBB este invalidă.', + 'ERROR' => 'Eroare!', + 'EXPAND_VIEW' => 'Vizualizare extinsă', + 'EXTENSION' => 'Extensie', + 'EXTENSION_DISABLED' => 'Extensia %s nu e permisă.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'Extensia %s a fost dezactivată ÅŸi nu mai poate fi afiÅŸată.', + 'EXTENSION_DOES_NOT_EXIST' => 'Extensia %s nu există.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'ÃŽntrebări puse frecvent', + 'FILENAME' => 'Nume fiÅŸier', + 'FILESIZE' => 'Dimensiune fiÅŸier', + 'FILEDATE' => 'Dată fiÅŸier', + 'FILE_COMMENT' => 'Comentariu fiÅŸier', + 'FILE_CONTENT_ERR' => 'Nu se poate citi conÈ›inutul fiÈ™ierului: %s', + 'FILE_JSON_DECODE_ERR' => 'Decodarea fiÈ™ierului json eÈ™uată: %s', + 'FILE_NOT_FOUND' => 'FiÅŸierul cerut nu a putut fi găsit: %s', + 'FIND_USERNAME' => 'Caută un membru', + 'FOLDER' => 'Folder', + 'FORGOT_PASS' => 'Am uitat parola', + 'FORM_INVALID' => 'Formularul trimis a fost invalid. IncercaÅ£i să-l retrimiteÅ£i.', + 'FORUM' => 'Forum', + 'FORUMS' => 'Forumuri', + 'FORUMS_MARKED' => 'Forumurile au fost marcate ca fiind citite.', + 'FORUM_CAT' => 'Categorie forum', + 'FORUM_INDEX' => 'Prima pagină', + 'FORUM_LINK' => 'Link forum', + 'FORUM_LOCATION' => 'LocaÅ£ie forum', + 'FORUM_LOCKED' => 'Forum închis', + 'FORUM_RULES' => 'Reguli forum', + 'FORUM_RULES_LINK' => 'Accesează link-ul pentru a putea vedea regulile forumului', + 'FROM' => 'de la', + 'FSOCK_DISABLED' => 'OperaÅ£iunea nu a putut fi finalizată deoarece funcÅ£ia fsockopen a fost dezactivată sau serverul care este interogat nu a fost găsit.', + 'FSOCK_TIMEOUT' => 'Nu am putut ajunge la serverul din reÈ›ea.', + + 'FTP_FSOCK_HOST' => 'Host FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_FSOCK_PASSWORD' => 'Parola FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_FSOCK_PORT' => 'Port FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_FSOCK_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_FSOCK_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_FSOCK_USERNAME' => 'Nume de utilizator FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'FTP_HOST' => 'Host FTP', + 'FTP_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_PASSWORD' => 'Parola FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_PORT' => 'Port FTP', + 'FTP_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_USERNAME' => 'Nume de utilizator FTP', + 'FTP_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'GENERAL_ERROR' => 'Eroare generală', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Du-te la primul mesaj', + 'GOTO_LAST_POST' => 'Du-te la ultimul mesaj', + 'GO' => 'Du-te', + 'GOTO_PAGE' => 'Du-te la pagina', + 'GROUP' => 'Grup', + 'GROUPS' => 'Grupuri', + 'GROUP_ERR_TYPE' => 'Tipul de grup specificat este nepotrivit.', + 'GROUP_ERR_USERNAME' => 'Numele grupului nu a fost specificat.', + 'GROUP_ERR_USER_LONG' => 'Numele grupului nu poate depăşi 60 de caractere. Numele grupului specificat este prea mare.', + 'GUEST' => 'Vizitator', + 'GUEST_USERS_ONLINE' => array( + 1 => 'Este %d vizitator online', + 2 => 'Sunt %d vizitatori online', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d vizitator', + 2 => '%d vizitatori', + ), + 'G_ADMINISTRATORS' => 'Administratori', + 'G_BOTS' => 'BoÅ£i', + 'G_GUESTS' => 'Vizitatori', + 'G_REGISTERED' => 'Utilizatori înregistraÅ£i', + 'G_REGISTERED_COPPA' => 'Utilizatori COPPA înregistraÅ£i', + 'G_GLOBAL_MODERATORS' => 'Moderatori globali', + 'G_NEWLY_REGISTERED' => 'Utilizatori înregistraÅ£i recent', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d utilizator ascuns', + 2 => '%d utilizatori ascunÈ™i', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d ascuns', + 2 => '%d ascunÈ™i', + ), + 'HIDE_GUESTS' => 'Ascunde vizitatori', + 'HIDE_ME' => 'Ascunde starea mea online în această sesiune', + 'HOURS' => 'Ore', + 'HOME' => 'Acasă', + + 'ICQ' => 'ICQ', + 'IF' => 'Dacă', + 'IMAGE' => 'Imagine', + 'IMAGE_FILETYPE_INVALID' => 'Tip de fiÅŸier imagine %d pentru tipul mime %s nu este suportat.', + 'IMAGE_FILETYPE_MISMATCH' => 'Tip de fiÅŸier imagine nepotrivit: extensie aÅŸteptată %1$s, dar este furnizată extensie %2$s.', + 'IN' => 'în', + 'INACTIVE' => 'Inactiv', + 'INDEX' => 'Prima pagină', + 'INFORMATION' => 'InformaÅ£ie', + 'INSECURE_REDIRECT' => 'Incercare de redirecÈ›ionare către un URL potenÈ›ial nesigur.', + 'INTERESTS' => 'Interese', + 'INVALID_DIGEST_CHALLENGE' => 'Cerere invalidă de sistematizare.', + 'INVALID_EMAIL_LOG' => '%s o adresă de e-mail posibil invalidă?', + 'INVALID_PLURAL_RULE' => 'Alegerea mai multor reguli nu e validă. Valorile valide sunt cuprinse între 0 È™i 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'IP-ul dumneavoastră %1$s a fost blocat pentru că este în lista neagră. Pentru detalii vizualizaÅ£i %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Membru din', + 'JUMP_PAGE' => 'IntroduceÅ£i numărul paginii la care doriÅ£i să vă duceÅ£i.', + 'JUMP_TO' => 'Mergi la', + 'JUMP_TO_PAGE' => 'Click pentru a vă duce la pagina…', + 'JUMP_TO_PAGE_CLICK' => 'Click pentru a vă duce la pagina…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Ultimul mesaj', + 'LAST_UPDATED' => 'Ultima actualizare', + 'LAST_VISIT' => 'Ultima vizită', + 'LDAP_NO_LDAP_EXTENSION' => 'Extensia LDAP nu este valabilă.', + 'LDAP_NO_SERVER_CONNECTION' => 'Nu s-a putut efectua conexiunea la server-ul LDAP.', + 'LDAP_SEARCH_FAILED' => 'O eroare a apărut în timpul căutării în directorul LDAP.', + 'LEGEND' => 'Legendă', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Căutarile directe nu sunt permise.', + 'LOADING' => 'ÃŽncărcare', + 'LOCATION' => 'Localitate', + 'LOCK_POST' => 'ÃŽnchide mesaj', + 'LOCK_POST_EXPLAIN' => 'Previne editarea', + 'LOCK_TOPIC' => 'ÃŽnchide subiect', + 'LOGIN' => 'Autentificare', + 'LOGIN_CHECK_PM' => 'Autentifică-te pentru a-Å£i verifica mesajele private.', + 'LOGIN_CONFIRMATION' => 'Confirmare autentificare', + 'LOGIN_CONFIRM_EXPLAIN' => 'Pentru a preveni conturile forÅ£ate, forumul vă cere să introduceÅ£i un cod de confirmare după un număr maxim de încercări de autentificare eÅŸuate. Codul este afiÅŸat în imaginea de mai jos. Dacă aveÅ£i probleme cu vizualizarea acestuia sau nu puteÅ£i citi codul, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_ATTEMPTS' => 'AÅ£i depăşit numărul maxim de încercări de autentificare. AdiÅ£ional cu numele de utilizator ÅŸi parola mai trebuie să verificaÅ£i componenta afiÅŸată mai jos.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Nu aÅ£i fost autentificat de Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'Un serviciu OAuth inexistent a fost solicitat.', + 'LOGIN_ERROR_PASSWORD' => 'AÅ£i specificat o parolă incorectă. Vă rugăm să vă verificaÅ£i parola ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Nu a fost posibil să fie convertită parola în timpul actualizării softului de forum. Vă rugăm să %scereÅ£i o nouă parolă%s. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_USERNAME' => 'AÅ£i specificat un nume de utilizator incorect. Vă rugăm să vă verificaÅ£i numele de utilizator ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_FORUM' => 'Pentru a vizualiza sau scrie în acest forum, trebuie să introduceÅ£i parola.', + 'LOGIN_INFO' => 'Pentru a vă autentifica, trebuie să vă înregistraÅ£i. ÃŽnregistrarea durează câteva secunde, dar vă va oferi facilităţi suplimentare. Administratorul forumului poate de asemenea să acorde permisiuni suplimentare utilizatorilor înregistraÅ£i. ÃŽnainte de a vă autentifica, asiguraÅ£i-vă că sunteÅ£i familiarizat cu termenii noÅŸtri de folosire ÅŸi politicile asociate. Vă rugăm să vă asiguraÅ£i că aÅ£i citit regulile forumului înainte să navigaÅ£i pe acesta.', + 'LOGIN_VIEWFORUM' => 'Necesită să fiÅ£i înregistrat ÅŸi autentificat pentru a putea vizualiza acest forum.', + 'LOGIN_EXPLAIN_EDIT' => 'Pentru a putea modifica mesajele din acest forum, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Pentru a putea vizualiza lista cu cei care sunt online, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_REQUIRED' => 'Trebuie să fiÈ›i autentificat pentru această acÈ›iune.', + 'LOGOUT' => 'Deconectare', + 'LOGOUT_USER' => 'Deconectare [ %s ]', + 'LOG_ME_IN' => 'Autentifică-mă automat la fiecare vizită', + + 'MAIN' => 'Main', + 'MARK' => 'Marchează', + 'MARK_ALL' => 'Marchează toate', + 'MARK_ALL_READ' => 'Marchează toate citite', + 'MARK_FORUMS_READ' => 'Marchează forumurile ca fiind citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile ca fiind citite', + 'MARK_READ' => 'Marchează drept citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile citite', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Panoul moderatorului', + 'MCP_SHORT' => 'MCP', + 'MEMBERLIST' => 'Membri', + 'MEMBERLIST_EXPLAIN' => 'Vezi lista completă a membrilor', + 'MERGE' => 'UneÅŸte', + 'MERGE_POSTS' => 'Mută mesaje', + 'MERGE_TOPIC' => 'UneÅŸte subiecte', + 'MESSAGE' => 'Mesaj', + 'MESSAGES' => 'Mesaje', + 'MESSAGES_COUNT' => array( + 1 => '%d mesaj', + 2 => '%d mesaje', + ), + 'MESSAGE_BODY' => 'Corpul mesajului', + 'MINUTES' => 'Minute', + 'MODERATE' => 'Moderează', + 'MODERATOR' => 'Moderator', + 'MODERATORS' => 'Moderatori', + 'MODULE_NOT_ACCESS' => 'Modulul nu e accesibil', + 'MODULE_NOT_FIND' => 'Modulul %s nu poate fi găsit', + 'MODULE_FILE_INCORRECT_CLASS' => 'FiÈ›ierul modulului %s nu conÈ›ine clasa corectă [%s]', + 'MONTH' => 'Lună', + 'MOVE' => 'Mută', + + 'NA' => 'N/A', + 'NEWEST_USER' => 'Cel mai nou membru %s', + 'NEW_MESSAGE' => 'Mesaj nou', + 'NEW_MESSAGES' => 'Mesaje noi', + 'NEW_POST' => 'Mesaj nou', + 'NEW_POSTS' => 'Mesaje noi', + 'NEXT' => 'Următorul', // Used in pagination + 'NEXT_STEP' => 'Următorul', + 'NEVER' => 'Niciodată', + 'NO' => 'Nu', + 'NO_NOTIFICATIONS' => 'Nu aveÈ›i notificări', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Nu sunteÅ£i autorizat să conduceÅ£i acest grup.', + 'NOT_AUTHORISED' => 'Nu sunteÅ£i autorizat să accesaÅ£i această zonă.', + 'NOT_WATCHING_FORUM' => 'Nu mai sunteÅ£i abonat la actualizările acestui forum.', + 'NOT_WATCHING_TOPIC' => 'Nu mai sunteÅ£i abonat la acest subiect.', + 'NOTIFICATIONS' => 'Notificări', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Răspuns de la %1$s în subiectul urmărit:', + ), + 'NOTIFICATION_FORUM' => 'Forum: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Cerere de la %1$s pentru aderare la grupul %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Cerere aprobată pentru a adera la grupul %1$s.', + 'NOTIFICATION_PM' => 'Mesaj privat de la %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Răspuns de la %1$s în subiectul:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Mesaj aprobat:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Mesaj neaprobat:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Arobare mesaj solicitată de %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Citat de %1$s în:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Motiv: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'Mesaj privat raportat de %1$s:', + 'NOTIFICATION_REPORT_POST' => 'Mesaj raportat de %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Raport închis de %1$s for:', + 'NOTIFICATION_TOPIC' => 'Subiect nou de %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Subiect aprobat:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Subiect neaprobat:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Aprobare subiect solicitată de %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'Tipul de notificare "%s" lipseÈ™te din fiÈ™ierele sistemului.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Activare solicitată pentru utilizator dezactivat sau nou înregistrat: “%1$sâ€', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'alÈ›ii', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d others', + ), + 'NOTIFY_ADMIN' => 'Vă rugăm să anunÅ£aÅ£i administratorul forumului sau webmaster-ul.', + 'NOTIFY_ADMIN_EMAIL' => 'Va rugăm să anunÅ£ati administratorul forumului sau webmaster-ul: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Nu sunteÅ£i autorizat să accesaÅ£i acest fiÅŸier.', + 'NO_ACTION' => 'Nicio acÅ£iune specificată.', + 'NO_ADMINISTRATORS' => 'Nu sunt administratori.', + 'NO_AUTH_ADMIN' => 'Accesul la Panoul administratorului este interzis pentru că nu aveÅ£i permisiuni administrative.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Nu puteÅ£i să vă reautentificaÅ£i ca un alt utilizator.', + 'NO_AUTH_OPERATION' => 'Nu aveÅ£i permisiunile necesare pentru a termina această operaÅ£ie.', + 'NO_AVATARS' => 'Nu există imagini asociate (avatar) disponibile', + 'NO_CONNECT_TO_SMTP_HOST' => 'Nu s-a putut efectua conexiunea către hostul smtp: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Astăzi nu sărbătorim nici o zi de naÅŸtere', + 'NO_EMAIL_MESSAGE' => 'Emailul a fost gol.', + 'NO_EMAIL_RESPONSE_CODE' => 'Nu s-au putut lua codurile de răspuns ale server-ului de email.', + 'NO_EMAIL_SUBJECT' => 'Nu aÅ£i specificat subiectul e-mailului.', + 'NO_FORUM' => 'Forumul selectat nu există.', + 'NO_FORUMS' => 'Nu există forumuri.', + 'NO_GROUP' => 'Grupul cerut nu există.', + 'NO_GROUP_MEMBERS' => 'Acest grup momentan nu are membri.', + 'NO_IPS_DEFINED' => 'Niciun IP sau hostname nu a fost definit', + 'NO_MEMBERS' => 'Niciun membru nu a fost găsit pentru aceste criterii de căutare.', + 'NO_MESSAGES' => 'Niciun mesaj', + 'NO_MODE' => 'Niciun mod specificat.', + 'NO_MODERATORS' => 'Nu sunt moderatori.', + 'NO_NEW_MESSAGES' => 'Niciun mesaj nou', + 'NO_NEW_POSTS' => 'Niciun mesaj nou', + 'NO_ONLINE_USERS' => 'Niciun utilizator înregistrat', + 'NO_POSTS' => 'Niciun mesaj', + 'NO_POSTS_TIME_FRAME' => 'Nu există niciun mesaj în interiorul acestui subiect pentru perioada de timp selectată.', + 'NO_FEED_ENABLED' => 'Fluxurile nu sunt disponibile pentru acest forum.', + 'NO_FEED' => 'Fluxul solicitat nu este disponibil.', + 'NO_STYLE_DATA' => 'Nu au putut fi obÈ›inute datele stilului', + 'NO_SUBJECT' => 'Niciun subiect specificat', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'Backend-ul de căutare specificat nu există.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Nu există nicio metodă de autentificare.', + 'NO_TOPIC' => 'Subiectul specificat nu există.', + 'NO_TOPIC_FORUM' => 'Subiectul sau forumul nu există.', + 'NO_TOPICS' => 'Nu există subiecte sau mesaje în acest forum.', + 'NO_TOPICS_TIME_FRAME' => 'Nu există niciun subiect în interiorul acestui forum pentru perioada de timp selectată.', + 'NO_UNREAD_POSTS' => 'Nu sunt mesaje necitite', + 'NO_UPLOAD_FORM_FOUND' => 'ÃŽncărcare iniÅ£iată, dar nu a fost găsit niciun formular de încărcare valid.', + 'NO_USER' => 'Utilizatorul specificat nu există.', + 'NO_USERS' => 'Utilizatorii specificaÅ£i nu există.', + 'NO_USER_SPECIFIED' => 'Nu a fost specificat niciun nume de utilizator.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d ataÈ™ament', + 2 => '%d ataÈ™amente', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Nu există mesaje în aÈ™teptare', // 0 + 1 => '1 mesaj în aÈ™teptare', // 1 + 2 => '%d mesaje în aÈ™teptare', // 2+ + ), + + 'OCCUPATION' => 'OcupaÅ£ia', + 'OFFLINE' => 'Neconectat', + 'ONLINE' => 'Conectat', + 'ONLINE_BUDDIES' => 'Prieteni conectaÅ£i', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'In total este %1$d utilizator online :: %2$s È™i %3$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s È™i %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'In total este %1$d utilizator online :: %2$s, %3$s È™i %4$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s, %3$s È™i %4$s', + ), + 'OPTIONS' => 'OpÅ£iuni', + + 'PAGE_OF' => 'Pagina %1$d din %2$d', + 'PAGE_TITLE_NUMBER' => 'Pagina %s', + 'PASSWORD' => 'Parolă', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d pixel', + 2 => '%d pixeli', + ), + 'PLAY_QUICKTIME_FILE' => 'Deschide fiÅŸierul Quicktime', + 'PLEASE_WAIT' => 'Vă rugăm aÈ™teptaÈ›i.', + 'PM' => 'MP', + 'PM_REPORTED' => 'ApăsaÅ£i aici ca să citiÅ£i raportul', + 'POSTING_MESSAGE' => 'Scrie mesaj în %s', + 'POSTING_PRIVATE_MESSAGE' => 'Compune mesaj privat', + 'POST' => 'Mesaj', + 'POST_ANNOUNCEMENT' => 'AnunÅ£', + 'POST_STICKY' => 'Important', + 'POSTED' => 'Scris', + 'POSTED_IN_FORUM' => 'în', + 'POSTED_ON_DATE' => 'pe', + 'POSTS' => 'Mesaje', + 'POSTS_UNAPPROVED' => 'Cel puÅ£in un mesaj din acest subiect nu a fost aprobat.', + 'POSTS_UNAPPROVED_FORUM'=> 'Cel puÈ›in un mesaj în acest forum nu este aprobat.', + 'POST_BY_AUTHOR' => 'de', + 'POST_BY_FOE' => 'Acest mesaj a fost făcut de %1$s care este momentan în lista de ignore.', + 'POST_DISPLAY' => '%1$sAfiÈ™ează acest mesaj%2$s.', + 'POST_DAY' => '%.2f mesaje pe zi', + 'POST_DELETED_ACTION' => 'Mesaje È™terse:', + 'POST_DELETED' => 'Acest mesaj a fost È™ters.', + 'POST_DELETED_BY' => '%2$s È™terse de %1$s la %3$s.', + 'POST_DELETED_BY_REASON'=> '%2$s È™terse de %1$s la %3$s pentru motivul: %4$s', + 'POST_DETAILS' => 'Detalii mesaj', + 'POST_NEW_TOPIC' => 'Scrie un subiect nou', + 'POST_PCT' => '%.2f%% din toate mesajele', + 'POST_PCT_ACTIVE' => '%.2f%% din mesajele utilizatorului', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% din mesajele dumneavoastră', + 'POST_REPLY' => 'Răspunde', + 'POST_REPORTED' => 'AccesaÅ£i pentru a consulta raportul', + 'POST_SUBJECT' => 'Subiectul mesajului', + 'POST_TIME' => 'Dată mesaj', + 'POST_TOPIC' => 'Scrie un subiect nou', + 'POST_UNAPPROVED_ACTION'=> 'Mesaj care aÈ™teaptă aprobarea:', + 'POST_UNAPPROVED' => 'Acest mesaj aÅŸteaptă pentru a fi aprobat', + 'POWERED_BY' => 'Furnizat de %s', + 'PREVIEW' => 'Previzualizează', + 'PREVIOUS' => 'Anterior', // Used in pagination + 'PREVIOUS_STEP' => 'Anterior', + 'PRIVACY' => 'Politica de confidenÅ£ialitate', + 'PRIVATE_MESSAGE' => 'Mesaj privat', + 'PRIVATE_MESSAGES' => 'Mesaje private', + 'PRIVATE_MESSAGING' => 'Mesageria privată', + 'PROFILE' => 'Panoul utilizatorului', + + 'QUICK_LINKS' => 'Legături rapide', + + 'RANK' => 'Rang', + 'READING_FORUM' => 'Vizualizare subiecte în %s', + 'READING_GLOBAL_ANNOUNCE' => 'CiteÅŸte anunÅ£urile globale', + 'READING_LINK' => 'Accesare linkul forumului %s', + 'READING_TOPIC' => 'CiteÅŸte subiect în %s', + 'READ_PROFILE' => 'Profil', + 'REASON' => 'Motiv', + 'RECORD_ONLINE_USERS' => 'Cei mai mulÅ£i utilizatori conectaÅ£i au fost %1$s pe %2$s', + 'REDIRECT' => 'RedirecÅ£ionează', + 'REDIRECTS' => 'Totalul redirecÅ£ionărilor', + 'REGISTER' => 'ÃŽnregistrare', + 'REGISTERED_USERS' => 'Utilizatori înregistraÅ£i:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'Aici este %1$d utilizator înregistrat È™i %2$s online', + 2 => 'Aici sunt %1$d utilizatori înregistraÈ›i È™i %2$s online', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d înregistrat', + 2 => '%d înregistraÈ›i', + ), + 'REMOVE' => 'Elimină', + 'REMOVE_INSTALL' => 'Åžterge, mută sau redenumeÅŸte directorul install înainte de a folosi forumul. Dacă acest director este în continuare prezent, numai Panoul administratorului (PA) va fi accesibil.', + 'REPLIES' => 'Răspunsuri', + 'REPLY_WITH_QUOTE' => 'Răspuns cu citat', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Răspuns la anunÅ£ul global', + 'REPLYING_MESSAGE' => 'Răspunde mesajului din %s', + 'REPORT_BY' => 'Raportat de', + 'REPORT_POST' => 'Raportează acest mesaj', + 'REPORTING_POST' => 'Raportând mesajul', + 'RESEND_ACTIVATION' => 'Retrimite e-mail-ul de activare', + 'RESET' => 'Resetare', + 'RESTORE_PERMISSIONS' => 'Restabilire permisiuni', + 'RETURN_INDEX' => '%sÃŽnapoi la prima pagină%s', + 'RETURN_FORUM' => '%sÃŽnapoi la ultimul forum vizitat%s', + 'RETURN_PAGE' => '%sÃŽnapoi la pagina anterioară%s', + 'RETURN_TOPIC' => '%sÃŽnapoi la ultimul subiect vizitat%s', + 'RETURN_TO' => 'ÃŽnapoi la “%sâ€', + 'RETURN_TO_INDEX' => 'ÃŽnapoi la indexul forumului', + 'FEED' => 'Flux', + 'FEED_NEWS' => 'Åžtiri', + 'FEED_TOPICS_ACTIVE' => 'Subiecte active', + 'FEED_TOPICS_NEW' => 'Subiecte noi', + 'RULES_ATTACH_CAN' => 'PuteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_ATTACH_CANNOT' => 'Nu puteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_DELETE_CAN' => 'PuteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DELETE_CANNOT' => 'Nu puteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DOWNLOAD_CAN' => 'PuteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_DOWNLOAD_CANNOT' => 'Nu puteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_EDIT_CAN' => 'PuteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_EDIT_CANNOT' => 'Nu puteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_LOCK_CAN' => 'PuteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_LOCK_CANNOT' => 'Nu puteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_POST_CAN' => 'PuteÅ£i scrie subiecte noi în acest forum', + 'RULES_POST_CANNOT' => 'Nu puteÅ£i scrie subiecte noi în acest forum', + 'RULES_REPLY_CAN' => 'PuteÅ£i răspunde subiectelor din acest forum', + 'RULES_REPLY_CANNOT' => 'Nu puteÅ£i răspunde subiectelor din acest forum', + 'RULES_VOTE_CAN' => 'PuteÅ£i vota în chestionarele din acest forum', + 'RULES_VOTE_CANNOT' => 'Nu puteÅ£i vota în chestionarele din acest forum', + + 'SEARCH' => 'Căutare', + 'SEARCH_MINI' => 'Căutare…', + 'SEARCH_ADV' => 'Căutare avansată', + 'SEARCH_ADV_EXPLAIN' => 'Vezi opÅ£iuni căutare avansată', + 'SEARCH_KEYWORDS' => 'Căutare după cuvinte cheie', + 'SEARCHING_FORUMS' => 'Căutare forumuri', + 'SEARCH_ACTIVE_TOPICS' => 'Vezi subiecte active', + 'SEARCH_FOR' => 'Căutare după', + 'SEARCH_FORUM' => 'Căutare în acest forum…', + 'SEARCH_NEW' => 'Vezi mesaje noi', + 'SEARCH_POSTS_BY' => 'Căutare mesaje după', + 'SEARCH_SELF' => 'Vezi mesaje proprii', + 'SEARCH_TOPIC' => 'Căutare în acest subiect…', + 'SEARCH_UNANSWERED' => 'Vezi subiecte fără răspuns', + 'SEARCH_UNREAD' => 'Vezi mesaje necitite', + 'SEARCH_USER_POSTS' => 'Caută mesajele utilizatorului', + 'SECONDS' => 'Secunde', + 'SEE_ALL' => 'Vezi tot', + 'SELECT' => 'SelectaÅ£i', + 'SELECT_ALL_CODE' => 'SelectaÅ£i tot', + 'SELECT_DESTINATION_FORUM' => 'Vă rugăm să selectaÅ£i un forum destinaÅ£ie', + 'SELECT_FORUM' => 'SelectaÅ£i un forum', + 'SEND_EMAIL' => 'E-mail', // Used for submit buttons + 'SEND_EMAIL_USER' => 'E-mail către %s', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX + 'SEND_PRIVATE_MESSAGE' => 'TrimiteÅ£i mesaj privat', + 'SETTINGS' => 'Setări', + 'SIGNATURE' => 'Semnătură', + 'SKIP' => 'Treci peste conÅ£inut', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'Server-ul SMTP nu suportă autentificarea.', + 'SORRY_AUTH_READ' => 'Nu sunteÅ£i autorizat să citiÅ£i acest forum.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Nu sunteÅ£i autorizat să descărcaÅ£i acest fiÅŸier ataÅŸat.', + 'SORT_BY' => 'Sortează după', + 'SORT_JOINED' => 'Data înregistrării', + 'SORT_LOCATION' => 'Localitate', + 'SORT_RANK' => 'Rang', + 'SORT_POSTS' => 'Mesaje', + 'SORT_TOPIC_TITLE' => 'Titlul subiectului', + 'SORT_USERNAME' => 'Nume de utilizator', + 'SPLIT_TOPIC' => 'Desparte subiect', + 'SQL_ERROR_OCCURRED' => 'O eroare SQL a apărut în timp ce pagina era în lucru. Vă rugăm să contactaÅ£i %sAdministratorul forumului%s dacă problema persistă.', + 'STATISTICS' => 'Statistici', + 'START_WATCHING_FORUM' => 'Abonare forum', + 'START_WATCHING_TOPIC' => 'Abonare subiect', + 'STOP_WATCHING_FORUM' => 'Dezabonare forum', + 'STOP_WATCHING_TOPIC' => 'Dezabonare subiect', + 'STRING_LIST_MULTI' => '%1$s, È™i %2$s', + 'STRING_LIST_SIMPLE' => '%1$s È™i %2$s', + 'SUBFORUM' => 'Subforum', + 'SUBFORUMS' => 'Subforumuri', + 'SUBJECT' => 'Subiect', + 'SUBMIT' => 'Trimite', + + 'TB' => 'TB', + 'TERMS_USE' => 'Termeni de utilizare', + 'TEST_CONNECTION' => 'Testează conexiunea', + 'THE_TEAM' => 'Echipa', + 'TIB' => 'TiB', + 'TIME' => 'Data', + 'TIMEOUT_PROCESSING_REQ'=> 'Cererea a expirat.', + + 'TOO_LARGE' => 'Valoarea specificată este prea mare.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mare.', + + 'TOO_LONG' => 'Valoarea specificată este prea lungă.', + + 'TOO_LONG_CONFIRM_CODE' => 'Codul de confirmare introdus este prea lung.', + 'TOO_LONG_DATEFORMAT' => 'Formatul datei introdus este prea lung.', + 'TOO_LONG_JABBER' => 'Numele contului Jabber introdus este prea lung.', + 'TOO_LONG_NEW_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea lungă.', + 'TOO_LONG_USER_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_USERNAME' => 'Numele de utilizator introdus este prea lung.', + 'TOO_LONG_EMAIL' => 'Adresa de email introdusă este prea lungă.', + + 'TOO_MANY_VOTE_OPTIONS' => 'AÅ£i încercat să votaÅ£i la prea multe opÅ£iuni.', + + 'TOO_SHORT' => 'Valoarea specificată este prea scurtă.', + + 'TOO_SHORT_CONFIRM_CODE' => 'Codul de confirmare introdus este prea scurt.', + 'TOO_SHORT_DATEFORMAT' => 'Formatul datei introduse este prea scurt.', + 'TOO_SHORT_JABBER' => 'Numele contului Jabber introdus este prea scurt.', + 'TOO_SHORT_NEW_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea scurtă.', + 'TOO_SHORT_USER_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_USERNAME' => 'Numele de utilizator introdus este prea scurt.', + 'TOO_SHORT_EMAIL' => 'Adresa de email introdusă este prea scurtă.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'Confirmarea adresei de e-mail introdusă este prea scurtă.', + 'TOO_SMALL' => 'Valoare specificată este prea mică.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mică.', + + 'TOPIC' => 'Subiect', + 'TOPICS' => 'Subiecte', + 'TOPICS_UNAPPROVED' => 'Cel puÅ£in un subiect din acest forum nu a fost aprobat.', + 'TOPIC_ICON' => 'Iconiţă subiect', + 'TOPIC_LOCKED' => 'Acest subiect este închis, nu puteÅ£i modifica mesaje sau să scrieÅ£i răspunsuri viitoare.', + 'TOPIC_LOCKED_SHORT'=> 'Subiect închis', + 'TOPIC_MOVED' => 'Subiect mutat', + 'TOPIC_REVIEW' => 'Subiect revizuit', + 'TOPIC_TITLE' => 'Titlu subiect', + 'TOPIC_UNAPPROVED' => 'Acest subiect nu a fost aprobat', + 'TOPIC_DELETED' => 'Acest subiect a fost È™ters.', + 'TOTAL_ATTACHMENTS' => 'FiÅŸier(e) ataÅŸat(e)', + 'TOTAL_LOGS' => array( + 1 => '%d log', + 2 => '%d log-uri', + ), + 'TOTAL_PMS' => array( + 1 => '%d mesaj privat în total', + 2 => '%d mesaje private în total', + ), + 'TOPIC_POLL' => 'Acest subiect are un sondaj.', + 'TOTAL_POSTS' => 'Total mesaje', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Total mesaje %d', + ), + 'TOPIC_REPORTED' => 'Acest subiect a fost raportat', + 'TOTAL_TOPICS' => array( + 2 => 'Total subiecte %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Total membri %d', + ), + 'TRACKED_PHP_ERROR' => 'Erori PHP depistate: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'Nu a fost posibilă determinarea dimensiunilor imaginii.', + 'UNABLE_TO_DELIVER_FILE'=> 'Nu s-a putut trimite fiÅŸierul.', + 'UNKNOWN_BROWSER' => 'Browser necunoscut', + 'UNMARK_ALL' => 'Deselectează toate', + 'UNREAD_MESSAGES' => 'Mesaje necitite', + 'UNREAD_POST' => 'Mesaj necitit', + 'UNREAD_POSTS' => 'Mesaje necitite', + 'UNWATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest forum?', + 'UNWATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la forumul „%sâ€?', + 'UNWATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest subiect?', + 'UNWATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la subiectul „%sâ€?', + 'UNWATCHED_FORUMS' => 'Nu mai sunteÅ£i abonat la forumurile selectate.', + 'UNWATCHED_TOPICS' => 'Nu mai sunteÅ£i abonat subiectele selectate.', + 'UNWATCHED_FORUMS_TOPICS' => 'Nu mai sunteÅ£i abonat la intrările selectate.', + 'UPDATE' => 'Actualizat', + 'UPLOAD_IN_PROGRESS' => 'ÃŽncărcarea este momentan în progres.', + 'URL_REDIRECT' => 'Dacă browserul dumneavoastră nu suportă redirecÅ£ionări meta, atunci %sdaÅ£i un clik AICI pentru a fi redirecÅ£ionat%s.', + 'USERGROUPS' => 'Grupuri', + 'USERNAME' => 'Nume utilizator', + 'USERNAMES' => 'Nume utilizatori', + 'USER_AVATAR' => 'Avatar utilizator', + 'USER_CANNOT_READ' => 'Nu puteÅ£i citi mesajele din acest forum.', + 'USER_POSTS' => array( + 1 => '%d Mesaj', + 2 => '%d Mesaje', + ), + 'USERS' => 'Utilizatori', + 'USE_PERMISSIONS' => 'Testează permisiunile utilizatorului', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Ne pare rău dar nu sunteÅ£i autorizat să folosiÅ£i această funcÅ£ionalitate. E posibil să vă fi înregistrat aici recent ÅŸi să fie nevoie să participaÅ£i la mai multe discuÈ›ii ca să puteÅ£i folosi această funcÅ£ionalitate.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'Vizualizat', + 'VIEWED_COUNTS' => array( + 0 => 'ÃŽncă nevizualizat', + 1 => 'Vizualizat %d dată', + 2 => 'Vizualizat de %d ori', + ), + 'VIEWING_CONTACT_ADMIN' => 'Vizualizare pagina de contact', + 'VIEWING_FAQ' => 'Vizualizare FAQ', + 'VIEWING_MEMBERS' => 'Vizualizare detalii membru', + 'VIEWING_ONLINE' => 'Vizualizare cine este conectat', + 'VIEWING_MCP' => 'Vizualizare Panou moderator', + 'VIEWING_MEMBER_PROFILE' => 'Vizualizare profil membru', + 'VIEWING_PRIVATE_MESSAGES' => 'Vizualizare mesaje private', + 'VIEWING_REGISTER' => 'ÃŽnregistrare cont', + 'VIEWING_UCP' => 'Vizualizare Panou utilizator', + 'VIEWS' => 'Vizualizări', + 'VIEW_BOOKMARKS' => 'Vezi bookmark-uri', + 'VIEW_FORUM_LOGS' => 'Consultare loguri', + 'VIEW_LATEST_POST' => 'Vezi ultimul mesaj', + 'VIEW_NEWEST_POST' => 'Vezi ultimul mesaj necitit', + 'VIEW_NOTES' => 'Vezi notiÅ£ele utilizatorului', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'date care se bazează pe utilizatorii activi în ultimul %d minut', + 2 => 'date care se bazează pe utilizatorii activi în ultimele %d minute', + ), + 'VIEW_TOPIC' => 'Vezi subiect', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'AnunÅ£: ', + 'VIEW_TOPIC_GLOBAL' => 'AnunÅ£ global: ', + 'VIEW_TOPIC_LOCKED' => 'ÃŽnchis: ', + 'VIEW_TOPIC_LOGS' => 'Consultare loguri', + 'VIEW_TOPIC_MOVED' => 'Mutat: ', + 'VIEW_TOPIC_POLL' => 'Chestionar: ', + 'VIEW_TOPIC_STICKY' => 'Important: ', + 'VISIT_WEBSITE' => 'Vizitează site web', + + 'WARNINGS' => 'Avertismente', + 'WARN_USER' => 'Avertizează utilizator', + 'WATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest forum?', + 'WATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la forumul „%sâ€?', + 'WATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest subiect?', + 'WATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la subiectul „%sâ€?', + 'WELCOME_SUBJECT' => 'Bine aÅ£i venit în forumurile %s', + 'WEBSITE' => 'Site web', + 'WHOIS' => 'Cine este', + 'WHO_IS_ONLINE' => 'Cine este conectat', + 'WLM' => 'WLM', + 'WRONG_PASSWORD' => 'AÅ£i introdus o parolă incorectă.', + + 'WRONG_DATA_COLOUR' => 'Valoarea culorii introduse este invalidă.', + 'WRONG_DATA_JABBER' => 'Numele introdus nu este un nume de cont Jabber valid.', + 'WRONG_DATA_LANG' => 'Limba specificată nu este validă.', + 'WRONG_DATA_POST_SD' => 'DirecÈ›ia specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_POST_SK' => 'OpÈ›iunea specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_TOPIC_SD' => 'DirecÈ›ia specificată de sortare a subiectelor nu e validă.', + 'WRONG_DATA_TOPIC_SK' => 'OpÈ›iunea specificată de sortare a subiectelor nu e validă.', + 'WROTE' => 'scrie', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'An', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'Da', + 'YOU_LAST_VISIT' => 'Ultima vizită a fost: %s', + + 'datetime' => array( + 'TODAY' => 'Astăzi, ', + 'TOMORROW' => 'Mâine, ', + 'YESTERDAY' => 'Ieri, ', + 'AGO' => array( + 0 => 'mai puÅ£in de un minut în urmă', + 1 => '%d minut în urmă', + 2 => '%d minute în urmă', + ), + 'Sunday' => 'Duminică', + 'Monday' => 'Luni', + 'Tuesday' => 'MarÅ£i', + 'Wednesday' => 'Miercuri', + 'Thursday' => 'Joi', + 'Friday' => 'Vineri', + 'Saturday' => 'Sâmbătă', + + 'Sun' => 'Dum', + 'Mon' => 'Lun', + 'Tue' => 'Mar', + 'Wed' => 'Mie', + 'Thu' => 'Joi', + 'Fri' => 'Vin', + 'Sat' => 'Sâm', + + 'January' => 'Ianuarie', + 'February' => 'Februarie', + 'March' => 'Martie', + 'April' => 'Aprilie', + 'May' => 'Mai', + 'June' => 'Iunie', + 'July' => 'Iulie', + 'August' => 'August', + 'September' => 'Septembrie', + 'October' => 'Octombrie', + 'November' => 'Noiembrie', + 'December' => 'Decembrie', + + 'Jan' => 'Ian', + 'Feb' => 'Feb', + 'Mar' => 'Mar', + 'Apr' => 'Apr', + 'May_short' => 'Mai', // Short representation of "May". May_short used because in english the short and long date are the same for May. + 'Jun' => 'Iun', + 'Jul' => 'Iul', + 'Aug' => 'Aug', + 'Sep' => 'Sep', + 'Oct' => 'Oct', + 'Nov' => 'Noi', + 'Dec' => 'Dec', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + 'Africa/Abidjan' => 'Africa/Abidjan', + 'Africa/Accra' => 'Africa/Accra', + 'Africa/Addis_Ababa' => 'Africa/Addis Ababa', + 'Africa/Algiers' => 'Africa/Algiers', + 'Africa/Asmara' => 'Africa/Asmara', + 'Africa/Bamako' => 'Africa/Bamako', + 'Africa/Bangui' => 'Africa/Bangui', + 'Africa/Banjul' => 'Africa/Banjul', + 'Africa/Bissau' => 'Africa/Bissau', + 'Africa/Blantyre' => 'Africa/Blantyre', + 'Africa/Brazzaville' => 'Africa/Brazzaville', + 'Africa/Bujumbura' => 'Africa/Bujumbura', + 'Africa/Cairo' => 'Africa/Cairo', + 'Africa/Casablanca' => 'Africa/Casablanca', + 'Africa/Ceuta' => 'Africa/Ceuta', + 'Africa/Conakry' => 'Africa/Conakry', + 'Africa/Dakar' => 'Africa/Dakar', + 'Africa/Dar_es_Salaam' => 'Africa/Dar es Salaam', + 'Africa/Djibouti' => 'Africa/Djibouti', + 'Africa/Douala' => 'Africa/Douala', + 'Africa/El_Aaiun' => 'Africa/El Aaiun', + 'Africa/Freetown' => 'Africa/Freetown', + 'Africa/Gaborone' => 'Africa/Gaborone', + 'Africa/Harare' => 'Africa/Harare', + 'Africa/Johannesburg' => 'Africa/Johannesburg', + 'Africa/Juba' => 'Africa/Juba', + 'Africa/Kampala' => 'Africa/Kampala', + 'Africa/Khartoum' => 'Africa/Khartoum', + 'Africa/Kigali' => 'Africa/Kigali', + 'Africa/Kinshasa' => 'Africa/Kinshasa', + 'Africa/Lagos' => 'Africa/Lagos', + 'Africa/Libreville' => 'Africa/Libreville', + 'Africa/Lome' => 'Africa/Lome', + 'Africa/Luanda' => 'Africa/Luanda', + 'Africa/Lubumbashi' => 'Africa/Lubumbashi', + 'Africa/Lusaka' => 'Africa/Lusaka', + 'Africa/Malabo' => 'Africa/Malabo', + 'Africa/Maputo' => 'Africa/Maputo', + 'Africa/Maseru' => 'Africa/Maseru', + 'Africa/Mbabane' => 'Africa/Mbabane', + 'Africa/Mogadishu' => 'Africa/Mogadishu', + 'Africa/Monrovia' => 'Africa/Monrovia', + 'Africa/Nairobi' => 'Africa/Nairobi', + 'Africa/Ndjamena' => 'Africa/Ndjamena', + 'Africa/Niamey' => 'Africa/Niamey', + 'Africa/Nouakchott' => 'Africa/Nouakchott', + 'Africa/Ouagadougou' => 'Africa/Ouagadougou', + 'Africa/Porto-Novo' => 'Africa/Porto-Novo', + 'Africa/Sao_Tome' => 'Africa/Sao Tome', + 'Africa/Tripoli' => 'Africa/Tripoli', + 'Africa/Tunis' => 'Africa/Tunis', + 'Africa/Windhoek' => 'Africa/Windhoek', + + 'America/Adak' => 'America/Adak', + 'America/Anchorage' => 'America/Anchorage', + 'America/Anguilla' => 'America/Anguilla', + 'America/Antigua' => 'America/Antigua', + 'America/Araguaina' => 'America/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'America/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'America/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'America/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'America/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'America/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'America/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'America/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'America/Argentina/Salta', + 'America/Argentina/San_Juan' => 'America/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'America/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'America/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'America/Argentina/Ushuaia', + + 'America/Aruba' => 'America/Aruba', + 'America/Asuncion' => 'America/Asuncion', + 'America/Atikokan' => 'America/Atikokan', + 'America/Bahia' => 'America/Bahia', + 'America/Bahia_Banderas' => 'America/Bahia Banderas', + 'America/Barbados' => 'America/Barbados', + 'America/Belem' => 'America/Belem', + 'America/Belize' => 'America/Belize', + 'America/Blanc-Sablon' => 'America/Blanc-Sablon', + 'America/Boa_Vista' => 'America/Boa Vista', + 'America/Bogota' => 'America/Bogota', + 'America/Boise' => 'America/Boise', + 'America/Cambridge_Bay' => 'America/Cambridge Bay', + 'America/Campo_Grande' => 'America/Campo Grande', + 'America/Cancun' => 'America/Cancun', + 'America/Caracas' => 'America/Caracas', + 'America/Cayenne' => 'America/Cayenne', + 'America/Cayman' => 'America/Cayman', + 'America/Chicago' => 'America/Chicago', + 'America/Chihuahua' => 'America/Chihuahua', + 'America/Costa_Rica' => 'America/Costa Rica', + 'America/Creston' => 'America/Creston', + 'America/Cuiaba' => 'America/Cuiaba', + 'America/Curacao' => 'America/Curacao', + 'America/Danmarkshavn' => 'America/Danmarkshavn', + 'America/Dawson' => 'America/Dawson', + 'America/Dawson_Creek' => 'America/Dawson Creek', + 'America/Denver' => 'America/Denver', + 'America/Detroit' => 'America/Detroit', + 'America/Dominica' => 'America/Dominica', + 'America/Edmonton' => 'America/Edmonton', + 'America/Eirunepe' => 'America/Eirunepe', + 'America/El_Salvador' => 'America/El Salvador', + 'America/Fortaleza' => 'America/Fortaleza', + 'America/Glace_Bay' => 'America/Glace Bay', + 'America/Godthab' => 'America/Godthab', + 'America/Goose_Bay' => 'America/Goose Bay', + 'America/Grand_Turk' => 'America/Grand Turk', + 'America/Grenada' => 'America/Grenada', + 'America/Guadeloupe' => 'America/Guadeloupe', + 'America/Guatemala' => 'America/Guatemala', + 'America/Guayaquil' => 'America/Guayaquil', + 'America/Guyana' => 'America/Guyana', + 'America/Halifax' => 'America/Halifax', + 'America/Havana' => 'America/Havana', + 'America/Hermosillo' => 'America/Hermosillo', + 'America/Indiana/Indianapolis' => 'America/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'America/Indiana/Knox', + 'America/Indiana/Marengo' => 'America/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'America/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'America/Indiana/Tell City', + 'America/Indiana/Vevay' => 'America/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'America/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'America/Indiana/Winamac', + 'America/Inuvik' => 'America/Inuvik', + 'America/Iqaluit' => 'America/Iqaluit', + 'America/Jamaica' => 'America/Jamaica', + 'America/Juneau' => 'America/Juneau', + 'America/Kentucky/Louisville' => 'America/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'America/Kentucky/Monticello', + 'America/Kralendijk' => 'America/Kralendijk', + 'America/La_Paz' => 'America/La Paz', + 'America/Lima' => 'America/Lima', + 'America/Los_Angeles' => 'America/Los Angeles', + 'America/Lower_Princes' => 'America/Lower Princes', + 'America/Maceio' => 'America/Maceio', + 'America/Managua' => 'America/Managua', + 'America/Manaus' => 'America/Manaus', + 'America/Marigot' => 'America/Marigot', + 'America/Martinique' => 'America/Martinique', + 'America/Matamoros' => 'America/Matamoros', + 'America/Mazatlan' => 'America/Mazatlan', + 'America/Menominee' => 'America/Menominee', + 'America/Merida' => 'America/Merida', + 'America/Metlakatla' => 'America/Metlakatla', + 'America/Mexico_City' => 'America/Mexico City', + 'America/Miquelon' => 'America/Miquelon', + 'America/Moncton' => 'America/Moncton', + 'America/Monterrey' => 'America/Monterrey', + 'America/Montevideo' => 'America/Montevideo', + 'America/Montreal' => 'America/Montreal', + 'America/Montserrat' => 'America/Montserrat', + 'America/Nassau' => 'America/Nassau', + 'America/New_York' => 'America/New York', + 'America/Nipigon' => 'America/Nipigon', + 'America/Nome' => 'America/Nome', + 'America/Noronha' => 'America/Noronha', + 'America/North_Dakota/Beulah' => 'America/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'America/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'America/North Dakota/New Salem', + 'America/Ojinaga' => 'America/Ojinaga', + 'America/Panama' => 'America/Panama', + 'America/Pangnirtung' => 'America/Pangnirtung', + 'America/Paramaribo' => 'America/Paramaribo', + 'America/Phoenix' => 'America/Phoenix', + 'America/Port-au-Prince' => 'America/Port-au-Prince', + 'America/Port_of_Spain' => 'America/Port of Spain', + 'America/Porto_Velho' => 'America/Porto Velho', + 'America/Puerto_Rico' => 'America/Puerto Rico', + 'America/Rainy_River' => 'America/Rainy River', + 'America/Rankin_Inlet' => 'America/Rankin Inlet', + 'America/Recife' => 'America/Recife', + 'America/Regina' => 'America/Regina', + 'America/Resolute' => 'America/Resolute', + 'America/Rio_Branco' => 'America/Rio Branco', + 'America/Santa_Isabel' => 'America/Santa Isabel', + 'America/Santarem' => 'America/Santarem', + 'America/Santiago' => 'America/Santiago', + 'America/Santo_Domingo' => 'America/Santo Domingo', + 'America/Sao_Paulo' => 'America/Sao Paulo', + 'America/Scoresbysund' => 'America/Scoresbysund', + 'America/Shiprock' => 'America/Shiprock', + 'America/Sitka' => 'America/Sitka', + 'America/St_Barthelemy' => 'America/St. Barthelemy', + 'America/St_Johns' => 'America/St. Johns', + 'America/St_Kitts' => 'America/St. Kitts', + 'America/St_Lucia' => 'America/St. Lucia', + 'America/St_Thomas' => 'America/St. Thomas', + 'America/St_Vincent' => 'America/St. Vincent', + 'America/Swift_Current' => 'America/Swift Current', + 'America/Tegucigalpa' => 'America/Tegucigalpa', + 'America/Thule' => 'America/Thule', + 'America/Thunder_Bay' => 'America/Thunder Bay', + 'America/Tijuana' => 'America/Tijuana', + 'America/Toronto' => 'America/Toronto', + 'America/Tortola' => 'America/Tortola', + 'America/Vancouver' => 'America/Vancouver', + 'America/Whitehorse' => 'America/Whitehorse', + 'America/Winnipeg' => 'America/Winnipeg', + 'America/Yakutat' => 'America/Yakutat', + 'America/Yellowknife' => 'America/Yellowknife', + + 'Antarctica/Casey' => 'Antarctica/Casey', + 'Antarctica/Davis' => 'Antarctica/Davis', + 'Antarctica/DumontDUrville' => 'Antarctica/DumontDUrville', + 'Antarctica/Macquarie' => 'Antarctica/Macquarie', + 'Antarctica/Mawson' => 'Antarctica/Mawson', + 'Antarctica/McMurdo' => 'Antarctica/McMurdo', + 'Antarctica/Palmer' => 'Antarctica/Palmer', + 'Antarctica/Rothera' => 'Antarctica/Rothera', + 'Antarctica/South_Pole' => 'Antarctica/South Pole', + 'Antarctica/Syowa' => 'Antarctica/Syowa', + 'Antarctica/Vostok' => 'Antarctica/Vostok', + + 'Arctic/Longyearbyen' => 'Arctic/Longyearbyen', + + 'Asia/Aden' => 'Asia/Aden', + 'Asia/Almaty' => 'Asia/Almaty', + 'Asia/Amman' => 'Asia/Amman', + 'Asia/Anadyr' => 'Asia/Anadyr', + 'Asia/Aqtau' => 'Asia/Aqtau', + 'Asia/Aqtobe' => 'Asia/Aqtobe', + 'Asia/Ashgabat' => 'Asia/Ashgabat', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Bahrain' => 'Asia/Bahrain', + 'Asia/Baku' => 'Asia/Baku', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Beirut' => 'Asia/Beirut', + 'Asia/Bishkek' => 'Asia/Bishkek', + 'Asia/Brunei' => 'Asia/Brunei', + 'Asia/Choibalsan' => 'Asia/Choibalsan', + 'Asia/Chongqing' => 'Asia/Chongqing', + 'Asia/Colombo' => 'Asia/Colombo', + 'Asia/Damascus' => 'Asia/Damascus', + 'Asia/Dhaka' => 'Asia/Dhaka', + 'Asia/Dili' => 'Asia/Dili', + 'Asia/Dubai' => 'Asia/Dubai', + 'Asia/Dushanbe' => 'Asia/Dushanbe', + 'Asia/Gaza' => 'Asia/Gaza', + 'Asia/Harbin' => 'Asia/Harbin', + 'Asia/Hebron' => 'Asia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Asia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Asia/Hong Kong', + 'Asia/Hovd' => 'Asia/Hovd', + 'Asia/Irkutsk' => 'Asia/Irkutsk', + 'Asia/Jakarta' => 'Asia/Jakarta', + 'Asia/Jayapura' => 'Asia/Jayapura', + 'Asia/Jerusalem' => 'Asia/Jerusalem', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Kamchatka' => 'Asia/Kamchatka', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kashgar' => 'Asia/Kashgar', + 'Asia/Kathmandu' => 'Asia/Kathmandu', + 'Asia/Khandyga' => 'Asia/Khandyga', + 'Asia/Kolkata' => 'Asia/Kolkata', + 'Asia/Krasnoyarsk' => 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Asia/Kuala Lumpur', + 'Asia/Kuching' => 'Asia/Kuching', + 'Asia/Kuwait' => 'Asia/Kuwait', + 'Asia/Macau' => 'Asia/Macau', + 'Asia/Magadan' => 'Asia/Magadan', + 'Asia/Makassar' => 'Asia/Makassar', + 'Asia/Manila' => 'Asia/Manila', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Nicosia' => 'Asia/Nicosia', + 'Asia/Novokuznetsk' => 'Asia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Asia/Novosibirsk', + 'Asia/Omsk' => 'Asia/Omsk', + 'Asia/Oral' => 'Asia/Oral', + 'Asia/Phnom_Penh' => 'Asia/Phnom Penh', + 'Asia/Pontianak' => 'Asia/Pontianak', + 'Asia/Pyongyang' => 'Asia/Pyongyang', + 'Asia/Qatar' => 'Asia/Qatar', + 'Asia/Qyzylorda' => 'Asia/Qyzylorda', + 'Asia/Rangoon' => 'Asia/Rangoon', + 'Asia/Riyadh' => 'Asia/Riyadh', + 'Asia/Sakhalin' => 'Asia/Sakhalin', + 'Asia/Samarkand' => 'Asia/Samarkand', + 'Asia/Seoul' => 'Asia/Seoul', + 'Asia/Shanghai' => 'Asia/Shanghai', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Taipei' => 'Asia/Taipei', + 'Asia/Tashkent' => 'Asia/Tashkent', + 'Asia/Tbilisi' => 'Asia/Tbilisi', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Thimphu' => 'Asia/Thimphu', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Asia/Ulaanbaatar' => 'Asia/Ulaanbaatar', + 'Asia/Urumqi' => 'Asia/Urumqi', + 'Asia/Ust-Nera' => 'Asia/Ust-Nera', + 'Asia/Vientiane' => 'Asia/Vientiane', + 'Asia/Vladivostok' => 'Asia/Vladivostok', + 'Asia/Yakutsk' => 'Asia/Yakutsk', + 'Asia/Yekaterinburg' => 'Asia/Yekaterinburg', + 'Asia/Yerevan' => 'Asia/Yerevan', + + 'Atlantic/Azores' => 'Atlantic/Azores', + 'Atlantic/Bermuda' => 'Atlantic/Bermuda', + 'Atlantic/Canary' => 'Atlantic/Canary', + 'Atlantic/Cape_Verde' => 'Atlantic/Cape Verde', + 'Atlantic/Faroe' => 'Atlantic/Faroe', + 'Atlantic/Madeira' => 'Atlantic/Madeira', + 'Atlantic/Reykjavik' => 'Atlantic/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlantic/South Georgia', + 'Atlantic/St_Helena' => 'Atlantic/St. Helena', + 'Atlantic/Stanley' => 'Atlantic/Stanley', + + 'Australia/Adelaide' => 'Australia/Adelaide', + 'Australia/Brisbane' => 'Australia/Brisbane', + 'Australia/Broken_Hill' => 'Australia/Broken Hill', + 'Australia/Currie' => 'Australia/Currie', + 'Australia/Darwin' => 'Australia/Darwin', + 'Australia/Eucla' => 'Australia/Eucla', + 'Australia/Hobart' => 'Australia/Hobart', + 'Australia/Lindeman' => 'Australia/Lindeman', + 'Australia/Lord_Howe' => 'Australia/Lord Howe', + 'Australia/Melbourne' => 'Australia/Melbourne', + 'Australia/Perth' => 'Australia/Perth', + 'Australia/Sydney' => 'Australia/Sydney', + + 'Europe/Amsterdam' => 'Europe/Amsterdam', + 'Europe/Andorra' => 'Europe/Andorra', + 'Europe/Athens' => 'Europe/Athens', + 'Europe/Belgrade' => 'Europe/Belgrade', + 'Europe/Berlin' => 'Europe/Berlin', + 'Europe/Bratislava' => 'Europe/Bratislava', + 'Europe/Brussels' => 'Europe/Brussels', + 'Europe/Bucharest' => 'Europe/Bucharest', + 'Europe/Budapest' => 'Europe/Budapest', + 'Europe/Busingen' => 'Europe/Busingen', + 'Europe/Chisinau' => 'Europe/Chisinau', + 'Europe/Copenhagen' => 'Europe/Copenhagen', + 'Europe/Dublin' => 'Europe/Dublin', + 'Europe/Gibraltar' => 'Europe/Gibraltar', + 'Europe/Guernsey' => 'Europe/Guernsey', + 'Europe/Helsinki' => 'Europe/Helsinki', + 'Europe/Isle_of_Man' => 'Europe/Isle of Man', + 'Europe/Istanbul' => 'Europe/Istanbul', + 'Europe/Jersey' => 'Europe/Jersey', + 'Europe/Kaliningrad' => 'Europe/Kaliningrad', + 'Europe/Kiev' => 'Europe/Kiev', + 'Europe/Lisbon' => 'Europe/Lisbon', + 'Europe/Ljubljana' => 'Europe/Ljubljana', + 'Europe/London' => 'Europe/London', + 'Europe/Luxembourg' => 'Europe/Luxembourg', + 'Europe/Madrid' => 'Europe/Madrid', + 'Europe/Malta' => 'Europe/Malta', + 'Europe/Mariehamn' => 'Europe/Mariehamn', + 'Europe/Minsk' => 'Europe/Minsk', + 'Europe/Monaco' => 'Europe/Monaco', + 'Europe/Moscow' => 'Europe/Moscow', + 'Europe/Oslo' => 'Europe/Oslo', + 'Europe/Paris' => 'Europe/Paris', + 'Europe/Podgorica' => 'Europe/Podgorica', + 'Europe/Prague' => 'Europe/Prague', + 'Europe/Riga' => 'Europe/Riga', + 'Europe/Rome' => 'Europe/Rome', + 'Europe/Samara' => 'Europe/Samara', + 'Europe/San_Marino' => 'Europe/San Marino', + 'Europe/Sarajevo' => 'Europe/Sarajevo', + 'Europe/Simferopol' => 'Europe/Simferopol', + 'Europe/Skopje' => 'Europe/Skopje', + 'Europe/Sofia' => 'Europe/Sofia', + 'Europe/Stockholm' => 'Europe/Stockholm', + 'Europe/Tallinn' => 'Europe/Tallinn', + 'Europe/Tirane' => 'Europe/Tirane', + 'Europe/Uzhgorod' => 'Europe/Uzhgorod', + 'Europe/Vaduz' => 'Europe/Vaduz', + 'Europe/Vatican' => 'Europe/Vatican', + 'Europe/Vienna' => 'Europe/Vienna', + 'Europe/Vilnius' => 'Europe/Vilnius', + 'Europe/Volgograd' => 'Europe/Volgograd', + 'Europe/Warsaw' => 'Europe/Warsaw', + 'Europe/Zagreb' => 'Europe/Zagreb', + 'Europe/Zaporozhye' => 'Europe/Zaporozhye', + 'Europe/Zurich' => 'Europe/Zurich', + + 'Indian/Antananarivo' => 'Indian/Antananarivo', + 'Indian/Chagos' => 'Indian/Chagos', + 'Indian/Christmas' => 'Indian/Christmas', + 'Indian/Cocos' => 'Indian/Cocos', + 'Indian/Comoro' => 'Indian/Comoro', + 'Indian/Kerguelen' => 'Indian/Kerguelen', + 'Indian/Mahe' => 'Indian/Mahe', + 'Indian/Maldives' => 'Indian/Maldives', + 'Indian/Mauritius' => 'Indian/Mauritius', + 'Indian/Mayotte' => 'Indian/Mayotte', + 'Indian/Reunion' => 'Indian/Reunion', + + 'Pacific/Apia' => 'Pacific/Apia', + 'Pacific/Auckland' => 'Pacific/Auckland', + 'Pacific/Chatham' => 'Pacific/Chatham', + 'Pacific/Chuuk' => 'Pacific/Chuuk', + 'Pacific/Easter' => 'Pacific/Easter', + 'Pacific/Efate' => 'Pacific/Efate', + 'Pacific/Enderbury' => 'Pacific/Enderbury', + 'Pacific/Fakaofo' => 'Pacific/Fakaofo', + 'Pacific/Fiji' => 'Pacific/Fiji', + 'Pacific/Funafuti' => 'Pacific/Funafuti', + 'Pacific/Galapagos' => 'Pacific/Galapagos', + 'Pacific/Gambier' => 'Pacific/Gambier', + 'Pacific/Guadalcanal' => 'Pacific/Guadalcanal', + 'Pacific/Guam' => 'Pacific/Guam', + 'Pacific/Honolulu' => 'Pacific/Honolulu', + 'Pacific/Johnston' => 'Pacific/Johnston', + 'Pacific/Kiritimati' => 'Pacific/Kiritimati', + 'Pacific/Kosrae' => 'Pacific/Kosrae', + 'Pacific/Kwajalein' => 'Pacific/Kwajalein', + 'Pacific/Majuro' => 'Pacific/Majuro', + 'Pacific/Marquesas' => 'Pacific/Marquesas', + 'Pacific/Midway' => 'Pacific/Midway', + 'Pacific/Nauru' => 'Pacific/Nauru', + 'Pacific/Niue' => 'Pacific/Niue', + 'Pacific/Norfolk' => 'Pacific/Norfolk', + 'Pacific/Noumea' => 'Pacific/Noumea', + 'Pacific/Pago_Pago' => 'Pacific/Pago Pago', + 'Pacific/Palau' => 'Pacific/Palau', + 'Pacific/Pitcairn' => 'Pacific/Pitcairn', + 'Pacific/Pohnpei' => 'Pacific/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacific/Port Moresby', + 'Pacific/Rarotonga' => 'Pacific/Rarotonga', + 'Pacific/Saipan' => 'Pacific/Saipan', + 'Pacific/Tahiti' => 'Pacific/Tahiti', + 'Pacific/Tarawa' => 'Pacific/Tarawa', + 'Pacific/Tongatapu' => 'Pacific/Tongatapu', + 'Pacific/Wake' => 'Pacific/Wake', + 'Pacific/Wallis' => 'Pacific/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Ian 2007, 13:37', + 'd M Y H:i' => '01 Ian 2007 13:37', + 'M jS, \'y, H:i' => '1 Ian, \'07, 13:37', + 'D M d, Y g:i a' => 'Lun 1 Ian, 2007 1:37 pm', + 'F jS, Y, g:i a' => '1 Ianuarie 2007, 1:37 pm', + '|d M Y|, H:i' => 'Astăzi, 13:37 / 01 Ian 2007, 13:37', + '|F jS, Y|, g:i a' => 'Astăzi, 1:37 pm / 1 Ianuarie 2007, 1:37 pm', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D d M, Y g:i a', // Lun 01 Ian, 2007 1:37 pm//schimbat pentru "ro" + +)); diff --git a/includes/shared/phpbb3/language/lang_romanian/index.htm b/includes/shared/phpbb3/language/lang_romanian/index.htm new file mode 100644 index 00000000..13431230 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian/index.htm @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_romanian_ansi/common.php b/includes/shared/phpbb3/language/lang_romanian_ansi/common.php new file mode 100644 index 00000000..3d623705 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian_ansi/common.php @@ -0,0 +1,1416 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » “ †… +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Translation/Traducere: phpBB România', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'ro', + + // You can define different rules for the determination of plural forms here. + // See http://wiki.phpbb.com/Plural_Rules for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 1, + + '1_DAY' => '1 zi', + '1_MONTH' => '1 lună', + '1_YEAR' => '1 an', + '2_WEEKS' => '2 săptămâni', + '3_MONTHS' => '3 luni', + '6_MONTHS' => '6 luni', + '7_DAYS' => '7 zile', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Contul dumneavoastră a fost deja activat.', + 'ACCOUNT_DEACTIVATED' => 'Contul dumneavoastră a fost dezactivat manual ÅŸi poate fi reactivat doar de către un administrator.', + 'ACCOUNT_NOT_ACTIVATED' => 'Contul dumneavoastră încă nu a fost activat.', + 'ACP' => 'Panoul administratorului', + 'ACP_SHORT' => 'ACP', + 'ACTIVE' => 'activ', + 'ACTIVE_ERROR' => 'Numele de utilizator specificat este momentan inactiv. Dacă aveÅ£i probleme cu activarea contului, vă rugăm să contactaÅ£i un administrator.', + 'ADMINISTRATOR' => 'Administrator', + 'ADMINISTRATORS' => 'Administratori', + 'AGE' => 'Vârsta', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'Eroare AJAX', + 'AJAX_ERROR_TEXT' => 'Ceva a funcÈ›ionat eronat la procesarea cererii dvs.', + 'AJAX_ERROR_TEXT_ABORT' => 'Cerere abandonată.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'Cerera a expirat, încercaÈ›i din nou.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Ceva a funcÈ›ionat prost È™i serverul a returnat o valoare invalidă.', + 'ALLOWED' => 'Permis', + 'ALL_FILES' => 'Toate fiÅŸierele', + 'ALL_FORUMS' => 'Toate forumurile', + 'ALL_MESSAGES' => 'Toate mesajele', + 'ALL_POSTS' => 'Toate mesajele', + 'ALL_TIMES' => 'Ora este %1$s %2$s', + 'ALL_TOPICS' => 'Toate subiectele', + 'AND' => 'Åži', + 'ARE_WATCHING_FORUM' => 'AÅ£i subscris pentru a fi notificat de mesajele noi publicate în acest forum.', + 'ARE_WATCHING_TOPIC' => 'AÅ£i subscris pentru a fi notificat de mesajele noi publicate în acest subiect.', + 'ASCENDING' => 'Crescător', + 'ATTACHMENTS' => 'FiÅŸiere ataÅŸate', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'FiÅŸierul imagine pe care încercaÅ£i să-l ataÅŸaÅ£i este invalid.', + 'AUTHOR' => 'Autor', + 'AUTH_NO_PROFILE_CREATED' => 'Crearea profilului de utilizator nu a fost efectuată cu succes.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'ÃŽnregistrarea nevalidă în baza de date.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Serviciu invalid furnizat de OAuth.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'Serviciul OAuth nu a fost creat', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'Tokenul OAuth nu e stocat.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'Token OAuth stocat incorect.', + 'AVATAR_DISALLOWED_CONTENT' => 'ÃŽncărcarea a fost respinsă deoarece fiÅŸierul încărcat a fost identificat ca un posibil atac vector.', + 'AVATAR_DISALLOWED_EXTENSION' => 'FiÅŸierul nu poate fi afiÅŸat deoarece extensia %s nu este permisă.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Avatarul specificat nu a putut fi încărcat pentru că datele de la distanţă sunt invalide sau corupte.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'FiÅŸierul avatar încărcat este gol.', + 'AVATAR_INVALID_FILENAME' => '%s este un nume de fiÅŸier invalid.', + 'AVATAR_NOT_UPLOADED' => 'Avatarul nu a putut fi încărcat.', + 'AVATAR_NO_SIZE' => 'Lungimea sau înălÅ£imea avatarului specificat în legătură nu a putut fi determinată. Vă rugăm să le introduceÅ£i manual.', + 'AVATAR_PARTIAL_UPLOAD' => 'FiÅŸierul specificat a fost încărcat doar parÅ£ial.', + 'AVATAR_PHP_SIZE_NA' => 'Dimensiunea fiÅŸierului avatar este prea mare.
    Dimensiunea maximă permisă setată în php.ini nu a putut fi determinată.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Dimensiunea fişierului avatar este prea mare. Dimensiunea maximă permisă pentru încărcare este de %1$d %2$s.
    Ţineţi minte că aceasta este setată în php.ini şi nu poate fi suprascrisă.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'Avatarul specificat nu poate fi încărcat deoarece cererea a fost întreruptă.', + 'AVATAR_URL_INVALID' => 'URL-ul specificat este invalid.', + 'AVATAR_URL_NOT_FOUND' => 'Fişierul specificat nu a putut fi găsit.', + 'AVATAR_WRONG_FILESIZE' => 'Dimensiunea fişierului avatar trebuie să fie între 0 şi %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'Avatarul trimis este de %5$s pixeli lungime şi %6$s pixeli înălţime. Avatarurile trebuie să fie de cel puţin %1$s pixeli lungime şi %2$s pixeli înălţime, dar nu mai mari de %3$s pixeli lungime şi %4$s pixeli înălţime.', + + 'BACK_TO_TOP' => 'Sus', + 'BACK_TO_PREV' => 'Înapoi la pagina anterioară', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Adresa dumneavostră de e-mail a fost interzisă.', + 'BAN_TRIGGERED_BY_IP' => 'Adresa dumneavostră de IP a fost interzisă.', + 'BAN_TRIGGERED_BY_USER' => 'Numele dumneavostră de utilizator a fost interzis.', + 'BBCODE_GUIDE' => 'Ghidul codului BB', + 'BCC' => 'BCC', + 'BIRTHDAYS' => 'Zile de naştere', + 'BOARD_BAN_PERM' => 'Accesul dumneavoastră a fost interzis permanent pe acest forum.

    Vă rugăm să contactaţi %2$sadministratorul forumului%3$s pentru mai multe informaţii.', + 'BOARD_BAN_REASON' => 'Motivul interzicerii: %s', + 'BOARD_BAN_TIME' => 'Accesul dumneavoastră a fost interzis pe acest forum până%1$s.

    Vă rugăm să contactaÅ£i %2$sadministratorul forumului%3$s pentru mai multe informaÅ£ii.', + 'BOARD_DISABLE' => 'Ne pare rău, dar acest forum este momentan indisponibil.', + 'BOARD_DISABLED' => 'Acest forum este momentan dezactivat.', + 'BOARD_UNAVAILABLE' => 'Ne pare rău, dar acest forum, momentan nu este disponibil. Vă rugăm să încercaÅ£i din nou în câteva minute.', + 'BROWSING_FORUM' => 'Utilizatorii ce navighează pe acest forum: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitator', + 2 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitatori', + ), + 'BUTTON_EDIT' => 'Modificare', + 'BUTTON_FORUM_LOCKED' => 'ÃŽnchis', + 'BUTTON_NEW_TOPIC' => 'Subiect nou', + 'BUTTON_PM' => 'MP', + 'BUTTON_PM_FORWARD' => 'Trimite mai departe', + 'BUTTON_PM_NEW' => 'MP nou', + 'BUTTON_PM_REPLY' => 'Trimite răspuns', + 'BUTTON_PM_REPLY_ALL' => 'Răspunde la toÈ›i', + 'BUTTON_POST_REPLY' => 'Scrie răspuns', + 'BUTTON_QUOTE' => 'Citează', + 'BUTTON_TOPIC_LOCKED' => 'ÃŽnchis', + 'BYTES' => 'OcteÅ£i', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Anulează', + 'CHANGE' => 'Schimbă', + 'CHANGE_FONT_SIZE' => 'Schimbă dimensiunea fontului', + 'CHANGING_PREFERENCES' => 'Schimbare preferinÅ£e forum', + 'CHANGING_PROFILE' => 'Schimbare preferinÅ£e profil', + 'CHARACTERS' => array( + 1 => '%d caracter', + 2 => '%d caractere', + ), + 'COLLAPSE_VIEW' => 'Vizualizare restrânsă', + 'CLOSE_WINDOW' => 'ÃŽnchide fereastra', + 'COLOUR_SWATCH' => 'Schimbă culoarea', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirmă', + 'CONFIRM_CODE' => 'Codul de confirmare', + 'CONFIRM_CODE_EXPLAIN' => 'IntroduceÅ£i codul exact cum apare. Nu există diferenţă între literele mari ÅŸi cele mici.', + 'CONFIRM_CODE_WRONG' => 'Codul de confirmare introdus este incorect.', + 'CONFIRM_OPERATION' => 'SunteÅ£i sigur că vreÅ£i să continuaÅ£i această operaÅ£iune?', + 'CONFIRM_AVATAR_DELETE' => 'EÈ™ti sigur că vrei să stergi acest avatar?', + 'CONGRATULATIONS' => 'La mulÈ›i ani! ', + 'CONNECTION_FAILED' => 'Conexiune eÅŸuată.', + 'CONNECTION_SUCCESS' => 'Conexiunea a fost efectuată cu succes!', + 'CONTACT' => 'Contact', + 'CONTACT_USER' => 'Contactează pe %s', + 'CONTACT_US' => 'Contactează-ne', + 'COOKIES_DELETED' => 'Toate cookie-urile forumului au fost ÅŸterse cu succes.', + 'CURRENT_TIME' => 'Acum este %s', + + 'DAY' => 'Zi', + 'DAYS' => 'Zile', + 'DELETE' => 'Åžterge', + 'DELETE_ALL' => 'Åžterge tot', + 'DELETE_COOKIES' => 'Åžterge toate cookie-urile forumului', + 'DELETE_MARKED' => 'Åžterge mesajele marcate', + 'DELETE_POST' => 'Åžterge mesaj', + 'DELIMITER' => 'Delimitator', + 'DESCENDING' => 'Descrescător', + 'DISABLED' => 'Dezactivat', + 'DISPLAY' => 'AfiÅŸează', + 'DISPLAY_GUESTS' => 'AfiÅŸează vizitatori', + 'DISPLAY_MESSAGES' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_POSTS' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_TOPICS' => 'AfiÅŸează subiectele din ultimele', + 'DOWNLOADED' => 'Descărcat', + 'DOWNLOADING_FILE' => 'FiÅŸierul se descarcă', + 'DOWNLOAD_COUNTS' => array( + 0 => 'ÃŽncă nu a fost nedescărcat', + 1 => 'Descărcat %d dată', + 2 => 'Descărcat de %d ori', + ), + + 'EDIT_POST' => 'Modifică mesaj', + 'ELLIPSIS' => '…', + 'EMAIL' => 'Email', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Adresă email', + 'EMAIL_INVALID_EMAIL' => 'Adresa de email introdusă este invalidă.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Probleme în trimiterea email-ului la Linia %1$s. Răspuns: %2$s.', + 'EMPTY_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când scrieÅ£i un subiect nou.', + 'EMPTY_MESSAGE_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când compuneÅ£i un mesaj nou.', + 'ENABLED' => 'Activat', + 'ENCLOSURE' => 'ÃŽmprejmuire', + 'ENTER_USERNAME' => 'IntroduceÈ›i nume utilizator', + 'ERR_CHANGING_DIRECTORY' => 'Nu s-a putut schimba directorul.', + 'ERR_CONNECTING_SERVER' => 'Eroare în efectuarea conexiunii către server.', + 'ERR_JAB_AUTH' => 'Nu s-a putut autentifica la serverul de Jabber.', + 'ERR_JAB_CONNECT' => 'Nu s-a putut conecta la serverul de Jabber.', + 'ERR_UNABLE_TO_LOGIN' => 'Numele de utilizator sau parola specificată sunt greÅŸite.', + 'ERR_UNWATCHING' => 'Eroare la încercarea de dezabonare.', + 'ERR_WATCHING' => 'Eroare la încercarea de abonare.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'Calea specificată către phpBB este invalidă.', + 'ERROR' => 'Eroare!', + 'EXPAND_VIEW' => 'Vizualizare extinsă', + 'EXTENSION' => 'Extensie', + 'EXTENSION_DISABLED' => 'Extensia %s nu e permisă.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'Extensia %s a fost dezactivată ÅŸi nu mai poate fi afiÅŸată.', + 'EXTENSION_DOES_NOT_EXIST' => 'Extensia %s nu există.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'ÃŽntrebări puse frecvent', + 'FILENAME' => 'Nume fiÅŸier', + 'FILESIZE' => 'Dimensiune fiÅŸier', + 'FILEDATE' => 'Dată fiÅŸier', + 'FILE_COMMENT' => 'Comentariu fiÅŸier', + 'FILE_CONTENT_ERR' => 'Nu se poate citi conÈ›inutul fiÈ™ierului: %s', + 'FILE_JSON_DECODE_ERR' => 'Decodarea fiÈ™ierului json eÈ™uată: %s', + 'FILE_NOT_FOUND' => 'FiÅŸierul cerut nu a putut fi găsit: %s', + 'FIND_USERNAME' => 'Caută un membru', + 'FOLDER' => 'Folder', + 'FORGOT_PASS' => 'Am uitat parola', + 'FORM_INVALID' => 'Formularul trimis a fost invalid. IncercaÅ£i să-l retrimiteÅ£i.', + 'FORUM' => 'Forum', + 'FORUMS' => 'Forumuri', + 'FORUMS_MARKED' => 'Forumurile au fost marcate ca fiind citite.', + 'FORUM_CAT' => 'Categorie forum', + 'FORUM_INDEX' => 'Prima pagină', + 'FORUM_LINK' => 'Link forum', + 'FORUM_LOCATION' => 'LocaÅ£ie forum', + 'FORUM_LOCKED' => 'Forum închis', + 'FORUM_RULES' => 'Reguli forum', + 'FORUM_RULES_LINK' => 'Accesează link-ul pentru a putea vedea regulile forumului', + 'FROM' => 'de la', + 'FSOCK_DISABLED' => 'OperaÅ£iunea nu a putut fi finalizată deoarece funcÅ£ia fsockopen a fost dezactivată sau serverul care este interogat nu a fost găsit.', + 'FSOCK_TIMEOUT' => 'Nu am putut ajunge la serverul din reÈ›ea.', + + 'FTP_FSOCK_HOST' => 'Host FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_FSOCK_PASSWORD' => 'Parola FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_FSOCK_PORT' => 'Port FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_FSOCK_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_FSOCK_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_FSOCK_USERNAME' => 'Nume de utilizator FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'FTP_HOST' => 'Host FTP', + 'FTP_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_PASSWORD' => 'Parola FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_PORT' => 'Port FTP', + 'FTP_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_USERNAME' => 'Nume de utilizator FTP', + 'FTP_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'GENERAL_ERROR' => 'Eroare generală', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Du-te la primul mesaj', + 'GOTO_LAST_POST' => 'Du-te la ultimul mesaj', + 'GO' => 'Du-te', + 'GOTO_PAGE' => 'Du-te la pagina', + 'GROUP' => 'Grup', + 'GROUPS' => 'Grupuri', + 'GROUP_ERR_TYPE' => 'Tipul de grup specificat este nepotrivit.', + 'GROUP_ERR_USERNAME' => 'Numele grupului nu a fost specificat.', + 'GROUP_ERR_USER_LONG' => 'Numele grupului nu poate depăşi 60 de caractere. Numele grupului specificat este prea mare.', + 'GUEST' => 'Vizitator', + 'GUEST_USERS_ONLINE' => array( + 1 => 'Este %d vizitator online', + 2 => 'Sunt %d vizitatori online', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d vizitator', + 2 => '%d vizitatori', + ), + 'G_ADMINISTRATORS' => 'Administratori', + 'G_BOTS' => 'BoÅ£i', + 'G_GUESTS' => 'Vizitatori', + 'G_REGISTERED' => 'Utilizatori înregistraÅ£i', + 'G_REGISTERED_COPPA' => 'Utilizatori COPPA înregistraÅ£i', + 'G_GLOBAL_MODERATORS' => 'Moderatori globali', + 'G_NEWLY_REGISTERED' => 'Utilizatori înregistraÅ£i recent', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d utilizator ascuns', + 2 => '%d utilizatori ascunÈ™i', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d ascuns', + 2 => '%d ascunÈ™i', + ), + 'HIDE_GUESTS' => 'Ascunde vizitatori', + 'HIDE_ME' => 'Ascunde starea mea online în această sesiune', + 'HOURS' => 'Ore', + 'HOME' => 'Acasă', + + 'ICQ' => 'ICQ', + 'IF' => 'Dacă', + 'IMAGE' => 'Imagine', + 'IMAGE_FILETYPE_INVALID' => 'Tip de fiÅŸier imagine %d pentru tipul mime %s nu este suportat.', + 'IMAGE_FILETYPE_MISMATCH' => 'Tip de fiÅŸier imagine nepotrivit: extensie aÅŸteptată %1$s, dar este furnizată extensie %2$s.', + 'IN' => 'în', + 'INACTIVE' => 'Inactiv', + 'INDEX' => 'Prima pagină', + 'INFORMATION' => 'InformaÅ£ie', + 'INSECURE_REDIRECT' => 'Incercare de redirecÈ›ionare către un URL potenÈ›ial nesigur.', + 'INTERESTS' => 'Interese', + 'INVALID_DIGEST_CHALLENGE' => 'Cerere invalidă de sistematizare.', + 'INVALID_EMAIL_LOG' => '%s o adresă de e-mail posibil invalidă?', + 'INVALID_PLURAL_RULE' => 'Alegerea mai multor reguli nu e validă. Valorile valide sunt cuprinse între 0 È™i 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'IP-ul dumneavoastră %1$s a fost blocat pentru că este în lista neagră. Pentru detalii vizualizaÅ£i %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Membru din', + 'JUMP_PAGE' => 'IntroduceÅ£i numărul paginii la care doriÅ£i să vă duceÅ£i.', + 'JUMP_TO' => 'Mergi la', + 'JUMP_TO_PAGE' => 'Click pentru a vă duce la pagina…', + 'JUMP_TO_PAGE_CLICK' => 'Click pentru a vă duce la pagina…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Ultimul mesaj', + 'LAST_UPDATED' => 'Ultima actualizare', + 'LAST_VISIT' => 'Ultima vizită', + 'LDAP_NO_LDAP_EXTENSION' => 'Extensia LDAP nu este valabilă.', + 'LDAP_NO_SERVER_CONNECTION' => 'Nu s-a putut efectua conexiunea la server-ul LDAP.', + 'LDAP_SEARCH_FAILED' => 'O eroare a apărut în timpul căutării în directorul LDAP.', + 'LEGEND' => 'Legendă', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Căutarile directe nu sunt permise.', + 'LOADING' => 'ÃŽncărcare', + 'LOCATION' => 'Localitate', + 'LOCK_POST' => 'ÃŽnchide mesaj', + 'LOCK_POST_EXPLAIN' => 'Previne editarea', + 'LOCK_TOPIC' => 'ÃŽnchide subiect', + 'LOGIN' => 'Autentificare', + 'LOGIN_CHECK_PM' => 'Autentifică-te pentru a-Å£i verifica mesajele private.', + 'LOGIN_CONFIRMATION' => 'Confirmare autentificare', + 'LOGIN_CONFIRM_EXPLAIN' => 'Pentru a preveni conturile forÅ£ate, forumul vă cere să introduceÅ£i un cod de confirmare după un număr maxim de încercări de autentificare eÅŸuate. Codul este afiÅŸat în imaginea de mai jos. Dacă aveÅ£i probleme cu vizualizarea acestuia sau nu puteÅ£i citi codul, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_ATTEMPTS' => 'AÅ£i depăşit numărul maxim de încercări de autentificare. AdiÅ£ional cu numele de utilizator ÅŸi parola mai trebuie să verificaÅ£i componenta afiÅŸată mai jos.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Nu aÅ£i fost autentificat de Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'Un serviciu OAuth inexistent a fost solicitat.', + 'LOGIN_ERROR_PASSWORD' => 'AÅ£i specificat o parolă incorectă. Vă rugăm să vă verificaÅ£i parola ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Nu a fost posibil să fie convertită parola în timpul actualizării softului de forum. Vă rugăm să %scereÅ£i o nouă parolă%s. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_USERNAME' => 'AÅ£i specificat un nume de utilizator incorect. Vă rugăm să vă verificaÅ£i numele de utilizator ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_FORUM' => 'Pentru a vizualiza sau scrie în acest forum, trebuie să introduceÅ£i parola.', + 'LOGIN_INFO' => 'Pentru a vă autentifica, trebuie să vă înregistraÅ£i. ÃŽnregistrarea durează câteva secunde, dar vă va oferi facilităţi suplimentare. Administratorul forumului poate de asemenea să acorde permisiuni suplimentare utilizatorilor înregistraÅ£i. ÃŽnainte de a vă autentifica, asiguraÅ£i-vă că sunteÅ£i familiarizat cu termenii noÅŸtri de folosire ÅŸi politicile asociate. Vă rugăm să vă asiguraÅ£i că aÅ£i citit regulile forumului înainte să navigaÅ£i pe acesta.', + 'LOGIN_VIEWFORUM' => 'Necesită să fiÅ£i înregistrat ÅŸi autentificat pentru a putea vizualiza acest forum.', + 'LOGIN_EXPLAIN_EDIT' => 'Pentru a putea modifica mesajele din acest forum, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Pentru a putea vizualiza lista cu cei care sunt online, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_REQUIRED' => 'Trebuie să fiÈ›i autentificat pentru această acÈ›iune.', + 'LOGOUT' => 'Deconectare', + 'LOGOUT_USER' => 'Deconectare [ %s ]', + 'LOG_ME_IN' => 'Autentifică-mă automat la fiecare vizită', + + 'MAIN' => 'Main', + 'MARK' => 'Marchează', + 'MARK_ALL' => 'Marchează toate', + 'MARK_ALL_READ' => 'Marchează toate citite', + 'MARK_FORUMS_READ' => 'Marchează forumurile ca fiind citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile ca fiind citite', + 'MARK_READ' => 'Marchează drept citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile citite', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Panoul moderatorului', + 'MCP_SHORT' => 'MCP', + 'MEMBERLIST' => 'Membri', + 'MEMBERLIST_EXPLAIN' => 'Vezi lista completă a membrilor', + 'MERGE' => 'UneÅŸte', + 'MERGE_POSTS' => 'Mută mesaje', + 'MERGE_TOPIC' => 'UneÅŸte subiecte', + 'MESSAGE' => 'Mesaj', + 'MESSAGES' => 'Mesaje', + 'MESSAGES_COUNT' => array( + 1 => '%d mesaj', + 2 => '%d mesaje', + ), + 'MESSAGE_BODY' => 'Corpul mesajului', + 'MINUTES' => 'Minute', + 'MODERATE' => 'Moderează', + 'MODERATOR' => 'Moderator', + 'MODERATORS' => 'Moderatori', + 'MODULE_NOT_ACCESS' => 'Modulul nu e accesibil', + 'MODULE_NOT_FIND' => 'Modulul %s nu poate fi găsit', + 'MODULE_FILE_INCORRECT_CLASS' => 'FiÈ›ierul modulului %s nu conÈ›ine clasa corectă [%s]', + 'MONTH' => 'Lună', + 'MOVE' => 'Mută', + + 'NA' => 'N/A', + 'NEWEST_USER' => 'Cel mai nou membru %s', + 'NEW_MESSAGE' => 'Mesaj nou', + 'NEW_MESSAGES' => 'Mesaje noi', + 'NEW_POST' => 'Mesaj nou', + 'NEW_POSTS' => 'Mesaje noi', + 'NEXT' => 'Următorul', // Used in pagination + 'NEXT_STEP' => 'Următorul', + 'NEVER' => 'Niciodată', + 'NO' => 'Nu', + 'NO_NOTIFICATIONS' => 'Nu aveÈ›i notificări', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Nu sunteÅ£i autorizat să conduceÅ£i acest grup.', + 'NOT_AUTHORISED' => 'Nu sunteÅ£i autorizat să accesaÅ£i această zonă.', + 'NOT_WATCHING_FORUM' => 'Nu mai sunteÅ£i abonat la actualizările acestui forum.', + 'NOT_WATCHING_TOPIC' => 'Nu mai sunteÅ£i abonat la acest subiect.', + 'NOTIFICATIONS' => 'Notificări', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Răspuns de la %1$s în subiectul urmărit:', + ), + 'NOTIFICATION_FORUM' => 'Forum: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Cerere de la %1$s pentru aderare la grupul %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Cerere aprobată pentru a adera la grupul %1$s.', + 'NOTIFICATION_PM' => 'Mesaj privat de la %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Răspuns de la %1$s în subiectul:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Mesaj aprobat:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Mesaj neaprobat:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Arobare mesaj solicitată de %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Citat de %1$s în:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Motiv: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'Mesaj privat raportat de %1$s:', + 'NOTIFICATION_REPORT_POST' => 'Mesaj raportat de %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Raport închis de %1$s for:', + 'NOTIFICATION_TOPIC' => 'Subiect nou de %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Subiect aprobat:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Subiect neaprobat:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Aprobare subiect solicitată de %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'Tipul de notificare "%s" lipseÈ™te din fiÈ™ierele sistemului.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Activare solicitată pentru utilizator dezactivat sau nou înregistrat: “%1$sâ€', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'alÈ›ii', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d others', + ), + 'NOTIFY_ADMIN' => 'Vă rugăm să anunÅ£aÅ£i administratorul forumului sau webmaster-ul.', + 'NOTIFY_ADMIN_EMAIL' => 'Va rugăm să anunÅ£ati administratorul forumului sau webmaster-ul: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Nu sunteÅ£i autorizat să accesaÅ£i acest fiÅŸier.', + 'NO_ACTION' => 'Nicio acÅ£iune specificată.', + 'NO_ADMINISTRATORS' => 'Nu sunt administratori.', + 'NO_AUTH_ADMIN' => 'Accesul la Panoul administratorului este interzis pentru că nu aveÅ£i permisiuni administrative.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Nu puteÅ£i să vă reautentificaÅ£i ca un alt utilizator.', + 'NO_AUTH_OPERATION' => 'Nu aveÅ£i permisiunile necesare pentru a termina această operaÅ£ie.', + 'NO_AVATARS' => 'Nu există imagini asociate (avatar) disponibile', + 'NO_CONNECT_TO_SMTP_HOST' => 'Nu s-a putut efectua conexiunea către hostul smtp: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Astăzi nu sărbătorim nici o zi de naÅŸtere', + 'NO_EMAIL_MESSAGE' => 'Emailul a fost gol.', + 'NO_EMAIL_RESPONSE_CODE' => 'Nu s-au putut lua codurile de răspuns ale server-ului de email.', + 'NO_EMAIL_SUBJECT' => 'Nu aÅ£i specificat subiectul e-mailului.', + 'NO_FORUM' => 'Forumul selectat nu există.', + 'NO_FORUMS' => 'Nu există forumuri.', + 'NO_GROUP' => 'Grupul cerut nu există.', + 'NO_GROUP_MEMBERS' => 'Acest grup momentan nu are membri.', + 'NO_IPS_DEFINED' => 'Niciun IP sau hostname nu a fost definit', + 'NO_MEMBERS' => 'Niciun membru nu a fost găsit pentru aceste criterii de căutare.', + 'NO_MESSAGES' => 'Niciun mesaj', + 'NO_MODE' => 'Niciun mod specificat.', + 'NO_MODERATORS' => 'Nu sunt moderatori.', + 'NO_NEW_MESSAGES' => 'Niciun mesaj nou', + 'NO_NEW_POSTS' => 'Niciun mesaj nou', + 'NO_ONLINE_USERS' => 'Niciun utilizator înregistrat', + 'NO_POSTS' => 'Niciun mesaj', + 'NO_POSTS_TIME_FRAME' => 'Nu există niciun mesaj în interiorul acestui subiect pentru perioada de timp selectată.', + 'NO_FEED_ENABLED' => 'Fluxurile nu sunt disponibile pentru acest forum.', + 'NO_FEED' => 'Fluxul solicitat nu este disponibil.', + 'NO_STYLE_DATA' => 'Nu au putut fi obÈ›inute datele stilului', + 'NO_SUBJECT' => 'Niciun subiect specificat', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'Backend-ul de căutare specificat nu există.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Nu există nicio metodă de autentificare.', + 'NO_TOPIC' => 'Subiectul specificat nu există.', + 'NO_TOPIC_FORUM' => 'Subiectul sau forumul nu există.', + 'NO_TOPICS' => 'Nu există subiecte sau mesaje în acest forum.', + 'NO_TOPICS_TIME_FRAME' => 'Nu există niciun subiect în interiorul acestui forum pentru perioada de timp selectată.', + 'NO_UNREAD_POSTS' => 'Nu sunt mesaje necitite', + 'NO_UPLOAD_FORM_FOUND' => 'ÃŽncărcare iniÅ£iată, dar nu a fost găsit niciun formular de încărcare valid.', + 'NO_USER' => 'Utilizatorul specificat nu există.', + 'NO_USERS' => 'Utilizatorii specificaÅ£i nu există.', + 'NO_USER_SPECIFIED' => 'Nu a fost specificat niciun nume de utilizator.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d ataÈ™ament', + 2 => '%d ataÈ™amente', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Nu există mesaje în aÈ™teptare', // 0 + 1 => '1 mesaj în aÈ™teptare', // 1 + 2 => '%d mesaje în aÈ™teptare', // 2+ + ), + + 'OCCUPATION' => 'OcupaÅ£ia', + 'OFFLINE' => 'Neconectat', + 'ONLINE' => 'Conectat', + 'ONLINE_BUDDIES' => 'Prieteni conectaÅ£i', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'In total este %1$d utilizator online :: %2$s È™i %3$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s È™i %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'In total este %1$d utilizator online :: %2$s, %3$s È™i %4$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s, %3$s È™i %4$s', + ), + 'OPTIONS' => 'OpÅ£iuni', + + 'PAGE_OF' => 'Pagina %1$d din %2$d', + 'PAGE_TITLE_NUMBER' => 'Pagina %s', + 'PASSWORD' => 'Parolă', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d pixel', + 2 => '%d pixeli', + ), + 'PLAY_QUICKTIME_FILE' => 'Deschide fiÅŸierul Quicktime', + 'PLEASE_WAIT' => 'Vă rugăm aÈ™teptaÈ›i.', + 'PM' => 'MP', + 'PM_REPORTED' => 'ApăsaÅ£i aici ca să citiÅ£i raportul', + 'POSTING_MESSAGE' => 'Scrie mesaj în %s', + 'POSTING_PRIVATE_MESSAGE' => 'Compune mesaj privat', + 'POST' => 'Mesaj', + 'POST_ANNOUNCEMENT' => 'AnunÅ£', + 'POST_STICKY' => 'Important', + 'POSTED' => 'Scris', + 'POSTED_IN_FORUM' => 'în', + 'POSTED_ON_DATE' => 'pe', + 'POSTS' => 'Mesaje', + 'POSTS_UNAPPROVED' => 'Cel puÅ£in un mesaj din acest subiect nu a fost aprobat.', + 'POSTS_UNAPPROVED_FORUM'=> 'Cel puÈ›in un mesaj în acest forum nu este aprobat.', + 'POST_BY_AUTHOR' => 'de', + 'POST_BY_FOE' => 'Acest mesaj a fost făcut de %1$s care este momentan în lista de ignore.', + 'POST_DISPLAY' => '%1$sAfiÈ™ează acest mesaj%2$s.', + 'POST_DAY' => '%.2f mesaje pe zi', + 'POST_DELETED_ACTION' => 'Mesaje È™terse:', + 'POST_DELETED' => 'Acest mesaj a fost È™ters.', + 'POST_DELETED_BY' => '%2$s È™terse de %1$s la %3$s.', + 'POST_DELETED_BY_REASON'=> '%2$s È™terse de %1$s la %3$s pentru motivul: %4$s', + 'POST_DETAILS' => 'Detalii mesaj', + 'POST_NEW_TOPIC' => 'Scrie un subiect nou', + 'POST_PCT' => '%.2f%% din toate mesajele', + 'POST_PCT_ACTIVE' => '%.2f%% din mesajele utilizatorului', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% din mesajele dumneavoastră', + 'POST_REPLY' => 'Răspunde', + 'POST_REPORTED' => 'AccesaÅ£i pentru a consulta raportul', + 'POST_SUBJECT' => 'Subiectul mesajului', + 'POST_TIME' => 'Dată mesaj', + 'POST_TOPIC' => 'Scrie un subiect nou', + 'POST_UNAPPROVED_ACTION'=> 'Mesaj care aÈ™teaptă aprobarea:', + 'POST_UNAPPROVED' => 'Acest mesaj aÅŸteaptă pentru a fi aprobat', + 'POWERED_BY' => 'Furnizat de %s', + 'PREVIEW' => 'Previzualizează', + 'PREVIOUS' => 'Anterior', // Used in pagination + 'PREVIOUS_STEP' => 'Anterior', + 'PRIVACY' => 'Politica de confidenÅ£ialitate', + 'PRIVATE_MESSAGE' => 'Mesaj privat', + 'PRIVATE_MESSAGES' => 'Mesaje private', + 'PRIVATE_MESSAGING' => 'Mesageria privată', + 'PROFILE' => 'Panoul utilizatorului', + + 'QUICK_LINKS' => 'Legături rapide', + + 'RANK' => 'Rang', + 'READING_FORUM' => 'Vizualizare subiecte în %s', + 'READING_GLOBAL_ANNOUNCE' => 'CiteÅŸte anunÅ£urile globale', + 'READING_LINK' => 'Accesare linkul forumului %s', + 'READING_TOPIC' => 'CiteÅŸte subiect în %s', + 'READ_PROFILE' => 'Profil', + 'REASON' => 'Motiv', + 'RECORD_ONLINE_USERS' => 'Cei mai mulÅ£i utilizatori conectaÅ£i au fost %1$s pe %2$s', + 'REDIRECT' => 'RedirecÅ£ionează', + 'REDIRECTS' => 'Totalul redirecÅ£ionărilor', + 'REGISTER' => 'ÃŽnregistrare', + 'REGISTERED_USERS' => 'Utilizatori înregistraÅ£i:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'Aici este %1$d utilizator înregistrat È™i %2$s online', + 2 => 'Aici sunt %1$d utilizatori înregistraÈ›i È™i %2$s online', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d înregistrat', + 2 => '%d înregistraÈ›i', + ), + 'REMOVE' => 'Elimină', + 'REMOVE_INSTALL' => 'Åžterge, mută sau redenumeÅŸte directorul install înainte de a folosi forumul. Dacă acest director este în continuare prezent, numai Panoul administratorului (PA) va fi accesibil.', + 'REPLIES' => 'Răspunsuri', + 'REPLY_WITH_QUOTE' => 'Răspuns cu citat', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Răspuns la anunÅ£ul global', + 'REPLYING_MESSAGE' => 'Răspunde mesajului din %s', + 'REPORT_BY' => 'Raportat de', + 'REPORT_POST' => 'Raportează acest mesaj', + 'REPORTING_POST' => 'Raportând mesajul', + 'RESEND_ACTIVATION' => 'Retrimite e-mail-ul de activare', + 'RESET' => 'Resetare', + 'RESTORE_PERMISSIONS' => 'Restabilire permisiuni', + 'RETURN_INDEX' => '%sÃŽnapoi la prima pagină%s', + 'RETURN_FORUM' => '%sÃŽnapoi la ultimul forum vizitat%s', + 'RETURN_PAGE' => '%sÃŽnapoi la pagina anterioară%s', + 'RETURN_TOPIC' => '%sÃŽnapoi la ultimul subiect vizitat%s', + 'RETURN_TO' => 'ÃŽnapoi la “%sâ€', + 'RETURN_TO_INDEX' => 'ÃŽnapoi la indexul forumului', + 'FEED' => 'Flux', + 'FEED_NEWS' => 'Åžtiri', + 'FEED_TOPICS_ACTIVE' => 'Subiecte active', + 'FEED_TOPICS_NEW' => 'Subiecte noi', + 'RULES_ATTACH_CAN' => 'PuteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_ATTACH_CANNOT' => 'Nu puteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_DELETE_CAN' => 'PuteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DELETE_CANNOT' => 'Nu puteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DOWNLOAD_CAN' => 'PuteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_DOWNLOAD_CANNOT' => 'Nu puteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_EDIT_CAN' => 'PuteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_EDIT_CANNOT' => 'Nu puteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_LOCK_CAN' => 'PuteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_LOCK_CANNOT' => 'Nu puteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_POST_CAN' => 'PuteÅ£i scrie subiecte noi în acest forum', + 'RULES_POST_CANNOT' => 'Nu puteÅ£i scrie subiecte noi în acest forum', + 'RULES_REPLY_CAN' => 'PuteÅ£i răspunde subiectelor din acest forum', + 'RULES_REPLY_CANNOT' => 'Nu puteÅ£i răspunde subiectelor din acest forum', + 'RULES_VOTE_CAN' => 'PuteÅ£i vota în chestionarele din acest forum', + 'RULES_VOTE_CANNOT' => 'Nu puteÅ£i vota în chestionarele din acest forum', + + 'SEARCH' => 'Căutare', + 'SEARCH_MINI' => 'Căutare…', + 'SEARCH_ADV' => 'Căutare avansată', + 'SEARCH_ADV_EXPLAIN' => 'Vezi opÅ£iuni căutare avansată', + 'SEARCH_KEYWORDS' => 'Căutare după cuvinte cheie', + 'SEARCHING_FORUMS' => 'Căutare forumuri', + 'SEARCH_ACTIVE_TOPICS' => 'Vezi subiecte active', + 'SEARCH_FOR' => 'Căutare după', + 'SEARCH_FORUM' => 'Căutare în acest forum…', + 'SEARCH_NEW' => 'Vezi mesaje noi', + 'SEARCH_POSTS_BY' => 'Căutare mesaje după', + 'SEARCH_SELF' => 'Vezi mesaje proprii', + 'SEARCH_TOPIC' => 'Căutare în acest subiect…', + 'SEARCH_UNANSWERED' => 'Vezi subiecte fără răspuns', + 'SEARCH_UNREAD' => 'Vezi mesaje necitite', + 'SEARCH_USER_POSTS' => 'Caută mesajele utilizatorului', + 'SECONDS' => 'Secunde', + 'SEE_ALL' => 'Vezi tot', + 'SELECT' => 'SelectaÅ£i', + 'SELECT_ALL_CODE' => 'SelectaÅ£i tot', + 'SELECT_DESTINATION_FORUM' => 'Vă rugăm să selectaÅ£i un forum destinaÅ£ie', + 'SELECT_FORUM' => 'SelectaÅ£i un forum', + 'SEND_EMAIL' => 'E-mail', // Used for submit buttons + 'SEND_EMAIL_USER' => 'E-mail către %s', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX + 'SEND_PRIVATE_MESSAGE' => 'TrimiteÅ£i mesaj privat', + 'SETTINGS' => 'Setări', + 'SIGNATURE' => 'Semnătură', + 'SKIP' => 'Treci peste conÅ£inut', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'Server-ul SMTP nu suportă autentificarea.', + 'SORRY_AUTH_READ' => 'Nu sunteÅ£i autorizat să citiÅ£i acest forum.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Nu sunteÅ£i autorizat să descărcaÅ£i acest fiÅŸier ataÅŸat.', + 'SORT_BY' => 'Sortează după', + 'SORT_JOINED' => 'Data înregistrării', + 'SORT_LOCATION' => 'Localitate', + 'SORT_RANK' => 'Rang', + 'SORT_POSTS' => 'Mesaje', + 'SORT_TOPIC_TITLE' => 'Titlul subiectului', + 'SORT_USERNAME' => 'Nume de utilizator', + 'SPLIT_TOPIC' => 'Desparte subiect', + 'SQL_ERROR_OCCURRED' => 'O eroare SQL a apărut în timp ce pagina era în lucru. Vă rugăm să contactaÅ£i %sAdministratorul forumului%s dacă problema persistă.', + 'STATISTICS' => 'Statistici', + 'START_WATCHING_FORUM' => 'Abonare forum', + 'START_WATCHING_TOPIC' => 'Abonare subiect', + 'STOP_WATCHING_FORUM' => 'Dezabonare forum', + 'STOP_WATCHING_TOPIC' => 'Dezabonare subiect', + 'STRING_LIST_MULTI' => '%1$s, È™i %2$s', + 'STRING_LIST_SIMPLE' => '%1$s È™i %2$s', + 'SUBFORUM' => 'Subforum', + 'SUBFORUMS' => 'Subforumuri', + 'SUBJECT' => 'Subiect', + 'SUBMIT' => 'Trimite', + + 'TB' => 'TB', + 'TERMS_USE' => 'Termeni de utilizare', + 'TEST_CONNECTION' => 'Testează conexiunea', + 'THE_TEAM' => 'Echipa', + 'TIB' => 'TiB', + 'TIME' => 'Data', + 'TIMEOUT_PROCESSING_REQ'=> 'Cererea a expirat.', + + 'TOO_LARGE' => 'Valoarea specificată este prea mare.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mare.', + + 'TOO_LONG' => 'Valoarea specificată este prea lungă.', + + 'TOO_LONG_CONFIRM_CODE' => 'Codul de confirmare introdus este prea lung.', + 'TOO_LONG_DATEFORMAT' => 'Formatul datei introdus este prea lung.', + 'TOO_LONG_JABBER' => 'Numele contului Jabber introdus este prea lung.', + 'TOO_LONG_NEW_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea lungă.', + 'TOO_LONG_USER_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_USERNAME' => 'Numele de utilizator introdus este prea lung.', + 'TOO_LONG_EMAIL' => 'Adresa de email introdusă este prea lungă.', + + 'TOO_MANY_VOTE_OPTIONS' => 'AÅ£i încercat să votaÅ£i la prea multe opÅ£iuni.', + + 'TOO_SHORT' => 'Valoarea specificată este prea scurtă.', + + 'TOO_SHORT_CONFIRM_CODE' => 'Codul de confirmare introdus este prea scurt.', + 'TOO_SHORT_DATEFORMAT' => 'Formatul datei introduse este prea scurt.', + 'TOO_SHORT_JABBER' => 'Numele contului Jabber introdus este prea scurt.', + 'TOO_SHORT_NEW_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea scurtă.', + 'TOO_SHORT_USER_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_USERNAME' => 'Numele de utilizator introdus este prea scurt.', + 'TOO_SHORT_EMAIL' => 'Adresa de email introdusă este prea scurtă.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'Confirmarea adresei de e-mail introdusă este prea scurtă.', + 'TOO_SMALL' => 'Valoare specificată este prea mică.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mică.', + + 'TOPIC' => 'Subiect', + 'TOPICS' => 'Subiecte', + 'TOPICS_UNAPPROVED' => 'Cel puÅ£in un subiect din acest forum nu a fost aprobat.', + 'TOPIC_ICON' => 'Iconiţă subiect', + 'TOPIC_LOCKED' => 'Acest subiect este închis, nu puteÅ£i modifica mesaje sau să scrieÅ£i răspunsuri viitoare.', + 'TOPIC_LOCKED_SHORT'=> 'Subiect închis', + 'TOPIC_MOVED' => 'Subiect mutat', + 'TOPIC_REVIEW' => 'Subiect revizuit', + 'TOPIC_TITLE' => 'Titlu subiect', + 'TOPIC_UNAPPROVED' => 'Acest subiect nu a fost aprobat', + 'TOPIC_DELETED' => 'Acest subiect a fost È™ters.', + 'TOTAL_ATTACHMENTS' => 'FiÅŸier(e) ataÅŸat(e)', + 'TOTAL_LOGS' => array( + 1 => '%d log', + 2 => '%d log-uri', + ), + 'TOTAL_PMS' => array( + 1 => '%d mesaj privat în total', + 2 => '%d mesaje private în total', + ), + 'TOPIC_POLL' => 'Acest subiect are un sondaj.', + 'TOTAL_POSTS' => 'Total mesaje', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Total mesaje %d', + ), + 'TOPIC_REPORTED' => 'Acest subiect a fost raportat', + 'TOTAL_TOPICS' => array( + 2 => 'Total subiecte %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Total membri %d', + ), + 'TRACKED_PHP_ERROR' => 'Erori PHP depistate: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'Nu a fost posibilă determinarea dimensiunilor imaginii.', + 'UNABLE_TO_DELIVER_FILE'=> 'Nu s-a putut trimite fiÅŸierul.', + 'UNKNOWN_BROWSER' => 'Browser necunoscut', + 'UNMARK_ALL' => 'Deselectează toate', + 'UNREAD_MESSAGES' => 'Mesaje necitite', + 'UNREAD_POST' => 'Mesaj necitit', + 'UNREAD_POSTS' => 'Mesaje necitite', + 'UNWATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest forum?', + 'UNWATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la forumul „%sâ€?', + 'UNWATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest subiect?', + 'UNWATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la subiectul „%sâ€?', + 'UNWATCHED_FORUMS' => 'Nu mai sunteÅ£i abonat la forumurile selectate.', + 'UNWATCHED_TOPICS' => 'Nu mai sunteÅ£i abonat subiectele selectate.', + 'UNWATCHED_FORUMS_TOPICS' => 'Nu mai sunteÅ£i abonat la intrările selectate.', + 'UPDATE' => 'Actualizat', + 'UPLOAD_IN_PROGRESS' => 'ÃŽncărcarea este momentan în progres.', + 'URL_REDIRECT' => 'Dacă browserul dumneavoastră nu suportă redirecÅ£ionări meta, atunci %sdaÅ£i un clik AICI pentru a fi redirecÅ£ionat%s.', + 'USERGROUPS' => 'Grupuri', + 'USERNAME' => 'Nume utilizator', + 'USERNAMES' => 'Nume utilizatori', + 'USER_AVATAR' => 'Avatar utilizator', + 'USER_CANNOT_READ' => 'Nu puteÅ£i citi mesajele din acest forum.', + 'USER_POSTS' => array( + 1 => '%d Mesaj', + 2 => '%d Mesaje', + ), + 'USERS' => 'Utilizatori', + 'USE_PERMISSIONS' => 'Testează permisiunile utilizatorului', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Ne pare rău dar nu sunteÅ£i autorizat să folosiÅ£i această funcÅ£ionalitate. E posibil să vă fi înregistrat aici recent ÅŸi să fie nevoie să participaÅ£i la mai multe discuÈ›ii ca să puteÅ£i folosi această funcÅ£ionalitate.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'Vizualizat', + 'VIEWED_COUNTS' => array( + 0 => 'ÃŽncă nevizualizat', + 1 => 'Vizualizat %d dată', + 2 => 'Vizualizat de %d ori', + ), + 'VIEWING_CONTACT_ADMIN' => 'Vizualizare pagina de contact', + 'VIEWING_FAQ' => 'Vizualizare FAQ', + 'VIEWING_MEMBERS' => 'Vizualizare detalii membru', + 'VIEWING_ONLINE' => 'Vizualizare cine este conectat', + 'VIEWING_MCP' => 'Vizualizare Panou moderator', + 'VIEWING_MEMBER_PROFILE' => 'Vizualizare profil membru', + 'VIEWING_PRIVATE_MESSAGES' => 'Vizualizare mesaje private', + 'VIEWING_REGISTER' => 'ÃŽnregistrare cont', + 'VIEWING_UCP' => 'Vizualizare Panou utilizator', + 'VIEWS' => 'Vizualizări', + 'VIEW_BOOKMARKS' => 'Vezi bookmark-uri', + 'VIEW_FORUM_LOGS' => 'Consultare loguri', + 'VIEW_LATEST_POST' => 'Vezi ultimul mesaj', + 'VIEW_NEWEST_POST' => 'Vezi ultimul mesaj necitit', + 'VIEW_NOTES' => 'Vezi notiÅ£ele utilizatorului', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'date care se bazează pe utilizatorii activi în ultimul %d minut', + 2 => 'date care se bazează pe utilizatorii activi în ultimele %d minute', + ), + 'VIEW_TOPIC' => 'Vezi subiect', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'AnunÅ£: ', + 'VIEW_TOPIC_GLOBAL' => 'AnunÅ£ global: ', + 'VIEW_TOPIC_LOCKED' => 'ÃŽnchis: ', + 'VIEW_TOPIC_LOGS' => 'Consultare loguri', + 'VIEW_TOPIC_MOVED' => 'Mutat: ', + 'VIEW_TOPIC_POLL' => 'Chestionar: ', + 'VIEW_TOPIC_STICKY' => 'Important: ', + 'VISIT_WEBSITE' => 'Vizitează site web', + + 'WARNINGS' => 'Avertismente', + 'WARN_USER' => 'Avertizează utilizator', + 'WATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest forum?', + 'WATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la forumul „%sâ€?', + 'WATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest subiect?', + 'WATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la subiectul „%sâ€?', + 'WELCOME_SUBJECT' => 'Bine aÅ£i venit în forumurile %s', + 'WEBSITE' => 'Site web', + 'WHOIS' => 'Cine este', + 'WHO_IS_ONLINE' => 'Cine este conectat', + 'WLM' => 'WLM', + 'WRONG_PASSWORD' => 'AÅ£i introdus o parolă incorectă.', + + 'WRONG_DATA_COLOUR' => 'Valoarea culorii introduse este invalidă.', + 'WRONG_DATA_JABBER' => 'Numele introdus nu este un nume de cont Jabber valid.', + 'WRONG_DATA_LANG' => 'Limba specificată nu este validă.', + 'WRONG_DATA_POST_SD' => 'DirecÈ›ia specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_POST_SK' => 'OpÈ›iunea specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_TOPIC_SD' => 'DirecÈ›ia specificată de sortare a subiectelor nu e validă.', + 'WRONG_DATA_TOPIC_SK' => 'OpÈ›iunea specificată de sortare a subiectelor nu e validă.', + 'WROTE' => 'scrie', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'An', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'Da', + 'YOU_LAST_VISIT' => 'Ultima vizită a fost: %s', + + 'datetime' => array( + 'TODAY' => 'Astăzi, ', + 'TOMORROW' => 'Mâine, ', + 'YESTERDAY' => 'Ieri, ', + 'AGO' => array( + 0 => 'mai puÅ£in de un minut în urmă', + 1 => '%d minut în urmă', + 2 => '%d minute în urmă', + ), + 'Sunday' => 'Duminică', + 'Monday' => 'Luni', + 'Tuesday' => 'MarÅ£i', + 'Wednesday' => 'Miercuri', + 'Thursday' => 'Joi', + 'Friday' => 'Vineri', + 'Saturday' => 'Sâmbătă', + + 'Sun' => 'Dum', + 'Mon' => 'Lun', + 'Tue' => 'Mar', + 'Wed' => 'Mie', + 'Thu' => 'Joi', + 'Fri' => 'Vin', + 'Sat' => 'Sâm', + + 'January' => 'Ianuarie', + 'February' => 'Februarie', + 'March' => 'Martie', + 'April' => 'Aprilie', + 'May' => 'Mai', + 'June' => 'Iunie', + 'July' => 'Iulie', + 'August' => 'August', + 'September' => 'Septembrie', + 'October' => 'Octombrie', + 'November' => 'Noiembrie', + 'December' => 'Decembrie', + + 'Jan' => 'Ian', + 'Feb' => 'Feb', + 'Mar' => 'Mar', + 'Apr' => 'Apr', + 'May_short' => 'Mai', // Short representation of "May". May_short used because in english the short and long date are the same for May. + 'Jun' => 'Iun', + 'Jul' => 'Iul', + 'Aug' => 'Aug', + 'Sep' => 'Sep', + 'Oct' => 'Oct', + 'Nov' => 'Noi', + 'Dec' => 'Dec', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + 'Africa/Abidjan' => 'Africa/Abidjan', + 'Africa/Accra' => 'Africa/Accra', + 'Africa/Addis_Ababa' => 'Africa/Addis Ababa', + 'Africa/Algiers' => 'Africa/Algiers', + 'Africa/Asmara' => 'Africa/Asmara', + 'Africa/Bamako' => 'Africa/Bamako', + 'Africa/Bangui' => 'Africa/Bangui', + 'Africa/Banjul' => 'Africa/Banjul', + 'Africa/Bissau' => 'Africa/Bissau', + 'Africa/Blantyre' => 'Africa/Blantyre', + 'Africa/Brazzaville' => 'Africa/Brazzaville', + 'Africa/Bujumbura' => 'Africa/Bujumbura', + 'Africa/Cairo' => 'Africa/Cairo', + 'Africa/Casablanca' => 'Africa/Casablanca', + 'Africa/Ceuta' => 'Africa/Ceuta', + 'Africa/Conakry' => 'Africa/Conakry', + 'Africa/Dakar' => 'Africa/Dakar', + 'Africa/Dar_es_Salaam' => 'Africa/Dar es Salaam', + 'Africa/Djibouti' => 'Africa/Djibouti', + 'Africa/Douala' => 'Africa/Douala', + 'Africa/El_Aaiun' => 'Africa/El Aaiun', + 'Africa/Freetown' => 'Africa/Freetown', + 'Africa/Gaborone' => 'Africa/Gaborone', + 'Africa/Harare' => 'Africa/Harare', + 'Africa/Johannesburg' => 'Africa/Johannesburg', + 'Africa/Juba' => 'Africa/Juba', + 'Africa/Kampala' => 'Africa/Kampala', + 'Africa/Khartoum' => 'Africa/Khartoum', + 'Africa/Kigali' => 'Africa/Kigali', + 'Africa/Kinshasa' => 'Africa/Kinshasa', + 'Africa/Lagos' => 'Africa/Lagos', + 'Africa/Libreville' => 'Africa/Libreville', + 'Africa/Lome' => 'Africa/Lome', + 'Africa/Luanda' => 'Africa/Luanda', + 'Africa/Lubumbashi' => 'Africa/Lubumbashi', + 'Africa/Lusaka' => 'Africa/Lusaka', + 'Africa/Malabo' => 'Africa/Malabo', + 'Africa/Maputo' => 'Africa/Maputo', + 'Africa/Maseru' => 'Africa/Maseru', + 'Africa/Mbabane' => 'Africa/Mbabane', + 'Africa/Mogadishu' => 'Africa/Mogadishu', + 'Africa/Monrovia' => 'Africa/Monrovia', + 'Africa/Nairobi' => 'Africa/Nairobi', + 'Africa/Ndjamena' => 'Africa/Ndjamena', + 'Africa/Niamey' => 'Africa/Niamey', + 'Africa/Nouakchott' => 'Africa/Nouakchott', + 'Africa/Ouagadougou' => 'Africa/Ouagadougou', + 'Africa/Porto-Novo' => 'Africa/Porto-Novo', + 'Africa/Sao_Tome' => 'Africa/Sao Tome', + 'Africa/Tripoli' => 'Africa/Tripoli', + 'Africa/Tunis' => 'Africa/Tunis', + 'Africa/Windhoek' => 'Africa/Windhoek', + + 'America/Adak' => 'America/Adak', + 'America/Anchorage' => 'America/Anchorage', + 'America/Anguilla' => 'America/Anguilla', + 'America/Antigua' => 'America/Antigua', + 'America/Araguaina' => 'America/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'America/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'America/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'America/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'America/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'America/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'America/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'America/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'America/Argentina/Salta', + 'America/Argentina/San_Juan' => 'America/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'America/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'America/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'America/Argentina/Ushuaia', + + 'America/Aruba' => 'America/Aruba', + 'America/Asuncion' => 'America/Asuncion', + 'America/Atikokan' => 'America/Atikokan', + 'America/Bahia' => 'America/Bahia', + 'America/Bahia_Banderas' => 'America/Bahia Banderas', + 'America/Barbados' => 'America/Barbados', + 'America/Belem' => 'America/Belem', + 'America/Belize' => 'America/Belize', + 'America/Blanc-Sablon' => 'America/Blanc-Sablon', + 'America/Boa_Vista' => 'America/Boa Vista', + 'America/Bogota' => 'America/Bogota', + 'America/Boise' => 'America/Boise', + 'America/Cambridge_Bay' => 'America/Cambridge Bay', + 'America/Campo_Grande' => 'America/Campo Grande', + 'America/Cancun' => 'America/Cancun', + 'America/Caracas' => 'America/Caracas', + 'America/Cayenne' => 'America/Cayenne', + 'America/Cayman' => 'America/Cayman', + 'America/Chicago' => 'America/Chicago', + 'America/Chihuahua' => 'America/Chihuahua', + 'America/Costa_Rica' => 'America/Costa Rica', + 'America/Creston' => 'America/Creston', + 'America/Cuiaba' => 'America/Cuiaba', + 'America/Curacao' => 'America/Curacao', + 'America/Danmarkshavn' => 'America/Danmarkshavn', + 'America/Dawson' => 'America/Dawson', + 'America/Dawson_Creek' => 'America/Dawson Creek', + 'America/Denver' => 'America/Denver', + 'America/Detroit' => 'America/Detroit', + 'America/Dominica' => 'America/Dominica', + 'America/Edmonton' => 'America/Edmonton', + 'America/Eirunepe' => 'America/Eirunepe', + 'America/El_Salvador' => 'America/El Salvador', + 'America/Fortaleza' => 'America/Fortaleza', + 'America/Glace_Bay' => 'America/Glace Bay', + 'America/Godthab' => 'America/Godthab', + 'America/Goose_Bay' => 'America/Goose Bay', + 'America/Grand_Turk' => 'America/Grand Turk', + 'America/Grenada' => 'America/Grenada', + 'America/Guadeloupe' => 'America/Guadeloupe', + 'America/Guatemala' => 'America/Guatemala', + 'America/Guayaquil' => 'America/Guayaquil', + 'America/Guyana' => 'America/Guyana', + 'America/Halifax' => 'America/Halifax', + 'America/Havana' => 'America/Havana', + 'America/Hermosillo' => 'America/Hermosillo', + 'America/Indiana/Indianapolis' => 'America/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'America/Indiana/Knox', + 'America/Indiana/Marengo' => 'America/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'America/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'America/Indiana/Tell City', + 'America/Indiana/Vevay' => 'America/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'America/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'America/Indiana/Winamac', + 'America/Inuvik' => 'America/Inuvik', + 'America/Iqaluit' => 'America/Iqaluit', + 'America/Jamaica' => 'America/Jamaica', + 'America/Juneau' => 'America/Juneau', + 'America/Kentucky/Louisville' => 'America/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'America/Kentucky/Monticello', + 'America/Kralendijk' => 'America/Kralendijk', + 'America/La_Paz' => 'America/La Paz', + 'America/Lima' => 'America/Lima', + 'America/Los_Angeles' => 'America/Los Angeles', + 'America/Lower_Princes' => 'America/Lower Princes', + 'America/Maceio' => 'America/Maceio', + 'America/Managua' => 'America/Managua', + 'America/Manaus' => 'America/Manaus', + 'America/Marigot' => 'America/Marigot', + 'America/Martinique' => 'America/Martinique', + 'America/Matamoros' => 'America/Matamoros', + 'America/Mazatlan' => 'America/Mazatlan', + 'America/Menominee' => 'America/Menominee', + 'America/Merida' => 'America/Merida', + 'America/Metlakatla' => 'America/Metlakatla', + 'America/Mexico_City' => 'America/Mexico City', + 'America/Miquelon' => 'America/Miquelon', + 'America/Moncton' => 'America/Moncton', + 'America/Monterrey' => 'America/Monterrey', + 'America/Montevideo' => 'America/Montevideo', + 'America/Montreal' => 'America/Montreal', + 'America/Montserrat' => 'America/Montserrat', + 'America/Nassau' => 'America/Nassau', + 'America/New_York' => 'America/New York', + 'America/Nipigon' => 'America/Nipigon', + 'America/Nome' => 'America/Nome', + 'America/Noronha' => 'America/Noronha', + 'America/North_Dakota/Beulah' => 'America/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'America/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'America/North Dakota/New Salem', + 'America/Ojinaga' => 'America/Ojinaga', + 'America/Panama' => 'America/Panama', + 'America/Pangnirtung' => 'America/Pangnirtung', + 'America/Paramaribo' => 'America/Paramaribo', + 'America/Phoenix' => 'America/Phoenix', + 'America/Port-au-Prince' => 'America/Port-au-Prince', + 'America/Port_of_Spain' => 'America/Port of Spain', + 'America/Porto_Velho' => 'America/Porto Velho', + 'America/Puerto_Rico' => 'America/Puerto Rico', + 'America/Rainy_River' => 'America/Rainy River', + 'America/Rankin_Inlet' => 'America/Rankin Inlet', + 'America/Recife' => 'America/Recife', + 'America/Regina' => 'America/Regina', + 'America/Resolute' => 'America/Resolute', + 'America/Rio_Branco' => 'America/Rio Branco', + 'America/Santa_Isabel' => 'America/Santa Isabel', + 'America/Santarem' => 'America/Santarem', + 'America/Santiago' => 'America/Santiago', + 'America/Santo_Domingo' => 'America/Santo Domingo', + 'America/Sao_Paulo' => 'America/Sao Paulo', + 'America/Scoresbysund' => 'America/Scoresbysund', + 'America/Shiprock' => 'America/Shiprock', + 'America/Sitka' => 'America/Sitka', + 'America/St_Barthelemy' => 'America/St. Barthelemy', + 'America/St_Johns' => 'America/St. Johns', + 'America/St_Kitts' => 'America/St. Kitts', + 'America/St_Lucia' => 'America/St. Lucia', + 'America/St_Thomas' => 'America/St. Thomas', + 'America/St_Vincent' => 'America/St. Vincent', + 'America/Swift_Current' => 'America/Swift Current', + 'America/Tegucigalpa' => 'America/Tegucigalpa', + 'America/Thule' => 'America/Thule', + 'America/Thunder_Bay' => 'America/Thunder Bay', + 'America/Tijuana' => 'America/Tijuana', + 'America/Toronto' => 'America/Toronto', + 'America/Tortola' => 'America/Tortola', + 'America/Vancouver' => 'America/Vancouver', + 'America/Whitehorse' => 'America/Whitehorse', + 'America/Winnipeg' => 'America/Winnipeg', + 'America/Yakutat' => 'America/Yakutat', + 'America/Yellowknife' => 'America/Yellowknife', + + 'Antarctica/Casey' => 'Antarctica/Casey', + 'Antarctica/Davis' => 'Antarctica/Davis', + 'Antarctica/DumontDUrville' => 'Antarctica/DumontDUrville', + 'Antarctica/Macquarie' => 'Antarctica/Macquarie', + 'Antarctica/Mawson' => 'Antarctica/Mawson', + 'Antarctica/McMurdo' => 'Antarctica/McMurdo', + 'Antarctica/Palmer' => 'Antarctica/Palmer', + 'Antarctica/Rothera' => 'Antarctica/Rothera', + 'Antarctica/South_Pole' => 'Antarctica/South Pole', + 'Antarctica/Syowa' => 'Antarctica/Syowa', + 'Antarctica/Vostok' => 'Antarctica/Vostok', + + 'Arctic/Longyearbyen' => 'Arctic/Longyearbyen', + + 'Asia/Aden' => 'Asia/Aden', + 'Asia/Almaty' => 'Asia/Almaty', + 'Asia/Amman' => 'Asia/Amman', + 'Asia/Anadyr' => 'Asia/Anadyr', + 'Asia/Aqtau' => 'Asia/Aqtau', + 'Asia/Aqtobe' => 'Asia/Aqtobe', + 'Asia/Ashgabat' => 'Asia/Ashgabat', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Bahrain' => 'Asia/Bahrain', + 'Asia/Baku' => 'Asia/Baku', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Beirut' => 'Asia/Beirut', + 'Asia/Bishkek' => 'Asia/Bishkek', + 'Asia/Brunei' => 'Asia/Brunei', + 'Asia/Choibalsan' => 'Asia/Choibalsan', + 'Asia/Chongqing' => 'Asia/Chongqing', + 'Asia/Colombo' => 'Asia/Colombo', + 'Asia/Damascus' => 'Asia/Damascus', + 'Asia/Dhaka' => 'Asia/Dhaka', + 'Asia/Dili' => 'Asia/Dili', + 'Asia/Dubai' => 'Asia/Dubai', + 'Asia/Dushanbe' => 'Asia/Dushanbe', + 'Asia/Gaza' => 'Asia/Gaza', + 'Asia/Harbin' => 'Asia/Harbin', + 'Asia/Hebron' => 'Asia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Asia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Asia/Hong Kong', + 'Asia/Hovd' => 'Asia/Hovd', + 'Asia/Irkutsk' => 'Asia/Irkutsk', + 'Asia/Jakarta' => 'Asia/Jakarta', + 'Asia/Jayapura' => 'Asia/Jayapura', + 'Asia/Jerusalem' => 'Asia/Jerusalem', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Kamchatka' => 'Asia/Kamchatka', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kashgar' => 'Asia/Kashgar', + 'Asia/Kathmandu' => 'Asia/Kathmandu', + 'Asia/Khandyga' => 'Asia/Khandyga', + 'Asia/Kolkata' => 'Asia/Kolkata', + 'Asia/Krasnoyarsk' => 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Asia/Kuala Lumpur', + 'Asia/Kuching' => 'Asia/Kuching', + 'Asia/Kuwait' => 'Asia/Kuwait', + 'Asia/Macau' => 'Asia/Macau', + 'Asia/Magadan' => 'Asia/Magadan', + 'Asia/Makassar' => 'Asia/Makassar', + 'Asia/Manila' => 'Asia/Manila', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Nicosia' => 'Asia/Nicosia', + 'Asia/Novokuznetsk' => 'Asia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Asia/Novosibirsk', + 'Asia/Omsk' => 'Asia/Omsk', + 'Asia/Oral' => 'Asia/Oral', + 'Asia/Phnom_Penh' => 'Asia/Phnom Penh', + 'Asia/Pontianak' => 'Asia/Pontianak', + 'Asia/Pyongyang' => 'Asia/Pyongyang', + 'Asia/Qatar' => 'Asia/Qatar', + 'Asia/Qyzylorda' => 'Asia/Qyzylorda', + 'Asia/Rangoon' => 'Asia/Rangoon', + 'Asia/Riyadh' => 'Asia/Riyadh', + 'Asia/Sakhalin' => 'Asia/Sakhalin', + 'Asia/Samarkand' => 'Asia/Samarkand', + 'Asia/Seoul' => 'Asia/Seoul', + 'Asia/Shanghai' => 'Asia/Shanghai', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Taipei' => 'Asia/Taipei', + 'Asia/Tashkent' => 'Asia/Tashkent', + 'Asia/Tbilisi' => 'Asia/Tbilisi', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Thimphu' => 'Asia/Thimphu', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Asia/Ulaanbaatar' => 'Asia/Ulaanbaatar', + 'Asia/Urumqi' => 'Asia/Urumqi', + 'Asia/Ust-Nera' => 'Asia/Ust-Nera', + 'Asia/Vientiane' => 'Asia/Vientiane', + 'Asia/Vladivostok' => 'Asia/Vladivostok', + 'Asia/Yakutsk' => 'Asia/Yakutsk', + 'Asia/Yekaterinburg' => 'Asia/Yekaterinburg', + 'Asia/Yerevan' => 'Asia/Yerevan', + + 'Atlantic/Azores' => 'Atlantic/Azores', + 'Atlantic/Bermuda' => 'Atlantic/Bermuda', + 'Atlantic/Canary' => 'Atlantic/Canary', + 'Atlantic/Cape_Verde' => 'Atlantic/Cape Verde', + 'Atlantic/Faroe' => 'Atlantic/Faroe', + 'Atlantic/Madeira' => 'Atlantic/Madeira', + 'Atlantic/Reykjavik' => 'Atlantic/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlantic/South Georgia', + 'Atlantic/St_Helena' => 'Atlantic/St. Helena', + 'Atlantic/Stanley' => 'Atlantic/Stanley', + + 'Australia/Adelaide' => 'Australia/Adelaide', + 'Australia/Brisbane' => 'Australia/Brisbane', + 'Australia/Broken_Hill' => 'Australia/Broken Hill', + 'Australia/Currie' => 'Australia/Currie', + 'Australia/Darwin' => 'Australia/Darwin', + 'Australia/Eucla' => 'Australia/Eucla', + 'Australia/Hobart' => 'Australia/Hobart', + 'Australia/Lindeman' => 'Australia/Lindeman', + 'Australia/Lord_Howe' => 'Australia/Lord Howe', + 'Australia/Melbourne' => 'Australia/Melbourne', + 'Australia/Perth' => 'Australia/Perth', + 'Australia/Sydney' => 'Australia/Sydney', + + 'Europe/Amsterdam' => 'Europe/Amsterdam', + 'Europe/Andorra' => 'Europe/Andorra', + 'Europe/Athens' => 'Europe/Athens', + 'Europe/Belgrade' => 'Europe/Belgrade', + 'Europe/Berlin' => 'Europe/Berlin', + 'Europe/Bratislava' => 'Europe/Bratislava', + 'Europe/Brussels' => 'Europe/Brussels', + 'Europe/Bucharest' => 'Europe/Bucharest', + 'Europe/Budapest' => 'Europe/Budapest', + 'Europe/Busingen' => 'Europe/Busingen', + 'Europe/Chisinau' => 'Europe/Chisinau', + 'Europe/Copenhagen' => 'Europe/Copenhagen', + 'Europe/Dublin' => 'Europe/Dublin', + 'Europe/Gibraltar' => 'Europe/Gibraltar', + 'Europe/Guernsey' => 'Europe/Guernsey', + 'Europe/Helsinki' => 'Europe/Helsinki', + 'Europe/Isle_of_Man' => 'Europe/Isle of Man', + 'Europe/Istanbul' => 'Europe/Istanbul', + 'Europe/Jersey' => 'Europe/Jersey', + 'Europe/Kaliningrad' => 'Europe/Kaliningrad', + 'Europe/Kiev' => 'Europe/Kiev', + 'Europe/Lisbon' => 'Europe/Lisbon', + 'Europe/Ljubljana' => 'Europe/Ljubljana', + 'Europe/London' => 'Europe/London', + 'Europe/Luxembourg' => 'Europe/Luxembourg', + 'Europe/Madrid' => 'Europe/Madrid', + 'Europe/Malta' => 'Europe/Malta', + 'Europe/Mariehamn' => 'Europe/Mariehamn', + 'Europe/Minsk' => 'Europe/Minsk', + 'Europe/Monaco' => 'Europe/Monaco', + 'Europe/Moscow' => 'Europe/Moscow', + 'Europe/Oslo' => 'Europe/Oslo', + 'Europe/Paris' => 'Europe/Paris', + 'Europe/Podgorica' => 'Europe/Podgorica', + 'Europe/Prague' => 'Europe/Prague', + 'Europe/Riga' => 'Europe/Riga', + 'Europe/Rome' => 'Europe/Rome', + 'Europe/Samara' => 'Europe/Samara', + 'Europe/San_Marino' => 'Europe/San Marino', + 'Europe/Sarajevo' => 'Europe/Sarajevo', + 'Europe/Simferopol' => 'Europe/Simferopol', + 'Europe/Skopje' => 'Europe/Skopje', + 'Europe/Sofia' => 'Europe/Sofia', + 'Europe/Stockholm' => 'Europe/Stockholm', + 'Europe/Tallinn' => 'Europe/Tallinn', + 'Europe/Tirane' => 'Europe/Tirane', + 'Europe/Uzhgorod' => 'Europe/Uzhgorod', + 'Europe/Vaduz' => 'Europe/Vaduz', + 'Europe/Vatican' => 'Europe/Vatican', + 'Europe/Vienna' => 'Europe/Vienna', + 'Europe/Vilnius' => 'Europe/Vilnius', + 'Europe/Volgograd' => 'Europe/Volgograd', + 'Europe/Warsaw' => 'Europe/Warsaw', + 'Europe/Zagreb' => 'Europe/Zagreb', + 'Europe/Zaporozhye' => 'Europe/Zaporozhye', + 'Europe/Zurich' => 'Europe/Zurich', + + 'Indian/Antananarivo' => 'Indian/Antananarivo', + 'Indian/Chagos' => 'Indian/Chagos', + 'Indian/Christmas' => 'Indian/Christmas', + 'Indian/Cocos' => 'Indian/Cocos', + 'Indian/Comoro' => 'Indian/Comoro', + 'Indian/Kerguelen' => 'Indian/Kerguelen', + 'Indian/Mahe' => 'Indian/Mahe', + 'Indian/Maldives' => 'Indian/Maldives', + 'Indian/Mauritius' => 'Indian/Mauritius', + 'Indian/Mayotte' => 'Indian/Mayotte', + 'Indian/Reunion' => 'Indian/Reunion', + + 'Pacific/Apia' => 'Pacific/Apia', + 'Pacific/Auckland' => 'Pacific/Auckland', + 'Pacific/Chatham' => 'Pacific/Chatham', + 'Pacific/Chuuk' => 'Pacific/Chuuk', + 'Pacific/Easter' => 'Pacific/Easter', + 'Pacific/Efate' => 'Pacific/Efate', + 'Pacific/Enderbury' => 'Pacific/Enderbury', + 'Pacific/Fakaofo' => 'Pacific/Fakaofo', + 'Pacific/Fiji' => 'Pacific/Fiji', + 'Pacific/Funafuti' => 'Pacific/Funafuti', + 'Pacific/Galapagos' => 'Pacific/Galapagos', + 'Pacific/Gambier' => 'Pacific/Gambier', + 'Pacific/Guadalcanal' => 'Pacific/Guadalcanal', + 'Pacific/Guam' => 'Pacific/Guam', + 'Pacific/Honolulu' => 'Pacific/Honolulu', + 'Pacific/Johnston' => 'Pacific/Johnston', + 'Pacific/Kiritimati' => 'Pacific/Kiritimati', + 'Pacific/Kosrae' => 'Pacific/Kosrae', + 'Pacific/Kwajalein' => 'Pacific/Kwajalein', + 'Pacific/Majuro' => 'Pacific/Majuro', + 'Pacific/Marquesas' => 'Pacific/Marquesas', + 'Pacific/Midway' => 'Pacific/Midway', + 'Pacific/Nauru' => 'Pacific/Nauru', + 'Pacific/Niue' => 'Pacific/Niue', + 'Pacific/Norfolk' => 'Pacific/Norfolk', + 'Pacific/Noumea' => 'Pacific/Noumea', + 'Pacific/Pago_Pago' => 'Pacific/Pago Pago', + 'Pacific/Palau' => 'Pacific/Palau', + 'Pacific/Pitcairn' => 'Pacific/Pitcairn', + 'Pacific/Pohnpei' => 'Pacific/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacific/Port Moresby', + 'Pacific/Rarotonga' => 'Pacific/Rarotonga', + 'Pacific/Saipan' => 'Pacific/Saipan', + 'Pacific/Tahiti' => 'Pacific/Tahiti', + 'Pacific/Tarawa' => 'Pacific/Tarawa', + 'Pacific/Tongatapu' => 'Pacific/Tongatapu', + 'Pacific/Wake' => 'Pacific/Wake', + 'Pacific/Wallis' => 'Pacific/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Ian 2007, 13:37', + 'd M Y H:i' => '01 Ian 2007 13:37', + 'M jS, \'y, H:i' => '1 Ian, \'07, 13:37', + 'D M d, Y g:i a' => 'Lun 1 Ian, 2007 1:37 pm', + 'F jS, Y, g:i a' => '1 Ianuarie 2007, 1:37 pm', + '|d M Y|, H:i' => 'Astăzi, 13:37 / 01 Ian 2007, 13:37', + '|F jS, Y|, g:i a' => 'Astăzi, 1:37 pm / 1 Ianuarie 2007, 1:37 pm', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D d M, Y g:i a', // Lun 01 Ian, 2007 1:37 pm//schimbat pentru "ro" + +)); diff --git a/includes/shared/phpbb3/language/lang_romanian_ansi/index.htm b/includes/shared/phpbb3/language/lang_romanian_ansi/index.htm new file mode 100644 index 00000000..13431230 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian_ansi/index.htm @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_romanian_no_diacritics/common.php b/includes/shared/phpbb3/language/lang_romanian_no_diacritics/common.php new file mode 100644 index 00000000..3d623705 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian_no_diacritics/common.php @@ -0,0 +1,1416 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » “ †… +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Translation/Traducere: phpBB România', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'ro', + + // You can define different rules for the determination of plural forms here. + // See http://wiki.phpbb.com/Plural_Rules for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 1, + + '1_DAY' => '1 zi', + '1_MONTH' => '1 lună', + '1_YEAR' => '1 an', + '2_WEEKS' => '2 săptămâni', + '3_MONTHS' => '3 luni', + '6_MONTHS' => '6 luni', + '7_DAYS' => '7 zile', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Contul dumneavoastră a fost deja activat.', + 'ACCOUNT_DEACTIVATED' => 'Contul dumneavoastră a fost dezactivat manual ÅŸi poate fi reactivat doar de către un administrator.', + 'ACCOUNT_NOT_ACTIVATED' => 'Contul dumneavoastră încă nu a fost activat.', + 'ACP' => 'Panoul administratorului', + 'ACP_SHORT' => 'ACP', + 'ACTIVE' => 'activ', + 'ACTIVE_ERROR' => 'Numele de utilizator specificat este momentan inactiv. Dacă aveÅ£i probleme cu activarea contului, vă rugăm să contactaÅ£i un administrator.', + 'ADMINISTRATOR' => 'Administrator', + 'ADMINISTRATORS' => 'Administratori', + 'AGE' => 'Vârsta', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'Eroare AJAX', + 'AJAX_ERROR_TEXT' => 'Ceva a funcÈ›ionat eronat la procesarea cererii dvs.', + 'AJAX_ERROR_TEXT_ABORT' => 'Cerere abandonată.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'Cerera a expirat, încercaÈ›i din nou.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Ceva a funcÈ›ionat prost È™i serverul a returnat o valoare invalidă.', + 'ALLOWED' => 'Permis', + 'ALL_FILES' => 'Toate fiÅŸierele', + 'ALL_FORUMS' => 'Toate forumurile', + 'ALL_MESSAGES' => 'Toate mesajele', + 'ALL_POSTS' => 'Toate mesajele', + 'ALL_TIMES' => 'Ora este %1$s %2$s', + 'ALL_TOPICS' => 'Toate subiectele', + 'AND' => 'Åži', + 'ARE_WATCHING_FORUM' => 'AÅ£i subscris pentru a fi notificat de mesajele noi publicate în acest forum.', + 'ARE_WATCHING_TOPIC' => 'AÅ£i subscris pentru a fi notificat de mesajele noi publicate în acest subiect.', + 'ASCENDING' => 'Crescător', + 'ATTACHMENTS' => 'FiÅŸiere ataÅŸate', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'FiÅŸierul imagine pe care încercaÅ£i să-l ataÅŸaÅ£i este invalid.', + 'AUTHOR' => 'Autor', + 'AUTH_NO_PROFILE_CREATED' => 'Crearea profilului de utilizator nu a fost efectuată cu succes.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'ÃŽnregistrarea nevalidă în baza de date.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Serviciu invalid furnizat de OAuth.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'Serviciul OAuth nu a fost creat', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'Tokenul OAuth nu e stocat.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'Token OAuth stocat incorect.', + 'AVATAR_DISALLOWED_CONTENT' => 'ÃŽncărcarea a fost respinsă deoarece fiÅŸierul încărcat a fost identificat ca un posibil atac vector.', + 'AVATAR_DISALLOWED_EXTENSION' => 'FiÅŸierul nu poate fi afiÅŸat deoarece extensia %s nu este permisă.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Avatarul specificat nu a putut fi încărcat pentru că datele de la distanţă sunt invalide sau corupte.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'FiÅŸierul avatar încărcat este gol.', + 'AVATAR_INVALID_FILENAME' => '%s este un nume de fiÅŸier invalid.', + 'AVATAR_NOT_UPLOADED' => 'Avatarul nu a putut fi încărcat.', + 'AVATAR_NO_SIZE' => 'Lungimea sau înălÅ£imea avatarului specificat în legătură nu a putut fi determinată. Vă rugăm să le introduceÅ£i manual.', + 'AVATAR_PARTIAL_UPLOAD' => 'FiÅŸierul specificat a fost încărcat doar parÅ£ial.', + 'AVATAR_PHP_SIZE_NA' => 'Dimensiunea fiÅŸierului avatar este prea mare.
    Dimensiunea maximă permisă setată în php.ini nu a putut fi determinată.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Dimensiunea fişierului avatar este prea mare. Dimensiunea maximă permisă pentru încărcare este de %1$d %2$s.
    Ţineţi minte că aceasta este setată în php.ini şi nu poate fi suprascrisă.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'Avatarul specificat nu poate fi încărcat deoarece cererea a fost întreruptă.', + 'AVATAR_URL_INVALID' => 'URL-ul specificat este invalid.', + 'AVATAR_URL_NOT_FOUND' => 'Fişierul specificat nu a putut fi găsit.', + 'AVATAR_WRONG_FILESIZE' => 'Dimensiunea fişierului avatar trebuie să fie între 0 şi %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'Avatarul trimis este de %5$s pixeli lungime şi %6$s pixeli înălţime. Avatarurile trebuie să fie de cel puţin %1$s pixeli lungime şi %2$s pixeli înălţime, dar nu mai mari de %3$s pixeli lungime şi %4$s pixeli înălţime.', + + 'BACK_TO_TOP' => 'Sus', + 'BACK_TO_PREV' => 'Înapoi la pagina anterioară', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Adresa dumneavostră de e-mail a fost interzisă.', + 'BAN_TRIGGERED_BY_IP' => 'Adresa dumneavostră de IP a fost interzisă.', + 'BAN_TRIGGERED_BY_USER' => 'Numele dumneavostră de utilizator a fost interzis.', + 'BBCODE_GUIDE' => 'Ghidul codului BB', + 'BCC' => 'BCC', + 'BIRTHDAYS' => 'Zile de naştere', + 'BOARD_BAN_PERM' => 'Accesul dumneavoastră a fost interzis permanent pe acest forum.

    Vă rugăm să contactaţi %2$sadministratorul forumului%3$s pentru mai multe informaţii.', + 'BOARD_BAN_REASON' => 'Motivul interzicerii: %s', + 'BOARD_BAN_TIME' => 'Accesul dumneavoastră a fost interzis pe acest forum până%1$s.

    Vă rugăm să contactaÅ£i %2$sadministratorul forumului%3$s pentru mai multe informaÅ£ii.', + 'BOARD_DISABLE' => 'Ne pare rău, dar acest forum este momentan indisponibil.', + 'BOARD_DISABLED' => 'Acest forum este momentan dezactivat.', + 'BOARD_UNAVAILABLE' => 'Ne pare rău, dar acest forum, momentan nu este disponibil. Vă rugăm să încercaÅ£i din nou în câteva minute.', + 'BROWSING_FORUM' => 'Utilizatorii ce navighează pe acest forum: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitator', + 2 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitatori', + ), + 'BUTTON_EDIT' => 'Modificare', + 'BUTTON_FORUM_LOCKED' => 'ÃŽnchis', + 'BUTTON_NEW_TOPIC' => 'Subiect nou', + 'BUTTON_PM' => 'MP', + 'BUTTON_PM_FORWARD' => 'Trimite mai departe', + 'BUTTON_PM_NEW' => 'MP nou', + 'BUTTON_PM_REPLY' => 'Trimite răspuns', + 'BUTTON_PM_REPLY_ALL' => 'Răspunde la toÈ›i', + 'BUTTON_POST_REPLY' => 'Scrie răspuns', + 'BUTTON_QUOTE' => 'Citează', + 'BUTTON_TOPIC_LOCKED' => 'ÃŽnchis', + 'BYTES' => 'OcteÅ£i', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Anulează', + 'CHANGE' => 'Schimbă', + 'CHANGE_FONT_SIZE' => 'Schimbă dimensiunea fontului', + 'CHANGING_PREFERENCES' => 'Schimbare preferinÅ£e forum', + 'CHANGING_PROFILE' => 'Schimbare preferinÅ£e profil', + 'CHARACTERS' => array( + 1 => '%d caracter', + 2 => '%d caractere', + ), + 'COLLAPSE_VIEW' => 'Vizualizare restrânsă', + 'CLOSE_WINDOW' => 'ÃŽnchide fereastra', + 'COLOUR_SWATCH' => 'Schimbă culoarea', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirmă', + 'CONFIRM_CODE' => 'Codul de confirmare', + 'CONFIRM_CODE_EXPLAIN' => 'IntroduceÅ£i codul exact cum apare. Nu există diferenţă între literele mari ÅŸi cele mici.', + 'CONFIRM_CODE_WRONG' => 'Codul de confirmare introdus este incorect.', + 'CONFIRM_OPERATION' => 'SunteÅ£i sigur că vreÅ£i să continuaÅ£i această operaÅ£iune?', + 'CONFIRM_AVATAR_DELETE' => 'EÈ™ti sigur că vrei să stergi acest avatar?', + 'CONGRATULATIONS' => 'La mulÈ›i ani! ', + 'CONNECTION_FAILED' => 'Conexiune eÅŸuată.', + 'CONNECTION_SUCCESS' => 'Conexiunea a fost efectuată cu succes!', + 'CONTACT' => 'Contact', + 'CONTACT_USER' => 'Contactează pe %s', + 'CONTACT_US' => 'Contactează-ne', + 'COOKIES_DELETED' => 'Toate cookie-urile forumului au fost ÅŸterse cu succes.', + 'CURRENT_TIME' => 'Acum este %s', + + 'DAY' => 'Zi', + 'DAYS' => 'Zile', + 'DELETE' => 'Åžterge', + 'DELETE_ALL' => 'Åžterge tot', + 'DELETE_COOKIES' => 'Åžterge toate cookie-urile forumului', + 'DELETE_MARKED' => 'Åžterge mesajele marcate', + 'DELETE_POST' => 'Åžterge mesaj', + 'DELIMITER' => 'Delimitator', + 'DESCENDING' => 'Descrescător', + 'DISABLED' => 'Dezactivat', + 'DISPLAY' => 'AfiÅŸează', + 'DISPLAY_GUESTS' => 'AfiÅŸează vizitatori', + 'DISPLAY_MESSAGES' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_POSTS' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_TOPICS' => 'AfiÅŸează subiectele din ultimele', + 'DOWNLOADED' => 'Descărcat', + 'DOWNLOADING_FILE' => 'FiÅŸierul se descarcă', + 'DOWNLOAD_COUNTS' => array( + 0 => 'ÃŽncă nu a fost nedescărcat', + 1 => 'Descărcat %d dată', + 2 => 'Descărcat de %d ori', + ), + + 'EDIT_POST' => 'Modifică mesaj', + 'ELLIPSIS' => '…', + 'EMAIL' => 'Email', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Adresă email', + 'EMAIL_INVALID_EMAIL' => 'Adresa de email introdusă este invalidă.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Probleme în trimiterea email-ului la Linia %1$s. Răspuns: %2$s.', + 'EMPTY_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când scrieÅ£i un subiect nou.', + 'EMPTY_MESSAGE_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când compuneÅ£i un mesaj nou.', + 'ENABLED' => 'Activat', + 'ENCLOSURE' => 'ÃŽmprejmuire', + 'ENTER_USERNAME' => 'IntroduceÈ›i nume utilizator', + 'ERR_CHANGING_DIRECTORY' => 'Nu s-a putut schimba directorul.', + 'ERR_CONNECTING_SERVER' => 'Eroare în efectuarea conexiunii către server.', + 'ERR_JAB_AUTH' => 'Nu s-a putut autentifica la serverul de Jabber.', + 'ERR_JAB_CONNECT' => 'Nu s-a putut conecta la serverul de Jabber.', + 'ERR_UNABLE_TO_LOGIN' => 'Numele de utilizator sau parola specificată sunt greÅŸite.', + 'ERR_UNWATCHING' => 'Eroare la încercarea de dezabonare.', + 'ERR_WATCHING' => 'Eroare la încercarea de abonare.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'Calea specificată către phpBB este invalidă.', + 'ERROR' => 'Eroare!', + 'EXPAND_VIEW' => 'Vizualizare extinsă', + 'EXTENSION' => 'Extensie', + 'EXTENSION_DISABLED' => 'Extensia %s nu e permisă.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'Extensia %s a fost dezactivată ÅŸi nu mai poate fi afiÅŸată.', + 'EXTENSION_DOES_NOT_EXIST' => 'Extensia %s nu există.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'ÃŽntrebări puse frecvent', + 'FILENAME' => 'Nume fiÅŸier', + 'FILESIZE' => 'Dimensiune fiÅŸier', + 'FILEDATE' => 'Dată fiÅŸier', + 'FILE_COMMENT' => 'Comentariu fiÅŸier', + 'FILE_CONTENT_ERR' => 'Nu se poate citi conÈ›inutul fiÈ™ierului: %s', + 'FILE_JSON_DECODE_ERR' => 'Decodarea fiÈ™ierului json eÈ™uată: %s', + 'FILE_NOT_FOUND' => 'FiÅŸierul cerut nu a putut fi găsit: %s', + 'FIND_USERNAME' => 'Caută un membru', + 'FOLDER' => 'Folder', + 'FORGOT_PASS' => 'Am uitat parola', + 'FORM_INVALID' => 'Formularul trimis a fost invalid. IncercaÅ£i să-l retrimiteÅ£i.', + 'FORUM' => 'Forum', + 'FORUMS' => 'Forumuri', + 'FORUMS_MARKED' => 'Forumurile au fost marcate ca fiind citite.', + 'FORUM_CAT' => 'Categorie forum', + 'FORUM_INDEX' => 'Prima pagină', + 'FORUM_LINK' => 'Link forum', + 'FORUM_LOCATION' => 'LocaÅ£ie forum', + 'FORUM_LOCKED' => 'Forum închis', + 'FORUM_RULES' => 'Reguli forum', + 'FORUM_RULES_LINK' => 'Accesează link-ul pentru a putea vedea regulile forumului', + 'FROM' => 'de la', + 'FSOCK_DISABLED' => 'OperaÅ£iunea nu a putut fi finalizată deoarece funcÅ£ia fsockopen a fost dezactivată sau serverul care este interogat nu a fost găsit.', + 'FSOCK_TIMEOUT' => 'Nu am putut ajunge la serverul din reÈ›ea.', + + 'FTP_FSOCK_HOST' => 'Host FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_FSOCK_PASSWORD' => 'Parola FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_FSOCK_PORT' => 'Port FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_FSOCK_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_FSOCK_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_FSOCK_USERNAME' => 'Nume de utilizator FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'FTP_HOST' => 'Host FTP', + 'FTP_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_PASSWORD' => 'Parola FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_PORT' => 'Port FTP', + 'FTP_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_USERNAME' => 'Nume de utilizator FTP', + 'FTP_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'GENERAL_ERROR' => 'Eroare generală', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Du-te la primul mesaj', + 'GOTO_LAST_POST' => 'Du-te la ultimul mesaj', + 'GO' => 'Du-te', + 'GOTO_PAGE' => 'Du-te la pagina', + 'GROUP' => 'Grup', + 'GROUPS' => 'Grupuri', + 'GROUP_ERR_TYPE' => 'Tipul de grup specificat este nepotrivit.', + 'GROUP_ERR_USERNAME' => 'Numele grupului nu a fost specificat.', + 'GROUP_ERR_USER_LONG' => 'Numele grupului nu poate depăşi 60 de caractere. Numele grupului specificat este prea mare.', + 'GUEST' => 'Vizitator', + 'GUEST_USERS_ONLINE' => array( + 1 => 'Este %d vizitator online', + 2 => 'Sunt %d vizitatori online', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d vizitator', + 2 => '%d vizitatori', + ), + 'G_ADMINISTRATORS' => 'Administratori', + 'G_BOTS' => 'BoÅ£i', + 'G_GUESTS' => 'Vizitatori', + 'G_REGISTERED' => 'Utilizatori înregistraÅ£i', + 'G_REGISTERED_COPPA' => 'Utilizatori COPPA înregistraÅ£i', + 'G_GLOBAL_MODERATORS' => 'Moderatori globali', + 'G_NEWLY_REGISTERED' => 'Utilizatori înregistraÅ£i recent', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d utilizator ascuns', + 2 => '%d utilizatori ascunÈ™i', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d ascuns', + 2 => '%d ascunÈ™i', + ), + 'HIDE_GUESTS' => 'Ascunde vizitatori', + 'HIDE_ME' => 'Ascunde starea mea online în această sesiune', + 'HOURS' => 'Ore', + 'HOME' => 'Acasă', + + 'ICQ' => 'ICQ', + 'IF' => 'Dacă', + 'IMAGE' => 'Imagine', + 'IMAGE_FILETYPE_INVALID' => 'Tip de fiÅŸier imagine %d pentru tipul mime %s nu este suportat.', + 'IMAGE_FILETYPE_MISMATCH' => 'Tip de fiÅŸier imagine nepotrivit: extensie aÅŸteptată %1$s, dar este furnizată extensie %2$s.', + 'IN' => 'în', + 'INACTIVE' => 'Inactiv', + 'INDEX' => 'Prima pagină', + 'INFORMATION' => 'InformaÅ£ie', + 'INSECURE_REDIRECT' => 'Incercare de redirecÈ›ionare către un URL potenÈ›ial nesigur.', + 'INTERESTS' => 'Interese', + 'INVALID_DIGEST_CHALLENGE' => 'Cerere invalidă de sistematizare.', + 'INVALID_EMAIL_LOG' => '%s o adresă de e-mail posibil invalidă?', + 'INVALID_PLURAL_RULE' => 'Alegerea mai multor reguli nu e validă. Valorile valide sunt cuprinse între 0 È™i 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'IP-ul dumneavoastră %1$s a fost blocat pentru că este în lista neagră. Pentru detalii vizualizaÅ£i %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Membru din', + 'JUMP_PAGE' => 'IntroduceÅ£i numărul paginii la care doriÅ£i să vă duceÅ£i.', + 'JUMP_TO' => 'Mergi la', + 'JUMP_TO_PAGE' => 'Click pentru a vă duce la pagina…', + 'JUMP_TO_PAGE_CLICK' => 'Click pentru a vă duce la pagina…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Ultimul mesaj', + 'LAST_UPDATED' => 'Ultima actualizare', + 'LAST_VISIT' => 'Ultima vizită', + 'LDAP_NO_LDAP_EXTENSION' => 'Extensia LDAP nu este valabilă.', + 'LDAP_NO_SERVER_CONNECTION' => 'Nu s-a putut efectua conexiunea la server-ul LDAP.', + 'LDAP_SEARCH_FAILED' => 'O eroare a apărut în timpul căutării în directorul LDAP.', + 'LEGEND' => 'Legendă', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Căutarile directe nu sunt permise.', + 'LOADING' => 'ÃŽncărcare', + 'LOCATION' => 'Localitate', + 'LOCK_POST' => 'ÃŽnchide mesaj', + 'LOCK_POST_EXPLAIN' => 'Previne editarea', + 'LOCK_TOPIC' => 'ÃŽnchide subiect', + 'LOGIN' => 'Autentificare', + 'LOGIN_CHECK_PM' => 'Autentifică-te pentru a-Å£i verifica mesajele private.', + 'LOGIN_CONFIRMATION' => 'Confirmare autentificare', + 'LOGIN_CONFIRM_EXPLAIN' => 'Pentru a preveni conturile forÅ£ate, forumul vă cere să introduceÅ£i un cod de confirmare după un număr maxim de încercări de autentificare eÅŸuate. Codul este afiÅŸat în imaginea de mai jos. Dacă aveÅ£i probleme cu vizualizarea acestuia sau nu puteÅ£i citi codul, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_ATTEMPTS' => 'AÅ£i depăşit numărul maxim de încercări de autentificare. AdiÅ£ional cu numele de utilizator ÅŸi parola mai trebuie să verificaÅ£i componenta afiÅŸată mai jos.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Nu aÅ£i fost autentificat de Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'Un serviciu OAuth inexistent a fost solicitat.', + 'LOGIN_ERROR_PASSWORD' => 'AÅ£i specificat o parolă incorectă. Vă rugăm să vă verificaÅ£i parola ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Nu a fost posibil să fie convertită parola în timpul actualizării softului de forum. Vă rugăm să %scereÅ£i o nouă parolă%s. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_USERNAME' => 'AÅ£i specificat un nume de utilizator incorect. Vă rugăm să vă verificaÅ£i numele de utilizator ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_FORUM' => 'Pentru a vizualiza sau scrie în acest forum, trebuie să introduceÅ£i parola.', + 'LOGIN_INFO' => 'Pentru a vă autentifica, trebuie să vă înregistraÅ£i. ÃŽnregistrarea durează câteva secunde, dar vă va oferi facilităţi suplimentare. Administratorul forumului poate de asemenea să acorde permisiuni suplimentare utilizatorilor înregistraÅ£i. ÃŽnainte de a vă autentifica, asiguraÅ£i-vă că sunteÅ£i familiarizat cu termenii noÅŸtri de folosire ÅŸi politicile asociate. Vă rugăm să vă asiguraÅ£i că aÅ£i citit regulile forumului înainte să navigaÅ£i pe acesta.', + 'LOGIN_VIEWFORUM' => 'Necesită să fiÅ£i înregistrat ÅŸi autentificat pentru a putea vizualiza acest forum.', + 'LOGIN_EXPLAIN_EDIT' => 'Pentru a putea modifica mesajele din acest forum, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Pentru a putea vizualiza lista cu cei care sunt online, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_REQUIRED' => 'Trebuie să fiÈ›i autentificat pentru această acÈ›iune.', + 'LOGOUT' => 'Deconectare', + 'LOGOUT_USER' => 'Deconectare [ %s ]', + 'LOG_ME_IN' => 'Autentifică-mă automat la fiecare vizită', + + 'MAIN' => 'Main', + 'MARK' => 'Marchează', + 'MARK_ALL' => 'Marchează toate', + 'MARK_ALL_READ' => 'Marchează toate citite', + 'MARK_FORUMS_READ' => 'Marchează forumurile ca fiind citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile ca fiind citite', + 'MARK_READ' => 'Marchează drept citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile citite', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Panoul moderatorului', + 'MCP_SHORT' => 'MCP', + 'MEMBERLIST' => 'Membri', + 'MEMBERLIST_EXPLAIN' => 'Vezi lista completă a membrilor', + 'MERGE' => 'UneÅŸte', + 'MERGE_POSTS' => 'Mută mesaje', + 'MERGE_TOPIC' => 'UneÅŸte subiecte', + 'MESSAGE' => 'Mesaj', + 'MESSAGES' => 'Mesaje', + 'MESSAGES_COUNT' => array( + 1 => '%d mesaj', + 2 => '%d mesaje', + ), + 'MESSAGE_BODY' => 'Corpul mesajului', + 'MINUTES' => 'Minute', + 'MODERATE' => 'Moderează', + 'MODERATOR' => 'Moderator', + 'MODERATORS' => 'Moderatori', + 'MODULE_NOT_ACCESS' => 'Modulul nu e accesibil', + 'MODULE_NOT_FIND' => 'Modulul %s nu poate fi găsit', + 'MODULE_FILE_INCORRECT_CLASS' => 'FiÈ›ierul modulului %s nu conÈ›ine clasa corectă [%s]', + 'MONTH' => 'Lună', + 'MOVE' => 'Mută', + + 'NA' => 'N/A', + 'NEWEST_USER' => 'Cel mai nou membru %s', + 'NEW_MESSAGE' => 'Mesaj nou', + 'NEW_MESSAGES' => 'Mesaje noi', + 'NEW_POST' => 'Mesaj nou', + 'NEW_POSTS' => 'Mesaje noi', + 'NEXT' => 'Următorul', // Used in pagination + 'NEXT_STEP' => 'Următorul', + 'NEVER' => 'Niciodată', + 'NO' => 'Nu', + 'NO_NOTIFICATIONS' => 'Nu aveÈ›i notificări', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Nu sunteÅ£i autorizat să conduceÅ£i acest grup.', + 'NOT_AUTHORISED' => 'Nu sunteÅ£i autorizat să accesaÅ£i această zonă.', + 'NOT_WATCHING_FORUM' => 'Nu mai sunteÅ£i abonat la actualizările acestui forum.', + 'NOT_WATCHING_TOPIC' => 'Nu mai sunteÅ£i abonat la acest subiect.', + 'NOTIFICATIONS' => 'Notificări', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Răspuns de la %1$s în subiectul urmărit:', + ), + 'NOTIFICATION_FORUM' => 'Forum: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Cerere de la %1$s pentru aderare la grupul %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Cerere aprobată pentru a adera la grupul %1$s.', + 'NOTIFICATION_PM' => 'Mesaj privat de la %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Răspuns de la %1$s în subiectul:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Mesaj aprobat:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Mesaj neaprobat:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Arobare mesaj solicitată de %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Citat de %1$s în:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Motiv: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'Mesaj privat raportat de %1$s:', + 'NOTIFICATION_REPORT_POST' => 'Mesaj raportat de %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Raport închis de %1$s for:', + 'NOTIFICATION_TOPIC' => 'Subiect nou de %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Subiect aprobat:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Subiect neaprobat:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Aprobare subiect solicitată de %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'Tipul de notificare "%s" lipseÈ™te din fiÈ™ierele sistemului.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Activare solicitată pentru utilizator dezactivat sau nou înregistrat: “%1$sâ€', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'alÈ›ii', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d others', + ), + 'NOTIFY_ADMIN' => 'Vă rugăm să anunÅ£aÅ£i administratorul forumului sau webmaster-ul.', + 'NOTIFY_ADMIN_EMAIL' => 'Va rugăm să anunÅ£ati administratorul forumului sau webmaster-ul: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Nu sunteÅ£i autorizat să accesaÅ£i acest fiÅŸier.', + 'NO_ACTION' => 'Nicio acÅ£iune specificată.', + 'NO_ADMINISTRATORS' => 'Nu sunt administratori.', + 'NO_AUTH_ADMIN' => 'Accesul la Panoul administratorului este interzis pentru că nu aveÅ£i permisiuni administrative.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Nu puteÅ£i să vă reautentificaÅ£i ca un alt utilizator.', + 'NO_AUTH_OPERATION' => 'Nu aveÅ£i permisiunile necesare pentru a termina această operaÅ£ie.', + 'NO_AVATARS' => 'Nu există imagini asociate (avatar) disponibile', + 'NO_CONNECT_TO_SMTP_HOST' => 'Nu s-a putut efectua conexiunea către hostul smtp: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Astăzi nu sărbătorim nici o zi de naÅŸtere', + 'NO_EMAIL_MESSAGE' => 'Emailul a fost gol.', + 'NO_EMAIL_RESPONSE_CODE' => 'Nu s-au putut lua codurile de răspuns ale server-ului de email.', + 'NO_EMAIL_SUBJECT' => 'Nu aÅ£i specificat subiectul e-mailului.', + 'NO_FORUM' => 'Forumul selectat nu există.', + 'NO_FORUMS' => 'Nu există forumuri.', + 'NO_GROUP' => 'Grupul cerut nu există.', + 'NO_GROUP_MEMBERS' => 'Acest grup momentan nu are membri.', + 'NO_IPS_DEFINED' => 'Niciun IP sau hostname nu a fost definit', + 'NO_MEMBERS' => 'Niciun membru nu a fost găsit pentru aceste criterii de căutare.', + 'NO_MESSAGES' => 'Niciun mesaj', + 'NO_MODE' => 'Niciun mod specificat.', + 'NO_MODERATORS' => 'Nu sunt moderatori.', + 'NO_NEW_MESSAGES' => 'Niciun mesaj nou', + 'NO_NEW_POSTS' => 'Niciun mesaj nou', + 'NO_ONLINE_USERS' => 'Niciun utilizator înregistrat', + 'NO_POSTS' => 'Niciun mesaj', + 'NO_POSTS_TIME_FRAME' => 'Nu există niciun mesaj în interiorul acestui subiect pentru perioada de timp selectată.', + 'NO_FEED_ENABLED' => 'Fluxurile nu sunt disponibile pentru acest forum.', + 'NO_FEED' => 'Fluxul solicitat nu este disponibil.', + 'NO_STYLE_DATA' => 'Nu au putut fi obÈ›inute datele stilului', + 'NO_SUBJECT' => 'Niciun subiect specificat', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'Backend-ul de căutare specificat nu există.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Nu există nicio metodă de autentificare.', + 'NO_TOPIC' => 'Subiectul specificat nu există.', + 'NO_TOPIC_FORUM' => 'Subiectul sau forumul nu există.', + 'NO_TOPICS' => 'Nu există subiecte sau mesaje în acest forum.', + 'NO_TOPICS_TIME_FRAME' => 'Nu există niciun subiect în interiorul acestui forum pentru perioada de timp selectată.', + 'NO_UNREAD_POSTS' => 'Nu sunt mesaje necitite', + 'NO_UPLOAD_FORM_FOUND' => 'ÃŽncărcare iniÅ£iată, dar nu a fost găsit niciun formular de încărcare valid.', + 'NO_USER' => 'Utilizatorul specificat nu există.', + 'NO_USERS' => 'Utilizatorii specificaÅ£i nu există.', + 'NO_USER_SPECIFIED' => 'Nu a fost specificat niciun nume de utilizator.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d ataÈ™ament', + 2 => '%d ataÈ™amente', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Nu există mesaje în aÈ™teptare', // 0 + 1 => '1 mesaj în aÈ™teptare', // 1 + 2 => '%d mesaje în aÈ™teptare', // 2+ + ), + + 'OCCUPATION' => 'OcupaÅ£ia', + 'OFFLINE' => 'Neconectat', + 'ONLINE' => 'Conectat', + 'ONLINE_BUDDIES' => 'Prieteni conectaÅ£i', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'In total este %1$d utilizator online :: %2$s È™i %3$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s È™i %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'In total este %1$d utilizator online :: %2$s, %3$s È™i %4$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s, %3$s È™i %4$s', + ), + 'OPTIONS' => 'OpÅ£iuni', + + 'PAGE_OF' => 'Pagina %1$d din %2$d', + 'PAGE_TITLE_NUMBER' => 'Pagina %s', + 'PASSWORD' => 'Parolă', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d pixel', + 2 => '%d pixeli', + ), + 'PLAY_QUICKTIME_FILE' => 'Deschide fiÅŸierul Quicktime', + 'PLEASE_WAIT' => 'Vă rugăm aÈ™teptaÈ›i.', + 'PM' => 'MP', + 'PM_REPORTED' => 'ApăsaÅ£i aici ca să citiÅ£i raportul', + 'POSTING_MESSAGE' => 'Scrie mesaj în %s', + 'POSTING_PRIVATE_MESSAGE' => 'Compune mesaj privat', + 'POST' => 'Mesaj', + 'POST_ANNOUNCEMENT' => 'AnunÅ£', + 'POST_STICKY' => 'Important', + 'POSTED' => 'Scris', + 'POSTED_IN_FORUM' => 'în', + 'POSTED_ON_DATE' => 'pe', + 'POSTS' => 'Mesaje', + 'POSTS_UNAPPROVED' => 'Cel puÅ£in un mesaj din acest subiect nu a fost aprobat.', + 'POSTS_UNAPPROVED_FORUM'=> 'Cel puÈ›in un mesaj în acest forum nu este aprobat.', + 'POST_BY_AUTHOR' => 'de', + 'POST_BY_FOE' => 'Acest mesaj a fost făcut de %1$s care este momentan în lista de ignore.', + 'POST_DISPLAY' => '%1$sAfiÈ™ează acest mesaj%2$s.', + 'POST_DAY' => '%.2f mesaje pe zi', + 'POST_DELETED_ACTION' => 'Mesaje È™terse:', + 'POST_DELETED' => 'Acest mesaj a fost È™ters.', + 'POST_DELETED_BY' => '%2$s È™terse de %1$s la %3$s.', + 'POST_DELETED_BY_REASON'=> '%2$s È™terse de %1$s la %3$s pentru motivul: %4$s', + 'POST_DETAILS' => 'Detalii mesaj', + 'POST_NEW_TOPIC' => 'Scrie un subiect nou', + 'POST_PCT' => '%.2f%% din toate mesajele', + 'POST_PCT_ACTIVE' => '%.2f%% din mesajele utilizatorului', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% din mesajele dumneavoastră', + 'POST_REPLY' => 'Răspunde', + 'POST_REPORTED' => 'AccesaÅ£i pentru a consulta raportul', + 'POST_SUBJECT' => 'Subiectul mesajului', + 'POST_TIME' => 'Dată mesaj', + 'POST_TOPIC' => 'Scrie un subiect nou', + 'POST_UNAPPROVED_ACTION'=> 'Mesaj care aÈ™teaptă aprobarea:', + 'POST_UNAPPROVED' => 'Acest mesaj aÅŸteaptă pentru a fi aprobat', + 'POWERED_BY' => 'Furnizat de %s', + 'PREVIEW' => 'Previzualizează', + 'PREVIOUS' => 'Anterior', // Used in pagination + 'PREVIOUS_STEP' => 'Anterior', + 'PRIVACY' => 'Politica de confidenÅ£ialitate', + 'PRIVATE_MESSAGE' => 'Mesaj privat', + 'PRIVATE_MESSAGES' => 'Mesaje private', + 'PRIVATE_MESSAGING' => 'Mesageria privată', + 'PROFILE' => 'Panoul utilizatorului', + + 'QUICK_LINKS' => 'Legături rapide', + + 'RANK' => 'Rang', + 'READING_FORUM' => 'Vizualizare subiecte în %s', + 'READING_GLOBAL_ANNOUNCE' => 'CiteÅŸte anunÅ£urile globale', + 'READING_LINK' => 'Accesare linkul forumului %s', + 'READING_TOPIC' => 'CiteÅŸte subiect în %s', + 'READ_PROFILE' => 'Profil', + 'REASON' => 'Motiv', + 'RECORD_ONLINE_USERS' => 'Cei mai mulÅ£i utilizatori conectaÅ£i au fost %1$s pe %2$s', + 'REDIRECT' => 'RedirecÅ£ionează', + 'REDIRECTS' => 'Totalul redirecÅ£ionărilor', + 'REGISTER' => 'ÃŽnregistrare', + 'REGISTERED_USERS' => 'Utilizatori înregistraÅ£i:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'Aici este %1$d utilizator înregistrat È™i %2$s online', + 2 => 'Aici sunt %1$d utilizatori înregistraÈ›i È™i %2$s online', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d înregistrat', + 2 => '%d înregistraÈ›i', + ), + 'REMOVE' => 'Elimină', + 'REMOVE_INSTALL' => 'Åžterge, mută sau redenumeÅŸte directorul install înainte de a folosi forumul. Dacă acest director este în continuare prezent, numai Panoul administratorului (PA) va fi accesibil.', + 'REPLIES' => 'Răspunsuri', + 'REPLY_WITH_QUOTE' => 'Răspuns cu citat', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Răspuns la anunÅ£ul global', + 'REPLYING_MESSAGE' => 'Răspunde mesajului din %s', + 'REPORT_BY' => 'Raportat de', + 'REPORT_POST' => 'Raportează acest mesaj', + 'REPORTING_POST' => 'Raportând mesajul', + 'RESEND_ACTIVATION' => 'Retrimite e-mail-ul de activare', + 'RESET' => 'Resetare', + 'RESTORE_PERMISSIONS' => 'Restabilire permisiuni', + 'RETURN_INDEX' => '%sÃŽnapoi la prima pagină%s', + 'RETURN_FORUM' => '%sÃŽnapoi la ultimul forum vizitat%s', + 'RETURN_PAGE' => '%sÃŽnapoi la pagina anterioară%s', + 'RETURN_TOPIC' => '%sÃŽnapoi la ultimul subiect vizitat%s', + 'RETURN_TO' => 'ÃŽnapoi la “%sâ€', + 'RETURN_TO_INDEX' => 'ÃŽnapoi la indexul forumului', + 'FEED' => 'Flux', + 'FEED_NEWS' => 'Åžtiri', + 'FEED_TOPICS_ACTIVE' => 'Subiecte active', + 'FEED_TOPICS_NEW' => 'Subiecte noi', + 'RULES_ATTACH_CAN' => 'PuteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_ATTACH_CANNOT' => 'Nu puteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_DELETE_CAN' => 'PuteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DELETE_CANNOT' => 'Nu puteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DOWNLOAD_CAN' => 'PuteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_DOWNLOAD_CANNOT' => 'Nu puteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_EDIT_CAN' => 'PuteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_EDIT_CANNOT' => 'Nu puteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_LOCK_CAN' => 'PuteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_LOCK_CANNOT' => 'Nu puteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_POST_CAN' => 'PuteÅ£i scrie subiecte noi în acest forum', + 'RULES_POST_CANNOT' => 'Nu puteÅ£i scrie subiecte noi în acest forum', + 'RULES_REPLY_CAN' => 'PuteÅ£i răspunde subiectelor din acest forum', + 'RULES_REPLY_CANNOT' => 'Nu puteÅ£i răspunde subiectelor din acest forum', + 'RULES_VOTE_CAN' => 'PuteÅ£i vota în chestionarele din acest forum', + 'RULES_VOTE_CANNOT' => 'Nu puteÅ£i vota în chestionarele din acest forum', + + 'SEARCH' => 'Căutare', + 'SEARCH_MINI' => 'Căutare…', + 'SEARCH_ADV' => 'Căutare avansată', + 'SEARCH_ADV_EXPLAIN' => 'Vezi opÅ£iuni căutare avansată', + 'SEARCH_KEYWORDS' => 'Căutare după cuvinte cheie', + 'SEARCHING_FORUMS' => 'Căutare forumuri', + 'SEARCH_ACTIVE_TOPICS' => 'Vezi subiecte active', + 'SEARCH_FOR' => 'Căutare după', + 'SEARCH_FORUM' => 'Căutare în acest forum…', + 'SEARCH_NEW' => 'Vezi mesaje noi', + 'SEARCH_POSTS_BY' => 'Căutare mesaje după', + 'SEARCH_SELF' => 'Vezi mesaje proprii', + 'SEARCH_TOPIC' => 'Căutare în acest subiect…', + 'SEARCH_UNANSWERED' => 'Vezi subiecte fără răspuns', + 'SEARCH_UNREAD' => 'Vezi mesaje necitite', + 'SEARCH_USER_POSTS' => 'Caută mesajele utilizatorului', + 'SECONDS' => 'Secunde', + 'SEE_ALL' => 'Vezi tot', + 'SELECT' => 'SelectaÅ£i', + 'SELECT_ALL_CODE' => 'SelectaÅ£i tot', + 'SELECT_DESTINATION_FORUM' => 'Vă rugăm să selectaÅ£i un forum destinaÅ£ie', + 'SELECT_FORUM' => 'SelectaÅ£i un forum', + 'SEND_EMAIL' => 'E-mail', // Used for submit buttons + 'SEND_EMAIL_USER' => 'E-mail către %s', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX + 'SEND_PRIVATE_MESSAGE' => 'TrimiteÅ£i mesaj privat', + 'SETTINGS' => 'Setări', + 'SIGNATURE' => 'Semnătură', + 'SKIP' => 'Treci peste conÅ£inut', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'Server-ul SMTP nu suportă autentificarea.', + 'SORRY_AUTH_READ' => 'Nu sunteÅ£i autorizat să citiÅ£i acest forum.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Nu sunteÅ£i autorizat să descărcaÅ£i acest fiÅŸier ataÅŸat.', + 'SORT_BY' => 'Sortează după', + 'SORT_JOINED' => 'Data înregistrării', + 'SORT_LOCATION' => 'Localitate', + 'SORT_RANK' => 'Rang', + 'SORT_POSTS' => 'Mesaje', + 'SORT_TOPIC_TITLE' => 'Titlul subiectului', + 'SORT_USERNAME' => 'Nume de utilizator', + 'SPLIT_TOPIC' => 'Desparte subiect', + 'SQL_ERROR_OCCURRED' => 'O eroare SQL a apărut în timp ce pagina era în lucru. Vă rugăm să contactaÅ£i %sAdministratorul forumului%s dacă problema persistă.', + 'STATISTICS' => 'Statistici', + 'START_WATCHING_FORUM' => 'Abonare forum', + 'START_WATCHING_TOPIC' => 'Abonare subiect', + 'STOP_WATCHING_FORUM' => 'Dezabonare forum', + 'STOP_WATCHING_TOPIC' => 'Dezabonare subiect', + 'STRING_LIST_MULTI' => '%1$s, È™i %2$s', + 'STRING_LIST_SIMPLE' => '%1$s È™i %2$s', + 'SUBFORUM' => 'Subforum', + 'SUBFORUMS' => 'Subforumuri', + 'SUBJECT' => 'Subiect', + 'SUBMIT' => 'Trimite', + + 'TB' => 'TB', + 'TERMS_USE' => 'Termeni de utilizare', + 'TEST_CONNECTION' => 'Testează conexiunea', + 'THE_TEAM' => 'Echipa', + 'TIB' => 'TiB', + 'TIME' => 'Data', + 'TIMEOUT_PROCESSING_REQ'=> 'Cererea a expirat.', + + 'TOO_LARGE' => 'Valoarea specificată este prea mare.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mare.', + + 'TOO_LONG' => 'Valoarea specificată este prea lungă.', + + 'TOO_LONG_CONFIRM_CODE' => 'Codul de confirmare introdus este prea lung.', + 'TOO_LONG_DATEFORMAT' => 'Formatul datei introdus este prea lung.', + 'TOO_LONG_JABBER' => 'Numele contului Jabber introdus este prea lung.', + 'TOO_LONG_NEW_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea lungă.', + 'TOO_LONG_USER_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_USERNAME' => 'Numele de utilizator introdus este prea lung.', + 'TOO_LONG_EMAIL' => 'Adresa de email introdusă este prea lungă.', + + 'TOO_MANY_VOTE_OPTIONS' => 'AÅ£i încercat să votaÅ£i la prea multe opÅ£iuni.', + + 'TOO_SHORT' => 'Valoarea specificată este prea scurtă.', + + 'TOO_SHORT_CONFIRM_CODE' => 'Codul de confirmare introdus este prea scurt.', + 'TOO_SHORT_DATEFORMAT' => 'Formatul datei introduse este prea scurt.', + 'TOO_SHORT_JABBER' => 'Numele contului Jabber introdus este prea scurt.', + 'TOO_SHORT_NEW_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea scurtă.', + 'TOO_SHORT_USER_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_USERNAME' => 'Numele de utilizator introdus este prea scurt.', + 'TOO_SHORT_EMAIL' => 'Adresa de email introdusă este prea scurtă.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'Confirmarea adresei de e-mail introdusă este prea scurtă.', + 'TOO_SMALL' => 'Valoare specificată este prea mică.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mică.', + + 'TOPIC' => 'Subiect', + 'TOPICS' => 'Subiecte', + 'TOPICS_UNAPPROVED' => 'Cel puÅ£in un subiect din acest forum nu a fost aprobat.', + 'TOPIC_ICON' => 'Iconiţă subiect', + 'TOPIC_LOCKED' => 'Acest subiect este închis, nu puteÅ£i modifica mesaje sau să scrieÅ£i răspunsuri viitoare.', + 'TOPIC_LOCKED_SHORT'=> 'Subiect închis', + 'TOPIC_MOVED' => 'Subiect mutat', + 'TOPIC_REVIEW' => 'Subiect revizuit', + 'TOPIC_TITLE' => 'Titlu subiect', + 'TOPIC_UNAPPROVED' => 'Acest subiect nu a fost aprobat', + 'TOPIC_DELETED' => 'Acest subiect a fost È™ters.', + 'TOTAL_ATTACHMENTS' => 'FiÅŸier(e) ataÅŸat(e)', + 'TOTAL_LOGS' => array( + 1 => '%d log', + 2 => '%d log-uri', + ), + 'TOTAL_PMS' => array( + 1 => '%d mesaj privat în total', + 2 => '%d mesaje private în total', + ), + 'TOPIC_POLL' => 'Acest subiect are un sondaj.', + 'TOTAL_POSTS' => 'Total mesaje', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Total mesaje %d', + ), + 'TOPIC_REPORTED' => 'Acest subiect a fost raportat', + 'TOTAL_TOPICS' => array( + 2 => 'Total subiecte %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Total membri %d', + ), + 'TRACKED_PHP_ERROR' => 'Erori PHP depistate: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'Nu a fost posibilă determinarea dimensiunilor imaginii.', + 'UNABLE_TO_DELIVER_FILE'=> 'Nu s-a putut trimite fiÅŸierul.', + 'UNKNOWN_BROWSER' => 'Browser necunoscut', + 'UNMARK_ALL' => 'Deselectează toate', + 'UNREAD_MESSAGES' => 'Mesaje necitite', + 'UNREAD_POST' => 'Mesaj necitit', + 'UNREAD_POSTS' => 'Mesaje necitite', + 'UNWATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest forum?', + 'UNWATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la forumul „%sâ€?', + 'UNWATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest subiect?', + 'UNWATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la subiectul „%sâ€?', + 'UNWATCHED_FORUMS' => 'Nu mai sunteÅ£i abonat la forumurile selectate.', + 'UNWATCHED_TOPICS' => 'Nu mai sunteÅ£i abonat subiectele selectate.', + 'UNWATCHED_FORUMS_TOPICS' => 'Nu mai sunteÅ£i abonat la intrările selectate.', + 'UPDATE' => 'Actualizat', + 'UPLOAD_IN_PROGRESS' => 'ÃŽncărcarea este momentan în progres.', + 'URL_REDIRECT' => 'Dacă browserul dumneavoastră nu suportă redirecÅ£ionări meta, atunci %sdaÅ£i un clik AICI pentru a fi redirecÅ£ionat%s.', + 'USERGROUPS' => 'Grupuri', + 'USERNAME' => 'Nume utilizator', + 'USERNAMES' => 'Nume utilizatori', + 'USER_AVATAR' => 'Avatar utilizator', + 'USER_CANNOT_READ' => 'Nu puteÅ£i citi mesajele din acest forum.', + 'USER_POSTS' => array( + 1 => '%d Mesaj', + 2 => '%d Mesaje', + ), + 'USERS' => 'Utilizatori', + 'USE_PERMISSIONS' => 'Testează permisiunile utilizatorului', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Ne pare rău dar nu sunteÅ£i autorizat să folosiÅ£i această funcÅ£ionalitate. E posibil să vă fi înregistrat aici recent ÅŸi să fie nevoie să participaÅ£i la mai multe discuÈ›ii ca să puteÅ£i folosi această funcÅ£ionalitate.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'Vizualizat', + 'VIEWED_COUNTS' => array( + 0 => 'ÃŽncă nevizualizat', + 1 => 'Vizualizat %d dată', + 2 => 'Vizualizat de %d ori', + ), + 'VIEWING_CONTACT_ADMIN' => 'Vizualizare pagina de contact', + 'VIEWING_FAQ' => 'Vizualizare FAQ', + 'VIEWING_MEMBERS' => 'Vizualizare detalii membru', + 'VIEWING_ONLINE' => 'Vizualizare cine este conectat', + 'VIEWING_MCP' => 'Vizualizare Panou moderator', + 'VIEWING_MEMBER_PROFILE' => 'Vizualizare profil membru', + 'VIEWING_PRIVATE_MESSAGES' => 'Vizualizare mesaje private', + 'VIEWING_REGISTER' => 'ÃŽnregistrare cont', + 'VIEWING_UCP' => 'Vizualizare Panou utilizator', + 'VIEWS' => 'Vizualizări', + 'VIEW_BOOKMARKS' => 'Vezi bookmark-uri', + 'VIEW_FORUM_LOGS' => 'Consultare loguri', + 'VIEW_LATEST_POST' => 'Vezi ultimul mesaj', + 'VIEW_NEWEST_POST' => 'Vezi ultimul mesaj necitit', + 'VIEW_NOTES' => 'Vezi notiÅ£ele utilizatorului', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'date care se bazează pe utilizatorii activi în ultimul %d minut', + 2 => 'date care se bazează pe utilizatorii activi în ultimele %d minute', + ), + 'VIEW_TOPIC' => 'Vezi subiect', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'AnunÅ£: ', + 'VIEW_TOPIC_GLOBAL' => 'AnunÅ£ global: ', + 'VIEW_TOPIC_LOCKED' => 'ÃŽnchis: ', + 'VIEW_TOPIC_LOGS' => 'Consultare loguri', + 'VIEW_TOPIC_MOVED' => 'Mutat: ', + 'VIEW_TOPIC_POLL' => 'Chestionar: ', + 'VIEW_TOPIC_STICKY' => 'Important: ', + 'VISIT_WEBSITE' => 'Vizitează site web', + + 'WARNINGS' => 'Avertismente', + 'WARN_USER' => 'Avertizează utilizator', + 'WATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest forum?', + 'WATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la forumul „%sâ€?', + 'WATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest subiect?', + 'WATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la subiectul „%sâ€?', + 'WELCOME_SUBJECT' => 'Bine aÅ£i venit în forumurile %s', + 'WEBSITE' => 'Site web', + 'WHOIS' => 'Cine este', + 'WHO_IS_ONLINE' => 'Cine este conectat', + 'WLM' => 'WLM', + 'WRONG_PASSWORD' => 'AÅ£i introdus o parolă incorectă.', + + 'WRONG_DATA_COLOUR' => 'Valoarea culorii introduse este invalidă.', + 'WRONG_DATA_JABBER' => 'Numele introdus nu este un nume de cont Jabber valid.', + 'WRONG_DATA_LANG' => 'Limba specificată nu este validă.', + 'WRONG_DATA_POST_SD' => 'DirecÈ›ia specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_POST_SK' => 'OpÈ›iunea specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_TOPIC_SD' => 'DirecÈ›ia specificată de sortare a subiectelor nu e validă.', + 'WRONG_DATA_TOPIC_SK' => 'OpÈ›iunea specificată de sortare a subiectelor nu e validă.', + 'WROTE' => 'scrie', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'An', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'Da', + 'YOU_LAST_VISIT' => 'Ultima vizită a fost: %s', + + 'datetime' => array( + 'TODAY' => 'Astăzi, ', + 'TOMORROW' => 'Mâine, ', + 'YESTERDAY' => 'Ieri, ', + 'AGO' => array( + 0 => 'mai puÅ£in de un minut în urmă', + 1 => '%d minut în urmă', + 2 => '%d minute în urmă', + ), + 'Sunday' => 'Duminică', + 'Monday' => 'Luni', + 'Tuesday' => 'MarÅ£i', + 'Wednesday' => 'Miercuri', + 'Thursday' => 'Joi', + 'Friday' => 'Vineri', + 'Saturday' => 'Sâmbătă', + + 'Sun' => 'Dum', + 'Mon' => 'Lun', + 'Tue' => 'Mar', + 'Wed' => 'Mie', + 'Thu' => 'Joi', + 'Fri' => 'Vin', + 'Sat' => 'Sâm', + + 'January' => 'Ianuarie', + 'February' => 'Februarie', + 'March' => 'Martie', + 'April' => 'Aprilie', + 'May' => 'Mai', + 'June' => 'Iunie', + 'July' => 'Iulie', + 'August' => 'August', + 'September' => 'Septembrie', + 'October' => 'Octombrie', + 'November' => 'Noiembrie', + 'December' => 'Decembrie', + + 'Jan' => 'Ian', + 'Feb' => 'Feb', + 'Mar' => 'Mar', + 'Apr' => 'Apr', + 'May_short' => 'Mai', // Short representation of "May". May_short used because in english the short and long date are the same for May. + 'Jun' => 'Iun', + 'Jul' => 'Iul', + 'Aug' => 'Aug', + 'Sep' => 'Sep', + 'Oct' => 'Oct', + 'Nov' => 'Noi', + 'Dec' => 'Dec', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + 'Africa/Abidjan' => 'Africa/Abidjan', + 'Africa/Accra' => 'Africa/Accra', + 'Africa/Addis_Ababa' => 'Africa/Addis Ababa', + 'Africa/Algiers' => 'Africa/Algiers', + 'Africa/Asmara' => 'Africa/Asmara', + 'Africa/Bamako' => 'Africa/Bamako', + 'Africa/Bangui' => 'Africa/Bangui', + 'Africa/Banjul' => 'Africa/Banjul', + 'Africa/Bissau' => 'Africa/Bissau', + 'Africa/Blantyre' => 'Africa/Blantyre', + 'Africa/Brazzaville' => 'Africa/Brazzaville', + 'Africa/Bujumbura' => 'Africa/Bujumbura', + 'Africa/Cairo' => 'Africa/Cairo', + 'Africa/Casablanca' => 'Africa/Casablanca', + 'Africa/Ceuta' => 'Africa/Ceuta', + 'Africa/Conakry' => 'Africa/Conakry', + 'Africa/Dakar' => 'Africa/Dakar', + 'Africa/Dar_es_Salaam' => 'Africa/Dar es Salaam', + 'Africa/Djibouti' => 'Africa/Djibouti', + 'Africa/Douala' => 'Africa/Douala', + 'Africa/El_Aaiun' => 'Africa/El Aaiun', + 'Africa/Freetown' => 'Africa/Freetown', + 'Africa/Gaborone' => 'Africa/Gaborone', + 'Africa/Harare' => 'Africa/Harare', + 'Africa/Johannesburg' => 'Africa/Johannesburg', + 'Africa/Juba' => 'Africa/Juba', + 'Africa/Kampala' => 'Africa/Kampala', + 'Africa/Khartoum' => 'Africa/Khartoum', + 'Africa/Kigali' => 'Africa/Kigali', + 'Africa/Kinshasa' => 'Africa/Kinshasa', + 'Africa/Lagos' => 'Africa/Lagos', + 'Africa/Libreville' => 'Africa/Libreville', + 'Africa/Lome' => 'Africa/Lome', + 'Africa/Luanda' => 'Africa/Luanda', + 'Africa/Lubumbashi' => 'Africa/Lubumbashi', + 'Africa/Lusaka' => 'Africa/Lusaka', + 'Africa/Malabo' => 'Africa/Malabo', + 'Africa/Maputo' => 'Africa/Maputo', + 'Africa/Maseru' => 'Africa/Maseru', + 'Africa/Mbabane' => 'Africa/Mbabane', + 'Africa/Mogadishu' => 'Africa/Mogadishu', + 'Africa/Monrovia' => 'Africa/Monrovia', + 'Africa/Nairobi' => 'Africa/Nairobi', + 'Africa/Ndjamena' => 'Africa/Ndjamena', + 'Africa/Niamey' => 'Africa/Niamey', + 'Africa/Nouakchott' => 'Africa/Nouakchott', + 'Africa/Ouagadougou' => 'Africa/Ouagadougou', + 'Africa/Porto-Novo' => 'Africa/Porto-Novo', + 'Africa/Sao_Tome' => 'Africa/Sao Tome', + 'Africa/Tripoli' => 'Africa/Tripoli', + 'Africa/Tunis' => 'Africa/Tunis', + 'Africa/Windhoek' => 'Africa/Windhoek', + + 'America/Adak' => 'America/Adak', + 'America/Anchorage' => 'America/Anchorage', + 'America/Anguilla' => 'America/Anguilla', + 'America/Antigua' => 'America/Antigua', + 'America/Araguaina' => 'America/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'America/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'America/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'America/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'America/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'America/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'America/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'America/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'America/Argentina/Salta', + 'America/Argentina/San_Juan' => 'America/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'America/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'America/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'America/Argentina/Ushuaia', + + 'America/Aruba' => 'America/Aruba', + 'America/Asuncion' => 'America/Asuncion', + 'America/Atikokan' => 'America/Atikokan', + 'America/Bahia' => 'America/Bahia', + 'America/Bahia_Banderas' => 'America/Bahia Banderas', + 'America/Barbados' => 'America/Barbados', + 'America/Belem' => 'America/Belem', + 'America/Belize' => 'America/Belize', + 'America/Blanc-Sablon' => 'America/Blanc-Sablon', + 'America/Boa_Vista' => 'America/Boa Vista', + 'America/Bogota' => 'America/Bogota', + 'America/Boise' => 'America/Boise', + 'America/Cambridge_Bay' => 'America/Cambridge Bay', + 'America/Campo_Grande' => 'America/Campo Grande', + 'America/Cancun' => 'America/Cancun', + 'America/Caracas' => 'America/Caracas', + 'America/Cayenne' => 'America/Cayenne', + 'America/Cayman' => 'America/Cayman', + 'America/Chicago' => 'America/Chicago', + 'America/Chihuahua' => 'America/Chihuahua', + 'America/Costa_Rica' => 'America/Costa Rica', + 'America/Creston' => 'America/Creston', + 'America/Cuiaba' => 'America/Cuiaba', + 'America/Curacao' => 'America/Curacao', + 'America/Danmarkshavn' => 'America/Danmarkshavn', + 'America/Dawson' => 'America/Dawson', + 'America/Dawson_Creek' => 'America/Dawson Creek', + 'America/Denver' => 'America/Denver', + 'America/Detroit' => 'America/Detroit', + 'America/Dominica' => 'America/Dominica', + 'America/Edmonton' => 'America/Edmonton', + 'America/Eirunepe' => 'America/Eirunepe', + 'America/El_Salvador' => 'America/El Salvador', + 'America/Fortaleza' => 'America/Fortaleza', + 'America/Glace_Bay' => 'America/Glace Bay', + 'America/Godthab' => 'America/Godthab', + 'America/Goose_Bay' => 'America/Goose Bay', + 'America/Grand_Turk' => 'America/Grand Turk', + 'America/Grenada' => 'America/Grenada', + 'America/Guadeloupe' => 'America/Guadeloupe', + 'America/Guatemala' => 'America/Guatemala', + 'America/Guayaquil' => 'America/Guayaquil', + 'America/Guyana' => 'America/Guyana', + 'America/Halifax' => 'America/Halifax', + 'America/Havana' => 'America/Havana', + 'America/Hermosillo' => 'America/Hermosillo', + 'America/Indiana/Indianapolis' => 'America/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'America/Indiana/Knox', + 'America/Indiana/Marengo' => 'America/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'America/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'America/Indiana/Tell City', + 'America/Indiana/Vevay' => 'America/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'America/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'America/Indiana/Winamac', + 'America/Inuvik' => 'America/Inuvik', + 'America/Iqaluit' => 'America/Iqaluit', + 'America/Jamaica' => 'America/Jamaica', + 'America/Juneau' => 'America/Juneau', + 'America/Kentucky/Louisville' => 'America/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'America/Kentucky/Monticello', + 'America/Kralendijk' => 'America/Kralendijk', + 'America/La_Paz' => 'America/La Paz', + 'America/Lima' => 'America/Lima', + 'America/Los_Angeles' => 'America/Los Angeles', + 'America/Lower_Princes' => 'America/Lower Princes', + 'America/Maceio' => 'America/Maceio', + 'America/Managua' => 'America/Managua', + 'America/Manaus' => 'America/Manaus', + 'America/Marigot' => 'America/Marigot', + 'America/Martinique' => 'America/Martinique', + 'America/Matamoros' => 'America/Matamoros', + 'America/Mazatlan' => 'America/Mazatlan', + 'America/Menominee' => 'America/Menominee', + 'America/Merida' => 'America/Merida', + 'America/Metlakatla' => 'America/Metlakatla', + 'America/Mexico_City' => 'America/Mexico City', + 'America/Miquelon' => 'America/Miquelon', + 'America/Moncton' => 'America/Moncton', + 'America/Monterrey' => 'America/Monterrey', + 'America/Montevideo' => 'America/Montevideo', + 'America/Montreal' => 'America/Montreal', + 'America/Montserrat' => 'America/Montserrat', + 'America/Nassau' => 'America/Nassau', + 'America/New_York' => 'America/New York', + 'America/Nipigon' => 'America/Nipigon', + 'America/Nome' => 'America/Nome', + 'America/Noronha' => 'America/Noronha', + 'America/North_Dakota/Beulah' => 'America/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'America/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'America/North Dakota/New Salem', + 'America/Ojinaga' => 'America/Ojinaga', + 'America/Panama' => 'America/Panama', + 'America/Pangnirtung' => 'America/Pangnirtung', + 'America/Paramaribo' => 'America/Paramaribo', + 'America/Phoenix' => 'America/Phoenix', + 'America/Port-au-Prince' => 'America/Port-au-Prince', + 'America/Port_of_Spain' => 'America/Port of Spain', + 'America/Porto_Velho' => 'America/Porto Velho', + 'America/Puerto_Rico' => 'America/Puerto Rico', + 'America/Rainy_River' => 'America/Rainy River', + 'America/Rankin_Inlet' => 'America/Rankin Inlet', + 'America/Recife' => 'America/Recife', + 'America/Regina' => 'America/Regina', + 'America/Resolute' => 'America/Resolute', + 'America/Rio_Branco' => 'America/Rio Branco', + 'America/Santa_Isabel' => 'America/Santa Isabel', + 'America/Santarem' => 'America/Santarem', + 'America/Santiago' => 'America/Santiago', + 'America/Santo_Domingo' => 'America/Santo Domingo', + 'America/Sao_Paulo' => 'America/Sao Paulo', + 'America/Scoresbysund' => 'America/Scoresbysund', + 'America/Shiprock' => 'America/Shiprock', + 'America/Sitka' => 'America/Sitka', + 'America/St_Barthelemy' => 'America/St. Barthelemy', + 'America/St_Johns' => 'America/St. Johns', + 'America/St_Kitts' => 'America/St. Kitts', + 'America/St_Lucia' => 'America/St. Lucia', + 'America/St_Thomas' => 'America/St. Thomas', + 'America/St_Vincent' => 'America/St. Vincent', + 'America/Swift_Current' => 'America/Swift Current', + 'America/Tegucigalpa' => 'America/Tegucigalpa', + 'America/Thule' => 'America/Thule', + 'America/Thunder_Bay' => 'America/Thunder Bay', + 'America/Tijuana' => 'America/Tijuana', + 'America/Toronto' => 'America/Toronto', + 'America/Tortola' => 'America/Tortola', + 'America/Vancouver' => 'America/Vancouver', + 'America/Whitehorse' => 'America/Whitehorse', + 'America/Winnipeg' => 'America/Winnipeg', + 'America/Yakutat' => 'America/Yakutat', + 'America/Yellowknife' => 'America/Yellowknife', + + 'Antarctica/Casey' => 'Antarctica/Casey', + 'Antarctica/Davis' => 'Antarctica/Davis', + 'Antarctica/DumontDUrville' => 'Antarctica/DumontDUrville', + 'Antarctica/Macquarie' => 'Antarctica/Macquarie', + 'Antarctica/Mawson' => 'Antarctica/Mawson', + 'Antarctica/McMurdo' => 'Antarctica/McMurdo', + 'Antarctica/Palmer' => 'Antarctica/Palmer', + 'Antarctica/Rothera' => 'Antarctica/Rothera', + 'Antarctica/South_Pole' => 'Antarctica/South Pole', + 'Antarctica/Syowa' => 'Antarctica/Syowa', + 'Antarctica/Vostok' => 'Antarctica/Vostok', + + 'Arctic/Longyearbyen' => 'Arctic/Longyearbyen', + + 'Asia/Aden' => 'Asia/Aden', + 'Asia/Almaty' => 'Asia/Almaty', + 'Asia/Amman' => 'Asia/Amman', + 'Asia/Anadyr' => 'Asia/Anadyr', + 'Asia/Aqtau' => 'Asia/Aqtau', + 'Asia/Aqtobe' => 'Asia/Aqtobe', + 'Asia/Ashgabat' => 'Asia/Ashgabat', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Bahrain' => 'Asia/Bahrain', + 'Asia/Baku' => 'Asia/Baku', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Beirut' => 'Asia/Beirut', + 'Asia/Bishkek' => 'Asia/Bishkek', + 'Asia/Brunei' => 'Asia/Brunei', + 'Asia/Choibalsan' => 'Asia/Choibalsan', + 'Asia/Chongqing' => 'Asia/Chongqing', + 'Asia/Colombo' => 'Asia/Colombo', + 'Asia/Damascus' => 'Asia/Damascus', + 'Asia/Dhaka' => 'Asia/Dhaka', + 'Asia/Dili' => 'Asia/Dili', + 'Asia/Dubai' => 'Asia/Dubai', + 'Asia/Dushanbe' => 'Asia/Dushanbe', + 'Asia/Gaza' => 'Asia/Gaza', + 'Asia/Harbin' => 'Asia/Harbin', + 'Asia/Hebron' => 'Asia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Asia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Asia/Hong Kong', + 'Asia/Hovd' => 'Asia/Hovd', + 'Asia/Irkutsk' => 'Asia/Irkutsk', + 'Asia/Jakarta' => 'Asia/Jakarta', + 'Asia/Jayapura' => 'Asia/Jayapura', + 'Asia/Jerusalem' => 'Asia/Jerusalem', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Kamchatka' => 'Asia/Kamchatka', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kashgar' => 'Asia/Kashgar', + 'Asia/Kathmandu' => 'Asia/Kathmandu', + 'Asia/Khandyga' => 'Asia/Khandyga', + 'Asia/Kolkata' => 'Asia/Kolkata', + 'Asia/Krasnoyarsk' => 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Asia/Kuala Lumpur', + 'Asia/Kuching' => 'Asia/Kuching', + 'Asia/Kuwait' => 'Asia/Kuwait', + 'Asia/Macau' => 'Asia/Macau', + 'Asia/Magadan' => 'Asia/Magadan', + 'Asia/Makassar' => 'Asia/Makassar', + 'Asia/Manila' => 'Asia/Manila', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Nicosia' => 'Asia/Nicosia', + 'Asia/Novokuznetsk' => 'Asia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Asia/Novosibirsk', + 'Asia/Omsk' => 'Asia/Omsk', + 'Asia/Oral' => 'Asia/Oral', + 'Asia/Phnom_Penh' => 'Asia/Phnom Penh', + 'Asia/Pontianak' => 'Asia/Pontianak', + 'Asia/Pyongyang' => 'Asia/Pyongyang', + 'Asia/Qatar' => 'Asia/Qatar', + 'Asia/Qyzylorda' => 'Asia/Qyzylorda', + 'Asia/Rangoon' => 'Asia/Rangoon', + 'Asia/Riyadh' => 'Asia/Riyadh', + 'Asia/Sakhalin' => 'Asia/Sakhalin', + 'Asia/Samarkand' => 'Asia/Samarkand', + 'Asia/Seoul' => 'Asia/Seoul', + 'Asia/Shanghai' => 'Asia/Shanghai', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Taipei' => 'Asia/Taipei', + 'Asia/Tashkent' => 'Asia/Tashkent', + 'Asia/Tbilisi' => 'Asia/Tbilisi', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Thimphu' => 'Asia/Thimphu', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Asia/Ulaanbaatar' => 'Asia/Ulaanbaatar', + 'Asia/Urumqi' => 'Asia/Urumqi', + 'Asia/Ust-Nera' => 'Asia/Ust-Nera', + 'Asia/Vientiane' => 'Asia/Vientiane', + 'Asia/Vladivostok' => 'Asia/Vladivostok', + 'Asia/Yakutsk' => 'Asia/Yakutsk', + 'Asia/Yekaterinburg' => 'Asia/Yekaterinburg', + 'Asia/Yerevan' => 'Asia/Yerevan', + + 'Atlantic/Azores' => 'Atlantic/Azores', + 'Atlantic/Bermuda' => 'Atlantic/Bermuda', + 'Atlantic/Canary' => 'Atlantic/Canary', + 'Atlantic/Cape_Verde' => 'Atlantic/Cape Verde', + 'Atlantic/Faroe' => 'Atlantic/Faroe', + 'Atlantic/Madeira' => 'Atlantic/Madeira', + 'Atlantic/Reykjavik' => 'Atlantic/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlantic/South Georgia', + 'Atlantic/St_Helena' => 'Atlantic/St. Helena', + 'Atlantic/Stanley' => 'Atlantic/Stanley', + + 'Australia/Adelaide' => 'Australia/Adelaide', + 'Australia/Brisbane' => 'Australia/Brisbane', + 'Australia/Broken_Hill' => 'Australia/Broken Hill', + 'Australia/Currie' => 'Australia/Currie', + 'Australia/Darwin' => 'Australia/Darwin', + 'Australia/Eucla' => 'Australia/Eucla', + 'Australia/Hobart' => 'Australia/Hobart', + 'Australia/Lindeman' => 'Australia/Lindeman', + 'Australia/Lord_Howe' => 'Australia/Lord Howe', + 'Australia/Melbourne' => 'Australia/Melbourne', + 'Australia/Perth' => 'Australia/Perth', + 'Australia/Sydney' => 'Australia/Sydney', + + 'Europe/Amsterdam' => 'Europe/Amsterdam', + 'Europe/Andorra' => 'Europe/Andorra', + 'Europe/Athens' => 'Europe/Athens', + 'Europe/Belgrade' => 'Europe/Belgrade', + 'Europe/Berlin' => 'Europe/Berlin', + 'Europe/Bratislava' => 'Europe/Bratislava', + 'Europe/Brussels' => 'Europe/Brussels', + 'Europe/Bucharest' => 'Europe/Bucharest', + 'Europe/Budapest' => 'Europe/Budapest', + 'Europe/Busingen' => 'Europe/Busingen', + 'Europe/Chisinau' => 'Europe/Chisinau', + 'Europe/Copenhagen' => 'Europe/Copenhagen', + 'Europe/Dublin' => 'Europe/Dublin', + 'Europe/Gibraltar' => 'Europe/Gibraltar', + 'Europe/Guernsey' => 'Europe/Guernsey', + 'Europe/Helsinki' => 'Europe/Helsinki', + 'Europe/Isle_of_Man' => 'Europe/Isle of Man', + 'Europe/Istanbul' => 'Europe/Istanbul', + 'Europe/Jersey' => 'Europe/Jersey', + 'Europe/Kaliningrad' => 'Europe/Kaliningrad', + 'Europe/Kiev' => 'Europe/Kiev', + 'Europe/Lisbon' => 'Europe/Lisbon', + 'Europe/Ljubljana' => 'Europe/Ljubljana', + 'Europe/London' => 'Europe/London', + 'Europe/Luxembourg' => 'Europe/Luxembourg', + 'Europe/Madrid' => 'Europe/Madrid', + 'Europe/Malta' => 'Europe/Malta', + 'Europe/Mariehamn' => 'Europe/Mariehamn', + 'Europe/Minsk' => 'Europe/Minsk', + 'Europe/Monaco' => 'Europe/Monaco', + 'Europe/Moscow' => 'Europe/Moscow', + 'Europe/Oslo' => 'Europe/Oslo', + 'Europe/Paris' => 'Europe/Paris', + 'Europe/Podgorica' => 'Europe/Podgorica', + 'Europe/Prague' => 'Europe/Prague', + 'Europe/Riga' => 'Europe/Riga', + 'Europe/Rome' => 'Europe/Rome', + 'Europe/Samara' => 'Europe/Samara', + 'Europe/San_Marino' => 'Europe/San Marino', + 'Europe/Sarajevo' => 'Europe/Sarajevo', + 'Europe/Simferopol' => 'Europe/Simferopol', + 'Europe/Skopje' => 'Europe/Skopje', + 'Europe/Sofia' => 'Europe/Sofia', + 'Europe/Stockholm' => 'Europe/Stockholm', + 'Europe/Tallinn' => 'Europe/Tallinn', + 'Europe/Tirane' => 'Europe/Tirane', + 'Europe/Uzhgorod' => 'Europe/Uzhgorod', + 'Europe/Vaduz' => 'Europe/Vaduz', + 'Europe/Vatican' => 'Europe/Vatican', + 'Europe/Vienna' => 'Europe/Vienna', + 'Europe/Vilnius' => 'Europe/Vilnius', + 'Europe/Volgograd' => 'Europe/Volgograd', + 'Europe/Warsaw' => 'Europe/Warsaw', + 'Europe/Zagreb' => 'Europe/Zagreb', + 'Europe/Zaporozhye' => 'Europe/Zaporozhye', + 'Europe/Zurich' => 'Europe/Zurich', + + 'Indian/Antananarivo' => 'Indian/Antananarivo', + 'Indian/Chagos' => 'Indian/Chagos', + 'Indian/Christmas' => 'Indian/Christmas', + 'Indian/Cocos' => 'Indian/Cocos', + 'Indian/Comoro' => 'Indian/Comoro', + 'Indian/Kerguelen' => 'Indian/Kerguelen', + 'Indian/Mahe' => 'Indian/Mahe', + 'Indian/Maldives' => 'Indian/Maldives', + 'Indian/Mauritius' => 'Indian/Mauritius', + 'Indian/Mayotte' => 'Indian/Mayotte', + 'Indian/Reunion' => 'Indian/Reunion', + + 'Pacific/Apia' => 'Pacific/Apia', + 'Pacific/Auckland' => 'Pacific/Auckland', + 'Pacific/Chatham' => 'Pacific/Chatham', + 'Pacific/Chuuk' => 'Pacific/Chuuk', + 'Pacific/Easter' => 'Pacific/Easter', + 'Pacific/Efate' => 'Pacific/Efate', + 'Pacific/Enderbury' => 'Pacific/Enderbury', + 'Pacific/Fakaofo' => 'Pacific/Fakaofo', + 'Pacific/Fiji' => 'Pacific/Fiji', + 'Pacific/Funafuti' => 'Pacific/Funafuti', + 'Pacific/Galapagos' => 'Pacific/Galapagos', + 'Pacific/Gambier' => 'Pacific/Gambier', + 'Pacific/Guadalcanal' => 'Pacific/Guadalcanal', + 'Pacific/Guam' => 'Pacific/Guam', + 'Pacific/Honolulu' => 'Pacific/Honolulu', + 'Pacific/Johnston' => 'Pacific/Johnston', + 'Pacific/Kiritimati' => 'Pacific/Kiritimati', + 'Pacific/Kosrae' => 'Pacific/Kosrae', + 'Pacific/Kwajalein' => 'Pacific/Kwajalein', + 'Pacific/Majuro' => 'Pacific/Majuro', + 'Pacific/Marquesas' => 'Pacific/Marquesas', + 'Pacific/Midway' => 'Pacific/Midway', + 'Pacific/Nauru' => 'Pacific/Nauru', + 'Pacific/Niue' => 'Pacific/Niue', + 'Pacific/Norfolk' => 'Pacific/Norfolk', + 'Pacific/Noumea' => 'Pacific/Noumea', + 'Pacific/Pago_Pago' => 'Pacific/Pago Pago', + 'Pacific/Palau' => 'Pacific/Palau', + 'Pacific/Pitcairn' => 'Pacific/Pitcairn', + 'Pacific/Pohnpei' => 'Pacific/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacific/Port Moresby', + 'Pacific/Rarotonga' => 'Pacific/Rarotonga', + 'Pacific/Saipan' => 'Pacific/Saipan', + 'Pacific/Tahiti' => 'Pacific/Tahiti', + 'Pacific/Tarawa' => 'Pacific/Tarawa', + 'Pacific/Tongatapu' => 'Pacific/Tongatapu', + 'Pacific/Wake' => 'Pacific/Wake', + 'Pacific/Wallis' => 'Pacific/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Ian 2007, 13:37', + 'd M Y H:i' => '01 Ian 2007 13:37', + 'M jS, \'y, H:i' => '1 Ian, \'07, 13:37', + 'D M d, Y g:i a' => 'Lun 1 Ian, 2007 1:37 pm', + 'F jS, Y, g:i a' => '1 Ianuarie 2007, 1:37 pm', + '|d M Y|, H:i' => 'Astăzi, 13:37 / 01 Ian 2007, 13:37', + '|F jS, Y|, g:i a' => 'Astăzi, 1:37 pm / 1 Ianuarie 2007, 1:37 pm', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D d M, Y g:i a', // Lun 01 Ian, 2007 1:37 pm//schimbat pentru "ro" + +)); diff --git a/includes/shared/phpbb3/language/lang_romanian_no_diacritics/index.htm b/includes/shared/phpbb3/language/lang_romanian_no_diacritics/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian_no_diacritics/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_romanian_utf/common.php b/includes/shared/phpbb3/language/lang_romanian_utf/common.php new file mode 100644 index 00000000..3d623705 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian_utf/common.php @@ -0,0 +1,1416 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » “ †… +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Translation/Traducere: phpBB România', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'ro', + + // You can define different rules for the determination of plural forms here. + // See http://wiki.phpbb.com/Plural_Rules for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 1, + + '1_DAY' => '1 zi', + '1_MONTH' => '1 lună', + '1_YEAR' => '1 an', + '2_WEEKS' => '2 săptămâni', + '3_MONTHS' => '3 luni', + '6_MONTHS' => '6 luni', + '7_DAYS' => '7 zile', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Contul dumneavoastră a fost deja activat.', + 'ACCOUNT_DEACTIVATED' => 'Contul dumneavoastră a fost dezactivat manual ÅŸi poate fi reactivat doar de către un administrator.', + 'ACCOUNT_NOT_ACTIVATED' => 'Contul dumneavoastră încă nu a fost activat.', + 'ACP' => 'Panoul administratorului', + 'ACP_SHORT' => 'ACP', + 'ACTIVE' => 'activ', + 'ACTIVE_ERROR' => 'Numele de utilizator specificat este momentan inactiv. Dacă aveÅ£i probleme cu activarea contului, vă rugăm să contactaÅ£i un administrator.', + 'ADMINISTRATOR' => 'Administrator', + 'ADMINISTRATORS' => 'Administratori', + 'AGE' => 'Vârsta', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'Eroare AJAX', + 'AJAX_ERROR_TEXT' => 'Ceva a funcÈ›ionat eronat la procesarea cererii dvs.', + 'AJAX_ERROR_TEXT_ABORT' => 'Cerere abandonată.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'Cerera a expirat, încercaÈ›i din nou.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Ceva a funcÈ›ionat prost È™i serverul a returnat o valoare invalidă.', + 'ALLOWED' => 'Permis', + 'ALL_FILES' => 'Toate fiÅŸierele', + 'ALL_FORUMS' => 'Toate forumurile', + 'ALL_MESSAGES' => 'Toate mesajele', + 'ALL_POSTS' => 'Toate mesajele', + 'ALL_TIMES' => 'Ora este %1$s %2$s', + 'ALL_TOPICS' => 'Toate subiectele', + 'AND' => 'Åži', + 'ARE_WATCHING_FORUM' => 'AÅ£i subscris pentru a fi notificat de mesajele noi publicate în acest forum.', + 'ARE_WATCHING_TOPIC' => 'AÅ£i subscris pentru a fi notificat de mesajele noi publicate în acest subiect.', + 'ASCENDING' => 'Crescător', + 'ATTACHMENTS' => 'FiÅŸiere ataÅŸate', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'FiÅŸierul imagine pe care încercaÅ£i să-l ataÅŸaÅ£i este invalid.', + 'AUTHOR' => 'Autor', + 'AUTH_NO_PROFILE_CREATED' => 'Crearea profilului de utilizator nu a fost efectuată cu succes.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'ÃŽnregistrarea nevalidă în baza de date.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Serviciu invalid furnizat de OAuth.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'Serviciul OAuth nu a fost creat', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'Tokenul OAuth nu e stocat.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'Token OAuth stocat incorect.', + 'AVATAR_DISALLOWED_CONTENT' => 'ÃŽncărcarea a fost respinsă deoarece fiÅŸierul încărcat a fost identificat ca un posibil atac vector.', + 'AVATAR_DISALLOWED_EXTENSION' => 'FiÅŸierul nu poate fi afiÅŸat deoarece extensia %s nu este permisă.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Avatarul specificat nu a putut fi încărcat pentru că datele de la distanţă sunt invalide sau corupte.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'FiÅŸierul avatar încărcat este gol.', + 'AVATAR_INVALID_FILENAME' => '%s este un nume de fiÅŸier invalid.', + 'AVATAR_NOT_UPLOADED' => 'Avatarul nu a putut fi încărcat.', + 'AVATAR_NO_SIZE' => 'Lungimea sau înălÅ£imea avatarului specificat în legătură nu a putut fi determinată. Vă rugăm să le introduceÅ£i manual.', + 'AVATAR_PARTIAL_UPLOAD' => 'FiÅŸierul specificat a fost încărcat doar parÅ£ial.', + 'AVATAR_PHP_SIZE_NA' => 'Dimensiunea fiÅŸierului avatar este prea mare.
    Dimensiunea maximă permisă setată în php.ini nu a putut fi determinată.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Dimensiunea fişierului avatar este prea mare. Dimensiunea maximă permisă pentru încărcare este de %1$d %2$s.
    Ţineţi minte că aceasta este setată în php.ini şi nu poate fi suprascrisă.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'Avatarul specificat nu poate fi încărcat deoarece cererea a fost întreruptă.', + 'AVATAR_URL_INVALID' => 'URL-ul specificat este invalid.', + 'AVATAR_URL_NOT_FOUND' => 'Fişierul specificat nu a putut fi găsit.', + 'AVATAR_WRONG_FILESIZE' => 'Dimensiunea fişierului avatar trebuie să fie între 0 şi %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'Avatarul trimis este de %5$s pixeli lungime şi %6$s pixeli înălţime. Avatarurile trebuie să fie de cel puţin %1$s pixeli lungime şi %2$s pixeli înălţime, dar nu mai mari de %3$s pixeli lungime şi %4$s pixeli înălţime.', + + 'BACK_TO_TOP' => 'Sus', + 'BACK_TO_PREV' => 'Înapoi la pagina anterioară', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Adresa dumneavostră de e-mail a fost interzisă.', + 'BAN_TRIGGERED_BY_IP' => 'Adresa dumneavostră de IP a fost interzisă.', + 'BAN_TRIGGERED_BY_USER' => 'Numele dumneavostră de utilizator a fost interzis.', + 'BBCODE_GUIDE' => 'Ghidul codului BB', + 'BCC' => 'BCC', + 'BIRTHDAYS' => 'Zile de naştere', + 'BOARD_BAN_PERM' => 'Accesul dumneavoastră a fost interzis permanent pe acest forum.

    Vă rugăm să contactaţi %2$sadministratorul forumului%3$s pentru mai multe informaţii.', + 'BOARD_BAN_REASON' => 'Motivul interzicerii: %s', + 'BOARD_BAN_TIME' => 'Accesul dumneavoastră a fost interzis pe acest forum până%1$s.

    Vă rugăm să contactaÅ£i %2$sadministratorul forumului%3$s pentru mai multe informaÅ£ii.', + 'BOARD_DISABLE' => 'Ne pare rău, dar acest forum este momentan indisponibil.', + 'BOARD_DISABLED' => 'Acest forum este momentan dezactivat.', + 'BOARD_UNAVAILABLE' => 'Ne pare rău, dar acest forum, momentan nu este disponibil. Vă rugăm să încercaÅ£i din nou în câteva minute.', + 'BROWSING_FORUM' => 'Utilizatorii ce navighează pe acest forum: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitator', + 2 => 'Utilizatori ce ce navighează pe acest forum: %2$s È™i %1$d vizitatori', + ), + 'BUTTON_EDIT' => 'Modificare', + 'BUTTON_FORUM_LOCKED' => 'ÃŽnchis', + 'BUTTON_NEW_TOPIC' => 'Subiect nou', + 'BUTTON_PM' => 'MP', + 'BUTTON_PM_FORWARD' => 'Trimite mai departe', + 'BUTTON_PM_NEW' => 'MP nou', + 'BUTTON_PM_REPLY' => 'Trimite răspuns', + 'BUTTON_PM_REPLY_ALL' => 'Răspunde la toÈ›i', + 'BUTTON_POST_REPLY' => 'Scrie răspuns', + 'BUTTON_QUOTE' => 'Citează', + 'BUTTON_TOPIC_LOCKED' => 'ÃŽnchis', + 'BYTES' => 'OcteÅ£i', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Anulează', + 'CHANGE' => 'Schimbă', + 'CHANGE_FONT_SIZE' => 'Schimbă dimensiunea fontului', + 'CHANGING_PREFERENCES' => 'Schimbare preferinÅ£e forum', + 'CHANGING_PROFILE' => 'Schimbare preferinÅ£e profil', + 'CHARACTERS' => array( + 1 => '%d caracter', + 2 => '%d caractere', + ), + 'COLLAPSE_VIEW' => 'Vizualizare restrânsă', + 'CLOSE_WINDOW' => 'ÃŽnchide fereastra', + 'COLOUR_SWATCH' => 'Schimbă culoarea', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirmă', + 'CONFIRM_CODE' => 'Codul de confirmare', + 'CONFIRM_CODE_EXPLAIN' => 'IntroduceÅ£i codul exact cum apare. Nu există diferenţă între literele mari ÅŸi cele mici.', + 'CONFIRM_CODE_WRONG' => 'Codul de confirmare introdus este incorect.', + 'CONFIRM_OPERATION' => 'SunteÅ£i sigur că vreÅ£i să continuaÅ£i această operaÅ£iune?', + 'CONFIRM_AVATAR_DELETE' => 'EÈ™ti sigur că vrei să stergi acest avatar?', + 'CONGRATULATIONS' => 'La mulÈ›i ani! ', + 'CONNECTION_FAILED' => 'Conexiune eÅŸuată.', + 'CONNECTION_SUCCESS' => 'Conexiunea a fost efectuată cu succes!', + 'CONTACT' => 'Contact', + 'CONTACT_USER' => 'Contactează pe %s', + 'CONTACT_US' => 'Contactează-ne', + 'COOKIES_DELETED' => 'Toate cookie-urile forumului au fost ÅŸterse cu succes.', + 'CURRENT_TIME' => 'Acum este %s', + + 'DAY' => 'Zi', + 'DAYS' => 'Zile', + 'DELETE' => 'Åžterge', + 'DELETE_ALL' => 'Åžterge tot', + 'DELETE_COOKIES' => 'Åžterge toate cookie-urile forumului', + 'DELETE_MARKED' => 'Åžterge mesajele marcate', + 'DELETE_POST' => 'Åžterge mesaj', + 'DELIMITER' => 'Delimitator', + 'DESCENDING' => 'Descrescător', + 'DISABLED' => 'Dezactivat', + 'DISPLAY' => 'AfiÅŸează', + 'DISPLAY_GUESTS' => 'AfiÅŸează vizitatori', + 'DISPLAY_MESSAGES' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_POSTS' => 'AfiÅŸează mesajele din ultimele', + 'DISPLAY_TOPICS' => 'AfiÅŸează subiectele din ultimele', + 'DOWNLOADED' => 'Descărcat', + 'DOWNLOADING_FILE' => 'FiÅŸierul se descarcă', + 'DOWNLOAD_COUNTS' => array( + 0 => 'ÃŽncă nu a fost nedescărcat', + 1 => 'Descărcat %d dată', + 2 => 'Descărcat de %d ori', + ), + + 'EDIT_POST' => 'Modifică mesaj', + 'ELLIPSIS' => '…', + 'EMAIL' => 'Email', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Adresă email', + 'EMAIL_INVALID_EMAIL' => 'Adresa de email introdusă este invalidă.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Probleme în trimiterea email-ului la Linia %1$s. Răspuns: %2$s.', + 'EMPTY_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când scrieÅ£i un subiect nou.', + 'EMPTY_MESSAGE_SUBJECT' => 'Trebuie să specificaÅ£i un subiect când compuneÅ£i un mesaj nou.', + 'ENABLED' => 'Activat', + 'ENCLOSURE' => 'ÃŽmprejmuire', + 'ENTER_USERNAME' => 'IntroduceÈ›i nume utilizator', + 'ERR_CHANGING_DIRECTORY' => 'Nu s-a putut schimba directorul.', + 'ERR_CONNECTING_SERVER' => 'Eroare în efectuarea conexiunii către server.', + 'ERR_JAB_AUTH' => 'Nu s-a putut autentifica la serverul de Jabber.', + 'ERR_JAB_CONNECT' => 'Nu s-a putut conecta la serverul de Jabber.', + 'ERR_UNABLE_TO_LOGIN' => 'Numele de utilizator sau parola specificată sunt greÅŸite.', + 'ERR_UNWATCHING' => 'Eroare la încercarea de dezabonare.', + 'ERR_WATCHING' => 'Eroare la încercarea de abonare.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'Calea specificată către phpBB este invalidă.', + 'ERROR' => 'Eroare!', + 'EXPAND_VIEW' => 'Vizualizare extinsă', + 'EXTENSION' => 'Extensie', + 'EXTENSION_DISABLED' => 'Extensia %s nu e permisă.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'Extensia %s a fost dezactivată ÅŸi nu mai poate fi afiÅŸată.', + 'EXTENSION_DOES_NOT_EXIST' => 'Extensia %s nu există.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'ÃŽntrebări puse frecvent', + 'FILENAME' => 'Nume fiÅŸier', + 'FILESIZE' => 'Dimensiune fiÅŸier', + 'FILEDATE' => 'Dată fiÅŸier', + 'FILE_COMMENT' => 'Comentariu fiÅŸier', + 'FILE_CONTENT_ERR' => 'Nu se poate citi conÈ›inutul fiÈ™ierului: %s', + 'FILE_JSON_DECODE_ERR' => 'Decodarea fiÈ™ierului json eÈ™uată: %s', + 'FILE_NOT_FOUND' => 'FiÅŸierul cerut nu a putut fi găsit: %s', + 'FIND_USERNAME' => 'Caută un membru', + 'FOLDER' => 'Folder', + 'FORGOT_PASS' => 'Am uitat parola', + 'FORM_INVALID' => 'Formularul trimis a fost invalid. IncercaÅ£i să-l retrimiteÅ£i.', + 'FORUM' => 'Forum', + 'FORUMS' => 'Forumuri', + 'FORUMS_MARKED' => 'Forumurile au fost marcate ca fiind citite.', + 'FORUM_CAT' => 'Categorie forum', + 'FORUM_INDEX' => 'Prima pagină', + 'FORUM_LINK' => 'Link forum', + 'FORUM_LOCATION' => 'LocaÅ£ie forum', + 'FORUM_LOCKED' => 'Forum închis', + 'FORUM_RULES' => 'Reguli forum', + 'FORUM_RULES_LINK' => 'Accesează link-ul pentru a putea vedea regulile forumului', + 'FROM' => 'de la', + 'FSOCK_DISABLED' => 'OperaÅ£iunea nu a putut fi finalizată deoarece funcÅ£ia fsockopen a fost dezactivată sau serverul care este interogat nu a fost găsit.', + 'FSOCK_TIMEOUT' => 'Nu am putut ajunge la serverul din reÈ›ea.', + + 'FTP_FSOCK_HOST' => 'Host FTP', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_FSOCK_PASSWORD' => 'Parola FTP', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_FSOCK_PORT' => 'Port FTP', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_FSOCK_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_FSOCK_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_FSOCK_USERNAME' => 'Nume de utilizator FTP', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'FTP_HOST' => 'Host FTP', + 'FTP_HOST_EXPLAIN' => 'Serverul FTP folosit pentru conexiunea cu siteul dumneavoastră.', + 'FTP_PASSWORD' => 'Parola FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Parola pentru numele de utilizator FTP.', + 'FTP_PORT' => 'Port FTP', + 'FTP_PORT_EXPLAIN' => 'Portul folosit pentru conexiunea cu serverul dumneavoastră.', + 'FTP_ROOT_PATH' => 'Calea către phpBBH', + 'FTP_ROOT_PATH_EXPLAIN' => 'Calea către rădăcina forumului phpBB.', + 'FTP_TIMEOUT' => 'Sesiunea FTP a expirat', + 'FTP_TIMEOUT_EXPLAIN' => 'Timpul, în secunde, pe care sistemul îl va aÅŸtepta pentru a primi un răspuns de la server.', + 'FTP_USERNAME' => 'Nume de utilizator FTP', + 'FTP_USERNAME_EXPLAIN' => 'Numele de utilizator folosit pentru conexiunea cu serverul dumneavoastră.', + + 'GENERAL_ERROR' => 'Eroare generală', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Du-te la primul mesaj', + 'GOTO_LAST_POST' => 'Du-te la ultimul mesaj', + 'GO' => 'Du-te', + 'GOTO_PAGE' => 'Du-te la pagina', + 'GROUP' => 'Grup', + 'GROUPS' => 'Grupuri', + 'GROUP_ERR_TYPE' => 'Tipul de grup specificat este nepotrivit.', + 'GROUP_ERR_USERNAME' => 'Numele grupului nu a fost specificat.', + 'GROUP_ERR_USER_LONG' => 'Numele grupului nu poate depăşi 60 de caractere. Numele grupului specificat este prea mare.', + 'GUEST' => 'Vizitator', + 'GUEST_USERS_ONLINE' => array( + 1 => 'Este %d vizitator online', + 2 => 'Sunt %d vizitatori online', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d vizitator', + 2 => '%d vizitatori', + ), + 'G_ADMINISTRATORS' => 'Administratori', + 'G_BOTS' => 'BoÅ£i', + 'G_GUESTS' => 'Vizitatori', + 'G_REGISTERED' => 'Utilizatori înregistraÅ£i', + 'G_REGISTERED_COPPA' => 'Utilizatori COPPA înregistraÅ£i', + 'G_GLOBAL_MODERATORS' => 'Moderatori globali', + 'G_NEWLY_REGISTERED' => 'Utilizatori înregistraÅ£i recent', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d utilizator ascuns', + 2 => '%d utilizatori ascunÈ™i', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d ascuns', + 2 => '%d ascunÈ™i', + ), + 'HIDE_GUESTS' => 'Ascunde vizitatori', + 'HIDE_ME' => 'Ascunde starea mea online în această sesiune', + 'HOURS' => 'Ore', + 'HOME' => 'Acasă', + + 'ICQ' => 'ICQ', + 'IF' => 'Dacă', + 'IMAGE' => 'Imagine', + 'IMAGE_FILETYPE_INVALID' => 'Tip de fiÅŸier imagine %d pentru tipul mime %s nu este suportat.', + 'IMAGE_FILETYPE_MISMATCH' => 'Tip de fiÅŸier imagine nepotrivit: extensie aÅŸteptată %1$s, dar este furnizată extensie %2$s.', + 'IN' => 'în', + 'INACTIVE' => 'Inactiv', + 'INDEX' => 'Prima pagină', + 'INFORMATION' => 'InformaÅ£ie', + 'INSECURE_REDIRECT' => 'Incercare de redirecÈ›ionare către un URL potenÈ›ial nesigur.', + 'INTERESTS' => 'Interese', + 'INVALID_DIGEST_CHALLENGE' => 'Cerere invalidă de sistematizare.', + 'INVALID_EMAIL_LOG' => '%s o adresă de e-mail posibil invalidă?', + 'INVALID_PLURAL_RULE' => 'Alegerea mai multor reguli nu e validă. Valorile valide sunt cuprinse între 0 È™i 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'IP-ul dumneavoastră %1$s a fost blocat pentru că este în lista neagră. Pentru detalii vizualizaÅ£i %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Membru din', + 'JUMP_PAGE' => 'IntroduceÅ£i numărul paginii la care doriÅ£i să vă duceÅ£i.', + 'JUMP_TO' => 'Mergi la', + 'JUMP_TO_PAGE' => 'Click pentru a vă duce la pagina…', + 'JUMP_TO_PAGE_CLICK' => 'Click pentru a vă duce la pagina…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Ultimul mesaj', + 'LAST_UPDATED' => 'Ultima actualizare', + 'LAST_VISIT' => 'Ultima vizită', + 'LDAP_NO_LDAP_EXTENSION' => 'Extensia LDAP nu este valabilă.', + 'LDAP_NO_SERVER_CONNECTION' => 'Nu s-a putut efectua conexiunea la server-ul LDAP.', + 'LDAP_SEARCH_FAILED' => 'O eroare a apărut în timpul căutării în directorul LDAP.', + 'LEGEND' => 'Legendă', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Căutarile directe nu sunt permise.', + 'LOADING' => 'ÃŽncărcare', + 'LOCATION' => 'Localitate', + 'LOCK_POST' => 'ÃŽnchide mesaj', + 'LOCK_POST_EXPLAIN' => 'Previne editarea', + 'LOCK_TOPIC' => 'ÃŽnchide subiect', + 'LOGIN' => 'Autentificare', + 'LOGIN_CHECK_PM' => 'Autentifică-te pentru a-Å£i verifica mesajele private.', + 'LOGIN_CONFIRMATION' => 'Confirmare autentificare', + 'LOGIN_CONFIRM_EXPLAIN' => 'Pentru a preveni conturile forÅ£ate, forumul vă cere să introduceÅ£i un cod de confirmare după un număr maxim de încercări de autentificare eÅŸuate. Codul este afiÅŸat în imaginea de mai jos. Dacă aveÅ£i probleme cu vizualizarea acestuia sau nu puteÅ£i citi codul, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_ATTEMPTS' => 'AÅ£i depăşit numărul maxim de încercări de autentificare. AdiÅ£ional cu numele de utilizator ÅŸi parola mai trebuie să verificaÅ£i componenta afiÅŸată mai jos.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Nu aÅ£i fost autentificat de Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'Un serviciu OAuth inexistent a fost solicitat.', + 'LOGIN_ERROR_PASSWORD' => 'AÅ£i specificat o parolă incorectă. Vă rugăm să vă verificaÅ£i parola ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Nu a fost posibil să fie convertită parola în timpul actualizării softului de forum. Vă rugăm să %scereÅ£i o nouă parolă%s. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_ERROR_USERNAME' => 'AÅ£i specificat un nume de utilizator incorect. Vă rugăm să vă verificaÅ£i numele de utilizator ÅŸi să încercaÅ£i din nou. Dacă continuaÅ£i să aveÅ£i probleme, vă rugăm să contactaÅ£i %sAdministratorul forumului%s.', + 'LOGIN_FORUM' => 'Pentru a vizualiza sau scrie în acest forum, trebuie să introduceÅ£i parola.', + 'LOGIN_INFO' => 'Pentru a vă autentifica, trebuie să vă înregistraÅ£i. ÃŽnregistrarea durează câteva secunde, dar vă va oferi facilităţi suplimentare. Administratorul forumului poate de asemenea să acorde permisiuni suplimentare utilizatorilor înregistraÅ£i. ÃŽnainte de a vă autentifica, asiguraÅ£i-vă că sunteÅ£i familiarizat cu termenii noÅŸtri de folosire ÅŸi politicile asociate. Vă rugăm să vă asiguraÅ£i că aÅ£i citit regulile forumului înainte să navigaÅ£i pe acesta.', + 'LOGIN_VIEWFORUM' => 'Necesită să fiÅ£i înregistrat ÅŸi autentificat pentru a putea vizualiza acest forum.', + 'LOGIN_EXPLAIN_EDIT' => 'Pentru a putea modifica mesajele din acest forum, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Pentru a putea vizualiza lista cu cei care sunt online, trebuie să vă înregistraÅ£i ÅŸi să vă autentificaÅ£i.', + 'LOGIN_REQUIRED' => 'Trebuie să fiÈ›i autentificat pentru această acÈ›iune.', + 'LOGOUT' => 'Deconectare', + 'LOGOUT_USER' => 'Deconectare [ %s ]', + 'LOG_ME_IN' => 'Autentifică-mă automat la fiecare vizită', + + 'MAIN' => 'Main', + 'MARK' => 'Marchează', + 'MARK_ALL' => 'Marchează toate', + 'MARK_ALL_READ' => 'Marchează toate citite', + 'MARK_FORUMS_READ' => 'Marchează forumurile ca fiind citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile ca fiind citite', + 'MARK_READ' => 'Marchează drept citite', + 'MARK_SUBFORUMS_READ' => 'Marchează subforumurile citite', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Panoul moderatorului', + 'MCP_SHORT' => 'MCP', + 'MEMBERLIST' => 'Membri', + 'MEMBERLIST_EXPLAIN' => 'Vezi lista completă a membrilor', + 'MERGE' => 'UneÅŸte', + 'MERGE_POSTS' => 'Mută mesaje', + 'MERGE_TOPIC' => 'UneÅŸte subiecte', + 'MESSAGE' => 'Mesaj', + 'MESSAGES' => 'Mesaje', + 'MESSAGES_COUNT' => array( + 1 => '%d mesaj', + 2 => '%d mesaje', + ), + 'MESSAGE_BODY' => 'Corpul mesajului', + 'MINUTES' => 'Minute', + 'MODERATE' => 'Moderează', + 'MODERATOR' => 'Moderator', + 'MODERATORS' => 'Moderatori', + 'MODULE_NOT_ACCESS' => 'Modulul nu e accesibil', + 'MODULE_NOT_FIND' => 'Modulul %s nu poate fi găsit', + 'MODULE_FILE_INCORRECT_CLASS' => 'FiÈ›ierul modulului %s nu conÈ›ine clasa corectă [%s]', + 'MONTH' => 'Lună', + 'MOVE' => 'Mută', + + 'NA' => 'N/A', + 'NEWEST_USER' => 'Cel mai nou membru %s', + 'NEW_MESSAGE' => 'Mesaj nou', + 'NEW_MESSAGES' => 'Mesaje noi', + 'NEW_POST' => 'Mesaj nou', + 'NEW_POSTS' => 'Mesaje noi', + 'NEXT' => 'Următorul', // Used in pagination + 'NEXT_STEP' => 'Următorul', + 'NEVER' => 'Niciodată', + 'NO' => 'Nu', + 'NO_NOTIFICATIONS' => 'Nu aveÈ›i notificări', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Nu sunteÅ£i autorizat să conduceÅ£i acest grup.', + 'NOT_AUTHORISED' => 'Nu sunteÅ£i autorizat să accesaÅ£i această zonă.', + 'NOT_WATCHING_FORUM' => 'Nu mai sunteÅ£i abonat la actualizările acestui forum.', + 'NOT_WATCHING_TOPIC' => 'Nu mai sunteÅ£i abonat la acest subiect.', + 'NOTIFICATIONS' => 'Notificări', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Răspuns de la %1$s în subiectul urmărit:', + ), + 'NOTIFICATION_FORUM' => 'Forum: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Cerere de la %1$s pentru aderare la grupul %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Cerere aprobată pentru a adera la grupul %1$s.', + 'NOTIFICATION_PM' => 'Mesaj privat de la %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Răspuns de la %1$s în subiectul:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Mesaj aprobat:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Mesaj neaprobat:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Arobare mesaj solicitată de %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Citat de %1$s în:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Motiv: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'Mesaj privat raportat de %1$s:', + 'NOTIFICATION_REPORT_POST' => 'Mesaj raportat de %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Raport închis de %1$s for:', + 'NOTIFICATION_TOPIC' => 'Subiect nou de %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Subiect aprobat:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Subiect neaprobat:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Aprobare subiect solicitată de %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'Tipul de notificare "%s" lipseÈ™te din fiÈ™ierele sistemului.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Activare solicitată pentru utilizator dezactivat sau nou înregistrat: “%1$sâ€', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'alÈ›ii', + 'NOTIFICATION_X_OTHERS' => array( + 2 => '%d others', + ), + 'NOTIFY_ADMIN' => 'Vă rugăm să anunÅ£aÅ£i administratorul forumului sau webmaster-ul.', + 'NOTIFY_ADMIN_EMAIL' => 'Va rugăm să anunÅ£ati administratorul forumului sau webmaster-ul: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Nu sunteÅ£i autorizat să accesaÅ£i acest fiÅŸier.', + 'NO_ACTION' => 'Nicio acÅ£iune specificată.', + 'NO_ADMINISTRATORS' => 'Nu sunt administratori.', + 'NO_AUTH_ADMIN' => 'Accesul la Panoul administratorului este interzis pentru că nu aveÅ£i permisiuni administrative.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Nu puteÅ£i să vă reautentificaÅ£i ca un alt utilizator.', + 'NO_AUTH_OPERATION' => 'Nu aveÅ£i permisiunile necesare pentru a termina această operaÅ£ie.', + 'NO_AVATARS' => 'Nu există imagini asociate (avatar) disponibile', + 'NO_CONNECT_TO_SMTP_HOST' => 'Nu s-a putut efectua conexiunea către hostul smtp: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Astăzi nu sărbătorim nici o zi de naÅŸtere', + 'NO_EMAIL_MESSAGE' => 'Emailul a fost gol.', + 'NO_EMAIL_RESPONSE_CODE' => 'Nu s-au putut lua codurile de răspuns ale server-ului de email.', + 'NO_EMAIL_SUBJECT' => 'Nu aÅ£i specificat subiectul e-mailului.', + 'NO_FORUM' => 'Forumul selectat nu există.', + 'NO_FORUMS' => 'Nu există forumuri.', + 'NO_GROUP' => 'Grupul cerut nu există.', + 'NO_GROUP_MEMBERS' => 'Acest grup momentan nu are membri.', + 'NO_IPS_DEFINED' => 'Niciun IP sau hostname nu a fost definit', + 'NO_MEMBERS' => 'Niciun membru nu a fost găsit pentru aceste criterii de căutare.', + 'NO_MESSAGES' => 'Niciun mesaj', + 'NO_MODE' => 'Niciun mod specificat.', + 'NO_MODERATORS' => 'Nu sunt moderatori.', + 'NO_NEW_MESSAGES' => 'Niciun mesaj nou', + 'NO_NEW_POSTS' => 'Niciun mesaj nou', + 'NO_ONLINE_USERS' => 'Niciun utilizator înregistrat', + 'NO_POSTS' => 'Niciun mesaj', + 'NO_POSTS_TIME_FRAME' => 'Nu există niciun mesaj în interiorul acestui subiect pentru perioada de timp selectată.', + 'NO_FEED_ENABLED' => 'Fluxurile nu sunt disponibile pentru acest forum.', + 'NO_FEED' => 'Fluxul solicitat nu este disponibil.', + 'NO_STYLE_DATA' => 'Nu au putut fi obÈ›inute datele stilului', + 'NO_SUBJECT' => 'Niciun subiect specificat', // Used for posts having no subject defined but displayed within management pages. + 'NO_SUCH_SEARCH_MODULE' => 'Backend-ul de căutare specificat nu există.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Nu există nicio metodă de autentificare.', + 'NO_TOPIC' => 'Subiectul specificat nu există.', + 'NO_TOPIC_FORUM' => 'Subiectul sau forumul nu există.', + 'NO_TOPICS' => 'Nu există subiecte sau mesaje în acest forum.', + 'NO_TOPICS_TIME_FRAME' => 'Nu există niciun subiect în interiorul acestui forum pentru perioada de timp selectată.', + 'NO_UNREAD_POSTS' => 'Nu sunt mesaje necitite', + 'NO_UPLOAD_FORM_FOUND' => 'ÃŽncărcare iniÅ£iată, dar nu a fost găsit niciun formular de încărcare valid.', + 'NO_USER' => 'Utilizatorul specificat nu există.', + 'NO_USERS' => 'Utilizatorii specificaÅ£i nu există.', + 'NO_USER_SPECIFIED' => 'Nu a fost specificat niciun nume de utilizator.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d ataÈ™ament', + 2 => '%d ataÈ™amente', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Nu există mesaje în aÈ™teptare', // 0 + 1 => '1 mesaj în aÈ™teptare', // 1 + 2 => '%d mesaje în aÈ™teptare', // 2+ + ), + + 'OCCUPATION' => 'OcupaÅ£ia', + 'OFFLINE' => 'Neconectat', + 'ONLINE' => 'Conectat', + 'ONLINE_BUDDIES' => 'Prieteni conectaÅ£i', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'In total este %1$d utilizator online :: %2$s È™i %3$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s È™i %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'In total este %1$d utilizator online :: %2$s, %3$s È™i %4$s', + 2 => 'In total sunt %1$d utilizatori online :: %2$s, %3$s È™i %4$s', + ), + 'OPTIONS' => 'OpÅ£iuni', + + 'PAGE_OF' => 'Pagina %1$d din %2$d', + 'PAGE_TITLE_NUMBER' => 'Pagina %s', + 'PASSWORD' => 'Parolă', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d pixel', + 2 => '%d pixeli', + ), + 'PLAY_QUICKTIME_FILE' => 'Deschide fiÅŸierul Quicktime', + 'PLEASE_WAIT' => 'Vă rugăm aÈ™teptaÈ›i.', + 'PM' => 'MP', + 'PM_REPORTED' => 'ApăsaÅ£i aici ca să citiÅ£i raportul', + 'POSTING_MESSAGE' => 'Scrie mesaj în %s', + 'POSTING_PRIVATE_MESSAGE' => 'Compune mesaj privat', + 'POST' => 'Mesaj', + 'POST_ANNOUNCEMENT' => 'AnunÅ£', + 'POST_STICKY' => 'Important', + 'POSTED' => 'Scris', + 'POSTED_IN_FORUM' => 'în', + 'POSTED_ON_DATE' => 'pe', + 'POSTS' => 'Mesaje', + 'POSTS_UNAPPROVED' => 'Cel puÅ£in un mesaj din acest subiect nu a fost aprobat.', + 'POSTS_UNAPPROVED_FORUM'=> 'Cel puÈ›in un mesaj în acest forum nu este aprobat.', + 'POST_BY_AUTHOR' => 'de', + 'POST_BY_FOE' => 'Acest mesaj a fost făcut de %1$s care este momentan în lista de ignore.', + 'POST_DISPLAY' => '%1$sAfiÈ™ează acest mesaj%2$s.', + 'POST_DAY' => '%.2f mesaje pe zi', + 'POST_DELETED_ACTION' => 'Mesaje È™terse:', + 'POST_DELETED' => 'Acest mesaj a fost È™ters.', + 'POST_DELETED_BY' => '%2$s È™terse de %1$s la %3$s.', + 'POST_DELETED_BY_REASON'=> '%2$s È™terse de %1$s la %3$s pentru motivul: %4$s', + 'POST_DETAILS' => 'Detalii mesaj', + 'POST_NEW_TOPIC' => 'Scrie un subiect nou', + 'POST_PCT' => '%.2f%% din toate mesajele', + 'POST_PCT_ACTIVE' => '%.2f%% din mesajele utilizatorului', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% din mesajele dumneavoastră', + 'POST_REPLY' => 'Răspunde', + 'POST_REPORTED' => 'AccesaÅ£i pentru a consulta raportul', + 'POST_SUBJECT' => 'Subiectul mesajului', + 'POST_TIME' => 'Dată mesaj', + 'POST_TOPIC' => 'Scrie un subiect nou', + 'POST_UNAPPROVED_ACTION'=> 'Mesaj care aÈ™teaptă aprobarea:', + 'POST_UNAPPROVED' => 'Acest mesaj aÅŸteaptă pentru a fi aprobat', + 'POWERED_BY' => 'Furnizat de %s', + 'PREVIEW' => 'Previzualizează', + 'PREVIOUS' => 'Anterior', // Used in pagination + 'PREVIOUS_STEP' => 'Anterior', + 'PRIVACY' => 'Politica de confidenÅ£ialitate', + 'PRIVATE_MESSAGE' => 'Mesaj privat', + 'PRIVATE_MESSAGES' => 'Mesaje private', + 'PRIVATE_MESSAGING' => 'Mesageria privată', + 'PROFILE' => 'Panoul utilizatorului', + + 'QUICK_LINKS' => 'Legături rapide', + + 'RANK' => 'Rang', + 'READING_FORUM' => 'Vizualizare subiecte în %s', + 'READING_GLOBAL_ANNOUNCE' => 'CiteÅŸte anunÅ£urile globale', + 'READING_LINK' => 'Accesare linkul forumului %s', + 'READING_TOPIC' => 'CiteÅŸte subiect în %s', + 'READ_PROFILE' => 'Profil', + 'REASON' => 'Motiv', + 'RECORD_ONLINE_USERS' => 'Cei mai mulÅ£i utilizatori conectaÅ£i au fost %1$s pe %2$s', + 'REDIRECT' => 'RedirecÅ£ionează', + 'REDIRECTS' => 'Totalul redirecÅ£ionărilor', + 'REGISTER' => 'ÃŽnregistrare', + 'REGISTERED_USERS' => 'Utilizatori înregistraÅ£i:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'Aici este %1$d utilizator înregistrat È™i %2$s online', + 2 => 'Aici sunt %1$d utilizatori înregistraÈ›i È™i %2$s online', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d înregistrat', + 2 => '%d înregistraÈ›i', + ), + 'REMOVE' => 'Elimină', + 'REMOVE_INSTALL' => 'Åžterge, mută sau redenumeÅŸte directorul install înainte de a folosi forumul. Dacă acest director este în continuare prezent, numai Panoul administratorului (PA) va fi accesibil.', + 'REPLIES' => 'Răspunsuri', + 'REPLY_WITH_QUOTE' => 'Răspuns cu citat', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Răspuns la anunÅ£ul global', + 'REPLYING_MESSAGE' => 'Răspunde mesajului din %s', + 'REPORT_BY' => 'Raportat de', + 'REPORT_POST' => 'Raportează acest mesaj', + 'REPORTING_POST' => 'Raportând mesajul', + 'RESEND_ACTIVATION' => 'Retrimite e-mail-ul de activare', + 'RESET' => 'Resetare', + 'RESTORE_PERMISSIONS' => 'Restabilire permisiuni', + 'RETURN_INDEX' => '%sÃŽnapoi la prima pagină%s', + 'RETURN_FORUM' => '%sÃŽnapoi la ultimul forum vizitat%s', + 'RETURN_PAGE' => '%sÃŽnapoi la pagina anterioară%s', + 'RETURN_TOPIC' => '%sÃŽnapoi la ultimul subiect vizitat%s', + 'RETURN_TO' => 'ÃŽnapoi la “%sâ€', + 'RETURN_TO_INDEX' => 'ÃŽnapoi la indexul forumului', + 'FEED' => 'Flux', + 'FEED_NEWS' => 'Åžtiri', + 'FEED_TOPICS_ACTIVE' => 'Subiecte active', + 'FEED_TOPICS_NEW' => 'Subiecte noi', + 'RULES_ATTACH_CAN' => 'PuteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_ATTACH_CANNOT' => 'Nu puteÅ£i publica fiÅŸiere ataÅŸate în acest forum', + 'RULES_DELETE_CAN' => 'PuteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DELETE_CANNOT' => 'Nu puteÅ£i ÅŸterge mesajele dumneavoastră în acest forum', + 'RULES_DOWNLOAD_CAN' => 'PuteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_DOWNLOAD_CANNOT' => 'Nu puteÅ£i descărca fiÅŸierele ataÅŸate din acest forum', + 'RULES_EDIT_CAN' => 'PuteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_EDIT_CANNOT' => 'Nu puteÅ£i modifica mesajele dumneavoastră în acest forum', + 'RULES_LOCK_CAN' => 'PuteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_LOCK_CANNOT' => 'Nu puteÅ£i închide subiectele dumneavoastră în acest forum', + 'RULES_POST_CAN' => 'PuteÅ£i scrie subiecte noi în acest forum', + 'RULES_POST_CANNOT' => 'Nu puteÅ£i scrie subiecte noi în acest forum', + 'RULES_REPLY_CAN' => 'PuteÅ£i răspunde subiectelor din acest forum', + 'RULES_REPLY_CANNOT' => 'Nu puteÅ£i răspunde subiectelor din acest forum', + 'RULES_VOTE_CAN' => 'PuteÅ£i vota în chestionarele din acest forum', + 'RULES_VOTE_CANNOT' => 'Nu puteÅ£i vota în chestionarele din acest forum', + + 'SEARCH' => 'Căutare', + 'SEARCH_MINI' => 'Căutare…', + 'SEARCH_ADV' => 'Căutare avansată', + 'SEARCH_ADV_EXPLAIN' => 'Vezi opÅ£iuni căutare avansată', + 'SEARCH_KEYWORDS' => 'Căutare după cuvinte cheie', + 'SEARCHING_FORUMS' => 'Căutare forumuri', + 'SEARCH_ACTIVE_TOPICS' => 'Vezi subiecte active', + 'SEARCH_FOR' => 'Căutare după', + 'SEARCH_FORUM' => 'Căutare în acest forum…', + 'SEARCH_NEW' => 'Vezi mesaje noi', + 'SEARCH_POSTS_BY' => 'Căutare mesaje după', + 'SEARCH_SELF' => 'Vezi mesaje proprii', + 'SEARCH_TOPIC' => 'Căutare în acest subiect…', + 'SEARCH_UNANSWERED' => 'Vezi subiecte fără răspuns', + 'SEARCH_UNREAD' => 'Vezi mesaje necitite', + 'SEARCH_USER_POSTS' => 'Caută mesajele utilizatorului', + 'SECONDS' => 'Secunde', + 'SEE_ALL' => 'Vezi tot', + 'SELECT' => 'SelectaÅ£i', + 'SELECT_ALL_CODE' => 'SelectaÅ£i tot', + 'SELECT_DESTINATION_FORUM' => 'Vă rugăm să selectaÅ£i un forum destinaÅ£ie', + 'SELECT_FORUM' => 'SelectaÅ£i un forum', + 'SEND_EMAIL' => 'E-mail', // Used for submit buttons + 'SEND_EMAIL_USER' => 'E-mail către %s', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX + 'SEND_PRIVATE_MESSAGE' => 'TrimiteÅ£i mesaj privat', + 'SETTINGS' => 'Setări', + 'SIGNATURE' => 'Semnătură', + 'SKIP' => 'Treci peste conÅ£inut', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'Server-ul SMTP nu suportă autentificarea.', + 'SORRY_AUTH_READ' => 'Nu sunteÅ£i autorizat să citiÅ£i acest forum.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Nu sunteÅ£i autorizat să descărcaÅ£i acest fiÅŸier ataÅŸat.', + 'SORT_BY' => 'Sortează după', + 'SORT_JOINED' => 'Data înregistrării', + 'SORT_LOCATION' => 'Localitate', + 'SORT_RANK' => 'Rang', + 'SORT_POSTS' => 'Mesaje', + 'SORT_TOPIC_TITLE' => 'Titlul subiectului', + 'SORT_USERNAME' => 'Nume de utilizator', + 'SPLIT_TOPIC' => 'Desparte subiect', + 'SQL_ERROR_OCCURRED' => 'O eroare SQL a apărut în timp ce pagina era în lucru. Vă rugăm să contactaÅ£i %sAdministratorul forumului%s dacă problema persistă.', + 'STATISTICS' => 'Statistici', + 'START_WATCHING_FORUM' => 'Abonare forum', + 'START_WATCHING_TOPIC' => 'Abonare subiect', + 'STOP_WATCHING_FORUM' => 'Dezabonare forum', + 'STOP_WATCHING_TOPIC' => 'Dezabonare subiect', + 'STRING_LIST_MULTI' => '%1$s, È™i %2$s', + 'STRING_LIST_SIMPLE' => '%1$s È™i %2$s', + 'SUBFORUM' => 'Subforum', + 'SUBFORUMS' => 'Subforumuri', + 'SUBJECT' => 'Subiect', + 'SUBMIT' => 'Trimite', + + 'TB' => 'TB', + 'TERMS_USE' => 'Termeni de utilizare', + 'TEST_CONNECTION' => 'Testează conexiunea', + 'THE_TEAM' => 'Echipa', + 'TIB' => 'TiB', + 'TIME' => 'Data', + 'TIMEOUT_PROCESSING_REQ'=> 'Cererea a expirat.', + + 'TOO_LARGE' => 'Valoarea specificată este prea mare.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mare.', + + 'TOO_LONG' => 'Valoarea specificată este prea lungă.', + + 'TOO_LONG_CONFIRM_CODE' => 'Codul de confirmare introdus este prea lung.', + 'TOO_LONG_DATEFORMAT' => 'Formatul datei introdus este prea lung.', + 'TOO_LONG_JABBER' => 'Numele contului Jabber introdus este prea lung.', + 'TOO_LONG_NEW_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea lungă.', + 'TOO_LONG_USER_PASSWORD' => 'Parola introdusă este prea lungă.', + 'TOO_LONG_USERNAME' => 'Numele de utilizator introdus este prea lung.', + 'TOO_LONG_EMAIL' => 'Adresa de email introdusă este prea lungă.', + + 'TOO_MANY_VOTE_OPTIONS' => 'AÅ£i încercat să votaÅ£i la prea multe opÅ£iuni.', + + 'TOO_SHORT' => 'Valoarea specificată este prea scurtă.', + + 'TOO_SHORT_CONFIRM_CODE' => 'Codul de confirmare introdus este prea scurt.', + 'TOO_SHORT_DATEFORMAT' => 'Formatul datei introduse este prea scurt.', + 'TOO_SHORT_JABBER' => 'Numele contului Jabber introdus este prea scurt.', + 'TOO_SHORT_NEW_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'Confirmarea parolei introdusă este prea scurtă.', + 'TOO_SHORT_USER_PASSWORD' => 'Parola introdusă este prea scurtă.', + 'TOO_SHORT_USERNAME' => 'Numele de utilizator introdus este prea scurt.', + 'TOO_SHORT_EMAIL' => 'Adresa de email introdusă este prea scurtă.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'Confirmarea adresei de e-mail introdusă este prea scurtă.', + 'TOO_SMALL' => 'Valoare specificată este prea mică.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'Valoarea introdusă pentru setarea Numărul maxim permis de destinatari pentru fiecare mesaj privat este prea mică.', + + 'TOPIC' => 'Subiect', + 'TOPICS' => 'Subiecte', + 'TOPICS_UNAPPROVED' => 'Cel puÅ£in un subiect din acest forum nu a fost aprobat.', + 'TOPIC_ICON' => 'Iconiţă subiect', + 'TOPIC_LOCKED' => 'Acest subiect este închis, nu puteÅ£i modifica mesaje sau să scrieÅ£i răspunsuri viitoare.', + 'TOPIC_LOCKED_SHORT'=> 'Subiect închis', + 'TOPIC_MOVED' => 'Subiect mutat', + 'TOPIC_REVIEW' => 'Subiect revizuit', + 'TOPIC_TITLE' => 'Titlu subiect', + 'TOPIC_UNAPPROVED' => 'Acest subiect nu a fost aprobat', + 'TOPIC_DELETED' => 'Acest subiect a fost È™ters.', + 'TOTAL_ATTACHMENTS' => 'FiÅŸier(e) ataÅŸat(e)', + 'TOTAL_LOGS' => array( + 1 => '%d log', + 2 => '%d log-uri', + ), + 'TOTAL_PMS' => array( + 1 => '%d mesaj privat în total', + 2 => '%d mesaje private în total', + ), + 'TOPIC_POLL' => 'Acest subiect are un sondaj.', + 'TOTAL_POSTS' => 'Total mesaje', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Total mesaje %d', + ), + 'TOPIC_REPORTED' => 'Acest subiect a fost raportat', + 'TOTAL_TOPICS' => array( + 2 => 'Total subiecte %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Total membri %d', + ), + 'TRACKED_PHP_ERROR' => 'Erori PHP depistate: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'Nu a fost posibilă determinarea dimensiunilor imaginii.', + 'UNABLE_TO_DELIVER_FILE'=> 'Nu s-a putut trimite fiÅŸierul.', + 'UNKNOWN_BROWSER' => 'Browser necunoscut', + 'UNMARK_ALL' => 'Deselectează toate', + 'UNREAD_MESSAGES' => 'Mesaje necitite', + 'UNREAD_POST' => 'Mesaj necitit', + 'UNREAD_POSTS' => 'Mesaje necitite', + 'UNWATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest forum?', + 'UNWATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la forumul „%sâ€?', + 'UNWATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la acest subiect?', + 'UNWATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă dezabonaÈ›i de la subiectul „%sâ€?', + 'UNWATCHED_FORUMS' => 'Nu mai sunteÅ£i abonat la forumurile selectate.', + 'UNWATCHED_TOPICS' => 'Nu mai sunteÅ£i abonat subiectele selectate.', + 'UNWATCHED_FORUMS_TOPICS' => 'Nu mai sunteÅ£i abonat la intrările selectate.', + 'UPDATE' => 'Actualizat', + 'UPLOAD_IN_PROGRESS' => 'ÃŽncărcarea este momentan în progres.', + 'URL_REDIRECT' => 'Dacă browserul dumneavoastră nu suportă redirecÅ£ionări meta, atunci %sdaÅ£i un clik AICI pentru a fi redirecÅ£ionat%s.', + 'USERGROUPS' => 'Grupuri', + 'USERNAME' => 'Nume utilizator', + 'USERNAMES' => 'Nume utilizatori', + 'USER_AVATAR' => 'Avatar utilizator', + 'USER_CANNOT_READ' => 'Nu puteÅ£i citi mesajele din acest forum.', + 'USER_POSTS' => array( + 1 => '%d Mesaj', + 2 => '%d Mesaje', + ), + 'USERS' => 'Utilizatori', + 'USE_PERMISSIONS' => 'Testează permisiunile utilizatorului', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Ne pare rău dar nu sunteÅ£i autorizat să folosiÅ£i această funcÅ£ionalitate. E posibil să vă fi înregistrat aici recent ÅŸi să fie nevoie să participaÅ£i la mai multe discuÈ›ii ca să puteÅ£i folosi această funcÅ£ionalitate.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date + 'VIEWED' => 'Vizualizat', + 'VIEWED_COUNTS' => array( + 0 => 'ÃŽncă nevizualizat', + 1 => 'Vizualizat %d dată', + 2 => 'Vizualizat de %d ori', + ), + 'VIEWING_CONTACT_ADMIN' => 'Vizualizare pagina de contact', + 'VIEWING_FAQ' => 'Vizualizare FAQ', + 'VIEWING_MEMBERS' => 'Vizualizare detalii membru', + 'VIEWING_ONLINE' => 'Vizualizare cine este conectat', + 'VIEWING_MCP' => 'Vizualizare Panou moderator', + 'VIEWING_MEMBER_PROFILE' => 'Vizualizare profil membru', + 'VIEWING_PRIVATE_MESSAGES' => 'Vizualizare mesaje private', + 'VIEWING_REGISTER' => 'ÃŽnregistrare cont', + 'VIEWING_UCP' => 'Vizualizare Panou utilizator', + 'VIEWS' => 'Vizualizări', + 'VIEW_BOOKMARKS' => 'Vezi bookmark-uri', + 'VIEW_FORUM_LOGS' => 'Consultare loguri', + 'VIEW_LATEST_POST' => 'Vezi ultimul mesaj', + 'VIEW_NEWEST_POST' => 'Vezi ultimul mesaj necitit', + 'VIEW_NOTES' => 'Vezi notiÅ£ele utilizatorului', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'date care se bazează pe utilizatorii activi în ultimul %d minut', + 2 => 'date care se bazează pe utilizatorii activi în ultimele %d minute', + ), + 'VIEW_TOPIC' => 'Vezi subiect', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'AnunÅ£: ', + 'VIEW_TOPIC_GLOBAL' => 'AnunÅ£ global: ', + 'VIEW_TOPIC_LOCKED' => 'ÃŽnchis: ', + 'VIEW_TOPIC_LOGS' => 'Consultare loguri', + 'VIEW_TOPIC_MOVED' => 'Mutat: ', + 'VIEW_TOPIC_POLL' => 'Chestionar: ', + 'VIEW_TOPIC_STICKY' => 'Important: ', + 'VISIT_WEBSITE' => 'Vizitează site web', + + 'WARNINGS' => 'Avertismente', + 'WARN_USER' => 'Avertizează utilizator', + 'WATCH_FORUM_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest forum?', + 'WATCH_FORUM_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la forumul „%sâ€?', + 'WATCH_TOPIC_CONFIRM' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la acest subiect?', + 'WATCH_TOPIC_DETAILED' => 'SunteÈ›i sigur că doriÈ›i să vă abonaÈ›i la subiectul „%sâ€?', + 'WELCOME_SUBJECT' => 'Bine aÅ£i venit în forumurile %s', + 'WEBSITE' => 'Site web', + 'WHOIS' => 'Cine este', + 'WHO_IS_ONLINE' => 'Cine este conectat', + 'WLM' => 'WLM', + 'WRONG_PASSWORD' => 'AÅ£i introdus o parolă incorectă.', + + 'WRONG_DATA_COLOUR' => 'Valoarea culorii introduse este invalidă.', + 'WRONG_DATA_JABBER' => 'Numele introdus nu este un nume de cont Jabber valid.', + 'WRONG_DATA_LANG' => 'Limba specificată nu este validă.', + 'WRONG_DATA_POST_SD' => 'DirecÈ›ia specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_POST_SK' => 'OpÈ›iunea specificată de sortare a mesajelor nu e validă.', + 'WRONG_DATA_TOPIC_SD' => 'DirecÈ›ia specificată de sortare a subiectelor nu e validă.', + 'WRONG_DATA_TOPIC_SK' => 'OpÈ›iunea specificată de sortare a subiectelor nu e validă.', + 'WROTE' => 'scrie', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'An', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'Da', + 'YOU_LAST_VISIT' => 'Ultima vizită a fost: %s', + + 'datetime' => array( + 'TODAY' => 'Astăzi, ', + 'TOMORROW' => 'Mâine, ', + 'YESTERDAY' => 'Ieri, ', + 'AGO' => array( + 0 => 'mai puÅ£in de un minut în urmă', + 1 => '%d minut în urmă', + 2 => '%d minute în urmă', + ), + 'Sunday' => 'Duminică', + 'Monday' => 'Luni', + 'Tuesday' => 'MarÅ£i', + 'Wednesday' => 'Miercuri', + 'Thursday' => 'Joi', + 'Friday' => 'Vineri', + 'Saturday' => 'Sâmbătă', + + 'Sun' => 'Dum', + 'Mon' => 'Lun', + 'Tue' => 'Mar', + 'Wed' => 'Mie', + 'Thu' => 'Joi', + 'Fri' => 'Vin', + 'Sat' => 'Sâm', + + 'January' => 'Ianuarie', + 'February' => 'Februarie', + 'March' => 'Martie', + 'April' => 'Aprilie', + 'May' => 'Mai', + 'June' => 'Iunie', + 'July' => 'Iulie', + 'August' => 'August', + 'September' => 'Septembrie', + 'October' => 'Octombrie', + 'November' => 'Noiembrie', + 'December' => 'Decembrie', + + 'Jan' => 'Ian', + 'Feb' => 'Feb', + 'Mar' => 'Mar', + 'Apr' => 'Apr', + 'May_short' => 'Mai', // Short representation of "May". May_short used because in english the short and long date are the same for May. + 'Jun' => 'Iun', + 'Jul' => 'Iul', + 'Aug' => 'Aug', + 'Sep' => 'Sep', + 'Oct' => 'Oct', + 'Nov' => 'Noi', + 'Dec' => 'Dec', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + 'Africa/Abidjan' => 'Africa/Abidjan', + 'Africa/Accra' => 'Africa/Accra', + 'Africa/Addis_Ababa' => 'Africa/Addis Ababa', + 'Africa/Algiers' => 'Africa/Algiers', + 'Africa/Asmara' => 'Africa/Asmara', + 'Africa/Bamako' => 'Africa/Bamako', + 'Africa/Bangui' => 'Africa/Bangui', + 'Africa/Banjul' => 'Africa/Banjul', + 'Africa/Bissau' => 'Africa/Bissau', + 'Africa/Blantyre' => 'Africa/Blantyre', + 'Africa/Brazzaville' => 'Africa/Brazzaville', + 'Africa/Bujumbura' => 'Africa/Bujumbura', + 'Africa/Cairo' => 'Africa/Cairo', + 'Africa/Casablanca' => 'Africa/Casablanca', + 'Africa/Ceuta' => 'Africa/Ceuta', + 'Africa/Conakry' => 'Africa/Conakry', + 'Africa/Dakar' => 'Africa/Dakar', + 'Africa/Dar_es_Salaam' => 'Africa/Dar es Salaam', + 'Africa/Djibouti' => 'Africa/Djibouti', + 'Africa/Douala' => 'Africa/Douala', + 'Africa/El_Aaiun' => 'Africa/El Aaiun', + 'Africa/Freetown' => 'Africa/Freetown', + 'Africa/Gaborone' => 'Africa/Gaborone', + 'Africa/Harare' => 'Africa/Harare', + 'Africa/Johannesburg' => 'Africa/Johannesburg', + 'Africa/Juba' => 'Africa/Juba', + 'Africa/Kampala' => 'Africa/Kampala', + 'Africa/Khartoum' => 'Africa/Khartoum', + 'Africa/Kigali' => 'Africa/Kigali', + 'Africa/Kinshasa' => 'Africa/Kinshasa', + 'Africa/Lagos' => 'Africa/Lagos', + 'Africa/Libreville' => 'Africa/Libreville', + 'Africa/Lome' => 'Africa/Lome', + 'Africa/Luanda' => 'Africa/Luanda', + 'Africa/Lubumbashi' => 'Africa/Lubumbashi', + 'Africa/Lusaka' => 'Africa/Lusaka', + 'Africa/Malabo' => 'Africa/Malabo', + 'Africa/Maputo' => 'Africa/Maputo', + 'Africa/Maseru' => 'Africa/Maseru', + 'Africa/Mbabane' => 'Africa/Mbabane', + 'Africa/Mogadishu' => 'Africa/Mogadishu', + 'Africa/Monrovia' => 'Africa/Monrovia', + 'Africa/Nairobi' => 'Africa/Nairobi', + 'Africa/Ndjamena' => 'Africa/Ndjamena', + 'Africa/Niamey' => 'Africa/Niamey', + 'Africa/Nouakchott' => 'Africa/Nouakchott', + 'Africa/Ouagadougou' => 'Africa/Ouagadougou', + 'Africa/Porto-Novo' => 'Africa/Porto-Novo', + 'Africa/Sao_Tome' => 'Africa/Sao Tome', + 'Africa/Tripoli' => 'Africa/Tripoli', + 'Africa/Tunis' => 'Africa/Tunis', + 'Africa/Windhoek' => 'Africa/Windhoek', + + 'America/Adak' => 'America/Adak', + 'America/Anchorage' => 'America/Anchorage', + 'America/Anguilla' => 'America/Anguilla', + 'America/Antigua' => 'America/Antigua', + 'America/Araguaina' => 'America/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'America/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'America/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'America/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'America/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'America/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'America/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'America/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'America/Argentina/Salta', + 'America/Argentina/San_Juan' => 'America/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'America/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'America/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'America/Argentina/Ushuaia', + + 'America/Aruba' => 'America/Aruba', + 'America/Asuncion' => 'America/Asuncion', + 'America/Atikokan' => 'America/Atikokan', + 'America/Bahia' => 'America/Bahia', + 'America/Bahia_Banderas' => 'America/Bahia Banderas', + 'America/Barbados' => 'America/Barbados', + 'America/Belem' => 'America/Belem', + 'America/Belize' => 'America/Belize', + 'America/Blanc-Sablon' => 'America/Blanc-Sablon', + 'America/Boa_Vista' => 'America/Boa Vista', + 'America/Bogota' => 'America/Bogota', + 'America/Boise' => 'America/Boise', + 'America/Cambridge_Bay' => 'America/Cambridge Bay', + 'America/Campo_Grande' => 'America/Campo Grande', + 'America/Cancun' => 'America/Cancun', + 'America/Caracas' => 'America/Caracas', + 'America/Cayenne' => 'America/Cayenne', + 'America/Cayman' => 'America/Cayman', + 'America/Chicago' => 'America/Chicago', + 'America/Chihuahua' => 'America/Chihuahua', + 'America/Costa_Rica' => 'America/Costa Rica', + 'America/Creston' => 'America/Creston', + 'America/Cuiaba' => 'America/Cuiaba', + 'America/Curacao' => 'America/Curacao', + 'America/Danmarkshavn' => 'America/Danmarkshavn', + 'America/Dawson' => 'America/Dawson', + 'America/Dawson_Creek' => 'America/Dawson Creek', + 'America/Denver' => 'America/Denver', + 'America/Detroit' => 'America/Detroit', + 'America/Dominica' => 'America/Dominica', + 'America/Edmonton' => 'America/Edmonton', + 'America/Eirunepe' => 'America/Eirunepe', + 'America/El_Salvador' => 'America/El Salvador', + 'America/Fortaleza' => 'America/Fortaleza', + 'America/Glace_Bay' => 'America/Glace Bay', + 'America/Godthab' => 'America/Godthab', + 'America/Goose_Bay' => 'America/Goose Bay', + 'America/Grand_Turk' => 'America/Grand Turk', + 'America/Grenada' => 'America/Grenada', + 'America/Guadeloupe' => 'America/Guadeloupe', + 'America/Guatemala' => 'America/Guatemala', + 'America/Guayaquil' => 'America/Guayaquil', + 'America/Guyana' => 'America/Guyana', + 'America/Halifax' => 'America/Halifax', + 'America/Havana' => 'America/Havana', + 'America/Hermosillo' => 'America/Hermosillo', + 'America/Indiana/Indianapolis' => 'America/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'America/Indiana/Knox', + 'America/Indiana/Marengo' => 'America/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'America/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'America/Indiana/Tell City', + 'America/Indiana/Vevay' => 'America/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'America/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'America/Indiana/Winamac', + 'America/Inuvik' => 'America/Inuvik', + 'America/Iqaluit' => 'America/Iqaluit', + 'America/Jamaica' => 'America/Jamaica', + 'America/Juneau' => 'America/Juneau', + 'America/Kentucky/Louisville' => 'America/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'America/Kentucky/Monticello', + 'America/Kralendijk' => 'America/Kralendijk', + 'America/La_Paz' => 'America/La Paz', + 'America/Lima' => 'America/Lima', + 'America/Los_Angeles' => 'America/Los Angeles', + 'America/Lower_Princes' => 'America/Lower Princes', + 'America/Maceio' => 'America/Maceio', + 'America/Managua' => 'America/Managua', + 'America/Manaus' => 'America/Manaus', + 'America/Marigot' => 'America/Marigot', + 'America/Martinique' => 'America/Martinique', + 'America/Matamoros' => 'America/Matamoros', + 'America/Mazatlan' => 'America/Mazatlan', + 'America/Menominee' => 'America/Menominee', + 'America/Merida' => 'America/Merida', + 'America/Metlakatla' => 'America/Metlakatla', + 'America/Mexico_City' => 'America/Mexico City', + 'America/Miquelon' => 'America/Miquelon', + 'America/Moncton' => 'America/Moncton', + 'America/Monterrey' => 'America/Monterrey', + 'America/Montevideo' => 'America/Montevideo', + 'America/Montreal' => 'America/Montreal', + 'America/Montserrat' => 'America/Montserrat', + 'America/Nassau' => 'America/Nassau', + 'America/New_York' => 'America/New York', + 'America/Nipigon' => 'America/Nipigon', + 'America/Nome' => 'America/Nome', + 'America/Noronha' => 'America/Noronha', + 'America/North_Dakota/Beulah' => 'America/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'America/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'America/North Dakota/New Salem', + 'America/Ojinaga' => 'America/Ojinaga', + 'America/Panama' => 'America/Panama', + 'America/Pangnirtung' => 'America/Pangnirtung', + 'America/Paramaribo' => 'America/Paramaribo', + 'America/Phoenix' => 'America/Phoenix', + 'America/Port-au-Prince' => 'America/Port-au-Prince', + 'America/Port_of_Spain' => 'America/Port of Spain', + 'America/Porto_Velho' => 'America/Porto Velho', + 'America/Puerto_Rico' => 'America/Puerto Rico', + 'America/Rainy_River' => 'America/Rainy River', + 'America/Rankin_Inlet' => 'America/Rankin Inlet', + 'America/Recife' => 'America/Recife', + 'America/Regina' => 'America/Regina', + 'America/Resolute' => 'America/Resolute', + 'America/Rio_Branco' => 'America/Rio Branco', + 'America/Santa_Isabel' => 'America/Santa Isabel', + 'America/Santarem' => 'America/Santarem', + 'America/Santiago' => 'America/Santiago', + 'America/Santo_Domingo' => 'America/Santo Domingo', + 'America/Sao_Paulo' => 'America/Sao Paulo', + 'America/Scoresbysund' => 'America/Scoresbysund', + 'America/Shiprock' => 'America/Shiprock', + 'America/Sitka' => 'America/Sitka', + 'America/St_Barthelemy' => 'America/St. Barthelemy', + 'America/St_Johns' => 'America/St. Johns', + 'America/St_Kitts' => 'America/St. Kitts', + 'America/St_Lucia' => 'America/St. Lucia', + 'America/St_Thomas' => 'America/St. Thomas', + 'America/St_Vincent' => 'America/St. Vincent', + 'America/Swift_Current' => 'America/Swift Current', + 'America/Tegucigalpa' => 'America/Tegucigalpa', + 'America/Thule' => 'America/Thule', + 'America/Thunder_Bay' => 'America/Thunder Bay', + 'America/Tijuana' => 'America/Tijuana', + 'America/Toronto' => 'America/Toronto', + 'America/Tortola' => 'America/Tortola', + 'America/Vancouver' => 'America/Vancouver', + 'America/Whitehorse' => 'America/Whitehorse', + 'America/Winnipeg' => 'America/Winnipeg', + 'America/Yakutat' => 'America/Yakutat', + 'America/Yellowknife' => 'America/Yellowknife', + + 'Antarctica/Casey' => 'Antarctica/Casey', + 'Antarctica/Davis' => 'Antarctica/Davis', + 'Antarctica/DumontDUrville' => 'Antarctica/DumontDUrville', + 'Antarctica/Macquarie' => 'Antarctica/Macquarie', + 'Antarctica/Mawson' => 'Antarctica/Mawson', + 'Antarctica/McMurdo' => 'Antarctica/McMurdo', + 'Antarctica/Palmer' => 'Antarctica/Palmer', + 'Antarctica/Rothera' => 'Antarctica/Rothera', + 'Antarctica/South_Pole' => 'Antarctica/South Pole', + 'Antarctica/Syowa' => 'Antarctica/Syowa', + 'Antarctica/Vostok' => 'Antarctica/Vostok', + + 'Arctic/Longyearbyen' => 'Arctic/Longyearbyen', + + 'Asia/Aden' => 'Asia/Aden', + 'Asia/Almaty' => 'Asia/Almaty', + 'Asia/Amman' => 'Asia/Amman', + 'Asia/Anadyr' => 'Asia/Anadyr', + 'Asia/Aqtau' => 'Asia/Aqtau', + 'Asia/Aqtobe' => 'Asia/Aqtobe', + 'Asia/Ashgabat' => 'Asia/Ashgabat', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Bahrain' => 'Asia/Bahrain', + 'Asia/Baku' => 'Asia/Baku', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Beirut' => 'Asia/Beirut', + 'Asia/Bishkek' => 'Asia/Bishkek', + 'Asia/Brunei' => 'Asia/Brunei', + 'Asia/Choibalsan' => 'Asia/Choibalsan', + 'Asia/Chongqing' => 'Asia/Chongqing', + 'Asia/Colombo' => 'Asia/Colombo', + 'Asia/Damascus' => 'Asia/Damascus', + 'Asia/Dhaka' => 'Asia/Dhaka', + 'Asia/Dili' => 'Asia/Dili', + 'Asia/Dubai' => 'Asia/Dubai', + 'Asia/Dushanbe' => 'Asia/Dushanbe', + 'Asia/Gaza' => 'Asia/Gaza', + 'Asia/Harbin' => 'Asia/Harbin', + 'Asia/Hebron' => 'Asia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Asia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Asia/Hong Kong', + 'Asia/Hovd' => 'Asia/Hovd', + 'Asia/Irkutsk' => 'Asia/Irkutsk', + 'Asia/Jakarta' => 'Asia/Jakarta', + 'Asia/Jayapura' => 'Asia/Jayapura', + 'Asia/Jerusalem' => 'Asia/Jerusalem', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Kamchatka' => 'Asia/Kamchatka', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kashgar' => 'Asia/Kashgar', + 'Asia/Kathmandu' => 'Asia/Kathmandu', + 'Asia/Khandyga' => 'Asia/Khandyga', + 'Asia/Kolkata' => 'Asia/Kolkata', + 'Asia/Krasnoyarsk' => 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Asia/Kuala Lumpur', + 'Asia/Kuching' => 'Asia/Kuching', + 'Asia/Kuwait' => 'Asia/Kuwait', + 'Asia/Macau' => 'Asia/Macau', + 'Asia/Magadan' => 'Asia/Magadan', + 'Asia/Makassar' => 'Asia/Makassar', + 'Asia/Manila' => 'Asia/Manila', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Nicosia' => 'Asia/Nicosia', + 'Asia/Novokuznetsk' => 'Asia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Asia/Novosibirsk', + 'Asia/Omsk' => 'Asia/Omsk', + 'Asia/Oral' => 'Asia/Oral', + 'Asia/Phnom_Penh' => 'Asia/Phnom Penh', + 'Asia/Pontianak' => 'Asia/Pontianak', + 'Asia/Pyongyang' => 'Asia/Pyongyang', + 'Asia/Qatar' => 'Asia/Qatar', + 'Asia/Qyzylorda' => 'Asia/Qyzylorda', + 'Asia/Rangoon' => 'Asia/Rangoon', + 'Asia/Riyadh' => 'Asia/Riyadh', + 'Asia/Sakhalin' => 'Asia/Sakhalin', + 'Asia/Samarkand' => 'Asia/Samarkand', + 'Asia/Seoul' => 'Asia/Seoul', + 'Asia/Shanghai' => 'Asia/Shanghai', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Taipei' => 'Asia/Taipei', + 'Asia/Tashkent' => 'Asia/Tashkent', + 'Asia/Tbilisi' => 'Asia/Tbilisi', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Thimphu' => 'Asia/Thimphu', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Asia/Ulaanbaatar' => 'Asia/Ulaanbaatar', + 'Asia/Urumqi' => 'Asia/Urumqi', + 'Asia/Ust-Nera' => 'Asia/Ust-Nera', + 'Asia/Vientiane' => 'Asia/Vientiane', + 'Asia/Vladivostok' => 'Asia/Vladivostok', + 'Asia/Yakutsk' => 'Asia/Yakutsk', + 'Asia/Yekaterinburg' => 'Asia/Yekaterinburg', + 'Asia/Yerevan' => 'Asia/Yerevan', + + 'Atlantic/Azores' => 'Atlantic/Azores', + 'Atlantic/Bermuda' => 'Atlantic/Bermuda', + 'Atlantic/Canary' => 'Atlantic/Canary', + 'Atlantic/Cape_Verde' => 'Atlantic/Cape Verde', + 'Atlantic/Faroe' => 'Atlantic/Faroe', + 'Atlantic/Madeira' => 'Atlantic/Madeira', + 'Atlantic/Reykjavik' => 'Atlantic/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlantic/South Georgia', + 'Atlantic/St_Helena' => 'Atlantic/St. Helena', + 'Atlantic/Stanley' => 'Atlantic/Stanley', + + 'Australia/Adelaide' => 'Australia/Adelaide', + 'Australia/Brisbane' => 'Australia/Brisbane', + 'Australia/Broken_Hill' => 'Australia/Broken Hill', + 'Australia/Currie' => 'Australia/Currie', + 'Australia/Darwin' => 'Australia/Darwin', + 'Australia/Eucla' => 'Australia/Eucla', + 'Australia/Hobart' => 'Australia/Hobart', + 'Australia/Lindeman' => 'Australia/Lindeman', + 'Australia/Lord_Howe' => 'Australia/Lord Howe', + 'Australia/Melbourne' => 'Australia/Melbourne', + 'Australia/Perth' => 'Australia/Perth', + 'Australia/Sydney' => 'Australia/Sydney', + + 'Europe/Amsterdam' => 'Europe/Amsterdam', + 'Europe/Andorra' => 'Europe/Andorra', + 'Europe/Athens' => 'Europe/Athens', + 'Europe/Belgrade' => 'Europe/Belgrade', + 'Europe/Berlin' => 'Europe/Berlin', + 'Europe/Bratislava' => 'Europe/Bratislava', + 'Europe/Brussels' => 'Europe/Brussels', + 'Europe/Bucharest' => 'Europe/Bucharest', + 'Europe/Budapest' => 'Europe/Budapest', + 'Europe/Busingen' => 'Europe/Busingen', + 'Europe/Chisinau' => 'Europe/Chisinau', + 'Europe/Copenhagen' => 'Europe/Copenhagen', + 'Europe/Dublin' => 'Europe/Dublin', + 'Europe/Gibraltar' => 'Europe/Gibraltar', + 'Europe/Guernsey' => 'Europe/Guernsey', + 'Europe/Helsinki' => 'Europe/Helsinki', + 'Europe/Isle_of_Man' => 'Europe/Isle of Man', + 'Europe/Istanbul' => 'Europe/Istanbul', + 'Europe/Jersey' => 'Europe/Jersey', + 'Europe/Kaliningrad' => 'Europe/Kaliningrad', + 'Europe/Kiev' => 'Europe/Kiev', + 'Europe/Lisbon' => 'Europe/Lisbon', + 'Europe/Ljubljana' => 'Europe/Ljubljana', + 'Europe/London' => 'Europe/London', + 'Europe/Luxembourg' => 'Europe/Luxembourg', + 'Europe/Madrid' => 'Europe/Madrid', + 'Europe/Malta' => 'Europe/Malta', + 'Europe/Mariehamn' => 'Europe/Mariehamn', + 'Europe/Minsk' => 'Europe/Minsk', + 'Europe/Monaco' => 'Europe/Monaco', + 'Europe/Moscow' => 'Europe/Moscow', + 'Europe/Oslo' => 'Europe/Oslo', + 'Europe/Paris' => 'Europe/Paris', + 'Europe/Podgorica' => 'Europe/Podgorica', + 'Europe/Prague' => 'Europe/Prague', + 'Europe/Riga' => 'Europe/Riga', + 'Europe/Rome' => 'Europe/Rome', + 'Europe/Samara' => 'Europe/Samara', + 'Europe/San_Marino' => 'Europe/San Marino', + 'Europe/Sarajevo' => 'Europe/Sarajevo', + 'Europe/Simferopol' => 'Europe/Simferopol', + 'Europe/Skopje' => 'Europe/Skopje', + 'Europe/Sofia' => 'Europe/Sofia', + 'Europe/Stockholm' => 'Europe/Stockholm', + 'Europe/Tallinn' => 'Europe/Tallinn', + 'Europe/Tirane' => 'Europe/Tirane', + 'Europe/Uzhgorod' => 'Europe/Uzhgorod', + 'Europe/Vaduz' => 'Europe/Vaduz', + 'Europe/Vatican' => 'Europe/Vatican', + 'Europe/Vienna' => 'Europe/Vienna', + 'Europe/Vilnius' => 'Europe/Vilnius', + 'Europe/Volgograd' => 'Europe/Volgograd', + 'Europe/Warsaw' => 'Europe/Warsaw', + 'Europe/Zagreb' => 'Europe/Zagreb', + 'Europe/Zaporozhye' => 'Europe/Zaporozhye', + 'Europe/Zurich' => 'Europe/Zurich', + + 'Indian/Antananarivo' => 'Indian/Antananarivo', + 'Indian/Chagos' => 'Indian/Chagos', + 'Indian/Christmas' => 'Indian/Christmas', + 'Indian/Cocos' => 'Indian/Cocos', + 'Indian/Comoro' => 'Indian/Comoro', + 'Indian/Kerguelen' => 'Indian/Kerguelen', + 'Indian/Mahe' => 'Indian/Mahe', + 'Indian/Maldives' => 'Indian/Maldives', + 'Indian/Mauritius' => 'Indian/Mauritius', + 'Indian/Mayotte' => 'Indian/Mayotte', + 'Indian/Reunion' => 'Indian/Reunion', + + 'Pacific/Apia' => 'Pacific/Apia', + 'Pacific/Auckland' => 'Pacific/Auckland', + 'Pacific/Chatham' => 'Pacific/Chatham', + 'Pacific/Chuuk' => 'Pacific/Chuuk', + 'Pacific/Easter' => 'Pacific/Easter', + 'Pacific/Efate' => 'Pacific/Efate', + 'Pacific/Enderbury' => 'Pacific/Enderbury', + 'Pacific/Fakaofo' => 'Pacific/Fakaofo', + 'Pacific/Fiji' => 'Pacific/Fiji', + 'Pacific/Funafuti' => 'Pacific/Funafuti', + 'Pacific/Galapagos' => 'Pacific/Galapagos', + 'Pacific/Gambier' => 'Pacific/Gambier', + 'Pacific/Guadalcanal' => 'Pacific/Guadalcanal', + 'Pacific/Guam' => 'Pacific/Guam', + 'Pacific/Honolulu' => 'Pacific/Honolulu', + 'Pacific/Johnston' => 'Pacific/Johnston', + 'Pacific/Kiritimati' => 'Pacific/Kiritimati', + 'Pacific/Kosrae' => 'Pacific/Kosrae', + 'Pacific/Kwajalein' => 'Pacific/Kwajalein', + 'Pacific/Majuro' => 'Pacific/Majuro', + 'Pacific/Marquesas' => 'Pacific/Marquesas', + 'Pacific/Midway' => 'Pacific/Midway', + 'Pacific/Nauru' => 'Pacific/Nauru', + 'Pacific/Niue' => 'Pacific/Niue', + 'Pacific/Norfolk' => 'Pacific/Norfolk', + 'Pacific/Noumea' => 'Pacific/Noumea', + 'Pacific/Pago_Pago' => 'Pacific/Pago Pago', + 'Pacific/Palau' => 'Pacific/Palau', + 'Pacific/Pitcairn' => 'Pacific/Pitcairn', + 'Pacific/Pohnpei' => 'Pacific/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacific/Port Moresby', + 'Pacific/Rarotonga' => 'Pacific/Rarotonga', + 'Pacific/Saipan' => 'Pacific/Saipan', + 'Pacific/Tahiti' => 'Pacific/Tahiti', + 'Pacific/Tarawa' => 'Pacific/Tarawa', + 'Pacific/Tongatapu' => 'Pacific/Tongatapu', + 'Pacific/Wake' => 'Pacific/Wake', + 'Pacific/Wallis' => 'Pacific/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y, H:i' => '01 Ian 2007, 13:37', + 'd M Y H:i' => '01 Ian 2007 13:37', + 'M jS, \'y, H:i' => '1 Ian, \'07, 13:37', + 'D M d, Y g:i a' => 'Lun 1 Ian, 2007 1:37 pm', + 'F jS, Y, g:i a' => '1 Ianuarie 2007, 1:37 pm', + '|d M Y|, H:i' => 'Astăzi, 13:37 / 01 Ian 2007, 13:37', + '|F jS, Y|, g:i a' => 'Astăzi, 1:37 pm / 1 Ianuarie 2007, 1:37 pm', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D d M, Y g:i a', // Lun 01 Ian, 2007 1:37 pm//schimbat pentru "ro" + +)); diff --git a/includes/shared/phpbb3/language/lang_romanian_utf/index.htm b/includes/shared/phpbb3/language/lang_romanian_utf/index.htm new file mode 100644 index 00000000..13431230 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_romanian_utf/index.htm @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_spanish/common.php b/includes/shared/phpbb3/language/lang_spanish/common.php new file mode 100644 index 00000000..2602e253 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_spanish/common.php @@ -0,0 +1,1429 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +// DEVELOPERS PLEASE NOTE +// +// All language files should use UTF-8 as their encoding and the files must not contain a BOM. +// +// Placeholders can now contain order information, e.g. instead of +// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows +// translators to re-order the output of data while ensuring it remains correct +// +// You do not need this where single placeholders are used, e.g. 'Message %d' is fine +// equally where a string contains only two placeholders which are used to wrap text +// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine +// +// Some characters you may want to copy&paste: +// ’ » " " … +// + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'Traducción al español por phpBB España', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) + 'DATETIME_FORMAT' => '|d M Y, H:i|', // 01 Jan 2007, 13:37 (with Relative days enabled) + 'USER_LANG' => 'es', + + // You can define different rules for the determination of plural forms here. + // See https://area51.phpbb.com/docs/dev/32x/language/plurals.html for more information + // or ask the translation manager for help. + 'PLURAL_RULE' => 1, + + '1_DAY' => '1 día', + '1_MONTH' => '1 mes', + '1_YEAR' => '1 año', + '2_WEEKS' => '2 semanas', + '3_MONTHS' => '3 meses', + '6_MONTHS' => '6 meses', + '7_DAYS' => '7 días', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Su cuenta ya ha sido activada', + 'ACCOUNT_DEACTIVATED' => 'Su cuenta ha sido desactivada manualmente y solo puede ser reactivada por La Administración.', + 'ACCOUNT_NOT_ACTIVATED' => 'Su cuenta todavía no ha sido activada', + 'ACP' => 'Ir al Panel de Control de Administración (PCA)', + 'ACP_SHORT' => 'PCA', + 'ACTIVE' => 'Activo', + 'ACTIVE_ERROR' => 'El usuario especificado está inactivo de momento. Si tiene problemas para activar su cuenta por favor contacte con la Administración del Sitio.', + 'ADMINISTRATOR' => 'Administrador', + 'ADMINISTRATORS' => 'Administradores', + 'AGE' => 'Edad', + 'AIM' => 'AIM', + 'AJAX_ERROR_TITLE' => 'Error AJAX', + 'AJAX_ERROR_TEXT' => 'Algo salió mal al procesar su solicitud.', + 'AJAX_ERROR_TEXT_ABORT' => 'Solicitud abortada por el usuario.', + 'AJAX_ERROR_TEXT_TIMEOUT' => 'Su solicitud ha agotado el tiempo, por favor, inténtelo de nuevo.', + 'AJAX_ERROR_TEXT_PARSERERROR' => 'Algo salió mal con la solicitud y el servidor devuelve una respuesta no válida.', + 'ALLOWED' => 'Permitido', + 'ALL_FILES' => 'Todos los archivos', + 'ALL_FORUMS' => 'Todos los Foros', + 'ALL_MESSAGES' => 'Todos los mensajes', + 'ALL_POSTS' => 'Todos los mensajes', + 'ALL_TIMES' => 'Todos los horarios son %1$s', + 'ALL_TOPICS' => 'Todos los Temas', + 'ALT_TEXT' => 'Texto alternativo', + 'AND' => 'Y', + 'ARE_WATCHING_FORUM' => 'Está suscrito a recibir novedades en este Foro', + 'ARE_WATCHING_TOPIC' => 'Está suscrito a recibir novedades en este Tema.', + 'ASCENDING' => 'Ascendente', + 'ATTACHMENTS' => 'Adjuntos', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'El archivo de imagen que ha intentado adjuntar no es válido.', + 'AUTHOR' => 'Autor', + 'AUTH_NO_PROFILE_CREATED' => 'Falló la creación del perfil de usuario', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'Entrada de la base de datos no válida.', + 'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Tipo de servicio no válido proporcionado al controlador de servicio de OAuth.', + 'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'Servicio OAuth no creado', + 'AUTH_PROVIDER_OAUTH_SERVICE_BITLY' => 'Bitly', + 'AUTH_PROVIDER_OAUTH_SERVICE_FACEBOOK' => 'Facebook', + 'AUTH_PROVIDER_OAUTH_SERVICE_GOOGLE' => 'Google', + 'AUTH_PROVIDER_OAUTH_SERVICE_TWITTER' => 'Twitter', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_NOT_STORED' => 'Muestra de OAuth no almacenado.', + 'AUTH_PROVIDER_OAUTH_TOKEN_ERROR_INCORRECTLY_STORED' => 'Muestra de OAuth incorrectamente almacenado.', + 'AVATAR_DISALLOWED_CONTENT' => 'La subida fue rechazada porque el archivo a subir fue identificado como un posible vector de ataque.', + 'AVATAR_DISALLOWED_EXTENSION' => 'Este archivo no puede ser mostrado porque la extensión %s no está permitida', + 'AVATAR_EMPTY_REMOTE_DATA' => 'No se puede subir el avatar especificado ya que el archivo remoto parece inválido o corrupto.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'El avatar subido está vacío.', + 'AVATAR_INVALID_FILENAME' => '%s es un nombre de archivo no válido', + 'AVATAR_NOT_UPLOADED' => 'No se puede subir el avatar.', + 'AVATAR_NO_TEMP_DIR' => 'La carpeta temporal no se ha encontrado, o no se puede escribir.', + 'AVATAR_NO_SIZE' => 'No se pudo determinar el ancho o el alto del avatar enlazado, por favor ingrese esos datos de forma manual.', + 'AVATAR_PARTIAL_UPLOAD' => 'El archivo fue subido solo de forma parcial', + 'AVATAR_PHP_SIZE_NA' => 'El tamaño de archivo del avatar es muy grande.
    No se puede determinar el tamaño máximo definido en php.ini por PHP.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'El tamaño del avatar es muy grande. El tamaño máximo de subida es %1$d %2$s.
    Por favor observe que esto está definido en php.ini y no puede ser cambiado.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'El avatar especificado no se ha podido subir por la solicitud de tiempo de espera.', + 'AVATAR_PHP_UPLOAD_STOPPED' => 'Una extensión PHP ha detenido la carga de archivos.', + 'AVATAR_URL_INVALID' => 'La URL que especificó no es válida.', + 'AVATAR_URL_NOT_FOUND' => 'No se puede encontrar el archivo especificado.', + 'AVATAR_WRONG_FILESIZE' => 'El avatar debe estar entre 0 y %1$d %2$s.', + 'AVATAR_WRONG_SIZE' => 'El avatar enviado es de %5$s de ancho, y %6$s de alto. Los avatars deben tener al menos %1$s de ancho y %2$s de alto, pero no deben ser mayores de %3$s ancho y %4$s de alto.', + + 'BACK_TO_TOP' => 'Arriba', + 'BACK_TO_PREV' => 'Regrese a la página anterior', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Esta exclusión ha sido impuesta a su dirección de email.', + 'BAN_TRIGGERED_BY_IP' => 'Esta exclusión ha sido impuesta a su dirección IP.', + 'BAN_TRIGGERED_BY_USER' => 'Esta exclusión ha sido impuesta a su nombre de usuario.', + 'BBCODE_GUIDE' => 'Guía BBCode', + 'BCC' => 'CCO', + 'BIRTHDAYS' => 'Cumpleaños', + 'BOARD_BAN_PERM' => 'Ha sido expulsado permanentemente de este sitio.

    Por favor contacte con %2$sLa Administración del Sitio%3$s para más información.', + 'BOARD_BAN_REASON' => 'Motivo de la exclusión: %s', + 'BOARD_BAN_TIME' => 'Ha sido excluido de este Sitio hasta %1$s.

    Por favor contacte con %2$sLa Administración del Sitio%3$s para más información.', + 'BOARD_DISABLE' => 'Disculpe. Este sitio no está disponible de momento', + 'BOARD_DISABLED' => 'Este Sitio está deshabilitado por ahora', + 'BOARD_UNAVAILABLE' => 'Disculpe. Este Sitio no está disponible por ahora, por favor inténtelo de nuevo en unos minutos', + 'BROWSING_FORUM' => 'Usuarios navegando por este Foro: %1$s', + 'BROWSING_FORUM_GUESTS' => array( + 1 => 'Usuarios navegando por este Foro: %2$s y %1$d invitado', + 2 => 'Usuarios navegando por este Foro: %2$s y %1$d invitados', + ), + 'BUTTON_EDIT' => 'Editar', + 'BUTTON_FORUM_LOCKED' => 'Cerrado', + 'BUTTON_NEW_TOPIC' => 'Nuevo Tema', + 'BUTTON_PM' => 'MP', + 'BUTTON_PM_FORWARD' => 'Reenviar', + 'BUTTON_PM_NEW' => 'Nuevo MP', + 'BUTTON_PM_REPLY' => 'Responder', + 'BUTTON_PM_REPLY_ALL' => 'Responder a Todos', + 'BUTTON_POST_REPLY' => 'Responder', + 'BUTTON_QUOTE' => 'Citar', + 'BUTTON_TOPIC_LOCKED' => 'Cerrado', + 'BYTES' => 'Bytes', + 'BYTES_SHORT' => 'B', + + 'CANCEL' => 'Cancelar', + 'CHANGE' => 'Cambiar', + 'CHANGE_FONT_SIZE' => 'Cambiar tamaño de la fuente', + 'CHANGING_PREFERENCES' => 'Cambiando preferencias del foro', + 'CHANGING_PROFILE' => 'Cambiando preferencias del Perfil del Foro', + 'CHARACTERS' => array( + 1 => '%d carácter', + 2 => '%d caracteres', + ), + 'COLLAPSE_VIEW' => 'Contraer vista', + 'CLOSE_WINDOW' => 'Cerrar ventana', + 'COLOUR_SWATCH' => 'Paleta de Colores', + 'COLON' => ':', + 'COMMA_SEPARATOR' => ', ', // Comma used to join lists into a single string, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'Confirmar', + 'CONFIRM_CODE' => 'Código de confirmación', + 'CONFIRM_CODE_EXPLAIN' => 'Introduzca el código exactamente como lo ve en la imagen. Las letras no son sensibles a las mayúsculas y minúsculas.', + 'CONFIRM_CODE_WRONG' => 'El código de confirmación que introdujo es incorrecto.', + 'CONFIRM_OPERATION' => '¿Está seguro de querer realizar esta operación?', + 'CONFIRM_AVATAR_DELETE' => '¿Está seguro de querer borrar este avatar?', + 'CONGRATULATIONS' => 'Felicidades para', + 'CONNECTION_FAILED' => 'Falló la conexión', + 'CONNECTION_SUCCESS' => '¡Conexión realizada correctamente!', + 'CONTACT' => 'Contactar', + 'CONTACT_USER' => 'Contactar %s', + 'CONTACT_US' => 'Contáctenos', + 'COOKIE_CONSENT_INFO' => 'Saber más', + 'COOKIE_CONSENT_MSG' => 'Este sitio web utiliza cookies para asegurar que obtenga la mejor experiencia en nuestro sitio web.', + 'COOKIE_CONSENT_OK' => '¡Lo entiendo!', + 'COOKIE_CONSENT_HREF' => 'http://politicadecookies.com/', + 'COOKIES_DELETED' => 'Todas las cookies del Sitio han sido borradas correctamente.', + 'CURRENT_TIME' => 'Fecha actual %s', + + 'DAY' => 'Día', + 'DAYS' => 'Días', + 'DELETE' => 'Borrar', + 'DELETE_ALL' => 'Borrar todo', + 'DELETE_COOKIES' => 'Borrar todas las cookies del Sitio', + 'DELETE_MARKED' => 'Borrar marcados', + 'DELETE_POST' => 'Borrar mensaje', + 'DELIMITER' => 'Delimitador', + 'DESCENDING' => 'Descendente', + 'DISABLED' => 'Deshabilitado', + 'DISPLAY' => 'Mostrar', + 'DISPLAY_GUESTS' => 'Mostrar invitados', + 'DISPLAY_MESSAGES' => 'Mostrar mensajes previos', + 'DISPLAY_POSTS' => 'Mostrar mensajes previos', + 'DISPLAY_TOPICS' => 'Mostrar temas previos', + 'DOWNLOADED' => 'Descargado', + 'DOWNLOADING_FILE' => 'Descargando archivo', + 'DOWNLOAD_COUNTS' => array( + 0 => 'No descargado aún', + 1 => 'Descargado %d vez', + 2 => 'Descargado %d veces', + ), + + 'EDIT_POST' => 'Editar mensaje', + 'ELLIPSIS' => '…', + 'EMAIL' => 'Email', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'Dirección de correo electrónico', + 'EMAIL_INVALID_EMAIL' => 'La dirección de correo electrónico que ha introducido no es válida.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'Se produjeron problemas enviando email en la línea %1$s. Respuesta: %2$s', + 'EMPTY_SUBJECT' => 'Debe especificar un asunto cuando publique un nuevo tema.', + 'EMPTY_MESSAGE_SUBJECT' => 'Tiene que especificar un asunto cuando redacte un nuevo mensaje.', + 'ENABLED' => 'Habilitado', + 'ENCLOSURE' => 'Adjunto', + 'ENTER_USERNAME' => 'Introduzca un nombre de usuario', + 'ERR_CHANGING_DIRECTORY' => 'Imposible cambiar de carpeta', + 'ERR_CONNECTING_SERVER' => 'Error conectando al servidor', + 'ERR_JAB_AUTH' => 'No se puede autentificar en el servidor Jabber.', + 'ERR_JAB_CONNECT' => 'No se puede conectar al servidor Jabber.', + 'ERR_UNABLE_TO_LOGIN' => 'Error en identificación. El usuario o contraseña insertada es incorrecta.', + 'ERR_UNWATCHING' => 'Ocurrió un error al intentar dejar de seguir tema.', + 'ERR_WATCHING' => 'Ocurrió un error al intentar suscribirse.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'La ruta phpBB introducida parece no ser válida.', + 'ERROR' => 'Error', + 'EXPAND_VIEW' => 'Expandir vista', + 'EXTENSION' => 'Extensión', + 'EXTENSION_DISABLED' => 'La extensión %s no esta activada.', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'La extensión %s ha sido desactivada y no se mostrará en adelante', + 'EXTENSION_DOES_NOT_EXIST' => 'La extensión %s no existe.', + + 'FACEBOOK' => 'Facebook', + 'FAQ' => 'FAQ', + 'FAQ_EXPLAIN' => 'Preguntas Frecuentes', + 'FEATURE_NOT_AVAILABLE' => 'La función solicitada no está disponible en este foro.', + 'FILENAME' => 'Nombre', + 'FILESIZE' => 'Tamaño', + 'FILEDATE' => 'Fecha', + 'FILE_COMMENT' => 'Comentario', + 'FILE_CONTENT_ERR' => 'No se pudo leer el contenido del archivo: %s', + 'FILE_JSON_DECODE_ERR' => 'No se pudo descifrar el archivo json: %s', + 'FILE_NOT_FOUND' => 'No se puede encontrar el archivo requerido: %s', + 'FIND_USERNAME' => 'Buscar un usuario', + 'FOLDER' => 'Carpeta', + 'FORGOT_PASS' => 'Olvidé mi contraseña', + 'FORM_INVALID' => 'El formulario enviado no era válido. Intente enviarlo de nuevo.', + 'FORUM' => 'Foro', + 'FORUMS' => 'Foros', + 'FORUMS_MARKED' => 'Los foros han sido marcados como leídos.', + 'FORUM_CAT' => 'Categoría de Foro', + 'FORUM_INDEX' => 'Ãndice general', + 'FORUM_LINK' => 'Enlace al Foro', + 'FORUM_LOCATION' => 'Localización del foro', + 'FORUM_LOCKED' => 'Cerrado', + 'FORUM_RULES' => 'Reglas del Foro', + 'FORUM_RULES_LINK' => 'Por favor, haga clic para ver las reglas del Foro', + 'FROM' => 'de', + 'FSOCK_DISABLED' => 'No se puede completar la operación porque las funciones fsock han sido deshabilitadas o el servidor no está disponible.', + 'FSOCK_TIMEOUT' => 'Se agotó el tiempo de lectura de la corriente de red.', + + 'FTP_FSOCK_HOST' => 'Servidor FTP Fsock', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Servidor FTP Fsock empleado para conectar a su sitio', + 'FTP_FSOCK_PASSWORD' => 'Contraseña FTP Fsock', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Contraseña para su Usuario FTP Fsock', + 'FTP_FSOCK_PORT' => 'Puerto FTP Fsock', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Puerto usado para conectar Fsock a su servidor', + 'FTP_FSOCK_ROOT_PATH' => 'Ruta Fsock a phpBB', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Ruta Fsock absoluta (desde root) a su sitio phpBB', + 'FTP_FSOCK_TIMEOUT' => 'FTP Fsock timeout', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'La cantidad de tiempo, en segundos, que el sistema espera una respuesta Fsock de su servidor', + 'FTP_FSOCK_USERNAME' => 'Usuario FTP Fsock', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Usuario para conectar a su servidor FTP Fsock', + + 'FTP_HOST' => 'Servidor FTP', + 'FTP_HOST_EXPLAIN' => 'Servidor FTP empleado para conectar a su sitio', + 'FTP_PASSWORD' => 'Contraseña FTP', + 'FTP_PASSWORD_EXPLAIN' => 'Contraseña para su Usuario FTP', + 'FTP_PORT' => 'Puerto FTP', + 'FTP_PORT_EXPLAIN' => 'Puerto usado para conectar a su servidor', + 'FTP_ROOT_PATH' => 'Ruta a phpBB', + 'FTP_ROOT_PATH_EXPLAIN' => 'Ruta absoluta (desde root) a su sitio phpBB', + 'FTP_TIMEOUT' => 'FTP timeout', + 'FTP_TIMEOUT_EXPLAIN' => 'La cantidad de tiempo, en segundos, que el sistema espera una respuesta de su servidor', + 'FTP_USERNAME' => 'Usuario FTP', + 'FTP_USERNAME_EXPLAIN' => 'Usuario para identificarse en su servidor FTP', + + 'GENERAL_ERROR' => 'Error General', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GO' => 'Ir', + 'GOOGLEPLUS' => 'Google+', + 'GOTO_FIRST_POST' => 'Ir al primer mensaje', + 'GOTO_LAST_POST' => 'Ir al último mensaje', + 'GOTO_PAGE' => 'Ir a la página', + 'GROUP' => 'Grupo', + 'GROUPS' => 'Grupos', + 'GROUP_ERR_TYPE' => 'Tipo de grupo inapropiado.', + 'GROUP_ERR_USERNAME' => 'No se especificó nombre de grupo.', + 'GROUP_ERR_USER_LONG' => 'El nombre del grupo es muy largo.', + 'GUEST' => 'Invitado', + 'GUEST_USERS_ONLINE' => array( + 1 => 'Hay %d usuario invitado conectado', + 2 => 'Hay %d usuarios invitados conectados', + ), + 'GUEST_USERS_TOTAL' => array( + 1 => '%d invitado', + 2 => '%d invitados', + ), + 'G_ADMINISTRATORS' => 'Administradores', + 'G_BOTS' => 'Robots', + 'G_GUESTS' => 'Invitados', + 'G_REGISTERED' => 'Usuarios registrados', + 'G_REGISTERED_COPPA' => 'Usuarios APPCO (COPPA) registrados', + 'G_GLOBAL_MODERATORS' => 'Moderadores globales', + 'G_NEWLY_REGISTERED' => 'Nuevos Usuarios Registrados', + + 'HIDDEN_USERS_ONLINE' => array( + 1 => '%d usuario oculto', + 2 => '%d usuarios ocultos', + ), + 'HIDDEN_USERS_TOTAL' => array( + 1 => '%d oculto', + 2 => '%d ocultos', + ), + 'HIDE_GUESTS' => 'Ocultar invitados', + 'HIDE_ME' => 'Ocultar mi estado de conexión en esta sesión', + 'HOURS' => 'Horas', + 'HOME' => 'Inicio', + + 'ICQ' => 'ICQ', + 'IF' => 'si', + 'IMAGE' => 'Imagen', + 'IMAGE_FILETYPE_INVALID' => 'Tipo de archivo de imagen %d de tipo mime %s no soportado.', + 'IMAGE_FILETYPE_MISMATCH' => 'Tipo de archivo no concuerda: se esperaba la extension %1$s pero se proporciona la extension %2$s.', + 'IN' => 'en', + 'INACTIVE' => 'Inactivo', + 'INDEX' => 'Página principal', + 'INFORMATION' => 'Información', + 'INSECURE_REDIRECT' => 'Trató de redirigir una URL potencialmente insegura.', + 'INTERESTS' => 'Aficiones', + 'INVALID_DIGEST_CHALLENGE' => 'Desafío Digest inválido.', + 'INVALID_EMAIL_LOG' => '¿%s posiblemente una dirección de email inválida?', + 'INVALID_FEED_ATTACHMENTS' => 'El feed seleccionado trató de buscar archivos adjuntos con restricciones no válidas.', + 'INVALID_PLURAL_RULE' => 'La regla plural escogida no es válida. Los valores válidos son números enteros entre 0 y 15.', + 'IP' => 'IP', + 'IP_BLACKLISTED' => 'Su IP %1$s ha sido bloqueada porque está en la lista negra. Para más detalles por favor lea %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Registrado', + 'JUMP_PAGE' => 'Introduzca el número de página al que desea ir', + 'JUMP_TO' => 'Ir a', + 'JUMP_TO_PAGE' => 'Ir a la página', + 'JUMP_TO_PAGE_CLICK' => 'Clic para ir a la página…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Último mensaje', + 'LAST_UPDATED' => 'Ultima actualización', + 'LAST_VISIT' => 'La última visita fue', + 'LDAP_NO_LDAP_EXTENSION' => 'Extensión LDAP no disponible', + 'LDAP_NO_SERVER_CONNECTION' => 'No se puede conectar al servidor LDAP', + 'LDAP_SEARCH_FAILED' => 'Ocurrió un error mientras se buscaba en el directorio LDAP.', + 'LEGEND' => 'Referencia', + 'LIVE_SEARCHES_NOT_ALLOWED' => 'Las búsquedas en directo no están permitidas.', + 'LOADING' => 'Cargando', + 'LOCATION' => 'Ubicación', + 'LOCK_POST' => 'Mensaje cerrado', + 'LOCK_POST_EXPLAIN' => 'Prevenir edición', + 'LOCK_TOPIC' => 'Cerrar Tema', + 'LOGIN' => 'Identificarse', + 'LOGIN_CHECK_PM' => 'Autentifíquese para leer sus mensajes privados', + 'LOGIN_CONFIRMATION' => 'Confirmación de conexión', + 'LOGIN_CONFIRM_EXPLAIN' => 'Para prevenir el forzado de cuentas La Administración del Sitio se requiere que introduzca un código de confirmación después de una cantidad máxima de identificaciones fallidas. El código se muestra en la imagen que debería ver debajo. Si está impedido visualmente o por cualquier motivo no puede leer ese código por favor contacte con %sLa Administración del Sitio%s.', //no usuado + 'LOGIN_ERROR_ATTEMPTS' => 'Ha excedido el número máximo permitido de intentos de identificarse. Además de su nombre de usuario y contraseña ahora también tendrá que resolver el CAPTCHA de abajo.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'No ha sido autenticado por Apache.', + 'LOGIN_ERROR_OAUTH_SERVICE_DOES_NOT_EXIST' => 'Ha solicitado un servicio OAuth inexistente.', + 'LOGIN_ERROR_PASSWORD' => 'Ha especificado una contraseña incorrecta. Por favor verifique su contraseña e inténtelo de nuevo. Si continúa teniendo problemas, por favor contacte con %sLa Administración del Sitio%s.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'No fue posible convertir su contraseña cuando se actualizó el software de este Sitio. Por favor %ssolicite nueva contraseña%s. Si sigue teniendo problemas por favor contacte con %sLa Administración del Sitio%s.', + 'LOGIN_ERROR_USERNAME' => 'Ha especificado un nombre de usuario incorrecto. Por favor verifique su nombre de usuario e inténtelo de nuevo. Si continúa teniendo problemas, por favor contacte con %sLa Administración del Sitio%s.', + 'LOGIN_FORUM' => 'Para ver o publicar en este foro debe introducir la contraseña.', + 'LOGIN_INFO' => 'Para autenticarse debe estar registrado. Registrarse tomará solo unos pocos segundos y le permitirá un amplio acceso al sistema. La Administración del Sitio puede además otorgar permisos adicionales a los usuarios registrados. Antes de identificarse asegúrese de estar familiarizado con nuestros términos de uso y políticas relacionadas. Por favor lea las reglas de los foros mientras navega por el Sitio.', + 'LOGIN_VIEWFORUM' => 'La Administración del Sitio requiere que esté registrado y se haya identificado para ver este foro.', + 'LOGIN_EXPLAIN_EDIT' => 'Para editar mensajes en este foro debe estar registrado e identificado.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Para ver la lista en línea ha de estar registrado e identificado.', + 'LOGIN_REQUIRED' => 'Necesita loguearse para realizar esta acción.', + 'LOGOUT' => 'Desconectarse', + 'LOGOUT_USER' => 'Desconectarse [ %s ]', + 'LOG_ME_IN' => 'Recordar', + + 'MAIN' => 'Principal', + 'MARK' => 'Marcar', + 'MARK_ALL' => 'Marcar todo', + 'MARK_ALL_READ' => 'Marcar todos como leídos', + 'MARK_FORUMS_READ' => 'Marcar todos los Foros como leídos', + 'MARK_READ' => 'Marcar como leído', + 'MARK_SUBFORUMS_READ' => 'Marcar todos los subforos como leídos', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Panel de Control de Moderador', + 'MCP_SHORT' => 'PCM', + 'MEMBERLIST' => 'Usuarios', + 'MEMBERLIST_EXPLAIN' => 'Ver lista completa de usuarios', + 'MERGE' => 'Unir', + 'MERGE_POSTS' => 'Mover mensajes', + 'MERGE_TOPIC' => 'Unir tema', + 'MESSAGE' => 'Mensaje', + 'MESSAGES' => 'Mensajes', + 'MESSAGES_COUNT' => array( + 1 => '%d mensaje', + 2 => '%d mensajes', + ), + 'MESSAGE_BODY' => 'Cuerpo del mensaje', + 'MINUTES' => 'Minutos', + 'MODERATE' => 'Moderar', + 'MODERATOR' => 'Moderador', + 'MODERATORS' => 'Moderadores', + 'MODULE_NOT_ACCESS' => 'Módulo no accesible', + 'MODULE_NOT_FIND' => 'No se puede encontrar el módulo %s', + 'MODULE_FILE_INCORRECT_CLASS' => 'El archivo de módulo %s no contiene la clase correcta [%s]', + 'MONTH' => 'Mes', + 'MOVE' => 'Mover', + + 'NA' => 'No especificado', + 'NEWEST_USER' => 'Nuestro usuario más reciente es %s', + 'NEW_MESSAGE' => 'Nuevo mensaje', + 'NEW_MESSAGES' => 'Nuevo mensajes', + 'NEW_POST' => 'Nuevo mensaje', // No usado más + 'NEW_POSTS' => 'Nuevos mensajes', // No usado más + 'NEXT' => 'Siguiente', + 'NEXT_STEP' => 'Siguiente', + 'NEVER' => 'Nunca', + 'NO' => 'No', + 'NO_NOTIFICATIONS' => 'No tiene notificaciones', + 'NOT_ALLOWED_MANAGE_GROUP' => 'No tiene permitido administrar este grupo desde el "Panel de Administración (ACP)".', + 'NOT_AUTHORISED' => 'No está autorizado para acceder a este área.', + 'NOT_WATCHING_FORUM' => 'Ya no está suscrito a novedades en este Foro.', + 'NOT_WATCHING_TOPIC' => 'Ya no está suscrito a este tema.', + 'NOTIFICATIONS' => 'Notificaciones', + // This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + // %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST + // Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS + // Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS + // Examples: + // A replied... + // A and B replied... + // A, B and C replied... + // A, B, C and 2 others replied... + // A, B, C and others replied... + 'NOTIFICATION_BOOKMARK' => array( + 1 => 'Respuesta de %1$s en tema favorito:', + ), + 'NOTIFICATION_FORUM' => 'Foro: %1$s', + 'NOTIFICATION_GROUP_REQUEST' => 'Solicitud de grupo de %1$s para unirse al grupo %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Solicitud de grupo aprobada para unirse al grupo %1$s.', + 'NOTIFICATION_METHOD_INVALID' => 'El método "%s" no se refiere a un método de notificación válida.', + 'NOTIFICATION_PM' => 'Mensaje privado de %1$s:', + 'NOTIFICATION_POST' => array( + 1 => 'Respuesta de %1$s en tema:', + ), + 'NOTIFICATION_POST_APPROVED' => 'Mensaje aprobado:', + 'NOTIFICATION_POST_DISAPPROVED' => 'Mensaje no aprobado:', + 'NOTIFICATION_POST_IN_QUEUE' => 'Aprobación del mensaje requerida por %1$s:', + 'NOTIFICATION_QUOTE' => array( + 1 => 'Citado por %1$s en:', + ), + 'NOTIFICATION_REFERENCE' => '"%1$s"', + 'NOTIFICATION_REASON' => 'Razón: %1$s.', + 'NOTIFICATION_REPORT_PM' => 'Mensaje privado reportado por %1$s:', + 'NOTIFICATION_REPORT_POST' => 'Mensaje reportado por %1$s:', + 'NOTIFICATION_REPORT_CLOSED' => 'Informe cerrado por %1$s en:', + 'NOTIFICATION_TOPIC' => 'Nuevo tema por %1$s:', + 'NOTIFICATION_TOPIC_APPROVED' => 'Tema aprobado:', + 'NOTIFICATION_TOPIC_DISAPPROVED' => 'Tema no aprobado:', + 'NOTIFICATION_TOPIC_IN_QUEUE' => 'Aprobación del tema requerida por %1$s:', + 'NOTIFICATION_TYPE_NOT_EXIST' => 'El tipo de notificación "%s" no se encuentra en el sistema de archivos.', + 'NOTIFICATION_ADMIN_ACTIVATE_USER' => 'Activación requerida para nuevo usuario registrado: “%1$sâ€', + // Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. + 'NOTIFICATION_MANY_OTHERS' => 'otros', + 'NOTIFICATION_X_OTHERS' => array( + 2 => 'otros %d', + ), + 'NOTIFY_ADMIN' => 'Por favor notifique a La Administración del Sitio o webmaster.', + 'NOTIFY_ADMIN_EMAIL' => 'Por favor notifique a La Administración del Sitio o webmaster: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'No le está permitido acceder a ese archivo.', + 'NO_ACTION' => 'No se especificó ninguna acción.', + 'NO_ADMINISTRATORS' => 'No hay Administradores.', + 'NO_AUTH_ADMIN' => 'No tiene permisos administrativos y por lo tanto no se le permite acceder al Panel de Control de Administración (PCA).', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'No puede reidentificarte como un usuario distinto.', + 'NO_AUTH_OPERATION' => 'No tiene los permisos necesarios para completar la operación.', + 'NO_AVATARS' => 'No hay avatares disponibles', + 'NO_CONNECT_TO_SMTP_HOST' => 'No se puede conectar al servidor SMTP: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'No hay cumpleaños hoy.', + 'NO_EMAIL_MESSAGE' => 'El mensaje de email estaba en blanco.', + 'NO_EMAIL_RESPONSE_CODE' => 'No se puede obtener los códigos de respuesta del servidor de email.', + 'NO_EMAIL_SUBJECT' => 'Email sin asunto.', + 'NO_FORUM' => 'El Foro que seleccionó no existe.', + 'NO_FORUMS' => 'Este Sitio no tiene Foros', + 'NO_GROUP' => 'El grupo solicitado no existe.', + 'NO_GROUP_MEMBERS' => 'Este grupo actualmente no tiene usuarios', + 'NO_IPS_DEFINED' => 'No se definieron direcciones IP o nombres de servidor', + 'NO_MEMBERS' => 'No se encontraron usuarios para este criterio de búsqueda', + 'NO_MESSAGES' => 'No hay mensajes', + 'NO_MODE' => 'No se especificó el modo.', + 'NO_MODERATORS' => 'No hay moderadores.', + 'NO_NEW_MESSAGES' => 'No hay nuevos mensajes', + 'NO_NEW_POSTS' => 'No hay nuevos mensajes', // No usado más + 'NO_ONLINE_USERS' => 'No hay usuarios registrados visitando el Foro', + 'NO_POSTS' => 'No hay mensajes', + 'NO_POSTS_TIME_FRAME' => 'No existen mensajes en este tema dentro del intervalo de tiempo seleccionado.', + 'NO_FEED_ENABLED' => 'Los Feeds no están disponibles en este Sitio.', + 'NO_FEED' => 'El Feed pedido no está disponible.', + 'NO_STYLE_DATA' => 'No se pudo obtener datos de estilo', + 'NO_SUBJECT' => 'No se ha especificado el asunto', // Se utiliza para los mensajes que no tienen objeto definido, pero que aparece en las páginas de administración. + 'NO_SUCH_SEARCH_MODULE' => 'El módulo de búsqueda especificado no existe', + 'NO_SUPPORTED_AUTH_METHODS' => 'Métodos de autentificación no soportados', + 'NO_TOPIC' => 'El tema requerido no existe.', + 'NO_TOPIC_FORUM' => 'El tema o foro ya no existe.', + 'NO_TOPICS' => 'No hay temas o mensajes en este foro.', + 'NO_TOPICS_TIME_FRAME' => 'No existen temas en este foro dentro del intervalo de tiempo seleccionado.', + 'NO_UNREAD_POSTS' => 'No hay mensajes sin leer', + 'NO_UPLOAD_FORM_FOUND' => 'Subida iniciada, pero no se encontró un formulario de subida válido.', + 'NO_USER' => 'El Usuario requerido no existe.', + 'NO_USERS' => 'Los Usuarios requeridos no existen.', + 'NO_USER_SPECIFIED' => 'No se especificó un nombre de usuario', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_ATTACHMENTS' => array( + 1 => '%d adjunto', + 2 => '%d adjuntos', + ), + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Sin mensajes en espera', // 0 + 1 => '1 mensaje en espera', // 1 + 2 => '%d mensajes en espera', // 2+ + ), + + 'OCCUPATION' => 'Ocupación', + 'OFFLINE' => 'Desconectado', + 'ONLINE' => 'Conectado', + 'ONLINE_BUDDIES' => 'Amigos conectados', + // "... :: x registered and y hidden" + 'ONLINE_USERS_TOTAL' => array( + 1 => 'En total hay %1$d usuario conectado :: %2$s y %3$s', + 2 => 'En total hay %1$d usuarios conectados :: %2$s y %3$s', + ), + // "... :: x registered, y hidden and z guests" + 'ONLINE_USERS_TOTAL_GUESTS' => array( + 1 => 'En total hay %1$d usuario conectado :: %2$s, %3$s y %4$s', + 2 => 'En total hay %1$d usuarios conectados :: %2$s, %3$s y %4$s', + ), + 'OPTIONS' => 'Opciones', + + 'PAGE_NOT_FOUND' => 'La página solicitada no pudo ser encontrada.', + 'PAGE_OF' => 'Página %1$d de %2$d', + 'PAGE_TITLE_NUMBER' => 'Página %s', + 'PASSWORD' => 'Contraseña', + 'PIXEL' => 'px', + 'PIXELS' => array( + 1 => '%d pixel', + 2 => '%d píxeles', + ), + 'PLEASE_WAIT' => 'Por favor espere.', + 'PM' => 'MP', + 'PM_REPORTED' => 'Haga clic para ver el informe', + 'POSTING_MESSAGE' => 'Enviando mensaje en %s', + 'POSTING_PRIVATE_MESSAGE' => 'Escribiendo mensaje privado', + 'POST' => 'Mensaje', + 'POST_ANNOUNCEMENT' => 'Anuncio', + 'POST_STICKY' => 'Nota', + 'POSTED' => 'Publicado', + 'POSTED_IN_FORUM' => 'en', + 'POSTED_ON_DATE' => 'el', + 'POSTS' => 'Mensajes', + 'POSTS_UNAPPROVED' => 'Al menos un mensaje en este tema no ha sido aprobado.', + 'POSTS_UNAPPROVED_FORUM'=> 'Al menos un mensaje en este foro no ha sido aprobado.', + 'POST_BY_AUTHOR' => 'por', + 'POST_BY_FOE' => '%1$s, que actualmente está en su lista de ignorados, crear este mensaje.', + 'POST_DISPLAY' => '%1$sMostrar este mensaje%2$s.', + 'POST_DAY' => '%.2f mensajes por día', + 'POST_DELETED_ACTION' => 'Mensaje borrado:', + 'POST_DELETED' => 'Este mensaje ha sido borrado.', + 'POST_DELETED_BY' => '%2$s borró mensaje de %1$s el %3$s.', + 'POST_DELETED_BY_REASON'=> '%2$s borró mensaje de %1$s el %3$s por la siguiente razón: %4$s', + 'POST_DETAILS' => 'Detalles del mensaje', + 'POST_NEW_TOPIC' => 'Nuevo tema', + 'POST_PCT' => '%.2f%% de todos los mensajes', + 'POST_PCT_ACTIVE' => '%.2f%% de mensajes de usuarios', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% de sus mensajes', + 'POST_REPLY' => 'Publicar una respuesta', + 'POST_REPORTED' => 'Clic para ver informe', + 'POST_SUBJECT' => 'Asunto', + 'POST_TIME' => 'Fecha publicación', + 'POST_TOPIC' => 'Publicar un nuevo tema', + 'POST_UNAPPROVED_ACTION' => 'Mensaje esperando aprobación:', + 'POST_UNAPPROVED' => 'Este mensaje no ha sido aprobado.', + 'POWERED_BY' => 'Desarrollado por %s', + 'PREVIEW' => 'Vista previa', + 'PREVIOUS' => 'Anterior', + 'PREVIOUS_STEP' => 'Anterior', + 'PRIVACY' => 'Política de privacidad', + 'PRIVATE_MESSAGE' => 'Mensaje privado', + 'PRIVATE_MESSAGES' => 'Mensajes privados', + 'PRIVATE_MESSAGING' => 'Mensajería privada', + 'PROFILE' => 'Panel de Control del Usuario', + + 'QUICK_LINKS' => 'Enlaces rápidos', + + 'RANK' => 'Rango', + 'READING_FORUM' => 'Viendo temas en %s', + 'READING_GLOBAL_ANNOUNCE' => 'Leyendo Anuncios globales', + 'READING_LINK' => 'Siguiendo foro enlace %s', + 'READING_TOPIC' => 'Leyendo tema en %s', + 'READ_PROFILE' => 'Perfil', + 'REASON' => 'Razón', + 'RECORD_ONLINE_USERS' => 'La mayor cantidad de usuarios identificados fue %1$s el %2$s', + 'REDIRECT' => 'Redirección', + 'REDIRECTS' => 'Total redirecciones', + 'REGISTER' => 'Registrarse', + 'REGISTERED_USERS' => 'Usuarios registrados:', + // "... and 2 hidden users online" + 'REG_USERS_ONLINE' => array( + 1 => 'Hay %1$d usuario registrado y %2$s conectado', + 2 => 'Hay %1$d usuarios registrados y %2$s conectados', + ), + 'REG_USERS_TOTAL' => array( + 1 => '%d registrado', + 2 => '%d registrados', + ), + 'REMOVE' => 'Eliminar', + 'REMOVE_INSTALL' => 'Por favor borre, mueva o renombre la carpeta /install/ antes de usar su foro. Si este directorio aún está presente solo será accesible el Panel de Control de Administración (PCA).', + 'REPLIES' => 'Respuestas', + 'REPLY_WITH_QUOTE' => 'Responder citando', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Respondiendo anuncio global', + 'REPLYING_MESSAGE' => 'Respondiendo mensaje en %s', + 'REPORT_BY' => 'Reportado por', + 'REPORT_POST' => 'Reporte este mensaje', + 'REPORTING_POST' => 'Reportando mensaje', + 'RESEND_ACTIVATION' => 'Reenviar email de activación', + 'RESET' => 'Limpiar', + 'RESTORE_PERMISSIONS' => 'Restaurar permisos', + 'RETURN_INDEX' => '%sVolver a la página principal%s', + 'RETURN_FORUM' => '%sVolver al último foro visitado%s', + 'RETURN_PAGE' => '%sVolver a la página anterior%s', + 'RETURN_TOPIC' => '%sVolver al último tema visitado%s', + 'RETURN_TO' => 'Volver a “%sâ€', + 'RETURN_TO_INDEX' => 'Volver a Ãndice general', + 'FEED' => 'Feed', + 'FEED_NEWS' => 'Noticias', + 'FEED_TOPICS_ACTIVE' => 'Temas Activos', + 'FEED_TOPICS_NEW' => 'Nuevos Temas', + 'RULES_ATTACH_CAN' => 'Puede enviar adjuntos en este Foro', + 'RULES_ATTACH_CANNOT' => 'No puede enviar adjuntos en este Foro', + 'RULES_DELETE_CAN' => 'Puede borrar sus mensajes en este Foro', + 'RULES_DELETE_CANNOT' => 'No puede borrar sus mensajes en este Foro', + 'RULES_DOWNLOAD_CAN' => 'Puede descargar adjuntos en este Foro', + 'RULES_DOWNLOAD_CANNOT' => 'No puede descargar adjuntos en este Foro', + 'RULES_EDIT_CAN' => 'Puede editar sus mensajes en este Foro', + 'RULES_EDIT_CANNOT' => 'No puede editar sus mensajes en este Foro', + 'RULES_LOCK_CAN' => 'Puede bloquear sus temas en este Foro', + 'RULES_LOCK_CANNOT' => 'No puede bloquear sus temas en este Foro', + 'RULES_POST_CAN' => 'Puede abrir nuevos temas en este Foro', + 'RULES_POST_CANNOT' => 'No puede abrir nuevos temas en este Foro', + 'RULES_REPLY_CAN' => 'Puede responder a temas en este Foro', + 'RULES_REPLY_CANNOT' => 'No puede responder a temas en este Foro', + 'RULES_VOTE_CAN' => 'Puede votar en encuestas en este Foro', + 'RULES_VOTE_CANNOT' => 'No puede votar en encuestas en este Foro', + + 'SEARCH' => 'Buscar', + 'SEARCH_MINI' => 'Buscar…', + 'SEARCH_ADV' => 'Búsqueda avanzada', + 'SEARCH_ADV_EXPLAIN' => 'Ver opciones de búsqueda avanzada', + 'SEARCH_KEYWORDS' => 'Buscar palabras clave', + 'SEARCHING_FORUMS' => 'Buscando Foros', + 'SEARCH_ACTIVE_TOPICS' => 'Temas activos', + 'SEARCH_FOR' => 'Buscar', + 'SEARCH_FORUM' => 'Buscar en este Foro…', + 'SEARCH_NEW' => 'Nuevos mensajes', + 'SEARCH_POSTS_BY' => 'Buscar mensajes por', + 'SEARCH_SELF' => 'Sus mensajes', + 'SEARCH_TOPIC' => 'Buscar este tema…', + 'SEARCH_UNANSWERED' => 'Temas sin respuesta', + 'SEARCH_UNREAD' => 'Mensajes no leídos', + 'SEARCH_USER_POSTS' => 'Buscar mensajes del usuario', + 'SECONDS' => 'Segundos', + 'SEE_ALL' => 'Ver todas', + 'SELECT' => 'Seleccione', + 'SELECT_ALL_CODE' => 'Seleccionar todo', + 'SELECT_DESTINATION_FORUM' => 'Por favor seleccione un Foro de destino', + 'SELECT_FORUM' => 'Seleccione un Foro', + 'SEND_EMAIL' => 'Enviar email', // Used for submit buttons + 'SEND_EMAIL_USER' => 'Enviar email a %s', + 'SEND_PRIVATE_MESSAGE' => 'Enviar mensaje privado', + 'SETTINGS' => 'Preferencias', + 'SIGNATURE' => 'Firma', + 'SKIP' => 'Obviar', + 'SKYPE' => 'Skype', + 'SMTP_NO_AUTH_SUPPORT' => 'El Servidor SMTP no soporta autentificación.', + 'SORRY_AUTH_READ' => 'No está autorizado a leer este foro.', + 'SORRY_AUTH_READ_TOPIC' => 'No está autorizado a leer este tema.', + 'SORRY_AUTH_VIEW_ATTACH' => 'No está autorizado a descargar este adjunto.', + 'SORT_BY' => 'Ordenar por', + 'SORT_DIRECTION' => 'Dirección', + 'SORT_JOINED' => 'Fecha de ingreso', + 'SORT_LOCATION' => 'Ubicación', + 'SORT_OPTIONS' => 'Opciones de ordenar y mostrar', + 'SORT_RANK' => 'Rango', + 'SORT_POSTS' => 'Mensajes', + 'SORT_TOPIC_TITLE' => 'Título del Tema', + 'SORT_USERNAME' => 'Nombre de Usuario', + 'SPLIT_TOPIC' => 'Dividir tema', + 'SQL_ERROR_OCCURRED' => 'Ocurrió un error SQL mientras recuperaba esta página. Por favor contacte con %sLa Administración del Sitio%s si el problema persiste.', + 'STATISTICS' => 'Estadísticas', + 'START_WATCHING_FORUM' => 'Suscribir Foro', + 'START_WATCHING_TOPIC' => 'Suscribir Tema', + 'STOP_WATCHING_FORUM' => 'Cancelar suscripción al Foro', + 'STOP_WATCHING_TOPIC' => 'No seguir Tema', + 'STRING_LIST_MULTI' => '%1$s, y %2$s', + 'STRING_LIST_SIMPLE' => '%1$s y %2$s', + 'SUBFORUM' => 'Subforo', + 'SUBFORUMS' => 'Subforos', + 'SUBJECT' => 'Asunto', + 'SUBMIT' => 'Enviar', + + 'TB' => 'TB', + 'TERMS_USE' => 'Condiciones de uso', + 'TEST_CONNECTION' => 'Probar conexión', + 'THE_TEAM' => 'El Equipo', + 'TIB' => 'TiB', + 'TIME' => 'Hora', + 'TIMEOUT_PROCESSING_REQ' => 'Tiempo de espera agotado.', + + 'TOO_LARGE' => 'El valor que ha introducido es demasiado grande.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'El valor de la configuración de Número máximo de destinatarios permitidos por mensaje privado que ha introducido es demasiado grande.', + + 'TOO_LONG' => 'El valor que introdujo es demasiado largo.', + + 'TOO_LONG_CONFIRM_CODE' => 'El código de confirmación que introdujo es muy largo.', + 'TOO_LONG_DATEFORMAT' => 'El formato de fecha que introdujo es demasiado largo.', + 'TOO_LONG_JABBER' => 'La cuenta Jabber que introdujo es muy larga.', + 'TOO_LONG_NEW_PASSWORD' => 'La nueva contraseña que introdujo es muy larga.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'La confirmación de contraseña que introdujo es muy larga.', + 'TOO_LONG_USER_PASSWORD' => 'La contraseña que introdujo es muy larga.', + 'TOO_LONG_USERNAME' => 'El nombre de usuario que introdujo es muy largo.', + 'TOO_LONG_EMAIL' => 'La dirección de email que introdujo es muy larga.', + + 'TOO_MANY_VOTE_OPTIONS' => 'Ha tratado de votar demasiadas opciones.', + + 'TOO_SHORT' => 'El valor que introdujo es demasiado corto.', + + 'TOO_SHORT_CONFIRM_CODE' => 'El Código de confirmación que introdujo es muy corto.', + 'TOO_SHORT_DATEFORMAT' => 'El formato de fecha que introdujo es demasiado corto.', + 'TOO_SHORT_JABBER' => 'La cuenta Jabber que introdujo es muy corta.', + 'TOO_SHORT_NEW_PASSWORD' => 'La nueva contraseña que introdujo es muy corta.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'La confirmación de contraseña que introdujo es muy corta.', + 'TOO_SHORT_USER_PASSWORD' => 'La contraseña que introdujo es muy corta.', + 'TOO_SHORT_USERNAME' => 'El nombre de usuario que introdujo es muy corto.', + 'TOO_SHORT_EMAIL' => 'La dirección de email que introdujo es muy corta.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'La dirección de email de confirmación que introdujo es muy corta.', + 'TOO_SMALL' => 'El valor que ha introducido es demasiado pequeño.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'El valor de la configuración de Número máximo de destinatarios permitidos por mensaje privado que ha introducido es demasiado pequeño.', + + 'TOPIC' => 'Tema', + 'TOPICS' => 'Temas', + 'TOPICS_UNAPPROVED' => 'Al menos un tema en este foro no ha sido aprobado.', + 'TOPIC_ICON' => 'Icono del tema', + 'TOPIC_LOCKED' => 'Este tema está cerrado, no puede editar mensajes o enviar nuevas respuestas', + 'TOPIC_LOCKED_SHORT'=> 'Tema cerrado', + 'TOPIC_MOVED' => 'Tema movido', + 'TOPIC_REVIEW' => 'Revisión de tema', + 'TOPIC_TITLE' => 'Título del tema', + 'TOPIC_UNAPPROVED' => 'Este tema no ha sido aprobado.', + 'TOPIC_DELETED' => 'Este tema ha sido borrado.', + 'TOTAL_ATTACHMENTS' => 'Adjunto(s)', + 'TOTAL_LOGS' => array( + 1 => '%d registro', + 2 => '%d registros', + ), + 'TOTAL_PMS' => array( + 1 => '%d mensaje privado en total', + 2 => '%d mensajes privados en total', + ), + 'TOPIC_POLL' => 'Este tema tiene una encuesta.', + 'TOTAL_POSTS' => 'Mensajes totales', + 'TOTAL_POSTS_COUNT' => array( + 2 => 'Mensajes totales %d', + ), + 'TOPIC_REPORTED' => 'Este tema ha sido reportado', + 'TOTAL_TOPICS' => array( + 2 => 'Temas totales %d', + ), + 'TOTAL_USERS' => array( + 2 => 'Usuarios totales %d', + ), + 'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s', + 'TWITTER' => 'Twitter', + + 'UNABLE_GET_IMAGE_SIZE' => 'No fue posible determinar las dimensiones de la imagen. Por favor verifique que la URL que ha introducido es correcta.', + 'UNABLE_TO_DELIVER_FILE'=> 'Imposible enviar archivo.', + 'UNKNOWN_BROWSER' => 'Navegador desconocido', + 'UNMARK_ALL' => 'Desmarcar todos', + 'UNREAD_MESSAGES' => 'Mensajes sin leer', + 'UNREAD_POST' => 'Mensaje sin leer', + 'UNREAD_POSTS' => 'Mensajes sin leer', + 'UNWATCH_FORUM_CONFIRM' => '¿Seguro que desea cancelar su suscripción de este foro?', + 'UNWATCH_FORUM_DETAILED' => '¿Seguro que desea cancelar su suscripción del foro “%sâ€?', + 'UNWATCH_TOPIC_CONFIRM' => '¿Seguro que desea cancelar su suscripción de este tema?', + 'UNWATCH_TOPIC_DETAILED' => '¿Seguro que desea cancelar su suscripción del tema “%sâ€?', + 'UNWATCHED_FORUMS' => 'Ya no está suscrito a los Foros seleccionados.', + 'UNWATCHED_TOPICS' => 'Ya no está suscrito a los Temas seleccionados.', + 'UNWATCHED_FORUMS_TOPICS' => 'Ya no está suscrito a las entradas seleccionadas.', + 'UPDATE' => 'Actualizar', + 'UPLOAD_IN_PROGRESS' => 'Subida en curso', + 'URL_REDIRECT' => 'Si su navegador no soporta meta redirección, por favor haga clic %sAQUI%s para ser redirigido.', + 'USERGROUPS' => 'Grupos', + 'USERNAME' => 'Nombre de Usuario', + 'USERNAMES' => 'Nombres de Usuario', + 'USER_AVATAR' => 'Avatar de Usuario', + 'USER_CANNOT_READ' => 'No puede leer mensajes en este Foro', + 'USER_POSTS' => array( + 1 => '%d mensaje', + 2 => '%d mensajes', + ), + 'USERS' => 'Usuarios', + 'USE_PERMISSIONS' => 'Transferirme los permisos del Usuario', + + 'USER_NEW_PERMISSION_DISALLOWED' => 'Lo sentimos pero no está autorizado a usar esta opción. Puede que se haya registrado hace poco aquí y necesite participar más en las discusiones para poder hacer uso de esta opción.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', + 'VIEWED' => 'Visto', + 'VIEWED_COUNTS' => array( + 0 => 'No visto aún', + 1 => 'Visto %d vez', + 2 => 'Visto %d veces', + ), + 'VIEWING_CONTACT_ADMIN' => 'Viendo página de contacto', + 'VIEWING_FAQ' => 'Viendo FAQ', + 'VIEWING_MEMBERS' => 'Viendo detalles de los Usuarios', + 'VIEWING_ONLINE' => 'Viendo quién está conectado', + 'VIEWING_MCP' => 'Viendo el Panel de Control de Moderador', + 'VIEWING_MEMBER_PROFILE' => 'Viendo perfil de Usuario', + 'VIEWING_PRIVATE_MESSAGES' => 'Viendo mensajes privados', + 'VIEWING_REGISTER' => 'Registrando cuenta', + 'VIEWING_UCP' => 'Viendo Panel de Control de Usuario', + 'VIEWS' => 'Vistas', + 'VIEW_BOOKMARKS' => 'Ver Favoritos', + 'VIEW_FORUM_LOGS' => 'Ver registros de Foro', + 'VIEW_LATEST_POST' => 'Ver último mensaje', + 'VIEW_NEWEST_POST' => 'Ver último mensaje sin leer', + 'VIEW_NOTES' => 'Ver notas del usuario', + 'VIEW_ONLINE_TIMES' => array( + 1 => 'basados en usuarios activos en el último %d minuto', + 2 => 'basados en usuarios activos en los últimos %d minutos', + ), + 'VIEW_TOPIC' => 'Ver Tema', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'Anuncio: ', + 'VIEW_TOPIC_GLOBAL' => 'Anuncio Global: ', + 'VIEW_TOPIC_LOCKED' => 'Cerrado: ', + 'VIEW_TOPIC_LOGS' => 'Ver registros de tema', + 'VIEW_TOPIC_MOVED' => 'Movido: ', + 'VIEW_TOPIC_POLL' => 'Encuesta: ', + 'VIEW_TOPIC_STICKY' => 'Nota: ', + 'VISIT_WEBSITE' => 'Visitar sitio web', + + 'WARNINGS' => 'Advertencias', + 'WARN_USER' => 'Advertencia', + 'WATCH_FORUM_CONFIRM' => '¿Seguro que desea suscribirse a este foro?', + 'WATCH_FORUM_DETAILED' => '¿Seguro que desea suscribirse al foro “%sâ€?', + 'WATCH_TOPIC_CONFIRM' => '¿Seguro que desea suscribirse a este tema?', + 'WATCH_TOPIC_DETAILED' => '¿Seguro que desea suscribirse al tema “%sâ€?', + 'WELCOME_SUBJECT' => 'Bienvenido a los foros %s', + 'WEBSITE' => 'Sitio web', + 'WHOIS' => '¿Quién es?', + 'WHO_IS_ONLINE' => '¿Quién está conectado?', + 'WRONG_PASSWORD' => 'Introdujo una contraseña incorrecta.', + + 'WRONG_DATA_COLOUR' => 'El valor del color introducido no es válido.', + 'WRONG_DATA_JABBER' => 'El nombre que introdujo no es un nombre de cuenta Jabber válido.', + 'WRONG_DATA_LANG' => 'El idioma que especificó no es válido.', + 'WRONG_DATA_POST_SD' => 'La dirección de ordenación de mensaje especificada no es válida.', + 'WRONG_DATA_POST_SK' => 'La opción de ordenación del mensaje especificada no es válida.', + 'WRONG_DATA_TOPIC_SD' => 'La dirección de ordenación de tema especificada no es válida.', + 'WRONG_DATA_TOPIC_SK' => 'La opción de ordenación del mensaje especificada no es válida.', + 'WROTE' => 'escribió', + + 'YAHOO' => 'Yahoo Messenger', + 'YOUTUBE' => 'YouTube', + 'YEAR' => 'Año', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'Sí', + 'YOU_LAST_VISIT' => 'Su última visita fue: %s', + + 'datetime' => array( + 'TODAY' => 'Hoy', + 'TOMORROW' => 'Mañana', + 'YESTERDAY' => 'Ayer', + 'AGO' => array( + 0 => 'hace menos de un minuto', + 1 => 'hace %d minuto', + 2 => 'hace %d minutos', + ), + + 'Sunday' => 'Domingo', + 'Monday' => 'Lunes', + 'Tuesday' => 'Martes', + 'Wednesday' => 'Miércoles', + 'Thursday' => 'Jueves', + 'Friday' => 'Viernes', + 'Saturday' => 'Sábado', + + 'Sun' => 'Dom', + 'Mon' => 'Lun', + 'Tue' => 'Mar', + 'Wed' => 'Mié', + 'Thu' => 'Jue', + 'Fri' => 'Vie', + 'Sat' => 'Sab', + + 'January' => 'Enero', + 'February' => 'Febrero', + 'March' => 'Marzo', + 'April' => 'Abril', + 'May' => 'Mayo', + 'June' => 'Junio', + 'July' => 'Julio', + 'August' => 'Agosto', + 'September' => 'Septiembre', + 'October' => 'Octubre', + 'November' => 'Noviembre', + 'December' => 'Diciembre', + + 'Jan' => 'Ene', + 'Feb' => 'Feb', + 'Mar' => 'Mar', + 'Apr' => 'Abr', + 'May_short' => 'May', + 'Jun' => 'Jun', + 'Jul' => 'Jul', + 'Aug' => 'Ago', + 'Sep' => 'Sep', + 'Oct' => 'Oct', + 'Nov' => 'Nov', + 'Dec' => 'Dic', + ), + + // Timezones can be translated. We use this for the Etc/GMT timezones here, + // because they are named invers to their offset. + 'timezones' => array( + 'UTC' => 'UTC', + 'UTC_OFFSET' => 'UTC%1$s', + 'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s', + + 'Etc/GMT-12' => 'UTC+12', + 'Etc/GMT-11' => 'UTC+11', + 'Etc/GMT-10' => 'UTC+10', + 'Etc/GMT-9' => 'UTC+9', + 'Etc/GMT-8' => 'UTC+8', + 'Etc/GMT-7' => 'UTC+7', + 'Etc/GMT-6' => 'UTC+6', + 'Etc/GMT-5' => 'UTC+5', + 'Etc/GMT-4' => 'UTC+4', + 'Etc/GMT-3' => 'UTC+3', + 'Etc/GMT-2' => 'UTC+2', + 'Etc/GMT-1' => 'UTC+1', + 'Etc/GMT+1' => 'UTC-1', + 'Etc/GMT+2' => 'UTC-2', + 'Etc/GMT+3' => 'UTC-3', + 'Etc/GMT+4' => 'UTC-4', + 'Etc/GMT+5' => 'UTC-5', + 'Etc/GMT+6' => 'UTC-6', + 'Etc/GMT+7' => 'UTC-7', + 'Etc/GMT+8' => 'UTC-8', + 'Etc/GMT+9' => 'UTC-9', + 'Etc/GMT+10' => 'UTC-10', + 'Etc/GMT+11' => 'UTC-11', + 'Etc/GMT+12' => 'UTC-12', + + 'Africa/Abidjan' => 'Ãfrica/Abidjan', + 'Africa/Accra' => 'Ãfrica/Accra', + 'Africa/Addis_Ababa' => 'Ãfrica/Addis Ababa', + 'Africa/Algiers' => 'Ãfrica/Algiers', + 'Africa/Asmara' => 'Ãfrica/Asmara', + 'Africa/Bamako' => 'Ãfrica/Bamako', + 'Africa/Bangui' => 'Ãfrica/Bangui', + 'Africa/Banjul' => 'Ãfrica/Banjul', + 'Africa/Bissau' => 'Ãfrica/Bissau', + 'Africa/Blantyre' => 'Ãfrica/Blantyre', + 'Africa/Brazzaville' => 'Ãfrica/Brazzaville', + 'Africa/Bujumbura' => 'Ãfrica/Bujumbura', + 'Africa/Cairo' => 'Ãfrica/Cairo', + 'Africa/Casablanca' => 'Ãfrica/Casablanca', + 'Africa/Ceuta' => 'Ãfrica/Ceuta', + 'Africa/Conakry' => 'Ãfrica/Conakry', + 'Africa/Dakar' => 'Ãfrica/Dakar', + 'Africa/Dar_es_Salaam' => 'Ãfrica/Dar es Salaam', + 'Africa/Djibouti' => 'Ãfrica/Djibouti', + 'Africa/Douala' => 'Ãfrica/Douala', + 'Africa/El_Aaiun' => 'Ãfrica/El Aaiun', + 'Africa/Freetown' => 'Ãfrica/Freetown', + 'Africa/Gaborone' => 'Ãfrica/Gaborone', + 'Africa/Harare' => 'Ãfrica/Harare', + 'Africa/Johannesburg' => 'Ãfrica/Johannesburg', + 'Africa/Juba' => 'Ãfrica/Juba', + 'Africa/Kampala' => 'Ãfrica/Kampala', + 'Africa/Khartoum' => 'Ãfrica/Khartoum', + 'Africa/Kigali' => 'Ãfrica/Kigali', + 'Africa/Kinshasa' => 'Ãfrica/Kinshasa', + 'Africa/Lagos' => 'Ãfrica/Lagos', + 'Africa/Libreville' => 'Ãfrica/Libreville', + 'Africa/Lome' => 'Ãfrica/Lome', + 'Africa/Luanda' => 'Ãfrica/Luanda', + 'Africa/Lubumbashi' => 'Ãfrica/Lubumbashi', + 'Africa/Lusaka' => 'Ãfrica/Lusaka', + 'Africa/Malabo' => 'Ãfrica/Malabo', + 'Africa/Maputo' => 'Ãfrica/Maputo', + 'Africa/Maseru' => 'Ãfrica/Maseru', + 'Africa/Mbabane' => 'Ãfrica/Mbabane', + 'Africa/Mogadishu' => 'Ãfrica/Mogadishu', + 'Africa/Monrovia' => 'Ãfrica/Monrovia', + 'Africa/Nairobi' => 'Ãfrica/Nairobi', + 'Africa/Ndjamena' => 'Ãfrica/Ndjamena', + 'Africa/Niamey' => 'Ãfrica/Niamey', + 'Africa/Nouakchott' => 'Ãfrica/Nouakchott', + 'Africa/Ouagadougou' => 'Ãfrica/Ouagadougou', + 'Africa/Porto-Novo' => 'Ãfrica/Porto-Novo', + 'Africa/Sao_Tome' => 'Ãfrica/Sao Tome', + 'Africa/Tripoli' => 'Ãfrica/Tripoli', + 'Africa/Tunis' => 'Ãfrica/Tunis', + 'Africa/Windhoek' => 'Ãfrica/Windhoek', + + 'America/Adak' => 'América/Adak', + 'America/Anchorage' => 'América/Anchorage', + 'America/Anguilla' => 'América/Anguilla', + 'America/Antigua' => 'América/Antigua', + 'America/Araguaina' => 'América/Araguaina', + + 'America/Argentina/Buenos_Aires' => 'América/Argentina/Buenos Aires', + 'America/Argentina/Catamarca' => 'América/Argentina/Catamarca', + 'America/Argentina/Cordoba' => 'América/Argentina/Cordoba', + 'America/Argentina/Jujuy' => 'América/Argentina/Jujuy', + 'America/Argentina/La_Rioja' => 'América/Argentina/La Rioja', + 'America/Argentina/Mendoza' => 'América/Argentina/Mendoza', + 'America/Argentina/Rio_Gallegos' => 'América/Argentina/Rio Gallegos', + 'America/Argentina/Salta' => 'América/Argentina/Salta', + 'America/Argentina/San_Juan' => 'América/Argentina/San Juan', + 'America/Argentina/San_Luis' => 'América/Argentina/San Luis', + 'America/Argentina/Tucuman' => 'América/Argentina/Tucuman', + 'America/Argentina/Ushuaia' => 'América/Argentina/Ushuaia', + + 'America/Aruba' => 'América/Aruba', + 'America/Asuncion' => 'América/Asuncion', + 'America/Atikokan' => 'América/Atikokan', + 'America/Bahia' => 'América/Bahia', + 'America/Bahia_Banderas' => 'América/Bahia Banderas', + 'America/Barbados' => 'América/Barbados', + 'America/Belem' => 'América/Belem', + 'America/Belize' => 'América/Belize', + 'America/Blanc-Sablon' => 'América/Blanc-Sablon', + 'America/Boa_Vista' => 'América/Boa Vista', + 'America/Bogota' => 'América/Bogota', + 'America/Boise' => 'América/Boise', + 'America/Cambridge_Bay' => 'América/Cambridge Bay', + 'America/Campo_Grande' => 'América/Campo Grande', + 'America/Cancun' => 'América/Cancun', + 'America/Caracas' => 'América/Caracas', + 'America/Cayenne' => 'América/Cayenne', + 'America/Cayman' => 'América/Cayman', + 'America/Chicago' => 'América/Chicago', + 'America/Chihuahua' => 'América/Chihuahua', + 'America/Costa_Rica' => 'América/Costa Rica', + 'America/Creston' => 'América/Creston', + 'America/Cuiaba' => 'América/Cuiaba', + 'America/Curacao' => 'América/Curacao', + 'America/Danmarkshavn' => 'América/Danmarkshavn', + 'America/Dawson' => 'América/Dawson', + 'America/Dawson_Creek' => 'América/Dawson Creek', + 'America/Denver' => 'América/Denver', + 'America/Detroit' => 'América/Detroit', + 'America/Dominica' => 'América/Dominica', + 'America/Edmonton' => 'América/Edmonton', + 'America/Eirunepe' => 'América/Eirunepe', + 'America/El_Salvador' => 'América/El Salvador', + 'America/Fortaleza' => 'América/Fortaleza', + 'America/Glace_Bay' => 'América/Glace Bay', + 'America/Godthab' => 'América/Godthab', + 'America/Goose_Bay' => 'América/Goose Bay', + 'America/Grand_Turk' => 'América/Grand Turk', + 'America/Grenada' => 'América/Grenada', + 'America/Guadeloupe' => 'América/Guadeloupe', + 'America/Guatemala' => 'América/Guatemala', + 'America/Guayaquil' => 'América/Guayaquil', + 'America/Guyana' => 'América/Guyana', + 'America/Halifax' => 'América/Halifax', + 'America/Havana' => 'América/Havana', + 'America/Hermosillo' => 'América/Hermosillo', + 'America/Indiana/Indianapolis' => 'América/Indiana/Indianapolis', + 'America/Indiana/Knox' => 'América/Indiana/Knox', + 'America/Indiana/Marengo' => 'América/Indiana/Marengo', + 'America/Indiana/Petersburg' => 'América/Indiana/Petersburg', + 'America/Indiana/Tell_City' => 'América/Indiana/Tell City', + 'America/Indiana/Vevay' => 'América/Indiana/Vevay', + 'America/Indiana/Vincennes' => 'América/Indiana/Vincennes', + 'America/Indiana/Winamac' => 'América/Indiana/Winamac', + 'America/Inuvik' => 'América/Inuvik', + 'America/Iqaluit' => 'América/Iqaluit', + 'America/Jamaica' => 'América/Jamaica', + 'America/Juneau' => 'América/Juneau', + 'America/Kentucky/Louisville' => 'América/Kentucky/Louisville', + 'America/Kentucky/Monticello' => 'América/Kentucky/Monticello', + 'America/Kralendijk' => 'América/Kralendijk', + 'America/La_Paz' => 'América/La Paz', + 'America/Lima' => 'América/Lima', + 'America/Los_Angeles' => 'América/Los Angeles', + 'America/Lower_Princes' => 'América/Lower Princes', + 'America/Maceio' => 'América/Maceio', + 'America/Managua' => 'América/Managua', + 'America/Manaus' => 'América/Manaus', + 'America/Marigot' => 'América/Marigot', + 'America/Martinique' => 'América/Martinique', + 'America/Matamoros' => 'América/Matamoros', + 'America/Mazatlan' => 'América/Mazatlan', + 'America/Menominee' => 'América/Menominee', + 'America/Merida' => 'América/Merida', + 'America/Metlakatla' => 'América/Metlakatla', + 'America/Mexico_City' => 'América/Mexico City', + 'America/Miquelon' => 'América/Miquelon', + 'America/Moncton' => 'América/Moncton', + 'America/Monterrey' => 'América/Monterrey', + 'America/Montevideo' => 'América/Montevideo', + 'America/Montreal' => 'América/Montreal', + 'America/Montserrat' => 'América/Montserrat', + 'America/Nassau' => 'América/Nassau', + 'America/New_York' => 'América/New York', + 'America/Nipigon' => 'América/Nipigon', + 'America/Nome' => 'América/Nome', + 'America/Noronha' => 'América/Noronha', + 'America/North_Dakota/Beulah' => 'América/North Dakota/Beulah', + 'America/North_Dakota/Center' => 'América/North Dakota/Center', + 'America/North_Dakota/New_Salem' => 'América/North Dakota/New Salem', + 'America/Ojinaga' => 'América/Ojinaga', + 'America/Panama' => 'América/Panama', + 'America/Pangnirtung' => 'América/Pangnirtung', + 'America/Paramaribo' => 'América/Paramaribo', + 'America/Phoenix' => 'América/Phoenix', + 'America/Port-au-Prince' => 'América/Port-au-Prince', + 'America/Port_of_Spain' => 'América/Port of Spain', + 'America/Porto_Velho' => 'América/Porto Velho', + 'America/Puerto_Rico' => 'América/Puerto Rico', + 'America/Rainy_River' => 'América/Rainy River', + 'America/Rankin_Inlet' => 'América/Rankin Inlet', + 'America/Recife' => 'América/Recife', + 'America/Regina' => 'América/Regina', + 'America/Resolute' => 'América/Resolute', + 'America/Rio_Branco' => 'América/Rio Branco', + 'America/Santa_Isabel' => 'América/Santa Isabel', + 'America/Santarem' => 'América/Santarem', + 'America/Santiago' => 'América/Santiago', + 'America/Santo_Domingo' => 'América/Santo Domingo', + 'America/Sao_Paulo' => 'América/Sao Paulo', + 'America/Scoresbysund' => 'América/Scoresbysund', + 'America/Shiprock' => 'América/Shiprock', + 'America/Sitka' => 'América/Sitka', + 'America/St_Barthelemy' => 'América/St. Barthelemy', + 'America/St_Johns' => 'América/St. Johns', + 'America/St_Kitts' => 'América/St. Kitts', + 'America/St_Lucia' => 'América/St. Lucia', + 'America/St_Thomas' => 'América/St. Thomas', + 'America/St_Vincent' => 'América/St. Vincent', + 'America/Swift_Current' => 'América/Swift Current', + 'America/Tegucigalpa' => 'América/Tegucigalpa', + 'America/Thule' => 'América/Thule', + 'America/Thunder_Bay' => 'América/Thunder Bay', + 'America/Tijuana' => 'América/Tijuana', + 'America/Toronto' => 'América/Toronto', + 'America/Tortola' => 'América/Tortola', + 'America/Vancouver' => 'América/Vancouver', + 'America/Whitehorse' => 'América/Whitehorse', + 'America/Winnipeg' => 'América/Winnipeg', + 'America/Yakutat' => 'América/Yakutat', + 'America/Yellowknife' => 'América/Yellowknife', + + 'Antarctica/Casey' => 'Antártida/Casey', + 'Antarctica/Davis' => 'Antártida/Davis', + 'Antarctica/DumontDUrville' => 'Antártida/DumontDUrville', + 'Antarctica/Macquarie' => 'Antártida/Macquarie', + 'Antarctica/Mawson' => 'Antártida/Mawson', + 'Antarctica/McMurdo' => 'Antártida/McMurdo', + 'Antarctica/Palmer' => 'Antártida/Palmer', + 'Antarctica/Rothera' => 'Antártida/Rothera', + 'Antarctica/South_Pole' => 'Antártida/South Pole', + 'Antarctica/Syowa' => 'Antártida/Syowa', + 'Antarctica/Vostok' => 'Antártida/Vostok', + + 'Arctic/Longyearbyen' => 'Ãrtico/Longyearbyen', + + 'Asia/Aden' => 'Asia/Aden', + 'Asia/Almaty' => 'Asia/Almaty', + 'Asia/Amman' => 'Asia/Amman', + 'Asia/Anadyr' => 'Asia/Anadyr', + 'Asia/Aqtau' => 'Asia/Aqtau', + 'Asia/Aqtobe' => 'Asia/Aqtobe', + 'Asia/Ashgabat' => 'Asia/Ashgabat', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Bahrain' => 'Asia/Bahrain', + 'Asia/Baku' => 'Asia/Baku', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Beirut' => 'Asia/Beirut', + 'Asia/Bishkek' => 'Asia/Bishkek', + 'Asia/Brunei' => 'Asia/Brunei', + 'Asia/Choibalsan' => 'Asia/Choibalsan', + 'Asia/Chongqing' => 'Asia/Chongqing', + 'Asia/Colombo' => 'Asia/Colombo', + 'Asia/Damascus' => 'Asia/Damascus', + 'Asia/Dhaka' => 'Asia/Dhaka', + 'Asia/Dili' => 'Asia/Dili', + 'Asia/Dubai' => 'Asia/Dubai', + 'Asia/Dushanbe' => 'Asia/Dushanbe', + 'Asia/Gaza' => 'Asia/Gaza', + 'Asia/Harbin' => 'Asia/Harbin', + 'Asia/Hebron' => 'Asia/Hebron', + 'Asia/Ho_Chi_Minh' => 'Asia/Ho Chi Minh', + 'Asia/Hong_Kong' => 'Asia/Hong Kong', + 'Asia/Hovd' => 'Asia/Hovd', + 'Asia/Irkutsk' => 'Asia/Irkutsk', + 'Asia/Jakarta' => 'Asia/Jakarta', + 'Asia/Jayapura' => 'Asia/Jayapura', + 'Asia/Jerusalem' => 'Asia/Jerusalem', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Kamchatka' => 'Asia/Kamchatka', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kashgar' => 'Asia/Kashgar', + 'Asia/Kathmandu' => 'Asia/Kathmandu', + 'Asia/Khandyga' => 'Asia/Khandyga', + 'Asia/Kolkata' => 'Asia/Kolkata', + 'Asia/Krasnoyarsk' => 'Asia/Krasnoyarsk', + 'Asia/Kuala_Lumpur' => 'Asia/Kuala Lumpur', + 'Asia/Kuching' => 'Asia/Kuching', + 'Asia/Kuwait' => 'Asia/Kuwait', + 'Asia/Macau' => 'Asia/Macau', + 'Asia/Magadan' => 'Asia/Magadan', + 'Asia/Makassar' => 'Asia/Makassar', + 'Asia/Manila' => 'Asia/Manila', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Nicosia' => 'Asia/Nicosia', + 'Asia/Novokuznetsk' => 'Asia/Novokuznetsk', + 'Asia/Novosibirsk' => 'Asia/Novosibirsk', + 'Asia/Omsk' => 'Asia/Omsk', + 'Asia/Oral' => 'Asia/Oral', + 'Asia/Phnom_Penh' => 'Asia/Phnom Penh', + 'Asia/Pontianak' => 'Asia/Pontianak', + 'Asia/Pyongyang' => 'Asia/Pyongyang', + 'Asia/Qatar' => 'Asia/Qatar', + 'Asia/Qyzylorda' => 'Asia/Qyzylorda', + 'Asia/Rangoon' => 'Asia/Rangoon', + 'Asia/Riyadh' => 'Asia/Riyadh', + 'Asia/Sakhalin' => 'Asia/Sakhalin', + 'Asia/Samarkand' => 'Asia/Samarkand', + 'Asia/Seoul' => 'Asia/Seoul', + 'Asia/Shanghai' => 'Asia/Shanghai', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Taipei' => 'Asia/Taipei', + 'Asia/Tashkent' => 'Asia/Tashkent', + 'Asia/Tbilisi' => 'Asia/Tbilisi', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Thimphu' => 'Asia/Thimphu', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Asia/Ulaanbaatar' => 'Asia/Ulaanbaatar', + 'Asia/Urumqi' => 'Asia/Urumqi', + 'Asia/Ust-Nera' => 'Asia/Ust-Nera', + 'Asia/Vientiane' => 'Asia/Vientiane', + 'Asia/Vladivostok' => 'Asia/Vladivostok', + 'Asia/Yakutsk' => 'Asia/Yakutsk', + 'Asia/Yekaterinburg' => 'Asia/Yekaterinburg', + 'Asia/Yerevan' => 'Asia/Yerevan', + + 'Atlantic/Azores' => 'Atlántico/Azores', + 'Atlantic/Bermuda' => 'Atlántico/Bermuda', + 'Atlantic/Canary' => 'Atlántico/Canary', + 'Atlantic/Cape_Verde' => 'Atlántico/Cape Verde', + 'Atlantic/Faroe' => 'Atlántico/Faroe', + 'Atlantic/Madeira' => 'Atlántico/Madeira', + 'Atlantic/Reykjavik' => 'Atlántico/Reykjavik', + 'Atlantic/South_Georgia' => 'Atlántico/South Georgia', + 'Atlantic/St_Helena' => 'Atlántico/St. Helena', + 'Atlantic/Stanley' => 'Atlántico/Stanley', + + 'Australia/Adelaide' => 'Australia/Adelaide', + 'Australia/Brisbane' => 'Australia/Brisbane', + 'Australia/Broken_Hill' => 'Australia/Broken Hill', + 'Australia/Currie' => 'Australia/Currie', + 'Australia/Darwin' => 'Australia/Darwin', + 'Australia/Eucla' => 'Australia/Eucla', + 'Australia/Hobart' => 'Australia/Hobart', + 'Australia/Lindeman' => 'Australia/Lindeman', + 'Australia/Lord_Howe' => 'Australia/Lord Howe', + 'Australia/Melbourne' => 'Australia/Melbourne', + 'Australia/Perth' => 'Australia/Perth', + 'Australia/Sydney' => 'Australia/Sydney', + + 'Europe/Amsterdam' => 'Europa/Amsterdam', + 'Europe/Andorra' => 'Europa/Andorra', + 'Europe/Athens' => 'Europa/Athens', + 'Europe/Belgrade' => 'Europa/Belgrade', + 'Europe/Berlin' => 'Europa/Berlin', + 'Europe/Bratislava' => 'Europa/Bratislava', + 'Europe/Brussels' => 'Europa/Brussels', + 'Europe/Bucharest' => 'Europa/Bucharest', + 'Europe/Budapest' => 'Europa/Budapest', + 'Europe/Busingen' => 'Europa/Busingen', + 'Europe/Chisinau' => 'Europa/Chisinau', + 'Europe/Copenhagen' => 'Europa/Copenhagen', + 'Europe/Dublin' => 'Europa/Dublin', + 'Europe/Gibraltar' => 'Europa/Gibraltar', + 'Europe/Guernsey' => 'Europa/Guernsey', + 'Europe/Helsinki' => 'Europa/Helsinki', + 'Europe/Isle_of_Man' => 'Europa/Isle of Man', + 'Europe/Istanbul' => 'Europa/Istanbul', + 'Europe/Jersey' => 'Europa/Jersey', + 'Europe/Kaliningrad' => 'Europa/Kaliningrad', + 'Europe/Kiev' => 'Europa/Kiev', + 'Europe/Lisbon' => 'Europa/Lisbon', + 'Europe/Ljubljana' => 'Europa/Ljubljana', + 'Europe/London' => 'Europa/London', + 'Europe/Luxembourg' => 'Europa/Luxembourg', + 'Europe/Madrid' => 'Europa/Madrid', + 'Europe/Malta' => 'Europa/Malta', + 'Europe/Mariehamn' => 'Europa/Mariehamn', + 'Europe/Minsk' => 'Europa/Minsk', + 'Europe/Monaco' => 'Europa/Monaco', + 'Europe/Moscow' => 'Europa/Moscow', + 'Europe/Oslo' => 'Europa/Oslo', + 'Europe/Paris' => 'Europa/Paris', + 'Europe/Podgorica' => 'Europa/Podgorica', + 'Europe/Prague' => 'Europa/Prague', + 'Europe/Riga' => 'Europa/Riga', + 'Europe/Rome' => 'Europa/Rome', + 'Europe/Samara' => 'Europa/Samara', + 'Europe/San_Marino' => 'Europa/San Marino', + 'Europe/Sarajevo' => 'Europa/Sarajevo', + 'Europe/Simferopol' => 'Europa/Simferopol', + 'Europe/Skopje' => 'Europa/Skopje', + 'Europe/Sofia' => 'Europa/Sofia', + 'Europe/Stockholm' => 'Europa/Stockholm', + 'Europe/Tallinn' => 'Europa/Tallinn', + 'Europe/Tirane' => 'Europa/Tirane', + 'Europe/Uzhgorod' => 'Europa/Uzhgorod', + 'Europe/Vaduz' => 'Europa/Vaduz', + 'Europe/Vatican' => 'Europa/Vatican', + 'Europe/Vienna' => 'Europa/Vienna', + 'Europe/Vilnius' => 'Europa/Vilnius', + 'Europe/Volgograd' => 'Europa/Volgograd', + 'Europe/Warsaw' => 'Europa/Warsaw', + 'Europe/Zagreb' => 'Europa/Zagreb', + 'Europe/Zaporozhye' => 'Europa/Zaporozhye', + 'Europe/Zurich' => 'Europa/Zurich', + + 'Indian/Antananarivo' => 'Ãndico/Antananarivo', + 'Indian/Chagos' => 'Ãndico/Chagos', + 'Indian/Christmas' => 'Ãndico/Christmas', + 'Indian/Cocos' => 'Ãndico/Cocos', + 'Indian/Comoro' => 'Ãndico/Comoro', + 'Indian/Kerguelen' => 'Ãndico/Kerguelen', + 'Indian/Mahe' => 'Ãndico/Mahe', + 'Indian/Maldives' => 'Ãndico/Maldives', + 'Indian/Mauritius' => 'Ãndico/Mauritius', + 'Indian/Mayotte' => 'Ãndico/Mayotte', + 'Indian/Reunion' => 'Ãndico/Reunion', + + 'Pacific/Apia' => 'Pacífico/Apia', + 'Pacific/Auckland' => 'Pacífico/Auckland', + 'Pacific/Chatham' => 'Pacífico/Chatham', + 'Pacific/Chuuk' => 'Pacífico/Chuuk', + 'Pacific/Easter' => 'Pacífico/Easter', + 'Pacific/Efate' => 'Pacífico/Efate', + 'Pacific/Enderbury' => 'Pacífico/Enderbury', + 'Pacific/Fakaofo' => 'Pacífico/Fakaofo', + 'Pacific/Fiji' => 'Pacífico/Fiji', + 'Pacific/Funafuti' => 'Pacífico/Funafuti', + 'Pacific/Galapagos' => 'Pacífico/Galapagos', + 'Pacific/Gambier' => 'Pacífico/Gambier', + 'Pacific/Guadalcanal' => 'Pacífico/Guadalcanal', + 'Pacific/Guam' => 'Pacífico/Guam', + 'Pacific/Honolulu' => 'Pacífico/Honolulu', + 'Pacific/Johnston' => 'Pacífico/Johnston', + 'Pacific/Kiritimati' => 'Pacífico/Kiritimati', + 'Pacific/Kosrae' => 'Pacífico/Kosrae', + 'Pacific/Kwajalein' => 'Pacífico/Kwajalein', + 'Pacific/Majuro' => 'Pacífico/Majuro', + 'Pacific/Marquesas' => 'Pacífico/Marquesas', + 'Pacific/Midway' => 'Pacífico/Midway', + 'Pacific/Nauru' => 'Pacífico/Nauru', + 'Pacific/Niue' => 'Pacífico/Niue', + 'Pacific/Norfolk' => 'Pacífico/Norfolk', + 'Pacific/Noumea' => 'Pacífico/Noumea', + 'Pacific/Pago_Pago' => 'Pacífico/Pago Pago', + 'Pacific/Palau' => 'Pacífico/Palau', + 'Pacific/Pitcairn' => 'Pacífico/Pitcairn', + 'Pacific/Pohnpei' => 'Pacífico/Pohnpei', + 'Pacific/Port_Moresby' => 'Pacífico/Port Moresby', + 'Pacific/Rarotonga' => 'Pacífico/Rarotonga', + 'Pacific/Saipan' => 'Pacífico/Saipan', + 'Pacific/Tahiti' => 'Pacífico/Tahiti', + 'Pacific/Tarawa' => 'Pacífico/Tarawa', + 'Pacific/Tongatapu' => 'Pacífico/Tongatapu', + 'Pacific/Wake' => 'Pacífico/Wake', + 'Pacific/Wallis' => 'Pacífico/Wallis', + ), + + // The value is only an example and will get replaced by the current time on view + 'dateformats' => array( + 'd M Y H:i' => '01 Ene 2007 13:37', + 'd M Y, H:i' => '01 Ene 2007, 13:37', + 'M jS, y, H:i' => 'Ene 1ro, 07, 13:37', + 'D M d, Y g:i a' => 'Lun Ene 01, 2007 1:37 pm', + 'F jS, Y, g:i a' => 'Enero 1ro, 2007, 1:37 pm', + '|d M Y|, H:i' => 'Hoy, 13:37 / 01 Ene 2007, 13:37', + '|F jS, Y|, g:i a' => 'Hoy, 1:37 pm / 1ro de Enero, 2007, 1:37 pm', + ), + + // The default dateformat which will be used on new installs in this language + // Translators should change this if a the usual date format is different + 'default_dateformat' => 'D, d M Y, H:i', // Mié, 10 Mar 2010, 23:26 + +)); diff --git a/includes/shared/phpbb3/language/lang_spanish/index.htm b/includes/shared/phpbb3/language/lang_spanish/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_spanish/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_swedish/index.htm b/includes/shared/phpbb3/language/lang_swedish/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_swedish/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/phpbb3/language/lang_tukish/common.php b/includes/shared/phpbb3/language/lang_tukish/common.php new file mode 100644 index 00000000..d872b53d --- /dev/null +++ b/includes/shared/phpbb3/language/lang_tukish/common.php @@ -0,0 +1,896 @@ + + * + * @copyright (c) phpBB Limited [phpBB sistemi] + * @copyright (c) Juy Software [Tercüme] + * + * @license GNU General Public License, version 2 (GPL-2.0) http://opensource.org/licenses/gpl-2.0.php + */ + +/** --------------------------------------------------------------------------------------------------------- + * [ phpBB Türkçe Dil Paketi ] + * + * SÃœRÃœM/VERSÄ°YON: + * phpBB : 3.0.14 + * Dil dosyası : 1.0.14 - 06 Mayıs 2015 + * Etiket : 1.0.14-phpBB.3.0.14 + * + * TERCÃœME : phpBB Türkiye http://phpbbturkiye.net + * LÄ°SANS : Genel Kamu Lisansı (GPL-2.0) http://opensource.org/licenses/gpl-2.0.php + * ---------------------------------------------------------------------------------------------------------- + * [ Hata bildirimi ] + * + * Gözden kaçan hataları veya yanlış olduÄŸunu düşündüğünüz ifadeler için önerilerinizi lütfen bildiriniz. + * + * phpBB Türkiye, phpBB Türkçe dil dosyası hata bildirim sayfası + * http://phpbbturkiye.net/hata-raporlari-f93/ + * + * GitHub, phpBB Türkçe dil dosyası hata bildirim sayfası + * https://github.com/juy/phpBB.Turkce.Dil.Paketi + * ---------------------------------------------------------------------------------------------------------- + * Kopyala-yapıştır yapabileceÄŸiniz bazı karakterler: + * ’ » “ †… + *----------------------------------------------------------------------------------------------------------- + */ + +if (empty($lang) || !is_array($lang)) +{ + $lang = array(); +} + +$lang = array_merge($lang, array( + 'TRANSLATION_INFO' => 'phpBB3 Türkçe: phpBB Türkiye', + 'DIRECTION' => 'ltr', + 'DATE_FORMAT' => '|d M Y|', // 01 Mar 2007 + 'USER_LANG' => 'tr', + + '1_DAY' => '1 gün', + '1_MONTH' => '1 ay', + '1_YEAR' => '1 yıl', + '2_WEEKS' => '2 hafta', + '3_MONTHS' => '3 ay', + '6_MONTHS' => '6 ay', + '7_DAYS' => '7 gün', + + 'ACCOUNT_ALREADY_ACTIVATED' => 'Hesabınız zaten aktif edilmiÅŸ', + 'ACCOUNT_DEACTIVATED' => 'Hesabınız pasif edilmiÅŸtir ve sadece bir yönetici aktifleÅŸtirebilir.', + 'ACCOUNT_NOT_ACTIVATED' => 'Hesabınız henüz aktif edilmemiÅŸ.', + 'ACP' => 'Yönetim Paneli', + 'ACTIVE' => 'aktif', + 'ACTIVE_ERROR' => 'Aktif olmayan bir kullanıcı adına sahipsiniz. Lütfen hesabınızı aktif edip tekrar deneyiniz. EÄŸer hesabınızı aktif etmekte sorun yaÅŸarsanız lütfen pano yöneticisi ile irtibata geçin.', + 'ADMINISTRATOR' => 'Yönetici', + 'ADMINISTRATORS' => 'Yöneticiler', + 'AGE' => 'YaÅŸ', + 'AIM' => 'AIM', + 'ALLOWED' => 'Ä°zin verildi', + 'ALL_FILES' => 'Tüm dosyalar', + 'ALL_FORUMS' => 'Tüm forumlar', + 'ALL_MESSAGES' => 'Tüm mesajlar', + 'ALL_POSTS' => 'Tüm iletiler', + 'ALL_TIMES' => 'Tüm zamanlar %1$s %2$s', + 'ALL_TOPICS' => 'Tüm konular', + 'AND' => 've', + 'ARE_WATCHING_FORUM' => 'Bu forumdaki yeni iletilerden haberdar edilmek için abone oldunuz.', + 'ARE_WATCHING_TOPIC' => 'Bu konudaki yeni iletilerden haberdar edilmek için abone oldunuz', + 'ASCENDING' => 'Artan', + 'ATTACHMENTS' => 'Eklentiler', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'Geçersiz bir resim dosyası göndermeye çalıştınız.', + 'AUTHOR' => 'Yazar', + 'AUTH_NO_PROFILE_CREATED' => 'Kullanıcı profili oluÅŸturma iÅŸlemi baÅŸarısız oldu.', + 'AVATAR_DISALLOWED_CONTENT' => 'Dosya kabul edilmedi, çünkü yüklenmek istenen dosya olası bir saldırı tehdidi olarak algılandı.', + 'AVATAR_DISALLOWED_EXTENSION' => 'Bu dosya gösterilemiyor çünkü %s uzantısına izin verilmiyor.', + 'AVATAR_EMPTY_REMOTE_DATA' => 'Belirlenen avatar yüklenemedi çünkü uzak veri geçersiz veya bozuk.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'Yüklenen avatar dosyası boÅŸ.', + 'AVATAR_INVALID_FILENAME' => '%s geçersiz bir dosya adı.', + 'AVATAR_NOT_UPLOADED' => 'Avatar yüklenemedi.', + 'AVATAR_NO_SIZE' => 'BaÄŸlantı verilen avatar resminin geniÅŸlik ve yüksekliÄŸi elde edilemedi. Lütfen bunları el ile giriniz.', + 'AVATAR_PARTIAL_UPLOAD' => 'Belirtilen dosyanın sadece bir kısmı yüklendi.', + 'AVATAR_PHP_SIZE_NA' => 'Avatar dosya boyutu çok büyük.
    php.ini dosyasında bulunan en fazla boyut PHP tarafından belirlenemedi.', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Avatar dosya boyutu çok büyük. En fazla yükleme boyutu %1$d %2$s.
    Lütfen php.ini dosyasında bulunan bu yükleme boyutunu not alınız ve aşmayınız.', + 'AVATAR_REMOTE_UPLOAD_TIMEOUT' => 'Dosya zaman aşımına uğradığından belirtilen avatar yüklenemedi.', + 'AVATAR_URL_INVALID' => 'Belirtilen adres geçersizdir.', + 'AVATAR_URL_NOT_FOUND' => 'Belirtilen dosya bulunamadı.', + 'AVATAR_WRONG_FILESIZE' => 'Avatar 0 ve %1$d %2$s arasında olmalıdır.', + 'AVATAR_WRONG_SIZE' => 'Eklenmek istenen avatar %5$d px genişlikte ve %6$d px yüksekliktedir. Avatar en az %1$d px genişlikte ve %2$d px yükseklikte olmalı, %3$d px genişlik ve %4$d px yükseklik değerinden de çok olmamalıdır.', + + 'BACK_TO_TOP' => 'Sayfa başı', + 'BACK_TO_PREV' => 'Önceki sayfaya dön', + 'BAN_TRIGGERED_BY_EMAIL'=> 'Bu yasak e-posta adresinize yöneliktir', + 'BAN_TRIGGERED_BY_IP' => 'Bu yasak IP adresinize yöneliktir', + 'BAN_TRIGGERED_BY_USER' => 'Bu yasak kullanıcı adınıza yöneliktir', + 'BBCODE_GUIDE' => 'Biçim kodu rehberi', + 'BCC' => 'Karbon kopya', + 'BIRTHDAYS' => 'Doğum günleri', + 'BOARD_BAN_PERM' => 'Panodan kalıcı olarak uzaklaştırıldınız.

    Daha fazla bilgi için %2$spano yöneticisi%3$s ile iletişim kurunuz.', + 'BOARD_BAN_REASON' => 'Uzaklaştırılma nedeni: %s', + 'BOARD_BAN_TIME' => '%1$s tarihine kadar panodan uzaklaştırıldınız.

    Daha fazla bilgi için %2$spano yöneticisi%3$s ile iletiÅŸim kurunuz.', + 'BOARD_DISABLE' => 'Mesaj panosu ÅŸu an eriÅŸime kapalıdır. Bu durum için özür dileriz, lütfen daha sonra tekrar deneyiniz.', + 'BOARD_DISABLED' => 'Mesaj panosu ÅŸu an eriÅŸime kapalıdır.', + 'BOARD_UNAVAILABLE' => 'Ãœzgünüz, panoya ÅŸu an eriÅŸilemiyor. Lütfen birkaç dakika içinde tekrar deneyiniz', + 'BROWSING_FORUM' => 'Bu forumu görüntüleyenler: %1$s', + 'BROWSING_FORUM_GUEST' => 'Bu forumu görüntüleyenler: %1$s ve %2$d misafir', + 'BROWSING_FORUM_GUESTS' => 'Bu forumu görüntüleyenler: %1$s ve %2$d misafir', + 'BYTES' => 'bayt', + + 'CANCEL' => 'Ä°ptal', + 'CHANGE' => 'DeÄŸiÅŸtir', + 'CHANGE_FONT_SIZE' => 'Yazı boyutunu deÄŸiÅŸtir', + 'CHANGING_PREFERENCES' => 'Pano ayarlarını deÄŸiÅŸtiriyor', + 'CHANGING_PROFILE' => 'Profil ayarlarını deÄŸiÅŸtiriyor', + 'CLICK_VIEW_PRIVMSG' => '%sGelen kutusuna git%s', + 'COLLAPSE_VIEW' => 'Görünümü daralt', + 'CLOSE_WINDOW' => 'Pencereyi kapat', + 'COLOUR_SWATCH' => 'Renk paleti', + 'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic + 'CONFIRM' => 'DoÄŸrula', + 'CONFIRM_CODE' => 'DoÄŸrulama kodu', + 'CONFIRM_CODE_EXPLAIN' => 'Resimde gördüğünüz karakterleri aynen yazınız. Tüm karakterler küçük-büyük harf duyarsızdır .', + 'CONFIRM_CODE_WRONG' => 'DoÄŸrulama kodunu eksik veya yanlış yazdınız.', + 'CONFIRM_OPERATION' => 'Bu iÅŸlemi gerçekleÅŸtirmek istediÄŸinizden emin misiniz?', + 'CONGRATULATIONS' => 'Tebrikler', + 'CONNECTION_FAILED' => 'BaÄŸlantı baÅŸarısız oldu.', + 'CONNECTION_SUCCESS' => 'BaÄŸlantı baÅŸarılı oldu', + 'COOKIES_DELETED' => 'Tüm pano çerezleri silindi.', + 'CURRENT_TIME' => 'Sistem saati: %s', + + 'DAY' => 'Gün', + 'DAYS' => 'Gün', + 'DELETE' => 'Sil', + 'DELETE_ALL' => 'Hepsini sil', + 'DELETE_COOKIES' => 'Tüm çerezleri sil', + 'DELETE_MARKED' => 'Seçileni sil', + 'DELETE_POST' => 'Ä°letiyi sil', + 'DELIMITER' => 'Sınırlayıcı', + 'DESCENDING' => 'Azalan', + 'DISABLED' => 'Kapalı', + 'DISPLAY' => 'Göster', + 'DISPLAY_GUESTS' => 'Misafirleri göster', + 'DISPLAY_MESSAGES' => 'Önceki mesajları göster', + 'DISPLAY_POSTS' => 'Önceki iletileri göster', + 'DISPLAY_TOPICS' => 'Önceki konuları göster', + 'DOWNLOADED' => 'Ä°ndirilme', + 'DOWNLOADING_FILE' => 'Dosya indiriyor', + 'DOWNLOAD_COUNT' => '%d defa indirildi', + 'DOWNLOAD_COUNTS' => '%d defa indirildi', + 'DOWNLOAD_COUNT_NONE' => 'Henüz indirilmedi', + 'VIEWED_COUNT' => '%d defa görüntülendi', + 'VIEWED_COUNTS' => '%d defa görüntülendi', + 'VIEWED_COUNT_NONE' => 'Henüz görüntülenmedi', + + 'EDIT_POST' => 'Ä°letiyi deÄŸiÅŸtir', + 'EMAIL' => 'E-posta', // Short form for EMAIL_ADDRESS + 'EMAIL_ADDRESS' => 'E-posta adresi', + 'EMAIL_INVALID_EMAIL' => 'Yazdığınız e-posta adresi geçersizdir.', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'E-posta gönderilirken problem oluÅŸtu Satır %s Yanıt: %s.', + 'EMPTY_SUBJECT' => 'Yeni konu gönderebilmek için ileti konusu yazmalısınız.', + 'EMPTY_MESSAGE_SUBJECT' => 'Yeni mesaj gönderebilmek için mesaj konusu yazmalısınız.', + 'ENABLED' => 'Açık', + 'ENCLOSURE' => 'Çevir', + 'ENTER_USERNAME' => 'Kullanıcı adı yazın', + 'ERR_CHANGING_DIRECTORY' => 'Dizin deÄŸiÅŸtirilemiyor.', + 'ERR_CONNECTING_SERVER' => 'Sunucuya baÄŸlanırken hata oluÅŸtu.', + 'ERR_JAB_AUTH' => 'Jabber sunucusu kimliÄŸinizi onaylamadı.', + 'ERR_JAB_CONNECT' => 'Jabber sunucuya baÄŸlanılamadı.', + 'ERR_UNABLE_TO_LOGIN' => 'Yazılan kullanıcı adı veya parola geçersiz.', + 'ERR_UNWATCHING' => 'AboneliÄŸi iptal etmeyi denerken bir hata oluÅŸtu.', + 'ERR_WATCHING' => 'Abone olmayı denerken bir hata oluÅŸtu.', + 'ERR_WRONG_PATH_TO_PHPBB' => 'Girilen phpBB yolu geçersiz.', + 'EXPAND_VIEW' => 'Görünümü geniÅŸlet', + 'EXTENSION' => 'Uzantı', + 'EXTENSION_DISABLED_AFTER_POSTING' => '%s uzatısı aktif deÄŸil ve gösterilemiyor.', + + 'FAQ' => 'Pano Kılavuzu', + 'FAQ_EXPLAIN' => 'Sık Sorulan Sorular', + 'FILENAME' => 'Dosya adı', + 'FILESIZE' => 'Dosya boyutu', + 'FILEDATE' => 'Dosya tarihi', + 'FILE_COMMENT' => 'Dosya açıklaması', + 'FILE_NOT_FOUND' => 'Talep edilen dosya bulunamadı.', + 'FIND_USERNAME' => 'Ãœye ara', + 'FOLDER' => 'Klasör', + 'FORGOT_PASS' => 'Parolamı unuttum', + 'FORM_INVALID' => 'Gönderilen form geçersizdir. Tekrar göndermeyi deneyin.', + 'FORUM' => 'Forum', + 'FORUMS' => 'Forumlar', + 'FORUMS_MARKED' => 'Forumlar okundu olarak iÅŸaretlendi.', + 'FORUM_CAT' => 'Forum kategorisi', + 'FORUM_INDEX' => 'Pano anasayfası', + 'FORUM_LINK' => 'Forum linki', + 'FORUM_LOCATION' => 'Panodaki yeri', + 'FORUM_LOCKED' => 'Forum kilitli', + 'FORUM_RULES' => 'Forum kuralları', + 'FORUM_RULES_LINK' => 'Forum kurallarını görmek için buraya tıklayın', + 'FROM' => 'kimden', + 'FSOCK_DISABLED' => 'Çalışma tamamlanamadı, çünkü fsockopen fonksiyonu engellenmiÅŸ veya sunucu tarafından sorgulanamıyor.', + 'FSOCK_TIMEOUT' => 'AÄŸ akışı okunurken zaman aşımı oluÅŸtu.', + + 'FTP_FSOCK_HOST' => 'FTP sunucusu', + 'FTP_FSOCK_HOST_EXPLAIN' => 'Mesaj panonuza baÄŸlanmak için kullanacağınız FTP sunucusu.', + 'FTP_FSOCK_PASSWORD' => 'FTP parolası', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'FTP kullanıcı adınıza ait parola.', + 'FTP_FSOCK_PORT' => 'FTP portu', + 'FTP_FSOCK_PORT_EXPLAIN' => 'Sunucunuza baÄŸlanmak için kullanılacak port.', + 'FTP_FSOCK_ROOT_PATH' => 'phpBB panosunun yolu', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'phpBB panosunun ana dizin yolu.', + 'FTP_FSOCK_TIMEOUT' => 'FTP zaman aşımı', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'Saniye cinsinden sunucunuzdan cevap alınması için sistemin bekleyeceÄŸi süre.', + 'FTP_FSOCK_USERNAME' => 'FTP kullanıcı adı', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Sunucuya baÄŸlanmak için kullanılacak kullanıcı adı.', + + 'FTP_HOST' => 'FTP sunucusu', + 'FTP_HOST_EXPLAIN' => 'Mesaj panonuza baÄŸlanırken kullanılacak FTP sunucusu', + 'FTP_PASSWORD' => 'FTP parolası', + 'FTP_PASSWORD_EXPLAIN' => 'FTP kullanıcı adınıza ait parola', + 'FTP_PORT' => 'FTP portu', + 'FTP_PORT_EXPLAIN' => 'Sunucunuzua baÄŸlanmak için kullanılacak port', + 'FTP_ROOT_PATH' => 'phpBB panosunun yolu', + 'FTP_ROOT_PATH_EXPLAIN' => 'phpBB panosunun ana dizin yolu', + 'FTP_TIMEOUT' => 'FTP zaman aşımı', + 'FTP_TIMEOUT_EXPLAIN' => 'Saniye cinsinden sunucunuzdan cevap alınması için sistemin bekleyeceÄŸi süre', + 'FTP_USERNAME' => 'FTP kullanıcı adı', + 'FTP_USERNAME_EXPLAIN' => 'Sunucuya baÄŸlanmak için kullanılacak kullanıcı adı', + + 'GENERAL_ERROR' => 'Genel Hata', + 'GB' => 'GB', + 'GIB' => 'GiB', + 'GO' => 'Git', + 'GOTO_PAGE' => 'Sayfaya git', + 'GROUP' => 'Grup', + 'GROUPS' => 'Gruplar', + 'GROUP_ERR_TYPE' => 'Belirtilen grup tipi uygunsuzdur.', + 'GROUP_ERR_USERNAME' => 'Belirtilen isimde grup yok.', + 'GROUP_ERR_USER_LONG' => 'Grup adı 60 karakteri aÅŸamaz. Yazılan grup adı çok uzun.', + 'GUEST' => 'Misafir', + 'GUEST_USERS_ONLINE' => 'Toplam %d misafir çevrimiçi', + 'GUEST_USERS_TOTAL' => '%d misafir', + 'GUEST_USERS_ZERO_ONLINE' => 'Toplam 0 misafir çevrimiçi', + 'GUEST_USERS_ZERO_TOTAL' => '0 misafir', + 'GUEST_USER_ONLINE' => 'Toplam %d misafir çevrimiçi', + 'GUEST_USER_TOTAL' => '%d misafir', + 'G_ADMINISTRATORS' => 'Yönetici', + 'G_BOTS' => 'Bot', + 'G_GUESTS' => 'Misafir', + 'G_REGISTERED' => 'Kayıtlı kullanıcılar', + 'G_REGISTERED_COPPA' => 'COPPA kayıtlı kullanıcılar', + 'G_GLOBAL_MODERATORS' => 'Genel yetkili', + 'G_NEWLY_REGISTERED' => 'Yeni kayıtlı kullanıcılar', + + 'HIDDEN_USERS_ONLINE' => '%d gizli kullanıcı çevrimiçi', + 'HIDDEN_USERS_TOTAL' => '%d gizli', + 'HIDDEN_USERS_TOTAL_AND' => '%d gizli ve ', + 'HIDDEN_USERS_ZERO_ONLINE' => '0 gizli kullanıcı çevrimiçi', + 'HIDDEN_USERS_ZERO_TOTAL' => '0 gizli', + 'HIDDEN_USERS_ZERO_TOTAL_AND' => '0 gizli ve ', + 'HIDDEN_USER_ONLINE' => '%d gizli kullanıcı çevrimiçi', + 'HIDDEN_USER_TOTAL' => '%d gizli', + 'HIDDEN_USER_TOTAL_AND' => '%d gizli ve ', + 'HIDE_GUESTS' => 'Misafirleri gizle', + 'HIDE_ME' => 'Bu oturum için çevrimiçi olduÄŸumu gizle', + 'HOURS' => 'Saat', + 'HOME' => 'Anasayfa', + + 'ICQ' => 'ICQ', + 'ICQ_STATUS' => 'ICQ durumu', + 'IF' => 'EÄŸer', + 'IMAGE' => 'Resim', + 'IMAGE_FILETYPE_INVALID' => '%d resim dosya tipi, mimetype %s için desteklenmiyor.', + 'IMAGE_FILETYPE_MISMATCH' => 'Resim dosya tipi uyumsuz: beklenen uzantı %1$s fakat %2$s uzantısı belirlenmiÅŸ.', + 'IN' => ' - ', // in + 'INDEX' => 'Pano anasayfası', + 'INFORMATION' => 'Bilgi', + 'INTERESTS' => 'Ä°lgi alanları', + 'INVALID_DIGEST_CHALLENGE' => 'Geçersiz derleme sorgusu.', + 'INVALID_EMAIL_LOG' => '%s belki geçersiz bir e-posta adresi?', + 'IP' => 'IP', + 'IP_BLACKLISTED' => '%1$s IP adresi, kara listede olması sebebiyle engellenmiÅŸ. Detaylar için bakabilirsiniz: %2$s.', + + 'JABBER' => 'Jabber', + 'JOINED' => 'Kayıt', + 'JUMP_PAGE' => 'Gitmek istediÄŸiniz sayfa numarasını girin', + 'JUMP_TO' => 'Git', + 'JUMP_TO_PAGE' => 'Sayfaya atlamak için tıklayın…', + + 'KB' => 'KB', + 'KIB' => 'KiB', + + 'LAST_POST' => 'Son ileti', + 'LAST_UPDATED' => 'Son güncelleme', + 'LAST_VISIT' => 'Son ziyaret', + 'LDAP_NO_LDAP_EXTENSION' => 'LDAP eklentisi mevcut deÄŸil.', + 'LDAP_NO_SERVER_CONNECTION' => 'LDAP sunucusuna baÄŸlanılamıyor.', + 'LDAP_SEARCH_FAILED' => 'LDAP dizininde arama yaparken bir hata oluÅŸtu.', + 'LEGEND' => 'Yetkiler', // Legend + 'LOCATION' => 'Konum', + 'LOCK_POST' => 'Ä°letiyi kilitle', + 'LOCK_POST_EXPLAIN' => 'DeÄŸiÅŸtirmeyi engelle', + 'LOCK_TOPIC' => 'Kilitle', + 'LOGIN' => 'Oturum Aç', + 'LOGIN_CHECK_PM' => 'Özel mesajlarınızı kontrol etmek için oturum açın.', + 'LOGIN_CONFIRMATION' => 'Oturum açma doÄŸrulama', + 'LOGIN_CONFIRM_EXPLAIN' => '"Brute Force" tekniÄŸi ile oturum açma denemelerini engellemek için belirlenen baÅŸarısız oturum açma denemesi sonunda doÄŸrulama kodu girmenizi istenmektedir. Kod aÅŸağıdaki resim içine yerleÅŸtirilmiÅŸtir. EÄŸer kod bozuk görünüyor veya kodu okuyamıyorsanız yardım için lütfen %spano yöneticisi%s ile irtibata geçin.', // unused + 'LOGIN_ERROR_ATTEMPTS' => 'Ä°zin verilen en fazla oturum açma denemesini aÅŸtınız. Kullanıcı adınız ve parolanıza ek olarak aÅŸağıdaki resimde görülen kod doÄŸrulamasını da doldurmalısınız.', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'Apache tarafından doÄŸrulanmadınız.', + 'LOGIN_ERROR_PASSWORD' => 'GirdiÄŸiniz parola yanlış. Lütfen parolanızı kontrol edip tekrar deneyiniz. EÄŸer sorun yaÅŸamaya devam ederseniz %spano yöneticisi%s ile irtibata geçin.', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'Bu pano yazılımını güncellerken parolanızı deÄŸiÅŸtirmeniz mümkün deÄŸildir. Lütfen %syeni bir parola%s isteyin. EÄŸer hala giriÅŸte sorun yaşıyorsanız %spano yöneticisi%s ile irtibata geçin..', + 'LOGIN_ERROR_USERNAME' => 'GirdiÄŸiniz kullanıcı adı yanlış. Lütfen kullanıcı adınızı kontrol edip tekrar deneyiniz. EÄŸer sorun yaÅŸamaya devam ederseniz %spano yöneticisi%s ile irtibata geçin.', + 'LOGIN_FORUM' => 'Bu forumu görmek veya ileti göndermek için parola girmelisiniz.', + 'LOGIN_INFO' => 'Mesaj panomuza oturum açabilmek için öncelikle kayıt olmalısınız. Kayıt iÅŸlemi sadece birkaç dakikanızı alır, bunun yanında panodaki bir çok olanaktan faydalanma hakkı kazanırsınız. Pano yöneticisi ayrıca kayıtlı kullanıcılara ekstra izinler verebilir. Oturum açtıktan sonra lütfen pano kurallarını okuyunuz ve gözardı etmeyiniz. Ayrıca farklı forumlar için farklı kurallar olabilir, onları da gözardı etmeyiniz.', + 'LOGIN_VIEWFORUM' => 'Bu forumu görüntülemek için kayıt olmalı ve oturum açmalısınız.', + 'LOGIN_EXPLAIN_EDIT' => 'Bu forumdaki iletileri düzeltmek için kayıt olmalı ve oturum açmalısınız.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'Çevrimiçi listesini görmeniz için kayıt olmalı ve oturum açmalısınız.', + 'LOGOUT' => 'Oturum kapat', + 'LOGOUT_USER' => 'Oturum kapat [ %s ]', + 'LOG_ME_IN' => 'Her ziyaretimde otomatik oturum aç', + + 'MARK' => 'Ä°ÅŸaret', + 'MARK_ALL' => 'Hepsini iÅŸaretle', + 'MARK_FORUMS_READ' => 'Tüm forumları okundu olarak iÅŸaretle', + 'MARK_SUBFORUMS_READ' => 'Tüm alt forumları okundu olarak iÅŸaretle', + 'MB' => 'MB', + 'MIB' => 'MiB', + 'MCP' => 'Yetkili Paneli', + 'MEMBERLIST' => 'Ãœyeler', + 'MEMBERLIST_EXPLAIN' => 'Ãœyelerin tam listesini göster', + 'MERGE' => 'BirleÅŸtir', + 'MERGE_POSTS' => 'Ä°letileri taşı', + 'MERGE_TOPIC' => 'Konuları birleÅŸtir', + 'MESSAGE' => 'Mesaj', + 'MESSAGES' => 'Mesaj', + 'MESSAGE_BODY' => 'Mesaj gövdesi', + 'MINUTES' => 'Dakika', + 'MODERATE' => 'Düzenle', + 'MODERATOR' => 'Yetkili', + 'MODERATORS' => 'Yetkili', + 'MODULE_NOT_ACCESS' => 'Modül eriÅŸilemez', + 'MODULE_NOT_FIND' => '%s isimli modül bulunamadı', + 'MODULE_FILE_INCORRECT_CLASS' => '%s modül dosyası doÄŸru sınıfı içermiyor [%s]', + 'MONTH' => 'Ay', + 'MOVE' => 'Taşı', + 'MSNM' => 'MSNM/WLM', + + 'NA' => 'Bilinmiyor', // N/A + 'NEWEST_USER' => 'Son kayıt olan %s', + 'NEW_MESSAGE' => 'Yeni mesaj', + 'NEW_MESSAGES' => 'Yeni mesajlar', + 'NEW_PM' => '%d yeni özel mesaj', + 'NEW_PMS' => '%d yeni özel mesaj', + 'NEW_POST' => 'Yeni ileti', // Not used anymore + 'NEW_POSTS' => 'Yeni iletiler', // Not used anymore + 'NEXT' => 'Sonraki', // sayfalama fonksiyonunda kullanılıyor + 'NEXT_STEP' => 'Sonraki', // "sonraki aÅŸama" anlamında + 'NEVER' => 'Asla', + 'NO' => 'Hayır', + 'NOT_ALLOWED_MANAGE_GROUP' => 'Bu grubu yönetme yetkiniz bulunmamamaktadır.', + 'NOT_AUTHORISED' => 'Bu alana eriÅŸim yetkiniz bulunmamaktadır.', + 'NOT_WATCHING_FORUM' => 'Bu forumdaki güncellemeler için aboneliÄŸinizi kaldırdınız.', + 'NOT_WATCHING_TOPIC' => 'Bu konu için aboneliÄŸinizi kaldırdınız.', + 'NOTIFY_ADMIN' => 'Lütfen mesaj panosu veya site yöneticisini haberdar ediniz.', + 'NOTIFY_ADMIN_EMAIL' => 'Lütfen mesaj panosu veya site yöneticisini haberdar ediniz: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'Bu eklentiye eriÅŸim yetkiniz bulunmamaktadır.', + 'NO_ACTION' => 'Hiçbir iÅŸlem belirtilmedi.', + 'NO_ADMINISTRATORS' => 'Yönetici mevcut deÄŸil.', + 'NO_AUTH_ADMIN' => 'Yönetici izinlerine sahip deÄŸilsiniz ve bu yüzden yönetim paneline eriÅŸim izniniz yok.', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'Bir baÅŸka kullanıcıyı yeniden doÄŸrulamanız mümkün deÄŸildir.', + 'NO_AUTH_OPERATION' => 'Bu iÅŸlemi tamamlamak için gerekli izinleriniz yok.', + 'NO_CONNECT_TO_SMTP_HOST' => 'SMTP sunucusuna baÄŸlanılamadı : %1$s : %2$s', + 'NO_BIRTHDAYS' => 'Bugün doÄŸum günü olan kullanıcımız yok.', + 'NO_EMAIL_MESSAGE' => 'E-posta mesajı boÅŸ.', + 'NO_EMAIL_RESPONSE_CODE' => 'E-posta sunucudan cevap kodu alınamadı.', + 'NO_EMAIL_SUBJECT' => 'E-posta konusu belirtilmedi.', + 'NO_FORUM' => 'SeçtiÄŸiniz forum mevcut deÄŸil.', + 'NO_FORUMS' => 'Bu panonun hiç forumu yok.', + 'NO_GROUP' => 'Talep edilen kullanıcı grubu mevcut deÄŸil.', + 'NO_GROUP_MEMBERS' => 'Bu grubun henüz üyesi yok.', + 'NO_IPS_DEFINED' => 'Tanımlı IP adresi veya sunucu adı yok.', + 'NO_MEMBERS' => 'Arama kriterlerinize uygun üye bulunamadı.', + 'NO_MESSAGES' => 'Mesaj yok', + 'NO_MODE' => 'Hiçbir yöntem belirtilmedi.', + 'NO_MODERATORS' => 'Yetkili mevcut deÄŸil.', + 'NO_NEW_MESSAGES' => 'Yeni mesaj yok', + 'NO_NEW_PM' => '0 yeni özel mesaj', + 'NO_NEW_POSTS' => 'Yeni ileti yok', // Not used anymore + 'NO_ONLINE_USERS' => 'Kayıtlı kullanıcı yok', + 'NO_POSTS' => 'Ä°leti yok', + 'NO_POSTS_TIME_FRAME' => 'Bu konu içinde, seçilen zaman çerçevesine ait ileti mevcut deÄŸil.', + 'NO_FEED_ENABLED' => 'Bu panoda besleme mevcut deÄŸil.', + 'NO_FEED' => 'Ä°stenilen besleme mevcut deÄŸil.', + 'NO_STYLE_DATA' => 'Stil verisi alınamadı', + 'NO_SUBJECT' => 'Hiçbir konu belirtmedi', + 'NO_SUCH_SEARCH_MODULE' => 'Seçilen arama türü bulunamadı.', + 'NO_SUPPORTED_AUTH_METHODS' => 'Desteklenmeyen doÄŸrulama metodu.', + 'NO_TOPIC' => 'Talep edilen konu mevcut deÄŸil.', + 'NO_TOPIC_FORUM' => 'Konu veya forum mevcut deÄŸil.', + 'NO_TOPICS' => 'Bu forumda hiçbir konu veya ileti mevcut deÄŸil.', + 'NO_TOPICS_TIME_FRAME' => 'Bu forum içinde, seçilen zaman çerçevesine ait konu mevcut deÄŸil.', + 'NO_UNREAD_PM' => '0 okunmamış mesaj', + 'NO_UNREAD_POSTS' => 'Okunmamış ileti yok', + 'NO_UPLOAD_FORM_FOUND' => 'Yükleme baÅŸlatıldı ancak geçerli dosya yükleme formu bulunamadı', + 'NO_USER' => 'Talep edilen kullanıcı mevcut deÄŸil.', + 'NO_USERS' => 'Talep edilen kullanıcılar mevcut deÄŸil.', + 'NO_USER_SPECIFIED' => 'Kullanıcı adı belirtilmedi.', + + // Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. + 'NUM_POSTS_IN_QUEUE' => array( + 0 => 'Kuyrukta ileti yok', // 0 + 1 => 'Kuyrukta 1 ileti var', // 1 + 2 => 'Kuyrukta %d ileti var', // 2+ + ), + + 'OCCUPATION' => 'Meslek', + 'OFFLINE' => 'Çevrimdışı', + 'ONLINE' => 'Çevrimiçi', + 'ONLINE_BUDDIES' => 'Çevrimiçi arkadaÅŸlar', + 'ONLINE_USERS_TOTAL' => 'Toplam %d kullanıcı çevrimiçi :: ', + 'ONLINE_USERS_ZERO_TOTAL' => 'Toplam 0 kullanıcı çevrimiçi :: ', + 'ONLINE_USER_TOTAL' => 'Toplam %d kullanıcı çevrimiçi :: ', + 'OPTIONS' => 'Seçenekler', + + 'PAGE_OF' => '%2$d sayfadan %1$d. sayfa', + 'PASSWORD' => 'Parola', + 'PIXEL' => 'px', + 'PLAY_QUICKTIME_FILE' => 'Quicktime dosyasını oynat', + 'PM' => 'Özel mesaj', + 'PM_REPORTED' => 'Rapora bakmak için tıklayın', + 'POSTING_MESSAGE' => '%s içinde mesaj gönderiyor', + 'POSTING_PRIVATE_MESSAGE' => 'Özel mesaj yazıyor', + 'POST' => 'Ä°leti', + 'POST_ANNOUNCEMENT' => 'Duyuru', + 'POST_STICKY' => 'Sabit', + 'POSTED' => 'Tarih', + 'POSTED_IN_FORUM' => 'forumda', + 'POSTED_ON_DATE' => '', // tarih - boÅŸ bırakıldı + 'POSTS' => 'Ä°leti', + 'POSTS_UNAPPROVED' => 'Bu konuda en az bir ileti onaylanmadı.', + 'POST_BY_AUTHOR' => '', // by / gönderen - boÅŸ bırakıldı + 'POST_BY_FOE' => 'Bu ileti engelli listenizde olan %1$s tarafından yazılmış. Ä°letiyi görmek için %2$sburaya%3$s tıklayın.', + 'POST_DAY' => 'Günlük ileti: %.2f', + 'POST_DETAILS' => 'Ä°leti detayları', + 'POST_NEW_TOPIC' => 'Yeni konu gönder', + 'POST_PCT' => 'iletilere oranı: %.2f%%', + 'POST_PCT_ACTIVE' => 'iletilere oranı: %.2f%%', + 'POST_PCT_ACTIVE_OWN' => 'iletilerinize oranı: %.2f%%', + 'POST_REPLY' => 'Cevap gönder', + 'POST_REPORTED' => 'Raporu görmek için tıklayın', + 'POST_SUBJECT' => 'Ä°leti baÅŸlığı', + 'POST_TIME' => 'Gönderilme zamanı', + 'POST_TOPIC' => 'Yeni bir konu gönder', + 'POST_UNAPPROVED' => 'Bu ileti onay bekliyor', + 'POWERED_BY' => '%s ile güçlendirilmiÅŸtir', // Powered by %s + 'PREVIEW' => 'Önizleme', + 'PREVIOUS' => 'Önceki', // sayfalama fonksiyonunda kullanılıyor + 'PREVIOUS_STEP' => 'Önceki', // "önceki aÅŸama" anlamında + 'PRIVACY' => 'Gizlilik ilkeleri', + 'PRIVATE_MESSAGE' => 'Özel mesaj', + 'PRIVATE_MESSAGES' => 'Özel mesajlar', + 'PRIVATE_MESSAGING' => 'Özel mesajlaÅŸma', + 'PROFILE' => 'Kullanıcı Paneli', + + 'RANK' => 'Seviye', // Rank + 'READING_FORUM' => '%s içinde konulara bakıyor', + 'READING_GLOBAL_ANNOUNCE' => 'Genel Duyuru okuyor', + 'READING_LINK' => 'Forum linkini izliyor %s', + 'READING_TOPIC' => '%s içinde konu okuyor', + 'READ_PROFILE' => 'Profile bak', + 'REASON' => 'Sebep', + 'RECORD_ONLINE_USERS' => 'En çok %1$s kullanıcı %2$s tarihinde bir arada bulundu', + 'REDIRECT' => 'Yönlendirme', + 'REDIRECTS' => 'Toplam yönlendirme', + 'REGISTER' => 'Kayıt Ol', + 'REGISTERED_USERS' => 'Kayıtlı kullanıcılar:', + 'REG_USERS_ONLINE' => '%d kayıtlı kullanıcı ve ', + 'REG_USERS_TOTAL' => '%d kayıtlı, ', + 'REG_USERS_TOTAL_AND' => '%d kayıtlı ve ', + 'REG_USERS_ZERO_ONLINE' => '0 kayıtlı kullanıcı ve ', + 'REG_USERS_ZERO_TOTAL' => '0 kayıtlı, ', + 'REG_USERS_ZERO_TOTAL_AND' => '0 kayıtlı ve ', + 'REG_USER_ONLINE' => '%d kayıtlı kullanıcı ve ', + 'REG_USER_TOTAL' => '%d kayıtlı, ', + 'REG_USER_TOTAL_AND' => '%d kayıtlı ve ', + 'REMOVE' => 'Sil', + 'REMOVE_INSTALL' => 'Panonuzu kullanmaya baÅŸlamadan önce lütfen install isimli kurulum dizinini silin, taşıyın veya yeniden adlandırın. EÄŸer bu dizin hala mevcut ise, sadece yönetim paneli eriÅŸilebilir olacaktır.', + 'REPLIES' => 'Cevap', + 'REPLY_WITH_QUOTE' => 'Alıntı ile cevapla', + 'REPLYING_GLOBAL_ANNOUNCE' => 'Genel duyuruda cevap yazıyor', + 'REPLYING_MESSAGE' => '%s içinde cevap yazıyor', + 'REPORT_BY' => 'Rapor eden', + 'REPORT_POST' => 'Ä°letiyi rapor et', + 'REPORTING_POST' => 'Ä°leti rapor ediyor', + 'RESEND_ACTIVATION' => 'Ãœyelik onay mesajını e-posta ile tekrar gönder', + 'RESET' => 'Sıfırla', + 'RESTORE_PERMISSIONS' => 'Ä°zinleri onar', + 'RETURN_INDEX' => '%sAnasayfaya git%s', + 'RETURN_FORUM' => '%sSon ziyaret edilen foruma geri dön%s', + 'RETURN_PAGE' => '%sÖnceki sayfaya geri dön%s', + 'RETURN_TOPIC' => '%sSon ziyaret edilen konuya geri dön%s', + 'RETURN_TO' => '', // return - boÅŸ kalması daha iyi + 'FEED' => 'Besleme', + 'FEED_NEWS' => 'Haberler', + 'FEED_TOPICS_ACTIVE' => 'Aktif Konular', + 'FEED_TOPICS_NEW' => 'Yeni Konular', + 'RULES_ATTACH_CAN' => 'Bu forumda dosya ekleyebilirsiniz', + 'RULES_ATTACH_CANNOT' => 'Bu forumda dosya ekleyemezsiniz', + 'RULES_DELETE_CAN' => 'Bu forumda kendi iletilerinizi silebilirsiniz', + 'RULES_DELETE_CANNOT' => 'Bu forumda kendi iletilerinizi silemezsiniz', + 'RULES_DOWNLOAD_CAN' => 'Bu forumda ekli dosyaları indirebilirsiniz', + 'RULES_DOWNLOAD_CANNOT' => 'Bu forumda ekli dosyaları indiremezsiniz', + 'RULES_EDIT_CAN' => 'Bu forumda kendi iletilerinizi deÄŸiÅŸtirebilirsiniz', + 'RULES_EDIT_CANNOT' => 'Bu forumda kendi iletilerinizi deÄŸiÅŸtiremezsiniz', + 'RULES_LOCK_CAN' => 'Bu forumda kendi konularınızı kilitleyebilirsiniz', + 'RULES_LOCK_CANNOT' => 'Bu forumda kendi konularınızı kilitleyemezsiniz', + 'RULES_POST_CAN' => 'Bu forumda yeni konular açabilirsiniz', + 'RULES_POST_CANNOT' => 'Bu forumda yeni konular açamazsınız', + 'RULES_REPLY_CAN' => 'Bu forumda konulara cevap yazabilirsiniz', + 'RULES_REPLY_CANNOT' => 'Bu forumda konulara cevap yazamazsınız', + 'RULES_VOTE_CAN' => 'Bu forumda anketlerde oy kullanabilirsiniz', + 'RULES_VOTE_CANNOT' => 'Bu forumda anketlerde oy kullanamazsınız', + + 'SEARCH' => 'Arama', + 'SEARCH_MINI' => 'Arama kriterleri…', + 'SEARCH_ADV' => 'GeliÅŸmiÅŸ arama', + 'SEARCH_ADV_EXPLAIN' => 'GeliÅŸmiÅŸ arama seçeneklerini görün', + 'SEARCH_KEYWORDS' => 'Kelime için ara', + 'SEARCHING_FORUMS' => 'Forumlarda arama yapıyor', + 'SEARCH_ACTIVE_TOPICS' => 'Aktif konular', + 'SEARCH_FOR' => 'Arama', + 'SEARCH_FORUM' => 'Bu forumda ara…', + 'SEARCH_NEW' => 'Yeni iletiler', + 'SEARCH_POSTS_BY' => 'Gönderene göre ara', + 'SEARCH_SELF' => 'Kendi iletileriniz', + 'SEARCH_TOPIC' => 'Bu konuda ara…', + 'SEARCH_UNANSWERED' => 'Cevapsız iletiler', + 'SEARCH_UNREAD' => 'Okunmamış iletiler', + 'SEARCH_USER_POSTS' => 'Kullanıcının iletilerini ara', + 'SECONDS' => 'Saniye', + 'SELECT' => 'Seç', + 'SELECT_ALL_CODE' => 'Tümünü seç', + 'SELECT_DESTINATION_FORUM' => 'Lütfen bir hedef forum seçiniz', + 'SELECT_FORUM' => 'Forum seçiniz', + 'SEND_EMAIL' => 'E-posta', // "gönder" butonu için kullanılıyor + 'SEND_EMAIL_USER' => 'E-posta', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX + 'SEND_PRIVATE_MESSAGE' => 'Özel mesaj gönder', + 'SETTINGS' => 'Ayarlar', + 'SIGNATURE' => 'Ä°mza', + 'SKIP' => 'İçeriÄŸi atla', + 'SMTP_NO_AUTH_SUPPORT' => 'SMTP sunucusu yetkilendirmeyi desteklemiyor.', + 'SORRY_AUTH_READ' => 'Bu forumu okumak için yetkiniz bulunmamaktadır.', + 'SORRY_AUTH_VIEW_ATTACH' => 'Bu ileti ekini indirmek için yetkiniz bulunmamaktadır.', + 'SORT_BY' => 'Sıralama', + 'SORT_JOINED' => 'Kayıt Tarihi', + 'SORT_LOCATION' => 'Konum', + 'SORT_RANK' => 'Seviye', + 'SORT_POSTS' => 'Ä°letiler', + 'SORT_TOPIC_TITLE' => 'Konu baÅŸlığı', + 'SORT_USERNAME' => 'Kullanıcı', + 'SPLIT_TOPIC' => 'Böl', + 'SQL_ERROR_OCCURRED' => 'Sayfa derlenirken bir SQL hatası meydana geldi. EÄŸer sorun devam ederse lütfen %spano yöneticisi%s ile irtibata geçin.', + 'STATISTICS' => 'Ä°statistik', + 'START_WATCHING_FORUM' => 'Foruma abone ol', + 'START_WATCHING_TOPIC' => 'Konuya abone ol', + 'STOP_WATCHING_FORUM' => 'Forum aboneliÄŸini kaldır', + 'STOP_WATCHING_TOPIC' => 'Konu aboneliÄŸini kaldır', + 'SUBFORUM' => 'Alt forum', + 'SUBFORUMS' => 'Alt forumlar', + 'SUBJECT' => 'Konu', + 'SUBMIT' => 'Gönder', + + 'TB' => 'TB', + 'TERMS_USE' => 'Kullanım koÅŸulları', + 'TEST_CONNECTION' => 'BaÄŸlantıyı test et', + 'THE_TEAM' => 'Yönetim ekibi', + 'TIB' => 'TiB', + 'TIME' => 'Zaman', + + 'TOO_LARGE' => 'GirdiÄŸiniz deÄŸer çok büyük.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'Özel mesaj başına en fazla alıcı sayısı için girdiÄŸiniz deÄŸer çok büyük.', + 'TOO_LONG' => 'Yazdığınız deÄŸer çok uzun.', + 'TOO_LONG_AIM' => 'Yazdığınız AOL Messenger ismi çok uzun.', + 'TOO_LONG_CONFIRM_CODE' => 'Yazdığınız doÄŸrulama kodu çok uzun.', + 'TOO_LONG_DATEFORMAT' => 'Yazdığınız tarih biçimi çok uzun.', + 'TOO_LONG_ICQ' => 'Yazdığınız ICQ numarası çok uzun.', + 'TOO_LONG_INTERESTS' => 'Yazdığınız ilgi alanları çok uzun.', + 'TOO_LONG_JABBER' => 'Yazdığınız Jabber hesap adı çok uzun.', + 'TOO_LONG_LOCATION' => 'Yazdığınız konum çok uzun.', + 'TOO_LONG_MSN' => 'Yazdığınız MSNM/WLM adı çok uzun.', + 'TOO_LONG_NEW_PASSWORD' => 'Yazdığınız parola çok uzun.', + 'TOO_LONG_OCCUPATION' => 'Yazdığınız meslek çok uzun.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'Yazdığınız parola doÄŸrulaması çok uzun.', + 'TOO_LONG_USER_PASSWORD' => 'Yazdığınız parola çok uzun.', + 'TOO_LONG_USERNAME' => 'Yazdığınız kullanıcı adı çok uzun.', + 'TOO_LONG_EMAIL' => 'Yazdığınız e-posta adresi çok uzun.', + 'TOO_LONG_EMAIL_CONFIRM' => 'Yazdığınız e-posta adresi doÄŸrulaması çok uzun.', + 'TOO_LONG_WEBSITE' => 'Yazdığınız web sitesi adresi çok uzun.', + 'TOO_LONG_YIM' => 'Yazdığınız Yahoo! Messenger ismi çok uzun.', + + 'TOO_MANY_VOTE_OPTIONS' => 'Ä°zin verilenden fazla seçenek seçtiniz.', + + 'TOO_SHORT' => 'Yazdığınız deÄŸer çok kısa.', + 'TOO_SHORT_AIM' => 'Yazdığınız AOL Messenger ismi çok kısa.', + 'TOO_SHORT_CONFIRM_CODE' => 'Yazdığınız doÄŸrulama kodu çok kısa.', + 'TOO_SHORT_DATEFORMAT' => 'Yazdığınız tarih biçimi çok kısa.', + 'TOO_SHORT_ICQ' => 'Yazdığınız ICQ numarası çok kısa.', + 'TOO_SHORT_INTERESTS' => 'Yazdığınız ilgi alanları çok kısa.', + 'TOO_SHORT_JABBER' => 'Yazdığınız Jabber hesap adı çok kısa.', + 'TOO_SHORT_LOCATION' => 'Yazdığınız konum çok kısa.', + 'TOO_SHORT_MSN' => 'Yazdığınız MSNM/WLM adı çok kısa.', + 'TOO_SHORT_NEW_PASSWORD' => 'Yazdığınız parola çok kısa.', + 'TOO_SHORT_OCCUPATION' => 'Yazdığınız meslek çok kısa.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'Yazdığınız parola doÄŸrulaması çok kısa.', + 'TOO_SHORT_USER_PASSWORD' => 'Yazdığınız parola çok kısa.', + 'TOO_SHORT_USERNAME' => 'Yazdığınız kullanıcı adı çok kısa.', + 'TOO_SHORT_EMAIL' => 'Yazdığınız e-posta adresi çok kısa.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'Yazdığınız e-posta adresi doÄŸrulaması çok kısa.', + 'TOO_SHORT_WEBSITE' => 'Yazdığınız web sitesi adresi çok kısa.', + 'TOO_SHORT_YIM' => 'Yazdığınız Yahoo! Messenger ismi çok kısa.', + 'TOO_SMALL' => 'GirdiÄŸiniz deÄŸer çok küçük.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'Özel mesaj başına en fazla alıcı sayısı için girdiÄŸiniz deÄŸer çok küçük.', + 'TOPIC' => 'Konu', + 'TOPICS' => 'Konu', + 'TOPICS_UNAPPROVED' => 'Bu forumda en azından bir tane onaylanmamış konu var.', + 'TOPIC_ICON' => 'Konu ikonu', + 'TOPIC_LOCKED' => 'Bu konu kilitlenmiÅŸtir, iletilerinizi düzeltemezsiniz ve cevap yazamazsınız.', + 'TOPIC_LOCKED_SHORT'=> 'Konu kilitli', + 'TOPIC_MOVED' => 'Taşınmış konu', + 'TOPIC_REVIEW' => 'Konu inceleme', + 'TOPIC_TITLE' => 'Konu BaÅŸlığı', + 'TOPIC_UNAPPROVED' => 'Bu konu onaylanmadı', + 'TOTAL_ATTACHMENTS' => 'Eklenti(ler)', + 'TOTAL_LOG' => '1 kayıt', + 'TOTAL_LOGS' => '%d kayıt', + 'TOTAL_NO_PM' => 'Toplam 0 özel mesaj', + 'TOTAL_PM' => 'Toplam 1 özel mesaj', + 'TOTAL_PMS' => 'Toplam %d özel mesaj', + 'TOTAL_POSTS' => 'Toplam ileti', + 'TOTAL_POSTS_OTHER' => 'Toplam ileti %d', + 'TOTAL_POSTS_ZERO' => 'Toplam ileti 0', + 'TOPIC_REPORTED' => 'Konu rapor edildi', + 'TOTAL_TOPICS_OTHER'=> 'Toplam konu %d', + 'TOTAL_TOPICS_ZERO' => 'Toplam konu 0', + 'TOTAL_USERS_OTHER' => 'Toplam üye %d', + 'TOTAL_USERS_ZERO' => 'Toplam üye 0', + 'TRACKED_PHP_ERROR' => 'Ä°zlenen PHP hataları: %s', + + 'UNABLE_GET_IMAGE_SIZE' => 'Resim boyut bilgilerine eriÅŸilemiyor. Lütfen yazılan URL adresinin doÄŸruluÄŸunu kopntrol ediniz.', + 'UNABLE_TO_DELIVER_FILE' => 'Dosya teslim edilmeye uygun deÄŸil.', + 'UNKNOWN_BROWSER' => 'Bilinmeyen tarayıcı', + 'UNMARK_ALL' => 'Ä°ÅŸaretleri kaldır', + 'UNREAD_MESSAGES' => 'Okunmamış mesajlar', + 'UNREAD_PM' => '%d okunmamış', + 'UNREAD_PMS' => '%d okunmamış', + 'UNREAD_POST' => 'Okunmamış ileti', + 'UNREAD_POSTS' => 'Okunmamış ileti', + 'UNWATCH_FORUM_CONFIRM' => 'Bu forumdaki aboneliÄŸinizi iptal etmek istediÄŸinize emin misiniz?', + 'UNWATCH_FORUM_DETAILED' => '“%s†forumundaki aboneliÄŸinizi iptal etmek istediÄŸinize emin misiniz?', + 'UNWATCH_TOPIC_CONFIRM' => 'Bu konudaki aboneliÄŸinizi iptal etmek istediÄŸinize emin misiniz?', + 'UNWATCH_TOPIC_DETAILED' => '“%s†konusundaki aboneliÄŸinizi iptal etmek istediÄŸinize emin misiniz?', + 'UNWATCHED_FORUMS' => 'Seçilen forumlara daha uzun süre abone olamazsınız.', + 'UNWATCHED_TOPICS' => 'Seçilen konulara daha uzun süre abone olamazsınız.', + 'UNWATCHED_FORUMS_TOPICS' => 'Seçilen girdilere daha uzun süre abone olamazsınız.', + 'UPDATE' => 'Güncelle', + 'UPLOAD_IN_PROGRESS' => 'Yükleme yapılıyor.', + 'URL_REDIRECT' => 'EÄŸer tarayıcınız meta yönlendirmeyi desteklemiyorsa %syönlendirme için buraya tıklayın%s.', + 'USERGROUPS' => 'Gruplar', + 'USERNAME' => 'Kullanıcı', + 'USERNAMES' => 'Kullanıcı adları', + 'USER_AVATAR' => 'Kullanıcı avatarı', + 'USER_CANNOT_READ' => 'Bu forumdaki iletileri okuyamazsınız.', + 'USER_POST' => '%d ileti', + 'USER_POSTS' => '%d ileti', + 'USERS' => 'Kullanıcılar', + 'USE_PERMISSIONS' => 'Kullanıcı izinlerini test et', + 'USER_NEW_PERMISSION_DISALLOWED' => 'Bu özelliÄŸi kullanmaya yetkili deÄŸilsiniz. Buraya yeni kayıt olmuÅŸ olabilirsiniz, ancak bu özelliÄŸi kullanabilmek için daha fazla katılım yapmanız gerekebilir.', + + 'VARIANT_DATE_SEPARATOR' => ' / ', // Tarih düzenlemede gün deÄŸiÅŸimi için kullanıldı, örnek: "Bugün, 13:37 / 01 Ocak 2007, 13:37" ... takvim tarihi gibi göreceli tarih gösterimi imkanı saÄŸlar + 'VIEWED' => 'Gösterim', + 'VIEWING_FAQ' => 'Yardımı görüntülüyor', + 'VIEWING_MEMBERS' => 'Ãœye detaylarına bakıyor', + 'VIEWING_ONLINE' => 'Kimlerin çevrimiçi olduÄŸuna bakıyor', + 'VIEWING_MCP' => 'Yetkili panelini görüntülüyor', + 'VIEWING_MEMBER_PROFILE' => 'Ãœye hesabı görüntülüyor', + 'VIEWING_PRIVATE_MESSAGES' => 'Özel mesaj görüntülüyor', + 'VIEWING_REGISTER' => 'Hesap kayıt ediyor', + 'VIEWING_UCP' => 'Kullanıcı panelini görüntülüyor', + 'VIEWS' => 'Gösterim', + 'VIEW_BOOKMARKS' => 'Sık kullanılanları göster', + 'VIEW_FORUM_LOGS' => 'Kayıtları göster', + 'VIEW_LATEST_POST' => 'Son iletiyi göster', + 'VIEW_NEWEST_POST' => 'Ä°lk okunmamış iletiyi göster', + 'VIEW_NOTES' => 'Ãœye notları', + 'VIEW_ONLINE_TIME' => 'son %d dakika içinde aktif olan kullanıcılara dayanmaktadır.', // küçük harf ile baÅŸlıyor + 'VIEW_ONLINE_TIMES' => 'son %d dakika içinde aktif olan kullanıcılara dayanmaktadır.', // küçük harf ile baÅŸlıyor + 'VIEW_TOPIC' => 'Konuyu görüntüle', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'Duyuru: ', + 'VIEW_TOPIC_GLOBAL' => 'Genel Duyuru: ', + 'VIEW_TOPIC_LOCKED' => 'Kilitli: ', + 'VIEW_TOPIC_LOGS' => 'Kayıtlar', + 'VIEW_TOPIC_MOVED' => 'Taşındı: ', + 'VIEW_TOPIC_POLL' => 'Anket: ', + 'VIEW_TOPIC_STICKY' => 'Sabit: ', + 'VISIT_WEBSITE' => 'Web sitesini ziyaret et', + + 'WARNINGS' => 'Uyarılar', + 'WARN_USER' => 'Kullanıcıyı uyar', + 'WATCH_FORUM_CONFIRM' => 'Bu foruma abone olmak istediÄŸinize emin misiniz?', + 'WATCH_FORUM_DETAILED' => '“%s†forumuna abone olmak istediÄŸinize emin misiniz?', + 'WATCH_TOPIC_CONFIRM' => 'Bu konuya abone olmak istediÄŸinize emin misiniz?', + 'WATCH_TOPIC_DETAILED' => '“%s†konusuna abone olmak istediÄŸinize emin misiniz?', + 'WELCOME_SUBJECT' => '%s forumlarına hoÅŸgeldiniz', + 'WEBSITE' => 'Web sitesi', + 'WHOIS' => 'Sorgula', + 'WHO_IS_ONLINE' => 'Kimler çevrimiçi', + 'WRONG_PASSWORD' => 'Yanlış bir parola girdiniz.', + + 'WRONG_DATA_COLOUR' => 'GirdiÄŸiniz renk deÄŸeri geçersiz.', + 'WRONG_DATA_ICQ' => 'GirdiÄŸiniz numara geçerli bir ICQ numarası deÄŸil.', + 'WRONG_DATA_JABBER' => 'GirdiÄŸiniz isim geçerli bir Jabber hesap adı deÄŸil.', + 'WRONG_DATA_LANG' => 'Belirtilen dil geçerli deÄŸil.', + 'WRONG_DATA_WEBSITE' => 'Web site adresi geçerli bir adres deÄŸil, protokol dahil edilmelidir. ÖrneÄŸin: http://phpbbturkiye.net/.', + 'WROTE' => 'yazdı', // küçük harf ile baÅŸlıyor + + 'YEAR' => 'Yıl', + 'YEAR_MONTH_DAY' => '(YYYY-AA-GG)', + 'YES' => 'Evet', + 'YIM' => 'YIM', + 'YOU_LAST_VISIT' => 'Son ziyaretiniz: %s', + 'YOU_NEW_PM' => 'Gelen kutunuzda yeni bir özel mesaj sizi bekliyor.', + 'YOU_NEW_PMS' => 'Gelen kutunuzda yeni özel mesajlar sizi bekliyor.', + 'YOU_NO_NEW_PM' => 'Bekleyen yeni özel mesajınız yok.', + + 'datetime' => array( + 'TODAY' => 'Bugün', + 'TOMORROW' => 'Yarın', + 'YESTERDAY' => 'Dün', + 'AGO' => array( + 0 => 'bir dakikadan az', + 1 => '%d dakika önce', + 2 => '%d dakika önce', + 60 => '1 saat önce', + ), + + 'Sunday' => 'Pazar', + 'Monday' => 'Pazartesi', + 'Tuesday' => 'Salı', + 'Wednesday' => 'ÇarÅŸamba', + 'Thursday' => 'PerÅŸembe', + 'Friday' => 'Cuma', + 'Saturday' => 'Cumartesi', + + 'Sun' => 'Pzr', + 'Mon' => 'Pts', + 'Tue' => 'Sal', + 'Wed' => 'Çar', + 'Thu' => 'Per', + 'Fri' => 'Cum', + 'Sat' => 'Cmt', + + 'January' => 'Ocak', + 'February' => 'Åžubat', + 'March' => 'Mart', + 'April' => 'Nisan', + 'May' => 'Mayıs', + 'June' => 'Haziran', + 'July' => 'Temmuz', + 'August' => 'AÄŸustos', + 'September' => 'Eylül', + 'October' => 'Ekim', + 'November' => 'Kasım', + 'December' => 'Aralık', + + 'Jan' => 'Oca', + 'Feb' => 'Åžub', + 'Mar' => 'Mar', + 'Apr' => 'Nis', + 'May_short' => 'May', // May için kısa ön tanım, May_short ÅŸeklinde kullanılmıştır, çünkü ingilizcede Mayıs ayı için kullanılan May ifadesi hem kısa hem uzun kullanım olarak aynıdır. + 'Jun' => 'Haz', + 'Jul' => 'Tem', + 'Aug' => 'AÄŸu', + 'Sep' => 'Eyl', + 'Oct' => 'Ekm', + 'Nov' => 'Kas', + 'Dec' => 'Arl', + ), + + 'tz' => array( + '-12' => 'UTC - 12 saat', + '-11' => 'UTC - 11 saat', + '-10' => 'UTC - 10 saat', + '-9.5' => 'UTC - 9:30 saat', + '-9' => 'UTC - 9 saat', + '-8' => 'UTC - 8 saat', + '-7' => 'UTC - 7 saat', + '-6' => 'UTC - 6 saat', + '-5' => 'UTC - 5 saat', + '-4.5' => 'UTC - 4:30 saat', + '-4' => 'UTC - 4 saat', + '-3.5' => 'UTC - 3:30 saat', + '-3' => 'UTC - 3 saat', + '-2' => 'UTC - 2 saat', + '-1' => 'UTC - 1 saat', + '0' => 'UTC', + '1' => 'UTC + 1 saat', + '2' => 'UTC + 2 saat', + '3' => 'UTC + 3 saat', + '3.5' => 'UTC + 3:30 saat', + '4' => 'UTC + 4 saat', + '4.5' => 'UTC + 4:30 saat', + '5' => 'UTC + 5 saat', + '5.5' => 'UTC + 5:30 saat', + '5.75' => 'UTC + 5:45 saat', + '6' => 'UTC + 6 saat', + '6.5' => 'UTC + 6:30 saat', + '7' => 'UTC + 7 saat', + '8' => 'UTC + 8 saat', + '8.75' => 'UTC + 8:45 saat', + '9' => 'UTC + 9 saat', + '9.5' => 'UTC + 9:30 saat', + '10' => 'UTC + 10 saat', + '10.5' => 'UTC + 10:30 saat', + '11' => 'UTC + 11 saat', + '11.5' => 'UTC + 11:30 saat', + '12' => 'UTC + 12 saat', + '12.75' => 'UTC + 12:45 saat', + '13' => 'UTC + 13 saat', + '14' => 'UTC + 14 saat', + 'dst' => '[ DST ]', + ), + + 'tz_zones' => array( + '-12' => '[UTC - 12] Baker Adası Zamanı', + '-11' => '[UTC - 11] Niue Zamanı, Samoa Standart Zamanı', + '-10' => '[UTC - 10] Hawaii-Aleutian Standart Zamanı, Cook Adası Zamanı', + '-9.5' => '[UTC - 9:30] Marquesas Adaları Zamanı', + '-9' => '[UTC - 9] Alaska Standart Zamanı, Gambier Adası Zamanı', + '-8' => '[UTC - 8] Pasifik Standart Zamanı', + '-7' => '[UTC - 7] Mountain Standart Zamanı', + '-6' => '[UTC - 6] Merkez Standart Zamanı', // Central + '-5' => '[UTC - 5] DoÄŸu Standart Zamanı', + '-4.5' => '[UTC - 4:30] Venezuela Standart Zamanı', + '-4' => '[UTC - 4] Atlantik Standart Zamanı', + '-3.5' => '[UTC - 3:30] Newfoundland Standart Zamanı', + '-3' => '[UTC - 3] Amazon Standart Zamanı, Central Greenland Zamanı', + '-2' => '[UTC - 2] Fernando de Noronha, Güney Georgia & Güney Sandwich Adaları Zamanı', + '-1' => '[UTC - 1] Azores Standart Zamanı, Cape Verde, DoÄŸu Greenland Zamanı', + '0' => '[UTC] Batı Avrupa, Greenwich Merkez Zamanı', + '1' => '[UTC + 1] Orta Avrupa, Batı Afrika Zamanı', + '2' => '[UTC + 2] DoÄŸu Avrupa, Orta Afrika Zamanı', + '3' => '[UTC + 3] Moskova Standart Zamanı, DoÄŸu Afrika Zamanı', + '3.5' => '[UTC + 3:30] Ä°ran Standart Zamanı', + '4' => '[UTC + 4] Gulf Standart Zamanı, Samara Standart Zamanı', + '4.5' => '[UTC + 4:30] Afganistan Zamanı', + '5' => '[UTC + 5] Pakistan, Yekaterinburg Standart Zamanı', + '5.5' => '[UTC + 5:30] Hindistan Standart Zamanı, Sri Lanka Zamanı', + '5.75' => '[UTC + 5:45] Nepal Zamanı', + '6' => '[UTC + 6] BangladeÅŸ, Bhutan Zamanı, Novosibirsk Standart Zamanı', + '6.5' => '[UTC + 6:30] Cocos Adaları, Myanmar Zamanı', + '7' => '[UTC + 7] Hindiçin Zamanı, Krasnoyarsk Standart Zamanı', + '8' => '[UTC + 8] Çin, Batı Avustralya, Irkutsk Standart Zamanı', + '8.75' => '[UTC + 8:45] GüneydoÄŸu Avustralya Standart Zamanı', + '9' => '[UTC + 9] Japonya, Kore, Chita Standart Zamanı', + '9.5' => '[UTC + 9:30] Orta Avustralya Standart Zamanı', + '10' => '[UTC + 10] DoÄŸu Avustralya, Vladivostok Standart Zamanı', + '10.5' => '[UTC + 10:30] Lord Howe Standart Zamanı', + '11' => '[UTC + 11] Solomon Adası Zamanı, Magadan Standart Zamanı', + '11.5' => '[UTC + 11:30] Norfolk Adası Zamanı', + '12' => '[UTC + 12] Yeni Zelanda, Fiji Zamanı, Kamchatka Standart Zamanı', + '12.75' => '[UTC + 12:45] Chatham Adaları Zamanı', + '13' => '[UTC + 13] Tonga, Phoenix Adaları Zamanı', + '14' => '[UTC + 14] Line Adası Zamanı', + ), + + // DeÄŸerler örnek olması için verilmiÅŸtir, görüntülenirken geçerli zaman ile deÄŸiÅŸtirileceklerdir + 'dateformats' => array( + 'd M Y, H:i' => '01 Oca 2007, 13:37', + 'd M Y H:i' => '01 Oca 2007 13:37', + 'M j, \'y, H:i' => 'Oca 1, \'07, 13:37', + 'D M d, Y g:i a' => 'Pts Oca 01, 2007 1:37 ös', + 'F j, Y, g:i a' => 'Ocak 1, 2007, 1:37 ös', + '|d M Y|, H:i' => 'Bugün, 13:37 / 01 Oca 2007, 13:37', + '|F j, Y|, g:i a' => 'Bugün, 1:37 ös / Ocak 1, 2007, 1:37 ös' + ), + + // Varsayılan biçim, sadece kurulum sırasında kullanılır. + // Uygun gördüğünüz baÅŸka bir saat biçimi ile deÄŸiÅŸtirebilirsiniz + 'default_dateformat' => 'd M Y, H:i', // 01 Oca 2007, 13:37 +)); + +?> \ No newline at end of file diff --git a/includes/shared/phpbb3/language/lang_tukish/index.html b/includes/shared/phpbb3/language/lang_tukish/index.html new file mode 100644 index 00000000..3063c98e --- /dev/null +++ b/includes/shared/phpbb3/language/lang_tukish/index.html @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/includes/shared/phpbb3/language/lang_tukish/iso.txt b/includes/shared/phpbb3/language/lang_tukish/iso.txt new file mode 100644 index 00000000..d1944417 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_tukish/iso.txt @@ -0,0 +1,3 @@ +Turkish +Türkçe +phpBB Türkiye - http://phpbbturkiye.net \ No newline at end of file diff --git a/includes/shared/phpbb3/language/lang_urdu/common.php b/includes/shared/phpbb3/language/lang_urdu/common.php new file mode 100644 index 00000000..1a851be2 --- /dev/null +++ b/includes/shared/phpbb3/language/lang_urdu/common.php @@ -0,0 +1,840 @@ + 'اردو ØªØ±Ø¬Ù…Û Ø§Ø²: منیب', + 'DIRECTION' => 'rtl', + 'DATE_FORMAT' => '|d M Y|', + 'USER_LANG' => 'ur', + '1_DAY' => 'دن', + '1_MONTH' => 'ماÛ', + '1_YEAR' => 'سال', + '2_WEEKS' => '2 Ú¾Ùتے', + '3_MONTHS' => '3 ماÛ', + '6_MONTHS' => '6ماÛ', + '7_DAYS' => '1 ÛÙتÛ', + 'ACCOUNT_ALREADY_ACTIVATED' => 'آپ کا اکاونٹ Ù¾ÛÙ„Û’ ÛÛŒ ایکٹو کیا جا چکا ÛÛ’.', + 'ACCOUNT_DEACTIVATED' => 'Ø§Ù†ØªØ¸Ø§Ù…ÛŒÛ Ú©ÛŒ جانب سے آپ Ú©Û’ کھاتے Ú©Ùˆ غیر Ùعال کر دیا گیا ÛÛ’ اور اب اسے کوئی منتظم ÛÛŒ Ùعال کر سکتا ÛÛ’', + 'ACCOUNT_NOT_ACTIVATED' => 'آپ کا اکاونٹ ابھی تک ان ایکٹو ÛÛ’', + 'ACP' => 'انتظامی کنٹرول پینل', + 'ACTIVE' => 'Ùعال', + 'ACTIVE_ERROR' => 'دیا گیا رکنیتی نام اور پاس ورڈ غیر Ùعال ÛÛ’. Ø¨Ø±Ø§Û Ú©Ø±Ù… اسے Ùعال کر لیجئے، اگر آپ Ú©Ùˆ اس Ø³Ù„Ø³Ù„Û Ù…ÛŒÚº کوئی مشکل درپیش ÛÛ’ تو Ùورم Ú©Û’ منتظم سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº.', + 'ADMINISTRATOR' => 'منتظم', + 'ADMINISTRATORS' => 'منتظمین', + 'AGE' => 'عمر', + 'AIM' => 'AIM', + 'ALLOWED' => 'اجازت شدÛ', + 'ALL_FILES' => 'تمام Ùائلیں', + 'ALL_FORUMS' => 'تمام Ùورم', + 'ALL_MESSAGES' => 'تمام پیغامات', + 'ALL_POSTS' => 'تمام مراسلات', + 'ALL_TIMES' => 'تمام اوقات %1$s %2$s Ú©Û’ مطابق ھیں', + 'ALL_TOPICS' => 'تمام موضوعات', + 'AND' => 'اور', + 'ARE_WATCHING_FORUM' => 'اب آپ اس Ùورم میں شراکت دار Ûیں، اس Ùورم میں نئے پیغامات آنے پر آپ Ú©Ùˆ مطلع کیا جاتا رÛÛ’ گا', + 'ARE_WATCHING_TOPIC' => 'آپ اس موضوع میں شراکت دار بن Ú†Ú©Û’ Ûیں ØŒ اس موضوع میں نئے پیغامات سے آپ Ú©Ùˆ مطلع کیا جاتا رÛÛ’ گا', + 'ASCENDING' => 'ترتیب صعودی', + 'ATTACHMENTS' => 'منسلکات', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'آپ جس تصویر Ú©Ùˆ اٹیچ کرنے Ú©ÛŒ کوشس کر رÛÛ’ Ûیں ÙˆÛ Ù†Ø§Ù‚Ø§Ø¨Ù„ قبول ÛÛ’', + 'AUTHOR' => 'مصنÙ', + 'AUTH_NO_PROFILE_CREATED' => 'رکنیتی Ú©ÙˆØ§Ø¦Ù Ù†Ø§Ù…Û Ú©ÛŒ تشکیل میں ناکامی', + 'AVATAR_DISALLOWED_CONTENT' => 'وایرس Ú©Û’ اندیشے Ú©Û’ تحت اپ لوڈ Ùائل کینسل کر دی گئی ÛÛ’.', + 'AVATAR_DISALLOWED_EXTENSION' => 'اس Ùائل Ú©ÛŒ نمائش ممکن Ù†Ûیں Ú©ÛŒÙˆÙ†Ú©Û Ø§Ø³ Ú©ÛŒ اضاÙت یعنی ایکسٹینشن %s غير اجازت یاÙØªÛ ÛÛ’', + 'AVATAR_EMPTY_REMOTE_DATA' => 'دی گئی Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆØ± Ú©ÛŒ تصعید ممکن Ù†Ûیں Ú©ÛŒÙˆÙ†Ú©Û Ø±ÛŒÙ…ÙˆÙ¹ ڈیٹا نامناسب یا خراب Ø´Ø¯Û ÛÛ’.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'تصعید Ø´Ø¯Û Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± خالی ÛÛ’', + 'AVATAR_INVALID_FILENAME' => '%s Ùائل کا نام درست Ù†Ûیں.', + 'AVATAR_NOT_UPLOADED' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± Ú©ÛŒ تصعید Ù†Ûیں ÛÙˆ سکتی', + 'AVATAR_NO_SIZE' => 'مربوط Ø´Ø¯Û Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± Ú©ÛŒ لمبائی اور چوڑائی کا تعین Ù†Ûیں ÛÙˆ سکتا، Ø¨Ø±Ø§Û Ú©Ø±Ù… ان کا اندراج کریں', + 'AVATAR_PARTIAL_UPLOAD' => 'Ù…Ø·Ù„ÙˆØ¨Û Ùائل Ú©ÛŒ تصعید جزوی طور پر مکمل ÛÙˆ سکی Ú¾Û’ .', + 'AVATAR_PHP_SIZE_NA' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا حجم Ø²ÛŒØ§Ø¯Û ÛÛ’.
    Ùائل کا Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û Ø§Ø¬Ø§Ø²Øª Ø´Ø¯Û Ø­Ø¬Ù… جو php.ini Ùائل میں معین ÛÛ’ تبدیل Ù†Ûیں کیا جا سکتا', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا سائز بڑا ÛÛ’ ØŒ تصعید(اپلوڈنگ) Ú©Û’ لیے Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û Ù…Ù†Ø¸ÙˆØ± Ø´Ø¯Û Ø­Ø¬Ù…%d میگا بائت.
    یاد رÛÛ’ Ú©Û ÛŒÛ Ø³Ø§Ø¦Ø² php.ini میں Ø·Û’ Ø´Ø¯Û ÛÛ’ اور اس Ú©Ùˆ تبدیل Ù†Ûیں کیا جا سکتا', + 'AVATAR_URL_INVALID' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا یو آر ایل غلط ÛÛ’', + 'AVATAR_URL_NOT_FOUND' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا یو آر ایل دستیاب Ù†Ûیں Ûوا', + 'AVATAR_WRONG_FILESIZE' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا سائز 0 Ùˆ %1d %2sÚ©Û’ درمیان Ûونا چاÛیے', + 'AVATAR_WRONG_SIZE' => 'دی گئی Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ±Ú©ÛŒ چوڑائی %1$d بكسل ØŒ اور لمبائی %2$d بكسل ÛÛ’ Ø¬Ø¨Ú©Û Ø§Ø³ Ú©ÛŒ چوڑائی %3$d بكسل اور لمبائی %4$d بكسل Ûونا چاÛیے. ', + 'BACK_TO_TOP' => 'واپس اوپر', + 'BACK_TO_PREV' => 'صÙØ­ÛØ¡ سابق پر واپسی', + 'BAN_TRIGGERED_BY_EMAIL' => 'آپ کےای میل پر پابندی عائد ÛÛ’', + 'BAN_TRIGGERED_BY_IP' => 'آپ Ú©Û’ آئی Ù¾ÛŒ ایڈریس پر پابندی عائد ÛÛ’', + 'BAN_TRIGGERED_BY_USER' => 'آپ Ú©Û’ رکنیتی نام پر پابندی عائد ÛÛ’', + 'BBCODE_GUIDE' => 'رÛنمائے BBCode', + 'BCC' => 'BCC', + 'BIRTHDAYS' => 'سالگرھیں', + 'BOARD_BAN_PERM' => 'اس Ùورم میں آپ Ú©Û’ Ø¯Ø§Ø®Ù„Û Ù¾Ø± مستقلاً پابندی عائد کر دی گئی ÛÛ’.

    Ø¨Ø±Ø§Û Ú©Ø±Ù… %2$sÙورم Ú©Û’ منتظم%3$s سے مزید معلومات Ú©Û’ لیے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº', + 'BOARD_BAN_REASON' => 'پابندی Ú©ÛŒ وجوÛ: %s', + 'BOARD_BAN_TIME' => ' اس Ùورم پر آپ Ú©Û’ Ø¯Ø§Ø®Ù„Û Ù¾Ø± %1$s.

    تک پابندی عائد کر دی گئی ÛÛ’ØŒ Ø¨Ø±Ø§Û Ú©Ø±Ù… مزید معلومات Ú©Û’ لیے %2$s Ùورم Ú©Û’ منتظم %3$s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº.', + 'BOARD_DISABLE' => 'ÛÙ… معذرت Ø®ÙˆØ§Û Ûیں، Ú©Û ÙÛŒ الحال بورڈ Ùعال Ù†Ûیں ÛÛ’', + 'BOARD_DISABLED' => 'ÙÛŒ الحال بورڈ غیر Ùعال ÛÛ’', + 'BOARD_UNAVAILABLE' => 'ÛÙ… معذرت Ø®ÙˆØ§Û Ûیں، لیکن ÙÛŒ الحال عارضی طور پر آپ Ú©ÛŒ بورڈ تک رسائی ممکن Ù†Ûیں Ø¨Ø±Ø§Û Ú©Ø±Ù… Ú©Ú†Ú¾ دیر بعد Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں', + 'BROWSING_FORUM' => ' %1$s اس Ùورم پر موجود صارÙین Ûیں', + 'BROWSING_FORUM_GUEST' => 'Ùورم پر موجود اراکین: %1$s اور %2$d Ù…Ûمان', + 'BROWSING_FORUM_GUESTS' => 'Ùورم پر موجود اراکین: %1$s اور %2$d Ù…Ûمانان', + 'BYTES' => 'بائٹ', + 'CANCEL' => 'منسوخ', + 'CHANGE' => 'تبدیل', + 'CHANGE_FONT_SIZE' => 'Ùونٹ سائز میں تبدیلی', + 'CHANGING_PREFERENCES' => 'بورڈ Ú©ÛŒ ترجیحات میں تبدیلی', + 'CHANGING_PROFILE' => 'ذاتی پروÙائل میں تبدیلی', + 'CLICK_VIEW_PRIVMSG' => '%sان بکس میں جائیں%s', + 'COLLAPSE_VIEW' => 'مختصر نمائش ', + 'CLOSE_WINDOW' => 'ونڈو بند کریں', + 'COLOUR_SWATCH' => 'رنگوں Ú©ÛŒ آمیزش', + 'COMMA_SEPARATOR' => ', ', + 'CONFIRM' => 'توثیق', + 'CONFIRM_CODE' => 'توثیقی Ú©ÙˆÚˆ', + 'CONFIRM_CODE_EXPLAIN' => 'تصویر میں ظاÛر Ûونے والے Ú©ÙˆÚˆ Ú©Ùˆ Ú¾Ùˆ Ø¨Û Ú¾Ùˆ نقل کریں، یاد رھے ! Ú©ÙˆÚˆ چھوٹے بڑے حرو٠کی Ù¾Ûچان Ú©Û’ لیے حساس ÛÛ’ Ù€ نیز Ú©ÙˆÚˆ میں کوئی صÙر موجود Ù†Ûیں ÛÛ’ Ù€', + 'CONFIRM_CODE_WRONG' => 'آپ کا درج Ú©Ø±Ø¯Û ØªÙˆØ«ÛŒÙ‚ÛŒ Ú©ÙˆÚˆ درست Ù†Ûیں ÛÛ’', + 'CONFIRM_OPERATION' => 'کیا آپ ÛŒÛ Ø¹Ù…Ù„ جاری رکھنا چاھتے ھیں ØŸ', + 'CONGRATULATIONS' => 'آپ Ú©Ùˆ مبارک ÛÙˆ', + 'CONNECTION_FAILED' => 'اتصال میں ناکامی', + 'CONNECTION_SUCCESS' => 'اتصال میں کامیابی', + 'COOKIES_DELETED' => 'بورڈ Ú©ÛŒ تمام کوکیز کامیابی سے حذ٠کر دی گئی Ûیں', + 'CURRENT_TIME' => 'Ø­Ø§Ù„ÛŒÛ ÙˆÙ‚Øª %s', + 'DAY' => 'دن', + 'DAYS' => 'ایام', + 'DELETE' => 'حذÙ', + 'DELETE_ALL' => 'تمام حذÙ', + 'DELETE_COOKIES' => 'بورڈ Ú©ÛŒ تمام کوکیز حذ٠(ڈیلیٹ) کریں', + 'DELETE_MARKED' => 'منتخب Ø´Ø¯Û Ú©Ùˆ حذ٠(ڈیلیٹ)کریں', + 'DELETE_POST' => 'حذ٠مراسلÛ', + 'DELIMITER' => 'تحدید', + 'DESCENDING' => 'ترتیب نزولی', + 'DISABLED' => 'معطل', + 'DISPLAY' => 'نمائش', + 'DISPLAY_GUESTS' => 'Ù…Ûمانوں کا مشاÛدÛ', + 'DISPLAY_MESSAGES' => 'Ø³Ø§Ø¨Ù‚Û Ù¾ÛŒØºØ§Ù…Ø§Øª کا مشاھدÛ', + 'DISPLAY_POSTS' => 'Ø³Ø§Ø¨Ù‚Û Ù…Ø±Ø§Ø³Ù„Ø§Øª کا مشاھدÛ', + 'DISPLAY_TOPICS' => 'Ø³Ø§Ø¨Ù‚Û Ù…ÙˆØ¶ÙˆØ¹Ø§Øª کا مشاھدÛ', + 'DOWNLOADED' => 'تحصیل شدÛ', + 'DOWNLOADING_FILE' => 'Ùائل کا حصول (ڈاون لوڈنگ) جاری ÛÛ’', + 'DOWNLOAD_COUNT' => '%d بار', + 'DOWNLOAD_COUNTS' => '%d بار', + 'DOWNLOAD_COUNT_NONE' => 'ابھی تک کوئی ڈاون لوڈ Ù†Ûیں Ú©ÛŒ گئی', + 'VIEWED_COUNT' => 'Ù…Ø´Ø§Ú¾Ø¯Û %d بار', + 'VIEWED_COUNTS' => 'مشاھدات %d بار', + 'VIEWED_COUNT_NONE' => 'اس سے قبل کوئی Ù…Ø´Ø§Ú¾Ø¯Û Ù†Ûیں کیا گیا', + 'EDIT_POST' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©ÛŒ تدوین', + 'EMAIL' => 'برقی خط', + 'EMAIL_ADDRESS' => 'ای میل ایڈریس', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'ای میل Ú©ÛŒ ترسیل میں مشکلات سطر %1$s. جواب: %2$s', + 'EMPTY_SUBJECT' => 'موضوع کا عنوان لکھنا ضروری ÛÛ’', + 'EMPTY_MESSAGE_SUBJECT' => 'نیا Ù…Ø±Ø§Ø³Ù„Û Ù„Ú©Ú¾ØªÛ’ وقت عنوان کا اندراج لازمی ÛÛ’', + 'ENABLED' => 'Ùعال', + 'ENCLOSURE' => 'ضمیمÛ', + 'ERR_CHANGING_DIRECTORY' => 'ڈائریکٹری Ú©ÛŒ تبدیلی سے معذور', + 'ERR_CONNECTING_SERVER' => 'سرور سے اتصال میں ناکامی', + 'ERR_JAB_AUTH' => 'جیبر سرور پر اختیار Ù†Ûیں دیا جا سکا.', + 'ERR_JAB_CONNECT' => 'جیبر سرور سے Ø±Ø§Ø¨Ø·Û Ù†Ûیں کیا جاسکا.', + 'ERR_UNABLE_TO_LOGIN' => 'لاگ ان میں غلطی ! دیا گیا رکنیتی نام یا پاس ورڈ درست Ù†Ûیں.', + 'ERR_UNWATCHING' => 'شراکت ختم کرنے میں Ù…Ø³Ø¦Ù„Û Ø¢Ú¯ÛŒØ§.', + 'ERR_WATCHING' => 'شراکت حاصل کرنے میں Ù…Ø³Ø¦Ù„Û Ø¢Ú¯ÛŒØ§', + 'ERR_WRONG_PATH_TO_PHPBB' => 'دیا گیا phpBB Ø±Ø§Ø³ØªÛ Ø¯Ø±Ø³Øª Ù†Ûیں.', + 'EXPAND_VIEW' => 'وسیع نمائش', + 'EXTENSION' => 'اضاÙت', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'اضاÙت﴿ایکسٹینشن﴾ %s معطل کر دی گئی ÛÛ’ اور اب اس Ú©ÛŒ نمائش Ù†Ûیں ÛÙˆ سکتی', + 'FAQ' => 'عمومی سوالات', + 'FAQ_EXPLAIN' => 'عمومی سوالات', + 'FILENAME' => 'Ùائل کا نام', + 'FILESIZE' => 'Ùائل کا حجم', + 'FILEDATE' => 'Ùائل Ú©ÛŒ تاریخ', + 'FILE_COMMENT' => 'تعلیق Ùˆ تبصرÛ', + 'FILE_NOT_FOUND' => 'Ù…Ø·Ù„ÙˆØ¨Û Ùائل دستیاب Ù†Ûیں Ûوئی', + 'FIND_USERNAME' => 'کسی رکن Ú©ÛŒ تلاش', + 'FOLDER' => 'پوشÛ', + 'FORGOT_PASS' => 'میں پاس ورڈ بھول گیا ÛÙˆÚº', + 'FORM_INVALID' => 'ارسال Ú©Ø±Ø¯Û Ú©ÙˆØ§Ø¦Ù Ø¯Ø±Ø³Øª Ù†Ûیں Ø¨Ø±Ø§Û Ú©Ø±Ù… Ø¯ÙˆØ¨Ø§Ø±Û Ø§Ø±Ø³Ø§Ù„ کریں.', + 'FORUM' => 'Ùورم', + 'FORUMS' => 'Ùورم', + 'FORUMS_MARKED' => 'تمام Ùورم بطور "خواندÛ" نشان زد ÛÙˆ گئے', + 'FORUM_CAT' => 'Ùورم کیٹگری', + 'FORUM_INDEX' => 'مرکزی صÙØ­Û', + 'FORUM_LINK' => 'Ùورم کا ربط', + 'FORUM_LOCATION' => 'Ùورم Ú©ÛŒ مکانیت ', + 'FORUM_LOCKED' => 'مقÙÙ„ Ùورم', + 'FORUM_RULES' => 'Ùورم Ú©Û’ قوانین', + 'FORUM_RULES_LINK' => 'Ø¨Ø±Ø§Û Ú©Ø±Ù… Ùورم Ú©Û’ قوانین Ù…Ù„Ø§Ø­Ø¸Û Ú©Ø±Ù†Û’ Ú©Û’ لیے ÛŒÛاں Ú©Ù„Ú© کریں', + 'FROM' => 'از', + 'FSOCK_DISABLED' => 'اس عمل Ú©ÛŒ تکمیل ممکن Ù†Ûیں کیونکÛfsockopen معطل Ûےاور سرور اس امر Ú©ÛŒ تکمیل سے معذور ÛÛ’.', + 'FTP_FSOCK_HOST' => 'FTP هوسٹ ', + 'FTP_FSOCK_HOST_EXPLAIN' => 'FTP سرور جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_FSOCK_PASSWORD' => 'FTP پاس ورڈ', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'آپ Ú©Û’ FTP. رکنیتی نام Ú©Û’ لیے پاس ورڈ', + 'FTP_FSOCK_PORT' => 'FTP پورٹ', + 'FTP_FSOCK_PORT_EXPLAIN' => 'پورٹ جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_FSOCK_ROOT_PATH' => ' phpBB راستÛ', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'شروع سے آپکے phpBB بورڈ‌تک کا راستÛ', + 'FTP_FSOCK_TIMEOUT' => 'FTP Ú©ÛŒ معطلی کا وقت', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'وقت Ú©ÛŒ سیکنڈ میں مقدار، سسٹم سرور سے جواب کا انتظار کرے گا.', + 'FTP_FSOCK_USERNAME' => 'FTP رکنیتی نام', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'رکنیتی نام جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_HOST' => 'FTP Ûوسٹ', + 'FTP_HOST_EXPLAIN' => 'FTP سرور جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_PASSWORD' => 'FTP پاس ورڈ', + 'FTP_PASSWORD_EXPLAIN' => 'آپ Ú©Û’ FTP. رکنیتی نام Ú©Û’ لیے پاس ورڈ', + 'FTP_PORT' => 'FTP پورٹ', + 'FTP_PORT_EXPLAIN' => 'Port جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_ROOT_PATH' => 'phpBB Ø±Ø§Ø³ØªÛ ', + 'FTP_ROOT_PATH_EXPLAIN' => 'شروع سے آپکے phpBB بورڈ‌تک کا راستÛ', + 'FTP_TIMEOUT' => 'FTP Ú©ÛŒ معطلی کا وقت', + 'FTP_TIMEOUT_EXPLAIN' => 'وقت Ú©ÛŒ سیکنڈ میں مقدار، سسٹم سرور سے جواب کا انتظار کرے گا.', + 'FTP_USERNAME' => 'FTP رکنیتی نام', + 'FTP_USERNAME_EXPLAIN' => 'رکنیتی نام جو آپکے سرور سے Ø±Ø§Ø¨Ø·Û Ù…ÛŒÚºâ€ŒØ§Ø³ØªØ¹Ù…Ø§Ù„ Ûوا', + 'GENERAL_ERROR' => 'عمومی غلطی', + 'GB' => ' گیگا بائٹ', + 'GIB' => ' گیگا بائٹ', + 'GO' => 'جایئے', + 'GOTO_PAGE' => 'صÙØ­Û Ù¾Ø± جایئے', + 'GROUP' => 'گروÛ', + 'GROUPS' => 'گروÛ', + 'GROUP_ERR_TYPE' => 'Ú¯Ø±ÙˆÛ Ú©ÛŒ معین Ú©Ø±Ø¯Û Ù†ÙˆØ¹ÛŒØª نامناسب ÛÛ’.', + 'GROUP_ERR_USERNAME' => 'کسی Ú¯Ø±ÙˆÛ Ú©Ø§ نام Ù†Ûیں دیا گیا.', + 'GROUP_ERR_USER_LONG' => 'Ù…Ø¬Ù…ÙˆØ¹Û Ú©Ø§ نام بÛت طویل ÛÛ’ØŒ Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û 60 حرو٠استعمال کیے جا سکتے Ûیں', + 'GUEST' => 'Ù…Ûمان', + 'GUEST_USERS_ONLINE' => ' %d Ù…Ûمان آن لائن Ûیں', + 'GUEST_USERS_TOTAL' => '%d Ù…Ûمان', + 'GUEST_USERS_ZERO_ONLINE' => ' 0 Ù…Ûمان آن لائن Ûیں', + 'GUEST_USERS_ZERO_TOTAL' => '0 Ù…Ûمان', + 'GUEST_USER_ONLINE' => ' %d Ù…Ûمان آن لائن Ûیں', + 'GUEST_USER_TOTAL' => '%d Ù…Ûمان', + 'G_ADMINISTRATORS' => 'عمومی منتظمین', + 'G_BOTS' => 'خودکار صارÙین', + 'G_GUESTS' => 'Ù…Ûمان', + 'G_REGISTERED' => 'مندرج اراکین', + 'G_REGISTERED_COPPA' => 'مندرج COPPA اراکین ', + 'G_GLOBAL_MODERATORS' => 'مدیران٠عام', + 'G_NEWLY_REGISTERED' => 'نئے رجسٹرڈ اراکین.', + 'HIDDEN_USERS_ONLINE' => '%d Ø®ÙÛŒÛ Ù…ØªØµÙ„ اراکین', + 'HIDDEN_USERS_TOTAL' => '%d Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USERS_TOTAL_AND' => ' %d Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USERS_ZERO_ONLINE' => '0 Ø®ÙÛŒÛ Ù…ØªØµÙ„ اراکین', + 'HIDDEN_USERS_ZERO_TOTAL' => '0 Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USERS_ZERO_TOTAL_AND' => '0 Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USER_ONLINE' => '%d Ø®ÙÛŒÛ Ù…ØªØµÙ„', + 'HIDDEN_USER_TOTAL' => '%d Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USER_TOTAL_AND' => ' %d Ø®ÙÛŒÛ Ø§ÙˆØ± ', + 'HIDE_GUESTS' => 'Ù…Ûمانوں کا اخÙا', + 'HIDE_ME' => 'اس بار مجھے حالت اخÙا میں رکھیے', + 'HOURS' => 'گھنٹے', + 'HOME' => 'صÙØ­Û Ø¡ اول', + 'ICQ' => 'ICQ', + 'ICQ_STATUS' => 'ICQ status', + 'IF' => 'اگر', + 'IMAGE' => 'عکس', + 'IMAGE_FILETYPE_INVALID' => 'عکسی Ùائل Ú©ÛŒ قسم %d تصویر Ú©ÛŒ نوعیت %s غیر منظور Ø´Ø¯Û ÛÛ’', + 'IMAGE_FILETYPE_MISMATCH' => 'عکسی Ùائل Ú©ÛŒ نوعیت غیر مناسب: متوقع اضاÙت %1$s لیکن %2$sاضاÙت Ù…Ûیا Ú©ÛŒ گئی ÛÛ’ Ù€', + 'IN' => 'میں', + 'INDEX' => 'Ùورم کا اشاریÛ', + 'INFORMATION' => 'معلومات', + 'INTERESTS' => 'دل چسپیاں', + 'INVALID_DIGEST_CHALLENGE' => 'غلط ڈائجیسٹ چیلنج', + 'INVALID_EMAIL_LOG' => '%s ممکن Ûےای میل Ù„Ú©Ú¾Ù†Û’ میں آپ سے غلطی Ûوئی Ûو؟', + 'IP' => 'آئی Ù¾ÛŒ', + 'IP_BLACKLISTED' => 'آپ کا آئی Ù¾ÛŒ %1$s کالی ÙÛرست میں شامل کر Ú©Û’ بند کر دیا گیا ÛÛ’. تÙصیلات Ú©Û’ لیے %2$sدیکھیئے.', + 'JABBER' => 'جیبر', + 'JOINED' => 'تاریخ شمولیت:', + 'JUMP_PAGE' => 'آپ جس صÙØ­Û Ù¾Ø± جانا چاÛتے Ûیں اس کا نمبر درج کریں', + 'JUMP_TO' => 'رجوع بÛ', + 'JUMP_TO_PAGE' => 'صÙØ­Û Ù¾Ø± جانے Ú©Û’ لیے Ú©Ù„Ú© کریں', + 'KB' => 'کلو بائٹ', + 'KIB' => 'کلو بائٹ', + 'LAST_POST' => 'آخری مراسلÛ', + 'LAST_UPDATED' => 'آخری ØªØ§Ø²Û Ú©Ø§Ø±ÛŒ', + 'LAST_VISIT' => 'آخری دورÛ', + 'LDAP_NO_LDAP_EXTENSION' => 'اضاÙت LDAP موجود Ù†Ûیں', + 'LDAP_NO_SERVER_CONNECTION' => 'سرور سے Ø±Ø§Ø¨Ø·Û Ù…Ù…Ú©Ù† Ù†Ûیں LDAP', + 'LDAP_SEARCH_FAILED' => 'LDAP ڈائیریکٹری تلاش کرتے Ûوئے Ù…Ø³Ù„Û Ø¢ÛŒØ§ ÛÛ’', + 'LEGEND' => 'اراکین Ú©ÛŒ جماعتوں Ú©Û’ رنگ', + 'LOCATION' => 'مکانیت', + 'LOCK_POST' => 'مقÙÙ„ مراسلÛ', + 'LOCK_POST_EXPLAIN' => 'ترمیم Ùˆ تدوین Ú©ÛŒ ممانعت', + 'LOCK_TOPIC' => 'مقÙÙ„ موضوع', + 'LOGIN' => 'لاگن', + 'LOGIN_CHECK_PM' => 'اپنے ذاتی پیغامات دیکھنے Ú©Û’ لیے لاگ ان ÛÙˆ جایئے', + 'LOGIN_CONFIRMATION' => 'لاگ ان Ûونے Ú©ÛŒ توثیق', + 'LOGIN_CONFIRM_EXPLAIN' => 'اکائونٹس پر بروٹ‌حملوں‌کے پیش نظر، ناکام لاگن Ú©ÛŒ Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û Ú©ÙˆØ´Ø´ÙˆÚºâ€ŒÚ©Û’ بعد آپکو ایک توثیقی Ú©ÙˆÚˆ درج کرنے Ú©ÛŒ ضرورت ÛÛ’. ÛŒÛ Ú©ÙˆÚˆâ€ŒÙ†ÛŒÚ†Û’ دی گئی تصویر میں‌دیا گیا ÛÛ’. اگر آپ اسے Ù¾Ú‘Ú¾Ù†Û’ سے قاصر Ûیں‌تو %sبورڈ منتظمین%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº', + 'LOGIN_ERROR_ATTEMPTS' => 'آپ Ùورم سے لاگ ان Ûونے Ú©ÛŒ کوشش میں حد٠متعین سے تجاوز کر Ú†Ú©Û’ Ûیں Ù„Ûذا اب آپ Ú©Ùˆ اپنے رکنیتی نام اور پاس ورڈ Ú©Û’ ساتھ Ø° یل میں ظاÛر Ûونے والے عکس Ú©Û’ مطابق Ú©Ù†Ùرمیشن Ú©ÙˆÚˆ کا اندراج بھی کرنا Ûوگا۔', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'اپاچی Ù†Û’ آپکی تصدیق Ù†Ûیں Ú©ÛŒ.', + 'LOGIN_ERROR_PASSWORD' => 'آپ Ù†Û’ غلط پاس ورڈ کا اندراج کیا ÛÛ’ØŒØ¨Ø±Ø§Û Ú©Ø±Ù… درست پاس ورڈ Ú©Û’ ساتھ Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں اس Ú©Û’ باوجود اگر آپ Ú©Ùˆ مشکل درپیش ÛÙˆ تو %sÙورم Ú©Û’ منتظم%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº Ù€', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'اس بورڈ Ú©Û’ ساÙÙ¹ ویئر Ú©ÛŒ ØªØ§Ø²Û Ú©Ø§Ø±ÛŒ کرتے Ûوئے آپ Ú© پاس ورڈ منقلب Ù†Ûیں کیا جا سکا. Ø¨Ø±Ø§Û Ú©Ø±Ù… %نئے پاس ورڈ Ú©Û’ حصول Ú©Û’ لیے درخواست کریں %s. اگر اس Ú©Û’ باجود آپ Ú©Ùˆ مشکلات در پیش Ûیں تو Ø¨Ø±Ø§Û Ú©Ø±Ù… بورڈ Ú©Û’ %sمنتظمں%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº.', + 'LOGIN_ERROR_USERNAME' => 'آپ Ù†Û’ غلط رکنیتی نام کا اندراج کیا ÛÛ’ØŒØ¨Ø±Ø§Û Ú©Ø±Ù… درست رکنیتی نام Ú©Û’ ساتھ Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں اس Ú©Û’ باوجود اگر آپ Ú©Ùˆ مشکل درپیش ÛÙˆ تو %sÙورم Ú©Û’ منتظم%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº Ù€', + 'LOGIN_FORUM' => 'اس Ùورم Ú©Û’ مشاÛØ¯Û Ø§ÙˆØ± اس میں مراسلت کرنے Ú©Û’ لیے آپ Ú©Ùˆ Ù¾ÛÙ„Û’ معین Ø´Ø¯Û Ù¾Ø§Ø³ ورڈ کا اندراج کرنا Ûوگا Ù€', + 'LOGIN_INFO' => 'اس Ùورم سے لاگ ان Ûونے Ú©Û’ لیے لازم ÛÛ’ Ú©Û Ù¾ÛÙ„Û’ آپ اپنااکاونٹ بنائیں، اس عمل میں صر٠چند منٹ صر٠Ûوتے Ûیں لیکن سے سے آپ Ú©Ùˆ بÛت سے اختیارات مل جاتے Ûیں اور بورڈ Ú©Û’ منتظم Ú©ÛŒ جانب سے بھی آپ Ú©Ùˆ وقتاً Ùوقتاً اضاÙÛŒ اختیارات سونپے جا سکتے Ûیں،اس سے Ù¾ÛÙ„Û’ Ú©Û Ø¢Ù¾ اپنا اکاونٹ بنائیں، Ø¨Ø±Ø§Û Ú©Ø±Ù… اس بات کا یقین کر لیں Ú©Û Ø¢Ù¾ Ûمارے قواعد Ùˆ ضوابط اور دیگر پالیسیوں سے مکمل اتÙاق کرتے Ûیں، نیز Ø¨Ø±Ø§Û Ú©Ø±Ù… Ùورم پر کوئی بھی Ù…Ø±Ø§Ø³Ù„Û Ø§Ø±Ø³Ø§Ù„ کرنے سے Ù¾ÛÙ„Û’ Ùورم پر مراسلت سے متعلق قوانین کا Ù…Ø·Ø§Ù„Ø¹Û Ø¶Ø±ÙˆØ± کر لیجئے.', + 'LOGIN_VIEWFORUM' => 'اس Ùورم Ú©Û’ مشاÛØ¯Û Ú©Û’ لیے Ùورم پر Ú©Ú¾Ø§ØªÛ Ø¨Ù†Ø§ کر Ùورم سےلاگ ان Ûونا لازمی ÛÛ’.', + 'LOGIN_EXPLAIN_EDIT' => 'مراسلات Ú©ÛŒ تدوین Ú©Û’ لیے Ùورم پر Ú©Ú¾Ø§ØªÛ Ø¨Ù†Ø§ کر Ùورم سے لاگ ان Ûونا لازمی ÛÛ’.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'آن لائن ÙÛرست دیکھنے Ú©Û’ لیے آپکو رجسٹر اور لاگن Ûونا Ûوگا', + 'LOGOUT' => 'لاگ آوٹ', + 'LOGOUT_USER' => 'لاگ آوٹ [ %s ]', + 'LOG_ME_IN' => 'مجھے Ûر بار خودکار لاگ ان کریں', + 'MARK' => 'نشان Ø²Ø¯Û Ú©Ø±ÛŒÚº', + 'MARK_ALL' => 'تمام Ú©Ùˆ نشان زد کریں', + 'MARK_FORUMS_READ' => 'تمام Ùورمز Ú©Ùˆ بطور "خواندÛ" نشان زد کریں', + 'MARK_SUBFORUMS_READ' => 'ذیلی Ùورم Ú©Ùˆ Ø®ÙˆØ§Ù†Ø¯Û Ù†Ø´Ø§Ù† زد کریں', + 'MB' => 'میگا بائٹ', + 'MIB' => 'میگا بائٹ', + 'MCP' => 'ادارتی کنٹرول پینل', + 'MEMBERLIST' => 'اراکین', + 'MEMBERLIST_EXPLAIN' => 'اراکین Ú©ÛŒ مکمل ÙÛرست کا مشاھدÛ', + 'MERGE' => 'انضمام', + 'MERGE_POSTS' => 'مراسلات کا انضمام', + 'MERGE_TOPIC' => 'موضوعات کا انضمام', + 'MESSAGE' => 'پیغام', + 'MESSAGES' => 'پیغامات', + 'MESSAGE_BODY' => 'پیغام Ú©ÛŒ تجسیم', + 'MINUTES' => 'منٹ', + 'MODERATE' => 'ادارت', + 'MODERATOR' => 'مدیر', + 'MODERATORS' => 'مدیران', + 'MONTH' => 'ماÛ', + 'MOVE' => 'انتقال', + 'MSNM' => 'ایم ایس این', + 'NA' => 'غیر دستیاب', + 'NEWEST_USER' => 'ÛÙ… %s Ú©Ùˆ اپنے Ùورم Ú©ÛŒ رکنیت پر خوش آمدید Ú©Ûتے Ûیں', + 'NEW_MESSAGE' => 'نیا پیعام', + 'NEW_MESSAGES' => 'نئے پیغامات', + 'NEW_PM' => 'آپ Ú©Û’ لیے %d نیا ذاتی پیغام موجود ÛÛ’', + 'NEW_PMS' => 'آپ Ú©Û’ لیے %d نئے ذاتی پیغامات موجود Ûیں', + 'NEW_POST' => 'نیا مراسلÛ', + 'NEW_POSTS' => 'نئے مراسلے', + 'NEXT' => 'اگلا', + 'NEXT_STEP' => 'اگلا', + 'NEVER' => ' کبھی Ù†Ûیں', + 'NO' => 'Ù†Ûیں', + 'NOT_ALLOWED_MANAGE_GROUP' => 'معذرت ! آپ Ú©Ùˆ اس Ú¯Ø±ÙˆÛ Ú©ÛŒ ادارت Ú©ÛŒ اجازت Ù†Ûیں.', + 'NOT_AUTHORISED' => 'آپ اس Ø¹Ù„Ø§Ù‚Û Ù…ÛŒÚº داخل Ù†Ûیں ÛÙˆ سکتے.', + 'NOT_WATCHING_FORUM' => 'آپ Ù†Û’ اس Ùورم Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے Ùورم میں اشتراک حاصل Ù†Ûیں کیا Ûوا ÛÛ’.', + 'NOT_WATCHING_TOPIC' => 'آپ Ù†Û’ اس موضوع Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے موضوع میں اشتراک حاصل Ù†Ûیں کیا Ûوا ÛÛ’.', + 'NOTIFY_ADMIN' => 'براÛ٠کرم Ùورم Ú©Û’ منتظم یا ویب ماسٹر Ú©Ùˆ اطلاع کریں', + 'NOTIFY_ADMIN_EMAIL' => 'براÛ٠کرم Ùورم Ú©Û’ منتظم یا ویب ماسٹر Ú©Ùˆ اطلاع کریں: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'آپ Ú©Ùˆ اس Ùائل تک رسائی Ú©ÛŒ اجازت Ù†Ûیں.', + 'NO_ACTION' => 'آپ Ù†Û’ کوئی عمل معین Ù†Ûیں کیا', + 'NO_ADMINISTRATORS' => 'اس Ùوم Ú©Û’ لیے کوئی مدیر معین Ù†Ûیں کیا گیا', + 'NO_AUTH_ADMIN' => 'آپ Ú©Ùˆ کوئی انتظامی اختیارات حاصل Ù†Ûیں Ù„Ûذا انتظامی کنٹرول پینل تک آپ Ú©ÛŒ رسائی ممکن Ù†Ûیں', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'آپ مختل٠صار٠کی حیثیت سے تصدیق Ø´Ø¯Û Ù†Ûیں‌ÛÙˆ سکتے', + 'NO_AUTH_OPERATION' => 'معذرت ! اس عمل Ú©ÛŒ تکمیل Ú©Û’ لیے آپ Ú©Û’ پاس ضروری اجازت Ù†Ø§Ù…Û Ù…ÙˆØ¬ÙˆØ¯ Ù†Ûیں', + 'NO_CONNECT_TO_SMTP_HOST' => 'smtp ھوسٹ سے Ø±Ø§Ø¨Ø·Û Ù†Ûیں ÛÙˆ سکا: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'آج کسی Ú©ÛŒ Ø³Ø§Ù„Ú¯Ø±Û Ù†Ûیں', + 'NO_EMAIL_MESSAGE' => 'ای میل خالی پایا گیا', + 'NO_EMAIL_RESPONSE_CODE' => 'جی-میل سرور Ú©Û’ جواب کا کوڈ‌حاصل Ù†Ûیں‌کیا جا سکا', + 'NO_EMAIL_SUBJECT' => 'برقی خط Ú©Û’ لیے کوئی عنوان معین Ù†Ûیں کیا گیا', + 'NO_FORUM' => 'آپ کا منتخب Ú©Ø±Ø¯Û Ùورم موجود Ù†Ûیں', + 'NO_FORUMS' => 'اس بورڈ پر کوئی Ùورم موجود Ù†Ûیں', + 'NO_GROUP' => 'Ù…Ø·Ù„ÙˆØ¨Û Ú¯Ø±ÙˆÛ٠اراکین موجود Ù†Ûیں.', + 'NO_GROUP_MEMBERS' => 'اس Ú¯Ø±ÙˆÛ Ù…ÛŒÚº ÙÛŒ الحال کوئی رکن شامل Ù†Ûیں', + 'NO_IPS_DEFINED' => 'کوئی آئی Ù¾ÛŒ Ù¾ØªÛ ÛŒØ§ Ûوسٹ کا نام متعین Ù†Ûیں کیا گیا', + 'NO_MEMBERS' => 'تلاش Ú©Û’ Ù…Ø·Ù„ÙˆØ¨Û Ù…Ø¹ÛŒØ§Ø± Ú©Û’ مطابق کوئی رکن Ù†Ûیں ملا', + 'NO_MESSAGES' => 'کوئی Ù…Ø±Ø§Ø³Ù„Û Ù†Ûیں', + 'NO_MODE' => 'کوئی موڈ معین Ù†Ûیں کیا گیا.', + 'NO_MODERATORS' => 'اس بورڈ پر مدیران کا تعین Ù†Ûیں کیا گیا', + 'NO_NEW_MESSAGES' => 'نئے مراسلے موجود Ù†Ûیں', + 'NO_NEW_PM' => '0 نئے پیغامات', + 'NO_NEW_POSTS' => 'نئے مراسلے موجود Ù†Ûیں', + 'NO_ONLINE_USERS' => 'کوئی مندرج اراکین لاگ ان Ù†Ûیں Ûیں', + 'NO_POSTS' => 'مراسلے موجود Ù†Ûیں', + 'NO_POSTS_TIME_FRAME' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø­Ø¯ÙˆØ¯Ù Ø§ÙˆÙ‚Ø§Øª Ú©Û’ مطابق اس موضوع میں میں کوئی مراسلے موجود Ù†Ûیں Ûیں', + 'NO_FEED_ENABLED' => 'اس محÙÙ„ پر Ùیڈ دستیاب Ù†Ûیں Ûیں', + 'NO_FEED' => 'Ù…Ø·Ù„ÙˆØ¨Û Ùیڈ موجود Ù†Ûیں ÛÛ’', + 'NO_SUBJECT' => 'کوئی عنوان معین Ù†Ûیں کیا گیا', + 'NO_SUCH_SEARCH_MODULE' => 'مخصوص تلاش کا کوئی پس منظر موجود Ù†Ûیں‌ÛÛ’', + 'NO_SUPPORTED_AUTH_METHODS' => 'کوئی حمائیتی تصدیقی طریقے موجود Ù†Ûیں‌Ûیں', + 'NO_TOPIC' => 'Ù…Ø·Ù„ÙˆØ¨Û Ù…ÙˆØ¶ÙˆØ¹ موجود Ù†Ûیں', + 'NO_TOPIC_FORUM' => 'آپ کا Ù…Ø·Ù„ÙˆØ¨Û Ù…ÙˆØ¶ÙˆØ¹ یا Ù…Ø±Ø§Ø³Ù„Û Ø§Ø¨ موجود Ù†Ûیں ÛÛ’Û”', + 'NO_TOPICS' => 'اس Ùورم میں کوئی موضوع اور مراسلات موجود Ù†Ûیں Ûیں.', + 'NO_TOPICS_TIME_FRAME' => 'Ù…Ø¯ØªÙ Ù…Ø¹ÛŒÙ†Û Ú©Û’ دوران اس Ùورم میں کوئی موضوعات شامل Ù†Ûیں Ûوئے', + 'NO_UNREAD_PM' => '0Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ø°Ø§ØªÛŒ پیغامات', + 'NO_UNREAD_POSTS' => 'اس موضوع کیلیے کوئی ان Ù¾Ú‘Ú¾Û’ مراسلات Ù†Ûیں Ûیں.', + 'NO_UPLOAD_FORM_FOUND' => 'اپ لوڈ‌شروع کر دیا گیا لیکن کوئی درست اپ لوڈ‌Ùارم Ù†Ûیں‌ملا', + 'NO_USER' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø±Ú©Ù† موجود Ù†Ûیں', + 'NO_USERS' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø§Ø±Ø§Ú©ÛŒÙ† موجود Ù†Ûیں', + 'NO_USER_SPECIFIED' => 'کوئی رکنیتی نام معین Ù†Ûیں کیا گیا', + + 'NUM_POSTS_IN_QUEUE' => array( + '0' => 'قطار میں کوئی Ù…Ø±Ø§Ø³Ù„Û Ù†Ûیں', + '1' => 'قطار میں 1 Ù…Ø±Ø§Ø³Ù„Û ÛÛ’', + '2' => 'قطار میں %d مراسلات Ûیں', + ), + + 'OCCUPATION' => 'شغل/ پیشÛ', + 'OFFLINE' => 'آ٠لاین', + 'ONLINE' => 'آن لاین', + 'ONLINE_BUDDIES' => 'متصل احباب', + 'ONLINE_USERS_TOTAL' => 'Ø­Ø§Ù„ÛŒÛ Ù…ØªØµÙ„ اراکین کا میزان %d :: ', + 'ONLINE_USERS_ZERO_TOTAL' => 'Ø­Ø§Ù„ÛŒÛ Ù…ØªØµÙ„(لاگ ان) اراکین کا میزان 0 :: ', + 'ONLINE_USER_TOTAL' => 'Ø­Ø§Ù„ÛŒÛ Ù„Ø§Ú¯ ان رکن %d :: ', + 'OPTIONS' => 'اختیارات', + 'PAGE_OF' => 'صÙØ­Û %1$d از %2$d', + 'PASSWORD' => ' پاس ورڈ', + 'PIXEL' => 'px', + 'PLAY_QUICKTIME_FILE' => 'تشغيل Ùائل Quicktime', + 'PM' => 'ذاتی پیغام', + 'PM_REPORTED' => 'اس ذاتی پیغام Ú©Ùˆ رپورٹ‌کیا گیا ÛÛ’.', + 'POSTING_MESSAGE' => ' %s میں پیغام بھیجتے Ûوئے.', + 'POSTING_PRIVATE_MESSAGE' => 'ذاتی پیغامات Ú©ÛŒ ترسیل', + 'POST' => 'مراسلÛ', + 'POST_ANNOUNCEMENT' => 'اعلان', + 'POST_STICKY' => 'مقبول عام', + 'POSTED' => 'ارسال شدÛ', + 'POSTED_IN_FORUM' => 'میں', + 'POSTED_ON_DATE' => 'بتاریخ:', + 'POSTS' => 'مراسلات', + 'POSTS_UNAPPROVED' => 'Ú©Ù… از Ú©Ù… اس موضوع میں ایک مراسلے Ú©Ùˆ منظوری Ù†Ûیں ملی۔', + 'POST_BY_AUTHOR' => 'از:', + 'POST_BY_FOE' => 'ÛŒÛ Ù…Ø±Ø§Ø³Ù„Û%1$s Ù†Û’ ارسال کیا ÛÛ’ Ø¬ÙˆÚ©Û Ø¢Ù¾Ú©ÛŒ طر٠سے نظرانداز Ø´Ø¯Û Ù„ÙˆÚ¯ÙˆÚº Ú©ÛŒ ÙÛرست میں شامل ÛÛ’ آپ چاÛیں تو Ù…Ø±Ø§Ø³Ù„Û Ø¯ÛŒÚ©Ú¾ سکتے Ûیں اس مقصد Ú©Û’ لیے دکھایئے پر Ú©Ù„Ú© کریں %2$sدکھایئے%3$s .', + 'POST_DAY' => '%.2f مراسلات یومیÛ', + 'POST_DETAILS' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©ÛŒ تÙصیل', + 'POST_NEW_TOPIC' => 'نئے موضوع Ú©ÛŒ ترسیل', + 'POST_PCT' => '%.2f%% Ù…Ù†Ø¬Ù…Ù„Û Ù…Ø±Ø§Ø³Ù„Ø§Øª', + 'POST_PCT_ACTIVE' => '%.2f%% Ù…Ù†Ø¬Ù…Ù„Û Ù…Ø±Ø§Ø³Ù„Ø§ØªÙ Ø§Ø±Ø§Ú©ÛŒÙ†', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% Ù…Ù†Ø¬Ù…Ù„Û Ø¢Ù¾ Ú©Û’ مراسلات', + 'POST_REPLY' => 'جواب دیں', + 'POST_REPORTED' => 'رپورٹ دیکھنے Ú©Û’ لیے Ú©Ù„Ú© کریں', + 'POST_SUBJECT' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©Ø§ عنوان', + 'POST_TIME' => 'وقت٠ارسال', + 'POST_TOPIC' => 'نیا موضوع ارسال کریں', + 'POST_UNAPPROVED' => 'ÛŒÛ Ù…Ø±Ø§Ø³Ù„Û Ù…Ù†Ø¸ÙˆØ±ÛŒ کا منتظر Ú¾Û’', + 'PREVIEW' => 'پیش منظر', + 'PREVIOUS' => 'سابق', + 'PREVIOUS_STEP' => 'سابق مرحلÛ', + 'PRIVACY' => 'سند٠محرمیت', + 'PRIVATE_MESSAGE' => 'ذاتی پیغام', + 'PRIVATE_MESSAGES' => 'ذاتی پیغامات', + 'PRIVATE_MESSAGING' => 'ذاتی نوعیت Ú©ÛŒ مراسلت', + 'PROFILE' => 'پروÙایل کنٹرول پینل', + 'READING_FORUM' => '%s میں مراسلات دیکھ رÛÛ’ Ûیں', + 'READING_GLOBAL_ANNOUNCE' => 'اعلانات عام کا مطالعÛ', + 'READING_LINK' => '%s اس Ùورم کا لنک ÛÛ’', + 'READING_TOPIC' => '%s میں Ù…Ø±Ø§Ø³Ù„Û Ù¾Ú‘Ú¾ رÛÛ’ Ûیں۔', + 'READ_PROFILE' => 'کوائ٠نامÛ', + 'REASON' => 'وجÛ', + 'RECORD_ONLINE_USERS' => 'Ùورم کا Ø¯ÙˆØ±Û Ú©Ø±Ù†Û’ والے سب سے Ø²ÛŒØ§Ø¯Û Ø§Ø±Ø§Ú©ÛŒÙ† Ú©ÛŒ تعداد%1$s جو بتاریخ: %2$s متصل تھے۔', + 'REDIRECT' => 'تحويل', + 'REDIRECTS' => 'Ú©Ù„ تحویلات', + 'REGISTER' => 'شمولیت اختیار کریں۔', + 'REGISTERED_USERS' => 'مندرج اراکین:', + 'REG_USERS_ONLINE' => ' %d مندرج اراکین اور ', + 'REG_USERS_TOTAL' => '%d اراکین اور', + 'REG_USERS_TOTAL_AND' => '%d رجسٹرڈ اور ', + 'REG_USERS_ZERO_ONLINE' => '0 مندرج اراکین اور ', + 'REG_USERS_ZERO_TOTAL' => '0 اراکین ØŒ', + 'REG_USERS_ZERO_TOTAL_AND' => '0 رجسٹرڈ اور', + 'REG_USER_ONLINE' => ' %d مندرج رکن اور', + 'REG_USER_TOTAL' => '%d رکن اور ', + 'REG_USER_TOTAL_AND' => '%d رجسٹرڈ اور ', + 'REMOVE' => 'حذÙ', + 'REMOVE_INSTALL' => 'Ø¨Ø±Ø§Û Ú©ÙˆÙ… install نامی ڈائریکٹری Ú©Ùˆ حذ٠کر دیں', + 'REPLIES' => 'جوابات', + 'REPLY_WITH_QUOTE' => 'جواب مع اقتباس', + 'REPLYING_GLOBAL_ANNOUNCE' => 'اعلان عام کا جواب', + 'REPLYING_MESSAGE' => '%s میں Ù…Ø±Ø§Ø³Ù„Û Ú©Ø§ جواب دیتے ھوئے', + 'REPORT_BY' => 'رپورٹ از:', + 'REPORT_POST' => 'اس Ù…Ø±Ø§Ø³Ù„Û Ú©Û’ بارے میں شکایت کریں', + 'REPORTING_POST' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©ÛŒ شکایت', + 'RESEND_ACTIVATION' => 'ایکٹویشن ای میل Ø¯ÙˆØ¨Ø§Ø±Û Ø¨Ú¾ÛŒØ¬ÛŒÚº', + 'RESET' => 'اعادÛ', + 'RESTORE_PERMISSIONS' => 'اجازت ناموں کا اعادÛ', + 'RETURN_INDEX' => '%s صÙØ­ÛØ¡ اول پر واپسی%s', + 'RETURN_FORUM' => '%sآخری زیر Ù…Ù„Ø§Ø­Ø¸Û ØµÙØ­Û Ù¾Ø± واپسی%s', + 'RETURN_PAGE' => '%sصÙØ­ÛØ¡ سابق پر واپسی%s', + 'RETURN_TOPIC' => '%sآخری زیر Ù…Ø´Ø§Ú¾Ø¯Û Ù…ÙˆØ¶ÙˆØ¹ پر واپسی%s', + 'RETURN_TO' => 'واپسی بجانب', + 'FEED' => 'Ùیڈ', + 'FEED_NEWS' => 'خبریں', + 'FEED_TOPICS_ACTIVE' => 'Ùعال موضوعات', + 'FEED_TOPICS_NEW' => 'نئے موضوعات', + 'RULES_ATTACH_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں اپنے مراسلوں Ú©Û’ ساتھ Ùائلیں منسلک کرنے Ú©ÛŒ', + 'RULES_ATTACH_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں اپنے مراسلوں Ú©Û’ ساتھ Ùائلیں منسلک کرنے Ú©ÛŒ', + 'RULES_DELETE_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں اپنے مراسلات حذ٠کرنے Ú©ÛŒ', + 'RULES_DELETE_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں اپنے مراسلات حذ٠کرنے Ú©ÛŒ', + 'RULES_DOWNLOAD_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں مسلک Ø´Ø¯Û Ùائلوں Ú©Û’ حصول (ڈائونلوڈنگ) Ú©ÛŒ', + 'RULES_DOWNLOAD_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں مسلک Ø´Ø¯Û Ùائلوں Ú©Û’ حصول (ڈائونلوڈنگ) Ú©ÛŒ', + 'RULES_EDIT_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں موجود اپنے مراسلت Ú©ÛŒ ترمیم Ùˆ تدوین Ú©ÛŒ', + 'RULES_EDIT_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں موجود اپنے مراسلت Ú©ÛŒ ترمیم Ùˆ تدوین Ú©ÛŒ', + 'RULES_LOCK_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں موجود موضوعات Ú©Ùˆ مقÙÙ„ کرنے Ú©ÛŒ', + 'RULES_LOCK_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں موجود موضوعات Ú©Ùˆ مقÙÙ„ کرنے Ú©ÛŒ', + 'RULES_POST_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں نئے موضوعات شروع کرنے Ú©ÛŒ', + 'RULES_POST_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں نئے موضوعات شروع کرنے Ú©ÛŒ', + 'RULES_REPLY_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں جوابات ارسال کرنے Ú©ÛŒ', + 'RULES_REPLY_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں جوابات ارسال کرنے Ú©ÛŒ', + 'RULES_VOTE_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں موجودرائے شمااریوں میں ووٹ ڈالنے Ú©ÛŒ', + 'RULES_VOTE_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں موجودرائے شمااریوں میں ووٹ ڈالنے Ú©ÛŒ', + 'SEARCH' => 'تلاش', + 'SEARCH_MINI' => ' تلاش', + 'SEARCH_ADV' => 'Ù…Ùصل تلاش', + 'SEARCH_ADV_EXPLAIN' => 'Ù…Ùصل تلاش Ú©Û’ اختیارات Ú©ÛŒ نمائش', + 'SEARCH_KEYWORDS' => 'اصطلاحات Ú©ÛŒ تلاش', + 'SEARCHING_FORUMS' => 'Ùورم میں تلاشی', + 'SEARCH_ACTIVE_TOPICS' => 'Ùعال (ایکٹو) موضوعات دیکھیے', + 'SEARCH_FOR' => 'تلاش برائے ــــ', + 'SEARCH_FORUM' => 'Ùورم میں تلاش…', + 'SEARCH_NEW' => 'نئے مراسلے دیکھیے', + 'SEARCH_POSTS_BY' => 'کسی رکن Ú©Û’ مراسلات میں تلاش', + 'SEARCH_SELF' => 'آپکے مراسلے', + 'SEARCH_TOPIC' => 'اس موضوع Ú©Û’ اندر تلاش…', + 'SEARCH_UNANSWERED' => 'موضوعات جن Ú©Û’ جوابات Ù†Ûیں دیے گئے', + 'SEARCH_UNREAD' => 'ان Ù¾Ú‘Ú¾Û’ پیغامات', + 'SEARCH_USER_POSTS' => 'صار٠کی طر٠سے Ú©ÛŒ Ú¯ÛŒ پوسٹ Ú©ÛŒ تلاش', + 'SECONDS' => 'لمحات', + 'SELECT' => 'منتخب', + 'SELECT_ALL_CODE' => 'تمام منتخب کریں', + 'SELECT_DESTINATION_FORUM' => 'Ø¨Ø±Ø§Û Ú©Ø±Ù… کسی Ùورم کا بطور Ûد٠Ùورم انتخاب کریں', + 'SELECT_FORUM' => 'Ùورم منتخب کریں', + 'SEND_EMAIL' => 'ای میل', + 'SEND_EMAIL_USER' => 'ای میل', + 'SEND_PRIVATE_MESSAGE' => 'ذاتی پیغام ارسال کریں', + 'SETTINGS' => 'ترتیبات', + 'SIGNATURE' => 'دستخط', + 'SKIP' => 'نظر انداز کریں', + 'SMTP_NO_AUTH_SUPPORT' => 'SMTP سرور توثیق Ù†Ûیں‌کر سکتا', + 'SORRY_AUTH_READ' => 'آپ Ú©Ùˆ اس Ùورم Ú©Û’ Ù…Ø·Ø§Ù„Ø¹Û Ú©ÛŒ اجازت Ù†Ûیں', + 'SORRY_AUTH_VIEW_ATTACH' => 'آپ Ú©Ùˆ اس Ù…Ù†Ø³Ù„Ú©Û Ùائل Ú©Û’ حصول Ú©ÛŒ اجازت Ù†Ûیں', + 'SORT_BY' => 'Ø¨Û ØªØ±ØªÛŒØ¨', + 'SORT_JOINED' => 'تاریخ شمولیت', + 'SORT_LOCATION' => 'مکانیت', + 'SORT_RANK' => 'عÛدÛ', + 'SORT_POSTS' => 'مراسلات', + 'SORT_TOPIC_TITLE' => 'موضوع کا عنوان', + 'SORT_USERNAME' => 'رکنیتی نام', + 'SPLIT_TOPIC' => 'موضوعات Ú©ÛŒ تقسیم', + 'SQL_ERROR_OCCURRED' => 'اس صÙØ­Û Ú©ÛŒ تشکیل Ú©Û’ دوران ڈیٹا بیس کا ایک Ù…Ø³Ø¦Ù„Û Ø³Ø§Ù…Ù†Û’ آیا ÛÛ’Û” برائے Ù…Ûربانی اگر ÛŒÛ Ù…Ø³Ø¦Ù„Û Ø¨Ø±Ù‚Ø±Ø§Ø± رÛتا ÛÛ’ تو %sBoard Administrator%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚºÛ” Ø´Ú©Ø±ÛŒÛ !', + 'STATISTICS' => 'اعداد Ùˆ شمار:', + 'START_WATCHING_FORUM' => 'اس Ùورم میں اشتراک اختیار کریں', + 'START_WATCHING_TOPIC' => 'اس موضوع میں اشتراک اختیار کریں', + 'STOP_WATCHING_FORUM' => 'اس Ùورم میں اشتراک ختم کریں', + 'STOP_WATCHING_TOPIC' => 'اس موضوع میں اشتراک ختم کریں', + 'SUBFORUM' => 'ذیلی Ùورم', + 'SUBFORUMS' => 'ذیلی Ùورم', + 'SUBJECT' => 'عنوان', + 'SUBMIT' => 'ارسال', + 'TERMS_USE' => 'رکنیت Ú©ÛŒ شرائط', + 'TEST_CONNECTION' => 'آزمائش٠اتصال', + 'THE_TEAM' => 'انتظامیÛ', + 'TIME' => 'وقت', + 'TOO_LARGE' => 'آپکی داخل Ú©ÛŒ گئی قیمت بÛت لمبی ÛÛ’.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'آپکی داخل Ú©ÛŒ گئی ÙÛŒ ذاتی پیغاات Ú©Û’ لیے Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û ÙˆØµÙˆÙ„ کنندگان Ú©ÛŒ تعداد Ú©ÛŒ قیمت بÛت لمبی ÛÛ’.', + 'TOO_LONG' => 'لکھا گیا مواد بÛت طویل ÛÛ’', + 'TOO_LONG_AIM' => 'درج Ú©Ø±Ø¯Û Ø³Ú©Ø±ÛŒÙ† نام بÛت طویل ÛÛ’', + 'TOO_LONG_CONFIRM_CODE' => 'درج Ú©Ø±Ø¯Û ØªÙˆØ«ÛŒÙ‚ÛŒ رمز بÛت طویل ÛÛ’', + 'TOO_LONG_DATEFORMAT' => 'تاریخ Ú©ÛŒ جو صورت آپ Ù†Û’ درج Ú©ÛŒ ÛÛ’ بÛت طویل ÛÛ’.', + 'TOO_LONG_ICQ' => 'درج Ú©Ø±Ø¯Û ICQ نمبر بÛت طویل ÛÛ’.', + 'TOO_LONG_INTERESTS' => 'درج Ú©Ø±Ø¯Û Ø¯Ù„ چسپیاں بÛت طویل Ûیں.', + 'TOO_LONG_JABBER' => 'درج Ú©Ø±Ø¯Û jabber Ú©Ú¾Ø§ØªÛ Ø¨Ûت طویل ÛÛ’.', + 'TOO_LONG_LOCATION' => 'درج Ú©Ø±Ø¯Û Ù…Ú©Ø§Ù†ÛŒØª بÛت طویل ÛÛ’.', + 'TOO_LONG_MSN' => 'درج Ú©Ø±Ø¯Û MSN پیغام رسان بÛت طویل ÛÛ’.', + 'TOO_LONG_NEW_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت طویل ÛÛ’.', + 'TOO_LONG_OCCUPATION' => 'درج Ú©Ø±Ø¯Û Ù¾ÛŒØ´Û Ø¨Ûت طویل ÛÛ’.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'درج Ú©Ø±Ø¯Û " پاس ورڈ Ú©ÛŒ توثیق" بÛت طویل ÛÛ’.', + 'TOO_LONG_USER_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت طویل ÛÛ’.', + 'TOO_LONG_USERNAME' => 'درج Ú©Ø±Ø¯Û Ø±Ú©Ù†ÛŒØªÛŒ نام بÛت طویل ÛÛ’.', + 'TOO_LONG_EMAIL' => 'درج کردÛای میل بÛت طویل ÛÛ’.', + 'TOO_LONG_EMAIL_CONFIRM' => 'درج Ú©Ø±Ø¯Û "برقی Ù¾ØªÛ Ú©ÛŒ توثیق" بÛت طویل ÛÛ’.', + 'TOO_LONG_WEBSITE' => 'Ø¯Ø±Ø¬Û Ú©Ø±Ø¯Û ÙˆÛŒØ¨ سائٹ کا Ù¾ØªÛ Ø¨Ûت طویل ÛÛ’.', + 'TOO_LONG_YIM' => 'درج Ú©Ø±Ø¯Û Yahoo پیغام رسان بÛت طویل ÛÛ’.', + 'TOO_MANY_VOTE_OPTIONS' => 'آپ Ù†Û’ بÛت Ø²ÛŒØ§Ø¯Û Ø§Ø®ØªÛŒØ§Ø±Ø§Øª پر رائے دÛÛŒ Ú©ÛŒ کوشش Ú©ÛŒ ÛÛ’', + 'TOO_SHORT' => 'لکھا گیا مواد بÛت قلیل ÛÛ’', + 'TOO_SHORT_AIM' => 'درج Ú©Ø±Ø¯Û Ø³Ú©Ø±ÛŒÙ† نام بÛت مختصر ÛÛ’', + 'TOO_SHORT_CONFIRM_CODE' => 'درج Ú©Ø±Ø¯Û ØªÙˆØ«ÛŒÙ‚ÛŒ رمز بÛت مختصر ÛÛ’', + 'TOO_SHORT_DATEFORMAT' => 'تاریخ Ú©ÛŒ جو صورت آپ Ù†Û’ درج Ú©ÛŒ ÛÛ’ بÛت مختصر ÛÛ’.', + 'TOO_SHORT_ICQ' => 'درج Ú©Ø±Ø¯Û ICQ نمبر بÛت مختصر ÛÛ’.', + 'TOO_SHORT_INTERESTS' => 'درج Ú©Ø±Ø¯Û Ø¯Ù„ چسپیاں بÛت مختصر Ûیں.', + 'TOO_SHORT_JABBER' => 'درج Ú©Ø±Ø¯Û jabber Ú©Ú¾Ø§ØªÛ Ø¨Ûت مختصر ÛÛ’.', + 'TOO_SHORT_LOCATION' => 'درج Ú©Ø±Ø¯Û Ù…Ú©Ø§Ù†ÛŒØª بÛت مختصر ÛÛ’.', + 'TOO_SHORT_MSN' => 'درج Ú©Ø±Ø¯Û MSN پیغام رسان بÛت مختصر ÛÛ’.', + 'TOO_SHORT_NEW_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت مختصر ÛÛ’.', + 'TOO_SHORT_OCCUPATION' => 'درج Ú©Ø±Ø¯Û Ù¾ÛŒØ´Û Ø¨Ûت مختصر ÛÛ’.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'درج Ú©Ø±Ø¯Û " پاس ورڈ Ú©ÛŒ توثیق" بÛت مختصر ÛÛ’.', + 'TOO_SHORT_USER_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت مختصر ÛÛ’.', + 'TOO_SHORT_USERNAME' => 'درج Ú©Ø±Ø¯Û Ø±Ú©Ù†ÛŒØªÛŒ نام بÛت مختصر ÛÛ’.', + 'TOO_SHORT_EMAIL' => 'درج Ú©Ø±Ø¯Û Ø§ÛŒ میل بÛت مختصر ÛÛ’.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'درج Ú©Ø±Ø¯Û "ای میل Ú©ÛŒ توثیق" بÛت مختصر ÛÛ’.', + 'TOO_SHORT_WEBSITE' => 'Ø¯Ø±Ø¬Û Ú©Ø±Ø¯Û ÙˆÛŒØ¨ سائٹ کا Ù¾ØªÛ Ø¨Ûت مختصر ÛÛ’.', + 'TOO_SHORT_YIM' => 'درج Ú©Ø±Ø¯Û Yahoo پیغام رسان بÛت مختصر ÛÛ’.', + 'TOO_SMALL' => 'آپکی داخل Ú©ÛŒ گئی قیمت بÛت چھوٹی ÛÛ’.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'آپکی داخل Ú©ÛŒ گئی ÙÛŒ ذاتی پیغاات Ú©Û’ لیے Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û ÙˆØµÙˆÙ„ کنندگان Ú©ÛŒ تعداد Ú©ÛŒ قیمت بÛت چھوٹی ÛÛ’.', + 'TOPIC' => 'موضوع', + 'TOPICS' => 'موضوعات', + 'TOPICS_UNAPPROVED' => 'اس Ùورم میں Ú©Ù… سے Ú©Ù… ایک موضوع غیر اجازت یاÙØªÛ ÛÛ’', + 'TOPIC_ICON' => 'موضوعات Ú©Û’ آئکن', + 'TOPIC_LOCKED' => 'ÛŒÛ Ù…ÙˆØ¶ÙˆØ¹ مقÙÙ„ ÛÛ’ ØŒ اس Ú©ÛŒ ترمیم Ùˆ تدوین Ù†Ûیں Ú©ÛŒ جا سکتی اور اس میں موجود مراسلات Ú©Û’ جوابات Ù†Ûیں دیے جا سکتے', + 'TOPIC_LOCKED_SHORT' => 'موضوع مقÙÙ„ ÛÛ’', + 'TOPIC_MOVED' => 'منتقل Ø´Ø¯Û Ù…ÙˆØ¶ÙˆØ¹', + 'TOPIC_REVIEW' => 'موضوع Ú©ÛŒ جانب مراجعت', + 'TOPIC_TITLE' => 'موضوع کا عنوان', + 'TOPIC_UNAPPROVED' => 'ÛŒÛ Ù…ÙˆØ¶ÙˆØ¹ منظور Ù†Ûیں Ûوا', + 'TOTAL_ATTACHMENTS' => '(s) :: مسلکات', + 'TOTAL_LOG' => '1 لاگ', + 'TOTAL_LOGS' => '%d لاگز', + 'TOTAL_NO_PM' => 'کوئی ذاتی پیعام موجود Ù†Ûیں', + 'TOTAL_PM' => 'Ú©Ù„ ذاتی پیغامات:: 1 پیغام', + 'TOTAL_PMS' => 'Ú©Ù„ ذاتی پیغامات:: $d پیغامات', + 'TOTAL_POSTS' => 'مراسلات Ú©ÛŒ تعداد', + 'TOTAL_POSTS_OTHER' => 'مراسلات Ú©ÛŒ تعداد:: %d', + 'TOTAL_POSTS_ZERO' => 'مراسلات Ú©ÛŒ تعداد:: 0', + 'TOPIC_REPORTED' => 'This topic has been reported', + 'TOTAL_TOPICS_OTHER' => 'موضوعات Ú©ÛŒ تعداد %d', + 'TOTAL_TOPICS_ZERO' => 'موضوعات Ú©ÛŒ تعداد 0', + 'TOTAL_USERS_OTHER' => 'اراکین Ú©ÛŒ تعداد %d', + 'TOTAL_USERS_ZERO' => 'اراکین Ú©ÛŒ تعداد 0', + 'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s', + 'UNABLE_GET_IMAGE_SIZE' => 'تصویر Ú©ÛŒ جÛات کا تعین Ù†Ûیں ÛÙˆ سکا', + 'UNABLE_TO_DELIVER_FILE' => 'معذرت! Ùائل Ú©ÛŒ ترسیل میں ناکامی', + 'UNKNOWN_BROWSER' => 'نامعلوم براؤزر', + 'UNMARK_ALL' => 'تمام Ú©Ùˆ غیر منتخب کریں', + 'UNREAD_MESSAGES' => 'Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ù…Ø±Ø§Ø³Ù„Ø§Øª', + 'UNREAD_PM' => '%d Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ù…Ø±Ø§Ø³Ù„Û', + 'UNREAD_PMS' => '%d Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ù…Ø±Ø§Ø³Ù„Ø§Øª', + 'UNREAD_POST' => 'Unread Post', + 'UNREAD_POSTS' => 'Unread Posts', + 'UNWATCHED_FORUMS' => 'منتخب Ø´Ø¯Û Ùورم Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے آپ Ù†Û’ شراکت داری حاصل Ù†Ûیں Ú©ÛŒ Ûوئی.', + 'UNWATCHED_TOPICS' => 'منتخب Ø´Ø¯Û Ù…ÙˆØ¶ÙˆØ¹Ø§Øª Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے آپ Ù†Û’ شراکت داری حاصل Ù†Ûیں Ú©ÛŒ Ûوئی.', + 'UNWATCHED_FORUMS_TOPICS' => 'منتخب Ø´Ø¯Û Ù…ÙˆØ¶ÙˆØ¹Ø§Øª Ùˆ مراسلات Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے آپ Ù†Û’ شراکت داری حاصل Ù†Ûیں Ú©ÛŒ Ûوئی.', + 'UPDATE' => 'ØªØ§Ø²Û Ú©Ø§Ø±ÛŒ', + 'UPLOAD_IN_PROGRESS' => 'عمل٠تصعید(اپ لوڈنگ) جاری ÛÛ’', + 'URL_REDIRECT' => 'اگر آپ کا براؤزر آپ Ú©Ùˆ Ø¯ÙˆØ¨Ø§Ø±Û ÙˆØ§Ù¾Ø³ Ù†Û Ù„Û’ جائے تو %sÛŒÛاں Ú©Ù„Ú©%s کریں.', + 'USERGROUPS' => 'اراکیں Ú©Û’ گروÛ', + 'USERNAME' => 'رکن کا نام', + 'USERNAMES' => 'اراکین Ú©Û’ نام', + 'USER_AVATAR' => 'رکن Ú©ÛŒ Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ±', + 'USER_CANNOT_READ' => 'آپ اس Ùورم Ú©Û’ مراسلات کا Ù…Ø·Ø§Ù„Ø¹Û Ù†Ûیں کر سکتے', + 'USER_POST' => '%d مراسلÛ', + 'USER_POSTS' => '%d مراسلات', + 'USERS' => 'اراکین', + 'USE_PERMISSIONS' => 'رکن Ú©Û’ اجازت ناموں Ú©ÛŒ جانچ', + 'USER_NEW_PERMISSION_DISALLOWED' => 'ÛÙ… معذرت Ø®ÙˆØ§Û Ûیں ØŒ آپ ÛŒÛ Ø§Ø®ØªÛŒØ§Ø± استعمال Ù†Ûیں کر سکتے . اس کیلیے آپ Ú©Ùˆ رجسٹرڈ Ûونا Ù¾Ú‘Û’ گااور اس اختیار میں شراکت حاصل کرنا Ù¾Ú‘Û’ Ú¯ÛŒ', + 'VARIANT_DATE_SEPARATOR' => ' / ', + 'VIEWED' => 'Ù…Ø´Ø§Ú¾Ø¯Û Ú©ÛŒØ§ گیا', + 'VIEWING_FAQ' => 'عمومی سوالات کا مشاھدÛ', + 'VIEWING_MEMBERS' => 'ÙÛرست اراکین کا مشاھدÛ', + 'VIEWING_ONLINE' => 'Ø­Ø§Ù„ÛŒÛ Ù„Ø§Ú¯ ان اراکین کا مشاھدÛ', + 'VIEWING_MCP' => 'ادارتی کنٹرول پینل کا مشاھدÛ', + 'VIEWING_MEMBER_PROFILE' => 'کسی رکن Ú©Û’ Ú©ÙˆØ§Ø¦Ù Ù†Ø§Ù…Û Ú©Ø§ مطالعÛ', + 'VIEWING_PRIVATE_MESSAGES' => 'ذاتی پیغامات کا مشاھدÛ', + 'VIEWING_REGISTER' => 'نئے Ú©Ú¾Ø§ØªÛ Ú©Ø§ اندراج', + 'VIEWING_UCP' => 'رکنیتی کنٹرول پینل کا مشاھدÛ', + 'VIEWS' => 'مشاهدات', + 'VIEW_BOOKMARKS' => 'کتابی نشانات کا مشاھدÛ', + 'VIEW_FORUM_LOGS' => 'لاگ دیکھیں', + 'VIEW_LATEST_POST' => 'ØªØ§Ø²Û ØªØ±ÛŒÙ† Ù…Ø±Ø§Ø³Ù„Û Ø¯ÛŒÚ©Ú¾ÛŒÛ’', + 'VIEW_NEWEST_POST' => 'Ù¾Ûلا "ناخواندÛ" Ù…Ø±Ø§Ø³Ù„Û Ø¯ÛŒÚ©Ú¾ÛŒÛ’', + 'VIEW_NOTES' => 'اراکین Ú©Û’ تبصرے/یادداشتیں دیکھیے', + 'VIEW_ONLINE_TIME' => 'ÛŒÛ Ù…Ø¹Ù„ÙˆÙ…Ø§Øª ان اراکین پر مشتمل Ûیں جو %d منٹ Ù¾ÛÙ„Û’ متصل تھے', + 'VIEW_ONLINE_TIMES' => 'ÛŒÛ Ù…Ø¹Ù„ÙˆÙ…Ø§Øª ان اراکین پر مشتمل Ûیں جو %d منٹ Ù¾ÛÙ„Û’ متصل تھے', + 'VIEW_TOPIC' => 'موضوع کا مشاÛدÛ', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'اعلان: ', + 'VIEW_TOPIC_GLOBAL' => 'اعلان عام: ', + 'VIEW_TOPIC_LOCKED' => 'مقÙÙ„: ', + 'VIEW_TOPIC_LOGS' => 'ØªØ§Ø±ÛŒØ®Ú†Û Ø¯ÛŒÚ©Ú¾ÛŒÚº', + 'VIEW_TOPIC_MOVED' => 'انتقال شدÛ: ', + 'VIEW_TOPIC_POLL' => 'استصواب رائے: ', + 'VIEW_TOPIC_STICKY' => 'مقبول عام: ', + 'VISIT_WEBSITE' => 'ویب سائٹ کا Ø¯ÙˆØ±Û Ú©Ø±ÛŒÚº', + 'WARNINGS' => 'تنبیÛات', + 'WARN_USER' => 'رکن Ú©Ùˆ تنبیÛ', + 'WELCOME_SUBJECT' => 'Ùورم پر خوش آمدید %s', + 'WEBSITE' => 'ویب سائٹ', + 'WHOIS' => 'کون متصل ÛÛ’ ', + 'WHO_IS_ONLINE' => 'کون متصل Ú¾Û’', + 'WRONG_PASSWORD' => 'آپ Ù†Û’ غلط پاس ورڈ ÙراÛÙ… کیا ÛÛ’', + 'WRONG_DATA_ICQ' => 'آپ Ú©ÛŒ جانب سے ÙراÛÙ… Ú©Ø±Ø¯Û Ù†Ù…Ø¨Ø± ICQ درست Ù†Ûیں ÛÛ’', + 'WRONG_DATA_JABBER' => ' jabber Ú©Ú¾Ø§ØªÛ Ú©Ø§ نام جو آپ Ù†Û’ ÙراÛÙ… کیا ÛÛ’ درست Ù†Ûیں ÛÛ’', + 'WRONG_DATA_LANG' => 'آپکی معین Ú©Ø±Ø¯Û Ù„ØºØª درست Ù†Ûیں ÛÛ’', + 'WRONG_DATA_WEBSITE' => 'دیا گیا ویب سائٹ ایڈریس غلط ÛÛ’. مثال http://www.urdudreams.com', + 'WROTE' => 'لکھا ÛÛ’', + 'YEAR' => 'سال', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'جی ھاں', + 'YIM' => 'YIM', + 'YOU_LAST_VISIT' => 'آپ کا آخری Ø¯ÙˆØ±Û : %s', + 'YOU_NEW_PM' => 'ان باکس میں نئے پیغامات آپ Ú©Û’ منتظر Ûیں', + 'YOU_NEW_PMS' => 'ان باکس میں نئے پیغامات آپ Ú©Û’ منتظر Ûیں', + 'YOU_NO_NEW_PM' => 'ان بکس میں نئے ذاتی پیغامات موجود Ù†Ûیں', + + 'datetime' => array( + 'TODAY' => 'آج', + 'TOMORROW' => 'Ø¢Ø¦Ù†Ø¯Û Ø±ÙˆØ²', + 'YESTERDAY' => 'Ú¯Ø²Ø´ØªÛ Ø±ÙˆØ²', + + 'AGO' => array( + '0' => 'Ù¾Ú†Ú¾Ù„Û’ ایک منٹ Ú©Û’ دوران', + '1' => '%d منٹ گزرے Ûیں', + '2' => '%d Ù…Ø§Û Ú¯Ø²Ø±Û’ Ûیں', + '60' => 'ایک Ú¯Ú¾Ù†Ù¹Û Ú¯Ø²Ø±Ø§ ÛÛ’', + ), + + 'Sunday' => 'اتوار', + 'Monday' => 'پیر', + 'Tuesday' => 'منگل', + 'Wednesday' => 'بدھ', + 'Thursday' => 'جمعرات', + 'Friday' => 'جمعÛ', + 'Saturday' => 'Ú¾ÙتÛ', + 'Sun' => 'اتوار', + 'Mon' => 'پیر', + 'Tue' => 'منگل', + 'Wed' => 'بدھ', + 'Thu' => 'جمعرات', + 'Fri' => 'جمعÛ', + 'Sat' => 'ÛÙتÛ', + 'January' => 'جنوری', + 'February' => 'Ùروی', + 'March' => 'مارچ ', + 'April' => 'اپریل', + 'May' => 'مئی', + 'June' => 'جون', + 'July' => 'جولائی', + 'August' => 'اگست ', + 'September' => 'ستمبر', + 'October' => 'اکتوبر', + 'November' => 'نومبر', + 'December' => 'دسمبر', + 'Jan' => 'جنوری', + 'Feb' => 'Ùروری', + 'Mar' => 'مارچ', + 'Apr' => 'اپریل', + 'May_short' => 'مئی', + 'Jun' => 'جون', + 'Jul' => 'جولائی', + 'Aug' => 'اگست', + 'Sep' => 'ستمبر', + 'Oct' => 'اکتوبر', + 'Nov' => 'نومبر', + 'Dec' => 'دسمبر', + ), + + + 'tz' => array( + '-12' => 'UTC - 12 hours', + '-11' => 'UTC - 11 hours', + '-10' => 'UTC - 10 hours', + '-9.5' => 'UTC - 9:30 hours', + '-9' => 'UTC - 9 hours', + '-8' => 'UTC - 8 hours', + '-7' => 'UTC - 7 hours', + '-6' => 'UTC - 6 hours', + '-5' => 'UTC - 5 hours', + '-4.5' => 'UTC - 4:30 hours', + '-4' => 'UTC - 4 hours', + '-3.5' => 'UTC - 3:30 hours', + '-3' => 'UTC - 3 hours', + '-2' => 'UTC - 2 hours', + '-1' => 'UTC - 1 hour', + '0' => 'UTC', + '1' => 'UTC + 1 hour', + '2' => 'UTC + 2 hours', + '3' => 'UTC + 3 hours', + '3.5' => 'UTC + 3:30 hours', + '4' => 'UTC + 4 hours', + '4.5' => 'UTC + 4:30 hours', + '5' => 'UTC + 5 hours', + '5.5' => 'UTC + 5:30 hours', + '5.75' => 'UTC + 5:45 hours', + '6' => 'UTC + 6 hours', + '6.5' => 'UTC + 6:30 hours', + '7' => 'UTC + 7 hours', + '8' => 'UTC + 8 hours', + '8.75' => 'UTC + 8:45 hours', + '9' => 'UTC + 9 hours', + '9.5' => 'UTC + 9:30 hours', + '10' => 'UTC + 10 hours', + '10.5' => 'UTC + 10:30 hours', + '11' => 'UTC + 11 hours', + '11.5' => 'UTC + 11:30 hours', + '12' => 'UTC + 12 hours', + '12.75' => 'UTC + 12:45 hours', + '13' => 'UTC + 13 hours', + '14' => 'UTC + 14 hours', + 'dst' => '[ DST ]', + ), + + + 'tz_zones' => array( + '-12' => '[UTC - 12] Baker Island Time', + '-11' => '[UTC - 11] Niue Time, Samoa Standard Time', + '-10' => '[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time', + '-9.5' => '[UTC - 9:30] Marquesas Islands Time', + '-9' => '[UTC - 9] Alaska Standard Time, Gambier Island Time', + '-8' => '[UTC - 8] Pacific Standard Time', + '-7' => '[UTC - 7] Mountain Standard Time', + '-6' => '[UTC - 6] Central Standard Time', + '-5' => '[UTC - 5] Eastern Standard Time', + '-4.5' => '[UTC - 4:30] Venezuelan Standard Time', + '-4' => '[UTC - 4] Atlantic Standard Time', + '-3.5' => '[UTC - 3:30] Newfoundland Standard Time', + '-3' => '[UTC - 3] Amazon Standard Time, Central Greenland Time', + '-2' => '[UTC - 2] Fernando de Noronha Time, South Georgia & the South Sandwich Islands Time', + '-1' => '[UTC - 1] Azores Standard Time, Cape Verde Time, Eastern Greenland Time', + '0' => '[UTC] Western European Time, Greenwich Mean Time', + '1' => '[UTC + 1] Central European Time, West African Time', + '2' => '[UTC + 2] Eastern European Time, Central African Time', + '3' => '[UTC + 3] Moscow Standard Time, Eastern African Time', + '3.5' => '[UTC + 3:30] Iran Standard Time', + '4' => '[UTC + 4] Gulf Standard Time, Samara Standard Time', + '4.5' => '[UTC + 4:30] Afghanistan Time', + '5' => '[UTC + 5] پاکستان کا معیاری وقت', + '5.5' => '[UTC + 5:30] Indian Standard Time, Sri Lanka Time', + '5.75' => '[UTC + 5:45] Nepal Time', + '6' => '[UTC + 6] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time', + '6.5' => '[UTC + 6:30] Cocos Islands Time, Myanmar Time', + '7' => '[UTC + 7] Indochina Time, Krasnoyarsk Standard Time', + '8' => '[UTC + 8] Chinese Standard Time, Australian Western Standard Time, Irkutsk Standard Time', + '8.75' => '[UTC + 8:45] Southeastern Western Australia Standard Time', + '9' => '[UTC + 9] Japan Standard Time, Korea Standard Time, Chita Standard Time', + '9.5' => '[UTC + 9:30] Australian Central Standard Time', + '10' => '[UTC + 10] Australian Eastern Standard Time, Vladivostok Standard Time', + '10.5' => '[UTC + 10:30] Lord Howe Standard Time', + '11' => '[UTC + 11] Solomon Island Time, Magadan Standard Time', + '11.5' => '[UTC + 11:30] Norfolk Island Time', + '12' => '[UTC + 12] New Zealand Time, Fiji Time, Kamchatka Standard Time', + '12.75' => '[UTC + 12:45] Chatham Islands Time', + '13' => '[UTC + 13] Tonga Time, Phoenix Islands Time', + '14' => '[UTC + 14] Line Island Time', + ), + + + 'dateformats' => array( + 'd M Y, H:i' => '01 Jan 2007, 13:37', + 'd M Y H:i' => '01 Jan 2007 13:37', + 'M jS, \'y, H:i' => 'Jan 1st, \'07, 13:37', + 'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm', + 'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm', + '|d M Y|, H:i' => 'Today, 13:37 / 01 Jan 2007, 13:37', + '|F jS, Y|, g:i a' => 'Today, 1:37 pm / January 1st, 2007, 1:37 pm', + ), + + 'default_dateformat' => 'D M d, Y g:i a', +)); + +?> \ No newline at end of file diff --git a/includes/shared/phpbb3/language/lang_urdu/index.htm b/includes/shared/phpbb3/language/lang_urdu/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/shared/phpbb3/language/lang_urdu/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/shared/smf2/CVS/Entries b/includes/shared/smf2/CVS/Entries new file mode 100644 index 00000000..0fb01be8 --- /dev/null +++ b/includes/shared/smf2/CVS/Entries @@ -0,0 +1,2 @@ +/index.htm/1.1/Fri May 16 18:06:34 2014// +D diff --git a/includes/shared/smf2/CVS/Entries.Extra b/includes/shared/smf2/CVS/Entries.Extra new file mode 100644 index 00000000..adb494c9 --- /dev/null +++ b/includes/shared/smf2/CVS/Entries.Extra @@ -0,0 +1 @@ +/index.htm////*//// diff --git a/includes/shared/smf2/CVS/Entries.Extra.Old b/includes/shared/smf2/CVS/Entries.Extra.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/shared/smf2/CVS/Entries.Log b/includes/shared/smf2/CVS/Entries.Log new file mode 100644 index 00000000..ee839c2f --- /dev/null +++ b/includes/shared/smf2/CVS/Entries.Log @@ -0,0 +1 @@ +A D/includes//// diff --git a/includes/shared/smf2/CVS/Entries.Old b/includes/shared/smf2/CVS/Entries.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/shared/smf2/CVS/Repository b/includes/shared/smf2/CVS/Repository new file mode 100644 index 00000000..811eec5e --- /dev/null +++ b/includes/shared/smf2/CVS/Repository @@ -0,0 +1 @@ +core/includes/shared/smf2 diff --git a/includes/shared/smf2/CVS/Root b/includes/shared/smf2/CVS/Root new file mode 100644 index 00000000..6ab1483d --- /dev/null +++ b/includes/shared/smf2/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@mxbb.cvs.sourceforge.net:/cvsroot/mxbb diff --git a/includes/shared/smf2/includes/CVS/Entries b/includes/shared/smf2/includes/CVS/Entries new file mode 100644 index 00000000..3bda7c5d --- /dev/null +++ b/includes/shared/smf2/includes/CVS/Entries @@ -0,0 +1,4 @@ +/index.htm/1.1/Fri May 16 18:06:34 2014// +/smf_2_api.php/1.1/Sun May 18 06:27:11 2014// +/smf_2_integration_hooks.php/1.1/Sun May 18 06:27:11 2014// +D diff --git a/includes/shared/smf2/includes/CVS/Entries.Extra b/includes/shared/smf2/includes/CVS/Entries.Extra new file mode 100644 index 00000000..f3c010df --- /dev/null +++ b/includes/shared/smf2/includes/CVS/Entries.Extra @@ -0,0 +1,3 @@ +/index.htm////*//// +/smf_2_api.php////*//// +/smf_2_integration_hooks.php////*//// diff --git a/includes/shared/smf2/includes/CVS/Entries.Extra.Old b/includes/shared/smf2/includes/CVS/Entries.Extra.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/shared/smf2/includes/CVS/Entries.Old b/includes/shared/smf2/includes/CVS/Entries.Old new file mode 100644 index 00000000..e69de29b diff --git a/includes/shared/smf2/includes/CVS/Repository b/includes/shared/smf2/includes/CVS/Repository new file mode 100644 index 00000000..cb4a0a18 --- /dev/null +++ b/includes/shared/smf2/includes/CVS/Repository @@ -0,0 +1 @@ +core/includes/shared/smf2/includes diff --git a/includes/shared/smf2/includes/CVS/Root b/includes/shared/smf2/includes/CVS/Root new file mode 100644 index 00000000..6ab1483d --- /dev/null +++ b/includes/shared/smf2/includes/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@mxbb.cvs.sourceforge.net:/cvsroot/mxbb diff --git a/includes/social_connect/acp/acp_fb4phpbb_light.php b/includes/social_connect/acp/acp_fb4phpbb_light.php new file mode 100644 index 00000000..ffb59e9d --- /dev/null +++ b/includes/social_connect/acp/acp_fb4phpbb_light.php @@ -0,0 +1,122 @@ +.*/ + +/** +* DO NOT CHANGE +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +/** +* @package fb4phpbb_light +*/ +class acp_fb4phpbb_light +{ + var $u_action; + + function fb4phpbb_light_language_select($default = '') + { + global $config, $phpbb_root_path ; + $get_locale = simplexml_load_file($phpbb_root_path . '/fb4phpbb_light/FacebookLocales.xml'); + $arr = $get_locale->locale; + + $fb_lang_options = ''; + foreach($arr as $locale) + { + $selected = ($locale->codes->code->standard->representation == $default) ? ' selected="selected"' : ''; + $fb_lang_options .= ''; + } + + return $fb_lang_options; + } + + function main($id, $mode) + { + global $config, $db, $user, $auth, $template, $cache; + global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $file_uploads; + $user->add_lang('mods/fb4phpbb_light'); + + $this->tpl_name = 'acp_fb4phpbb_light'; + $this->page_title = 'ACP_FB4PHPBB_LIGHT'; + + $action = request_var('action', ''); + $form_name = 'acp_fb4phpbb_light'; + add_form_key($form_name); + + $findsql = "SELECT module_auth + FROM " . MODULES_TABLE + . " WHERE module_langname='UCP_PROFILE_AVATAR'"; + $result = $db->sql_query($findsql); + $row = $db->sql_fetchrow($result); + if($row['module_auth'] == 'cfg_allow_avatar && (cfg_allow_avatar_local || cfg_allow_avatar_remote || cfg_allow_avatar_upload || cfg_allow_avatar_remote_upload)') + { + $sql = "UPDATE " . MODULES_TABLE + . " SET module_auth='cfg_allow_avatar && (cfg_allow_avatar_local || cfg_allow_avatar_remote || cfg_allow_avatar_remote_fb || cfg_allow_avatar_upload || cfg_allow_avatar_remote_upload)'" + . " WHERE module_langname='UCP_PROFILE_AVATAR'"; + $updated = $db->sql_query($sql); + } + if(isset($_POST['submit'])) + { + switch($mode) + { + case 'fb4phpbb_light': + $fb4phpbb_light_mod_enabled = request_var('fb4phpbb_light_mod_enabled', ''); + $fb4phpbb_light_app_id = request_var('fb4phpbb_light_app_id', ''); + $fb4phpbb_light_secret = request_var('fb4phpbb_light_secret', ''); + $fb4phpbb_light_locale = request_var('lang', ''); + + set_config('fb4phpbb_light_mod_enabled', $fb4phpbb_light_mod_enabled, true); + set_config('fb4phpbb_light_appid', $fb4phpbb_light_app_id, true); + set_config('fb4phpbb_light_secret', $fb4phpbb_light_secret, true); + set_config('fb4phpbb_light_lang', $fb4phpbb_light_locale, true); + + trigger_error($user->lang['ACP_FB4PHPBB_LIGHT_SETTINGS_UPDATED'] . adm_back_link($this->u_action)); + break; + } + } + else + { + switch($mode) + { + case 'fb4phpbb_light': + + $selected = ' selected="selected" '; + $checked = ' checked="checked" '; + $fb4phpbb_light_mod_enabled = ($config['fb4phpbb_light_mod_enabled'] === 'yes' ? $checked : ''); + $fb4phpbb_light_mod_disabled = ($config['fb4phpbb_light_mod_enabled'] === 'no' ? $checked : ''); + + $template->assign_vars(array( + 'FB4PHPBB_LIGHT_LANG' => (!isset($config['fb4phpbb_light_lang'])) ? $this->fb4phpbb_light_language_select('en_US') : $this->fb4phpbb_light_language_select($config['fb4phpbb_light_lang']), + 'FB4PHPBB_LIGHT_MOD_ENABLED_YES' => $fb4phpbb_light_mod_enabled, + 'FB4PHPBB_LIGHT_MOD_ENABLED_NO' => $fb4phpbb_light_mod_disabled, + 'FB4PHPBB_LIGHT_APP_ID' => $config['fb4phpbb_light_appid'], + 'FB4PHPBB_LIGHT_SECRET' => $config['fb4phpbb_light_secret'], + 'S_MODE_FB4PHPBB_LIGHT' => true, + 'U_ACTION' => $this->u_action, + )); + + break; + } + } + } +} + +?> \ No newline at end of file diff --git a/includes/social_connect/acp/info/acp_fb4phpbb_light.php b/includes/social_connect/acp/info/acp_fb4phpbb_light.php new file mode 100644 index 00000000..fa5ef436 --- /dev/null +++ b/includes/social_connect/acp/info/acp_fb4phpbb_light.php @@ -0,0 +1,43 @@ +.*/ + +class acp_fb4phpbb_light_info +{ + function module() + { + return array( + 'filename' => 'acp_fb4phpbb_light', + 'title' => 'ACP_FB4PHPBB_LIGHT', + 'version' => '1.0.1a', + 'modes' => array( + 'fb4phpbb_light' => array('title' => 'ACP_FB4PHPBB_LIGHT_SETTINGS', 'auth' => 'acl_a_user', 'cat' => array('ACP_CAT_USERS')), + ), + ); + } + + function install() + { + } + + function uninstall() + { + } +} + +?> \ No newline at end of file diff --git a/includes/social_connect/class_facebook_connect.php b/includes/social_connect/class_facebook_connect.php new file mode 100644 index 00000000..a4651199 --- /dev/null +++ b/includes/social_connect/class_facebook_connect.php @@ -0,0 +1,184 @@ + $app_id, + 'secret' => $app_secret + ); + + $this->client = new Facebook($facebook_config); + } + + public function do_login($redirect, $force_retry = false) + { + global $board_config, $user, $mx_root_path; + + // If user is already logged in and granted our application, we don't need to redirect him to facebook + $user_fb_id = $this->client->getUser(); + if (!empty($user_fb_id)) + { + return $this->retrieve_user_basic_data($user_fb_id); + } + + $confirm = request_get_var('confirm', 0); + if ($confirm != 1 || $force_retry) + { + // Build the social network return url + $current_page = extract_current_page($mx_root_path); + $return_url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://'; + $return_url .= extract_current_hostname() . $current_page['script_path'] . $current_page['page']; + $return_url .= (strpos($return_url, '?') ? '&' : '?') . 'redirect=' . $redirect . '&confirm=1'; + $return_url .= (!empty($_GET['admin'])) ? '&admin=1' : ''; + + $params = array( + 'scope' => $this->scope, + 'redirect_uri' => $return_url, + ); + + $login_url = $this->client->getLoginUrl($params); + + header('Location: ' . $login_url); + exit; + } + else + { + $token = ''; + $user_fb_data = array(); + + try + { + $token = $this->client->getAccessToken(); + $user_fb_data = $this->client->api('/me'); + } + catch (OAuthException $e) + { + // Retry on failure + return $this->do_login(true); + } + + return $this->retrieve_user_id($user_fb_data['id']); + } + } + + private function retrieve_user_basic_data($user_fb_id) + { + global $db; + + $sql = "SELECT user_id, user_level + FROM " . USERS_TABLE . " + WHERE user_facebook_id = '" . $db->sql_escape($user_fb_id) . "' + LIMIT 1"; + $result = $db->sql_query($sql); + if ($db->sql_numrows($result) > 0) + { + // User is registered + $user_data = $db->sql_fetchrow($result); + return $user_data; + } + else + { + // User is not registered + return null; + } + } + + public function get_user_data() + { + $token = ''; + $user_fb_data = array(); + + try + { + $token = $this->client->getAccessToken(); + $user_fb_data = $this->client->api('/me'); + } + catch (Exception $e) + { + // If user isn't logged in on facebook, then log him in and retry! + //$this->do_login(true);die(); + $this->do_login(true); + return $this->get_user_data(); + } + + $username = empty($user_fb_data['username']) ? $user_fb_data['id'] : $user_fb_data['username']; + global $mx_root_path; + $gender = 0; + if (!empty($user_fb_data['gender'])) + { + $gender = ($user_fb_data['gender'] == 'male') ? 1 : 2; + } + + $birthday = ''; + $birthday_y = ''; + $birthday_m = ''; + $birthday_d = ''; + if (!empty($user_fb_data['birthday'])) + { + if (!function_exists('mkrealdate')) + { + include($mx_root_path . 'includes/functions_profile.' . PHP_EXT); + } + + // FB birthday is in MM/DD/YYYY format + $birthday_parts = explode('/', $user_fb_data['birthday']); + $birthday_y = $birthday_parts[2]; + $birthday_m = $birthday_parts[0]; + $birthday_d = $birthday_parts[1]; + $birthday = mkrealdate($birthday_parts[1], $birthday_parts[0], $birthday_parts[2]); + } + + // Convert social network data to Icy Phoenix data + $user_data = array( + 'username' => $username, + 'email' => empty($user_fb_data['email']) ? '' : $user_fb_data['email'], + 'email_confirm' => empty($user_fb_data['email']) ? '' : $user_fb_data['email'], + 'user_website' => empty($user_fb_data['website']) ? '' : $user_fb_data['website'], + 'gender' => $gender, + 'birthday' => $birthday, + /* + 'birthday_y' => $birthday_y, + 'birthday_m' => $birthday_m, + 'birthday_d' => $birthday_d, + */ + 'user_timezone' => empty($user_fb_data['timezone']) ? '' : $user_fb_data['timezone'], + 'user_facebook' => $username, + 'user_facebook_id' => $user_fb_data['id'], + + 'u_profile_photo' => 'https://graph.facebook.com/' . $username . '/picture', + 'user_real_name' => empty($user_fb_data['name']) ? '' : $user_fb_data['name'], + 'u_profile_link' => empty($user_fb_data['link']) ? '' : $user_fb_data['link'], + ); + + return $user_data; + } +} + +?> \ No newline at end of file diff --git a/includes/social_connect/facebook/base_facebook.php b/includes/social_connect/facebook/base_facebook.php new file mode 100644 index 00000000..2504ed08 --- /dev/null +++ b/includes/social_connect/facebook/base_facebook.php @@ -0,0 +1,1472 @@ + + */ +class FacebookApiException extends Exception +{ + /** + * The result from the API server that represents the exception information. + */ + protected $result; + + /** + * Make a new API Exception with the given result. + * + * @param array $result The result from the API server + */ + public function __construct($result) { + $this->result = $result; + + $code = isset($result['error_code']) ? $result['error_code'] : 0; + + if (isset($result['error_description'])) { + // OAuth 2.0 Draft 10 style + $msg = $result['error_description']; + } else if (isset($result['error']) && is_array($result['error'])) { + // OAuth 2.0 Draft 00 style + $msg = $result['error']['message']; + } else if (isset($result['error_msg'])) { + // Rest server style + $msg = $result['error_msg']; + } else { + $msg = 'Unknown Error. Check getResult()'; + } + + parent::__construct($msg, $code); + } + + /** + * Return the associated result object returned by the API server. + * + * @return array The result from the API server + */ + public function getResult() { + return $this->result; + } + + /** + * Returns the associated type for the error. This will default to + * 'Exception' when a type is not available. + * + * @return string + */ + public function getType() { + if (isset($this->result['error'])) { + $error = $this->result['error']; + if (is_string($error)) { + // OAuth 2.0 Draft 10 style + return $error; + } else if (is_array($error)) { + // OAuth 2.0 Draft 00 style + if (isset($error['type'])) { + return $error['type']; + } + } + } + + return 'Exception'; + } + + /** + * To make debugging easier. + * + * @return string The string representation of the error + */ + public function __toString() { + $str = $this->getType() . ': '; + if ($this->code != 0) { + $str .= $this->code . ': '; + } + return $str . $this->message; + } +} + +/** + * Provides access to the Facebook Platform. This class provides + * a majority of the functionality needed, but the class is abstract + * because it is designed to be sub-classed. The subclass must + * implement the four abstract methods listed at the bottom of + * the file. + * + * @author Naitik Shah + */ +abstract class BaseFacebook +{ + /** + * Version. + */ + const VERSION = '3.2.2'; + + /** + * Signed Request Algorithm. + */ + const SIGNED_REQUEST_ALGORITHM = 'HMAC-SHA256'; + + /** + * Default options for curl. + */ + public static $CURL_OPTS = array( + CURLOPT_CONNECTTIMEOUT => 10, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 60, + CURLOPT_USERAGENT => 'facebook-php-3.2', + ); + + /** + * List of query parameters that get automatically dropped when rebuilding + * the current URL. + */ + protected static $DROP_QUERY_PARAMS = array( + 'code', + 'state', + 'signed_request', + ); + + /** + * Maps aliases to Facebook domains. + */ + public static $DOMAIN_MAP = array( + 'api' => 'https://api.facebook.com/', + 'api_video' => 'https://api-video.facebook.com/', + 'api_read' => 'https://api-read.facebook.com/', + 'graph' => 'https://graph.facebook.com/', + 'graph_video' => 'https://graph-video.facebook.com/', + 'www' => 'https://www.facebook.com/', + ); + + /** + * The Application ID. + * + * @var string + */ + protected $appId; + + /** + * The Application App Secret. + * + * @var string + */ + protected $appSecret; + + /** + * The ID of the Facebook user, or 0 if the user is logged out. + * + * @var integer + */ + protected $user; + + /** + * The data from the signed_request token. + */ + protected $signedRequest; + + /** + * A CSRF state variable to assist in the defense against CSRF attacks. + */ + protected $state; + + /** + * The OAuth access token received in exchange for a valid authorization + * code. null means the access token has yet to be determined. + * + * @var string + */ + protected $accessToken = null; + + /** + * Indicates if the CURL based @ syntax for file uploads is enabled. + * + * @var boolean + */ + protected $fileUploadSupport = false; + + /** + * Indicates if we trust HTTP_X_FORWARDED_* headers. + * + * @var boolean + */ + protected $trustForwarded = false; + + /** + * Initialize a Facebook Application. + * + * The configuration: + * - appId: the application ID + * - secret: the application secret + * - fileUpload: (optional) boolean indicating if file uploads are enabled + * + * @param array $config The application configuration + */ + public function __construct($config) { + $this->setAppId($config['appId']); + $this->setAppSecret($config['secret']); + if (isset($config['fileUpload'])) { + $this->setFileUploadSupport($config['fileUpload']); + } + if (isset($config['trustForwarded']) && $config['trustForwarded']) { + $this->trustForwarded = true; + } + $state = $this->getPersistentData('state'); + if (!empty($state)) { + $this->state = $state; + } + } + + /** + * Set the Application ID. + * + * @param string $appId The Application ID + * @return BaseFacebook + */ + public function setAppId($appId) { + $this->appId = $appId; + return $this; + } + + /** + * Get the Application ID. + * + * @return string the Application ID + */ + public function getAppId() { + return $this->appId; + } + + /** + * Set the App Secret. + * + * @param string $apiSecret The App Secret + * @return BaseFacebook + * @deprecated + */ + public function setApiSecret($apiSecret) { + $this->setAppSecret($apiSecret); + return $this; + } + + /** + * Set the App Secret. + * + * @param string $appSecret The App Secret + * @return BaseFacebook + */ + public function setAppSecret($appSecret) { + $this->appSecret = $appSecret; + return $this; + } + + /** + * Get the App Secret. + * + * @return string the App Secret + * @deprecated + */ + public function getApiSecret() { + return $this->getAppSecret(); + } + + /** + * Get the App Secret. + * + * @return string the App Secret + */ + public function getAppSecret() { + return $this->appSecret; + } + + /** + * Set the file upload support status. + * + * @param boolean $fileUploadSupport The file upload support status. + * @return BaseFacebook + */ + public function setFileUploadSupport($fileUploadSupport) { + $this->fileUploadSupport = $fileUploadSupport; + return $this; + } + + /** + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function getFileUploadSupport() { + return $this->fileUploadSupport; + } + + /** + * DEPRECATED! Please use getFileUploadSupport instead. + * + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function useFileUploadSupport() { + return $this->getFileUploadSupport(); + } + + /** + * Sets the access token for api calls. Use this if you get + * your access token by other means and just want the SDK + * to use it. + * + * @param string $access_token an access token. + * @return BaseFacebook + */ + public function setAccessToken($access_token) { + $this->accessToken = $access_token; + return $this; + } + + /** + * Extend an access token, while removing the short-lived token that might + * have been generated via client-side flow. Thanks to http://bit.ly/b0Pt0H + * for the workaround. + */ + public function setExtendedAccessToken() { + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format. + $access_token_response = $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = array( + 'client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'grant_type' => 'fb_exchange_token', + 'fb_exchange_token' => $this->getAccessToken(), + ) + ); + } + catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = array(); + parse_str($access_token_response, $response_params); + + if (!isset($response_params['access_token'])) { + return false; + } + + $this->destroySession(); + + $this->setPersistentData( + 'access_token', $response_params['access_token'] + ); + } + + /** + * Determines the access token that should be used for API calls. + * The first time this is called, $this->accessToken is set equal + * to either a valid user access token, or it's set to the application + * access token if a valid user access token wasn't available. Subsequent + * calls return whatever the first call returned. + * + * @return string The access token + */ + public function getAccessToken() { + if ($this->accessToken !== null) { + // we've done this already and cached it. Just return. + return $this->accessToken; + } + + // first establish access token to be the application + // access token, in case we navigate to the /oauth/access_token + // endpoint, where SOME access token is required. + $this->setAccessToken($this->getApplicationAccessToken()); + $user_access_token = $this->getUserAccessToken(); + if ($user_access_token) { + $this->setAccessToken($user_access_token); + } + + return $this->accessToken; + } + + /** + * Determines and returns the user access token, first using + * the signed request if present, and then falling back on + * the authorization code if present. The intent is to + * return a valid user access token, or false if one is determined + * to not be available. + * + * @return string A valid user access token, or false if one + * could not be determined. + */ + protected function getUserAccessToken() { + // first, consider a signed request if it's supplied. + // if there is a signed request, then it alone determines + // the access token. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + // apps.facebook.com hands the access_token in the signed_request + if (array_key_exists('oauth_token', $signed_request)) { + $access_token = $signed_request['oauth_token']; + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // the JS SDK puts a code in with the redirect_uri of '' + if (array_key_exists('code', $signed_request)) { + $code = $signed_request['code']; + if ($code && $code == $this->getPersistentData('code')) { + // short-circuit if the code we have is the same as the one presented + return $this->getPersistentData('access_token'); + } + + $access_token = $this->getAccessTokenFromCode($code, ''); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + } + + // signed request states there's no access token, so anything + // stored should be cleared. + $this->clearAllPersistentData(); + return false; // respect the signed request's data, even + // if there's an authorization code or something else + } + + $code = $this->getCode(); + if ($code && $code != $this->getPersistentData('code')) { + $access_token = $this->getAccessTokenFromCode($code); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // code was bogus, so everything based on it should be invalidated. + $this->clearAllPersistentData(); + return false; + } + + // as a fallback, just return whatever is in the persistent + // store, knowing nothing explicit (signed request, authorization + // code, etc.) was present to shadow it (or we saw a code in $_REQUEST, + // but it's the same as what's in the persistent store) + return $this->getPersistentData('access_token'); + } + + /** + * Retrieve the signed request, either from a request parameter or, + * if not present, from a cookie. + * + * @return string the signed request, if available, or null otherwise. + */ + public function getSignedRequest() { + if (!$this->signedRequest) { + if (!empty($_REQUEST['signed_request'])) { + $this->signedRequest = $this->parseSignedRequest( + $_REQUEST['signed_request']); + } else if (!empty($_COOKIE[$this->getSignedRequestCookieName()])) { + $this->signedRequest = $this->parseSignedRequest( + $_COOKIE[$this->getSignedRequestCookieName()]); + } + } + return $this->signedRequest; + } + + /** + * Get the UID of the connected user, or 0 + * if the Facebook user is not connected. + * + * @return string the UID if available. + */ + public function getUser() { + if ($this->user !== null) { + // we've already determined this and cached the value. + return $this->user; + } + + return $this->user = $this->getUserFromAvailableData(); + } + + /** + * Determines the connected user by first examining any signed + * requests, then considering an authorization code, and then + * falling back to any persistent store storing the user. + * + * @return integer The id of the connected Facebook user, + * or 0 if no such user exists. + */ + protected function getUserFromAvailableData() { + // if a signed request is supplied, then it solely determines + // who the user is. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + if (array_key_exists('user_id', $signed_request)) { + $user = $signed_request['user_id']; + + if($user != $this->getPersistentData('user_id')){ + $this->clearAllPersistentData(); + } + + $this->setPersistentData('user_id', $signed_request['user_id']); + return $user; + } + + // if the signed request didn't present a user id, then invalidate + // all entries in any persistent store. + $this->clearAllPersistentData(); + return 0; + } + + $user = $this->getPersistentData('user_id', $default = 0); + $persisted_access_token = $this->getPersistentData('access_token'); + + // use access_token to fetch user id if we have a user access_token, or if + // the cached access token has changed. + $access_token = $this->getAccessToken(); + if ($access_token && + $access_token != $this->getApplicationAccessToken() && + !($user && $persisted_access_token == $access_token)) { + $user = $this->getUserFromAccessToken(); + if ($user) { + $this->setPersistentData('user_id', $user); + } else { + $this->clearAllPersistentData(); + } + } + + return $user; + } + + /** + * Get a Login URL for use with redirects. By default, full page redirect is + * assumed. If you are using the generated URL with a window.open() call in + * JavaScript, you can pass in display=popup as part of the $params. + * + * The parameters: + * - redirect_uri: the url to go to after a successful login + * - scope: comma separated list of requested extended perms + * + * @param array $params Provide custom parameters + * @return string The URL for the login flow + */ + public function getLoginUrl($params=array()) { + $this->establishCSRFTokenState(); + $currentUrl = $this->getCurrentUrl(); + + // if 'scope' is passed as an array, convert to comma separated list + $scopeParams = isset($params['scope']) ? $params['scope'] : null; + if ($scopeParams && is_array($scopeParams)) { + $params['scope'] = implode(',', $scopeParams); + } + + return $this->getUrl( + 'www', + 'dialog/oauth', + array_merge(array( + 'client_id' => $this->getAppId(), + 'redirect_uri' => $currentUrl, // possibly overwritten + 'state' => $this->state), + $params)); + } + + /** + * Get a Logout URL suitable for use with redirects. + * + * The parameters: + * - next: the url to go to after a successful logout + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLogoutUrl($params=array()) { + return $this->getUrl( + 'www', + 'logout.php', + array_merge(array( + 'next' => $this->getCurrentUrl(), + 'access_token' => $this->getUserAccessToken(), + ), $params) + ); + } + + /** + * Get a login status URL to fetch the status from Facebook. + * + * The parameters: + * - ok_session: the URL to go to if a session is found + * - no_session: the URL to go to if the user is not connected + * - no_user: the URL to go to if the user is not signed into facebook + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLoginStatusUrl($params=array()) { + return $this->getUrl( + 'www', + 'extern/login_status.php', + array_merge(array( + 'api_key' => $this->getAppId(), + 'no_session' => $this->getCurrentUrl(), + 'no_user' => $this->getCurrentUrl(), + 'ok_session' => $this->getCurrentUrl(), + 'session_version' => 3, + ), $params) + ); + } + + /** + * Make an API call. + * + * @return mixed The decoded response + */ + public function api(/* polymorphic */) { + $args = func_get_args(); + if (is_array($args[0])) { + return $this->_restserver($args[0]); + } else { + return call_user_func_array(array($this, '_graph'), $args); + } + } + + /** + * Constructs and returns the name of the cookie that + * potentially houses the signed request for the app user. + * The cookie is not set by the BaseFacebook class, but + * it may be set by the JavaScript SDK. + * + * @return string the name of the cookie that would house + * the signed request value. + */ + protected function getSignedRequestCookieName() { + return 'fbsr_'.$this->getAppId(); + } + + /** + * Constructs and returns the name of the coookie that potentially contain + * metadata. The cookie is not set by the BaseFacebook class, but it may be + * set by the JavaScript SDK. + * + * @return string the name of the cookie that would house metadata. + */ + protected function getMetadataCookieName() { + return 'fbm_'.$this->getAppId(); + } + + /** + * Get the authorization code from the query parameters, if it exists, + * and otherwise return false to signal no authorization code was + * discoverable. + * + * @return mixed The authorization code, or false if the authorization + * code could not be determined. + */ + protected function getCode() { + if (isset($_REQUEST['code'])) { + if ($this->state !== null && + isset($_REQUEST['state']) && + $this->state === $_REQUEST['state']) { + + // CSRF state has done its job, so clear it + $this->state = null; + $this->clearPersistentData('state'); + return $_REQUEST['code']; + } else { + self::errorLog('CSRF state token does not match one provided.'); + return false; + } + } + + return false; + } + + /** + * Retrieves the UID with the understanding that + * $this->accessToken has already been set and is + * seemingly legitimate. It relies on Facebook's Graph API + * to retrieve user information and then extract + * the user ID. + * + * @return integer Returns the UID of the Facebook user, or 0 + * if the Facebook user could not be determined. + */ + protected function getUserFromAccessToken() { + try { + $user_info = $this->api('/me'); + return $user_info['id']; + } catch (FacebookApiException $e) { + return 0; + } + } + + /** + * Returns the access token that should be used for logged out + * users when no authorization code is available. + * + * @return string The application access token, useful for gathering + * public information about users and applications. + */ + protected function getApplicationAccessToken() { + return $this->appId.'|'.$this->appSecret; + } + + /** + * Lays down a CSRF state token for this process. + * + * @return void + */ + protected function establishCSRFTokenState() { + if ($this->state === null) { + $this->state = md5(uniqid(mt_rand(), true)); + $this->setPersistentData('state', $this->state); + } + } + + /** + * Retrieves an access token for the given authorization code + * (previously generated from www.facebook.com on behalf of + * a specific user). The authorization code is sent to graph.facebook.com + * and a legitimate access token is generated provided the access token + * and the user for which it was generated all match, and the user is + * either logged in to Facebook or has granted an offline access permission. + * + * @param string $code An authorization code. + * @return mixed An access token exchanged for the authorization code, or + * false if an access token could not be generated. + */ + protected function getAccessTokenFromCode($code, $redirect_uri = null) { + if (empty($code)) { + return false; + } + + if ($redirect_uri === null) { + $redirect_uri = $this->getCurrentUrl(); + } + + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format. + $access_token_response = + $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = array('client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'redirect_uri' => $redirect_uri, + 'code' => $code)); + } catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = array(); + parse_str($access_token_response, $response_params); + if (!isset($response_params['access_token'])) { + return false; + } + + return $response_params['access_token']; + } + + /** + * Invoke the old restserver.php endpoint. + * + * @param array $params Method call object + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _restserver($params) { + // generic application level parameters + $params['api_key'] = $this->getAppId(); + $params['format'] = 'json-strings'; + + $result = json_decode($this->_oauthRequest( + $this->getApiUrl($params['method']), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error_code'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + $method = strtolower($params['method']); + if ($method === 'auth.expiresession' || + $method === 'auth.revokeauthorization') { + $this->destroySession(); + } + + return $result; + } + + /** + * Return true if this is video post. + * + * @param string $path The path + * @param string $method The http method (default 'GET') + * + * @return boolean true if this is video post + */ + protected function isVideoPost($path, $method = 'GET') { + if ($method == 'POST' && preg_match("/^(\/)(.+)(\/)(videos)$/", $path)) { + return true; + } + return false; + } + + /** + * Invoke the Graph API. + * + * @param string $path The path (required) + * @param string $method The http method (default 'GET') + * @param array $params The query/post data + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _graph($path, $method = 'GET', $params = array()) { + if (is_array($method) && empty($params)) { + $params = $method; + $method = 'GET'; + } + $params['method'] = $method; // method override as we always do a POST + + if ($this->isVideoPost($path, $method)) { + $domainKey = 'graph_video'; + } else { + $domainKey = 'graph'; + } + + $result = json_decode($this->_oauthRequest( + $this->getUrl($domainKey, $path), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + return $result; + } + + /** + * Make a OAuth Request. + * + * @param string $url The path (required) + * @param array $params The query/post data + * + * @return string The decoded response object + * @throws FacebookApiException + */ + protected function _oauthRequest($url, $params) { + if (!isset($params['access_token'])) { + $params['access_token'] = $this->getAccessToken(); + } + + if (isset($params['access_token'])) { + $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']); + } + + // json_encode all params values that are not strings + foreach ($params as $key => $value) { + if (!is_string($value)) { + $params[$key] = json_encode($value); + } + } + + return $this->makeRequest($url, $params); + } + + /** + * Generate a proof of App Secret + * This is required for all API calls originating from a server + * It is a sha256 hash of the access_token made using the app secret + * + * @param string $access_token The access_token to be hashed (required) + * + * @return string The sha256 hash of the access_token + */ + protected function getAppSecretProof($access_token) { + return hash_hmac('sha256', $access_token, $this->getAppSecret()); + } + + /** + * Makes an HTTP request. This method can be overridden by subclasses if + * developers want to do fancier things or use something other than curl to + * make the request. + * + * @param string $url The URL to make the request to + * @param array $params The parameters to use for the POST body + * @param CurlHandler $ch Initialized curl handle + * + * @return string The response text + */ + protected function makeRequest($url, $params, $ch=null) { + if (!$ch) { + $ch = curl_init(); + } + + $opts = self::$CURL_OPTS; + if ($this->getFileUploadSupport()) { + $opts[CURLOPT_POSTFIELDS] = $params; + } else { + $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); + } + $opts[CURLOPT_URL] = $url; + + // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait + // for 2 seconds if the server does not support this header. + if (isset($opts[CURLOPT_HTTPHEADER])) { + $existing_headers = $opts[CURLOPT_HTTPHEADER]; + $existing_headers[] = 'Expect:'; + $opts[CURLOPT_HTTPHEADER] = $existing_headers; + } else { + $opts[CURLOPT_HTTPHEADER] = array('Expect:'); + } + + curl_setopt_array($ch, $opts); + $result = curl_exec($ch); + + if (curl_errno($ch) == 60) { // CURLE_SSL_CACERT + self::errorLog('Invalid or no certificate authority found, '. + 'using bundled information'); + curl_setopt($ch, CURLOPT_CAINFO, + dirname(__FILE__) . '/fb_ca_chain_bundle.crt'); + $result = curl_exec($ch); + } + + // With dual stacked DNS responses, it's possible for a server to + // have IPv6 enabled but not have IPv6 connectivity. If this is + // the case, curl will try IPv4 first and if that fails, then it will + // fall back to IPv6 and the error EHOSTUNREACH is returned by the + // operating system. + if ($result === false && empty($opts[CURLOPT_IPRESOLVE])) { + $matches = array(); + $regex = '/Failed to connect to ([^:].*): Network is unreachable/'; + if (preg_match($regex, curl_error($ch), $matches)) { + if (strlen(@inet_pton($matches[1])) === 16) { + self::errorLog('Invalid IPv6 configuration on server, '. + 'Please disable or get native IPv6 on your server.'); + self::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; + curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + $result = curl_exec($ch); + } + } + } + + if ($result === false) { + $e = new FacebookApiException(array( + 'error_code' => curl_errno($ch), + 'error' => array( + 'message' => curl_error($ch), + 'type' => 'CurlException', + ), + )); + curl_close($ch); + throw $e; + } + curl_close($ch); + return $result; + } + + /** + * Parses a signed_request and validates the signature. + * + * @param string $signed_request A signed token + * @return array The payload inside it or null if the sig is wrong + */ + protected function parseSignedRequest($signed_request) { + list($encoded_sig, $payload) = explode('.', $signed_request, 2); + + // decode the data + $sig = self::base64UrlDecode($encoded_sig); + $data = json_decode(self::base64UrlDecode($payload), true); + + if (strtoupper($data['algorithm']) !== self::SIGNED_REQUEST_ALGORITHM) { + self::errorLog( + 'Unknown algorithm. Expected ' . self::SIGNED_REQUEST_ALGORITHM); + return null; + } + + // check sig + $expected_sig = hash_hmac('sha256', $payload, + $this->getAppSecret(), $raw = true); + if ($sig !== $expected_sig) { + self::errorLog('Bad Signed JSON signature!'); + return null; + } + + return $data; + } + + /** + * Makes a signed_request blob using the given data. + * + * @param array The data array. + * @return string The signed request. + */ + protected function makeSignedRequest($data) { + if (!is_array($data)) { + throw new InvalidArgumentException( + 'makeSignedRequest expects an array. Got: ' . print_r($data, true)); + } + $data['algorithm'] = self::SIGNED_REQUEST_ALGORITHM; + $data['issued_at'] = time(); + $json = json_encode($data); + $b64 = self::base64UrlEncode($json); + $raw_sig = hash_hmac('sha256', $b64, $this->getAppSecret(), $raw = true); + $sig = self::base64UrlEncode($raw_sig); + return $sig.'.'.$b64; + } + + /** + * Build the URL for api given parameters. + * + * @param $method String the method name. + * @return string The URL for the given parameters + */ + protected function getApiUrl($method) { + static $READ_ONLY_CALLS = + array('admin.getallocation' => 1, + 'admin.getappproperties' => 1, + 'admin.getbannedusers' => 1, + 'admin.getlivestreamvialink' => 1, + 'admin.getmetrics' => 1, + 'admin.getrestrictioninfo' => 1, + 'application.getpublicinfo' => 1, + 'auth.getapppublickey' => 1, + 'auth.getsession' => 1, + 'auth.getsignedpublicsessiondata' => 1, + 'comments.get' => 1, + 'connect.getunconnectedfriendscount' => 1, + 'dashboard.getactivity' => 1, + 'dashboard.getcount' => 1, + 'dashboard.getglobalnews' => 1, + 'dashboard.getnews' => 1, + 'dashboard.multigetcount' => 1, + 'dashboard.multigetnews' => 1, + 'data.getcookies' => 1, + 'events.get' => 1, + 'events.getmembers' => 1, + 'fbml.getcustomtags' => 1, + 'feed.getappfriendstories' => 1, + 'feed.getregisteredtemplatebundlebyid' => 1, + 'feed.getregisteredtemplatebundles' => 1, + 'fql.multiquery' => 1, + 'fql.query' => 1, + 'friends.arefriends' => 1, + 'friends.get' => 1, + 'friends.getappusers' => 1, + 'friends.getlists' => 1, + 'friends.getmutualfriends' => 1, + 'gifts.get' => 1, + 'groups.get' => 1, + 'groups.getmembers' => 1, + 'intl.gettranslations' => 1, + 'links.get' => 1, + 'notes.get' => 1, + 'notifications.get' => 1, + 'pages.getinfo' => 1, + 'pages.isadmin' => 1, + 'pages.isappadded' => 1, + 'pages.isfan' => 1, + 'permissions.checkavailableapiaccess' => 1, + 'permissions.checkgrantedapiaccess' => 1, + 'photos.get' => 1, + 'photos.getalbums' => 1, + 'photos.gettags' => 1, + 'profile.getinfo' => 1, + 'profile.getinfooptions' => 1, + 'stream.get' => 1, + 'stream.getcomments' => 1, + 'stream.getfilters' => 1, + 'users.getinfo' => 1, + 'users.getloggedinuser' => 1, + 'users.getstandardinfo' => 1, + 'users.hasapppermission' => 1, + 'users.isappuser' => 1, + 'users.isverified' => 1, + 'video.getuploadlimits' => 1); + $name = 'api'; + if (isset($READ_ONLY_CALLS[strtolower($method)])) { + $name = 'api_read'; + } else if (strtolower($method) == 'video.upload') { + $name = 'api_video'; + } + return self::getUrl($name, 'restserver.php'); + } + + /** + * Build the URL for given domain alias, path and parameters. + * + * @param $name string The name of the domain + * @param $path string Optional path (without a leading slash) + * @param $params array Optional query parameters + * + * @return string The URL for the given parameters + */ + protected function getUrl($name, $path='', $params=array()) { + $url = self::$DOMAIN_MAP[$name]; + if ($path) { + if ($path[0] === '/') { + $path = substr($path, 1); + } + $url .= $path; + } + if ($params) { + $url .= '?' . http_build_query($params, null, '&'); + } + + return $url; + } + + protected function getHttpHost() { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { + return $_SERVER['HTTP_X_FORWARDED_HOST']; + } + return $_SERVER['HTTP_HOST']; + } + + protected function getHttpProtocol() { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { + return 'https'; + } + return 'http'; + } + /*apache + variants specific way of checking for https*/ + if (isset($_SERVER['HTTPS']) && + ($_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] == 1)) { + return 'https'; + } + /*nginx way of checking for https*/ + if (isset($_SERVER['SERVER_PORT']) && + ($_SERVER['SERVER_PORT'] === '443')) { + return 'https'; + } + return 'http'; + } + + /** + * Get the base domain used for the cookie. + */ + protected function getBaseDomain() { + // The base domain is stored in the metadata cookie if not we fallback + // to the current hostname + $metadata = $this->getMetadataCookie(); + if (array_key_exists('base_domain', $metadata) && + !empty($metadata['base_domain'])) { + return trim($metadata['base_domain'], '.'); + } + return $this->getHttpHost(); + } + + /** + + /** + * Returns the Current URL, stripping it of known FB parameters that should + * not persist. + * + * @return string The current URL + */ + protected function getCurrentUrl() { + $protocol = $this->getHttpProtocol() . '://'; + $host = $this->getHttpHost(); + $currentUrl = $protocol.$host.$_SERVER['REQUEST_URI']; + $parts = parse_url($currentUrl); + + $query = ''; + if (!empty($parts['query'])) { + // drop known fb params + $params = explode('&', $parts['query']); + $retained_params = array(); + foreach ($params as $param) { + if ($this->shouldRetainParam($param)) { + $retained_params[] = $param; + } + } + + if (!empty($retained_params)) { + $query = '?'.implode($retained_params, '&'); + } + } + + // use port if non default + $port = + isset($parts['port']) && + (($protocol === 'http://' && $parts['port'] !== 80) || + ($protocol === 'https://' && $parts['port'] !== 443)) + ? ':' . $parts['port'] : ''; + + // rebuild + return $protocol . $parts['host'] . $port . $parts['path'] . $query; + } + + /** + * Returns true if and only if the key or key/value pair should + * be retained as part of the query string. This amounts to + * a brute-force search of the very small list of Facebook-specific + * params that should be stripped out. + * + * @param string $param A key or key/value pair within a URL's query (e.g. + * 'foo=a', 'foo=', or 'foo'. + * + * @return boolean + */ + protected function shouldRetainParam($param) { + foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) { + if (strpos($param, $drop_query_param.'=') === 0) { + return false; + } + } + + return true; + } + + /** + * Analyzes the supplied result to see if it was thrown + * because the access token is no longer valid. If that is + * the case, then we destroy the session. + * + * @param $result array A record storing the error message returned + * by a failed API call. + */ + protected function throwAPIException($result) { + $e = new FacebookApiException($result); + switch ($e->getType()) { + // OAuth 2.0 Draft 00 style + case 'OAuthException': + // OAuth 2.0 Draft 10 style + case 'invalid_token': + // REST server errors are just Exceptions + case 'Exception': + $message = $e->getMessage(); + if ((strpos($message, 'Error validating access token') !== false) || + (strpos($message, 'Invalid OAuth access token') !== false) || + (strpos($message, 'An active access token must be used') !== false) + ) { + $this->destroySession(); + } + break; + } + + throw $e; + } + + + /** + * Prints to the error log if you aren't in command line mode. + * + * @param string $msg Log message + */ + protected static function errorLog($msg) { + // disable error log if we are running in a CLI environment + // @codeCoverageIgnoreStart + if (php_sapi_name() != 'cli') { + error_log($msg); + } + // uncomment this if you want to see the errors on the page + // print 'error_log: '.$msg."\n"; + // @codeCoverageIgnoreEnd + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * No padded = + * + * @param string $input base64UrlEncoded string + * @return string + */ + protected static function base64UrlDecode($input) { + return base64_decode(strtr($input, '-_', '+/')); + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * + * @param string $input string + * @return string base64Url encoded string + */ + protected static function base64UrlEncode($input) { + $str = strtr(base64_encode($input), '+/', '-_'); + $str = str_replace('=', '', $str); + return $str; + } + + /** + * Destroy the current session + */ + public function destroySession() { + $this->accessToken = null; + $this->signedRequest = null; + $this->user = null; + $this->clearAllPersistentData(); + + // Javascript sets a cookie that will be used in getSignedRequest that we + // need to clear if we can + $cookie_name = $this->getSignedRequestCookieName(); + if (array_key_exists($cookie_name, $_COOKIE)) { + unset($_COOKIE[$cookie_name]); + if (!headers_sent()) { + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.'.$base_domain); + } else { + // @codeCoverageIgnoreStart + self::errorLog( + 'There exists a cookie that we wanted to clear that we couldn\'t '. + 'clear because headers was already sent. Make sure to do the first '. + 'API call before outputing anything.' + ); + // @codeCoverageIgnoreEnd + } + } + } + + /** + * Parses the metadata cookie that our Javascript API set + * + * @return an array mapping key to value + */ + protected function getMetadataCookie() { + $cookie_name = $this->getMetadataCookieName(); + if (!array_key_exists($cookie_name, $_COOKIE)) { + return array(); + } + + // The cookie value can be wrapped in "-characters so remove them + $cookie_value = trim($_COOKIE[$cookie_name], '"'); + + if (empty($cookie_value)) { + return array(); + } + + $parts = explode('&', $cookie_value); + $metadata = array(); + foreach ($parts as $part) { + $pair = explode('=', $part, 2); + if (!empty($pair[0])) { + $metadata[urldecode($pair[0])] = + (count($pair) > 1) ? urldecode($pair[1]) : ''; + } + } + + return $metadata; + } + + protected static function isAllowedDomain($big, $small) { + if ($big === $small) { + return true; + } + return self::endsWith($big, '.'.$small); + } + + protected static function endsWith($big, $small) { + $len = strlen($small); + if ($len === 0) { + return true; + } + return substr($big, -$len) === $small; + } + + /** + * Each of the following four methods should be overridden in + * a concrete subclass, as they are in the provided Facebook class. + * The Facebook class uses PHP sessions to provide a primitive + * persistent store, but another subclass--one that you implement-- + * might use a database, memcache, or an in-memory cache. + * + * @see Facebook + */ + + /** + * Stores the given ($key, $value) pair, so that future calls to + * getPersistentData($key) return $value. This call may be in another request. + * + * @param string $key + * @param array $value + * + * @return void + */ + abstract protected function setPersistentData($key, $value); + + /** + * Get the data for $key, persisted by BaseFacebook::setPersistentData() + * + * @param string $key The key of the data to retrieve + * @param boolean $default The default value to return if $key is not found + * + * @return mixed + */ + abstract protected function getPersistentData($key, $default = false); + + /** + * Clear the data with $key from the persistent storage + * + * @param string $key + * @return void + */ + abstract protected function clearPersistentData($key); + + /** + * Clear all data from the persistent storage + * + * @return void + */ + abstract protected function clearAllPersistentData(); +} diff --git a/includes/social_connect/facebook/facebook.php b/includes/social_connect/facebook/facebook.php new file mode 100644 index 00000000..213e7d29 --- /dev/null +++ b/includes/social_connect/facebook/facebook.php @@ -0,0 +1,176 @@ +initSharedSession(); + } + } + + protected static $kSupportedKeys = + array('state', 'code', 'access_token', 'user_id'); + + protected function initSharedSession() { + $cookie_name = $this->getSharedSessionCookieName(); + if (isset($_COOKIE[$cookie_name])) { + $data = $this->parseSignedRequest($_COOKIE[$cookie_name]); + if ($data && !empty($data['domain']) && + self::isAllowedDomain($this->getHttpHost(), $data['domain'])) { + // good case + $this->sharedSessionID = $data['id']; + return; + } + // ignoring potentially unreachable data + } + // evil/corrupt/missing case + $base_domain = $this->getBaseDomain(); + $this->sharedSessionID = md5(uniqid(mt_rand(), true)); + $cookie_value = $this->makeSignedRequest( + array( + 'domain' => $base_domain, + 'id' => $this->sharedSessionID, + ) + ); + $_COOKIE[$cookie_name] = $cookie_value; + if (!headers_sent()) { + $expire = time() + self::FBSS_COOKIE_EXPIRE; + setcookie($cookie_name, $cookie_value, $expire, '/', '.'.$base_domain); + } else { + // @codeCoverageIgnoreStart + self::errorLog( + 'Shared session ID cookie could not be set! You must ensure you '. + 'create the Facebook instance before headers have been sent. This '. + 'will cause authentication issues after the first request.' + ); + // @codeCoverageIgnoreEnd + } + } + + /** + * Provides the implementations of the inherited abstract + * methods. The implementation uses PHP sessions to maintain + * a store for authorization codes, user ids, CSRF states, and + * access tokens. + */ + protected function setPersistentData($key, $value) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to setPersistentData.'); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + $_SESSION[$session_var_name] = $value; + } + + protected function getPersistentData($key, $default = false) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to getPersistentData.'); + return $default; + } + + $session_var_name = $this->constructSessionVariableName($key); + return isset($_SESSION[$session_var_name]) ? + $_SESSION[$session_var_name] : $default; + } + + protected function clearPersistentData($key) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to clearPersistentData.'); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + unset($_SESSION[$session_var_name]); + } + + protected function clearAllPersistentData() { + foreach (self::$kSupportedKeys as $key) { + $this->clearPersistentData($key); + } + if ($this->sharedSessionID) { + $this->deleteSharedSessionCookie(); + } + } + + protected function deleteSharedSessionCookie() { + $cookie_name = $this->getSharedSessionCookieName(); + unset($_COOKIE[$cookie_name]); + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.'.$base_domain); + } + + protected function getSharedSessionCookieName() { + return self::FBSS_COOKIE_NAME . '_' . $this->getAppId(); + } + + protected function constructSessionVariableName($key) { + $parts = array('fb', $this->getAppId(), $key); + if ($this->sharedSessionID) { + array_unshift($parts, $this->sharedSessionID); + } + return implode('_', $parts); + } +} + +?> \ No newline at end of file diff --git a/includes/social_connect/facebook/fb_ca_chain_bundle.crt b/includes/social_connect/facebook/fb_ca_chain_bundle.crt new file mode 100644 index 00000000..969239ff --- /dev/null +++ b/includes/social_connect/facebook/fb_ca_chain_bundle.crt @@ -0,0 +1,3920 @@ +## +## ca-bundle.crt -- Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Thu Oct 18 19:05:59 2012 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## + +# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.86 $ $Date: 2012/10/18 16:26:52 $ + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 1 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy +MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE +NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i +o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq +kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4 +RbyhkwS7hp86W0N6w4pl +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 3 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy +MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD +VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS +xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi +up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1 +mPnHfxsb1gYgAlihw6ID +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd +k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq +WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM +XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC +lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx +nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC +wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA +ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK +1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk +LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +ValiCert Class 1 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy +MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi +GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm +DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG +lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX +icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP +Orf1LXLI +-----END CERTIFICATE----- + +ValiCert Class 2 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC +CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf +ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ +SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV +UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 +W9ViH0Pd +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E +bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ +rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+ +Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB +FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N +y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 +ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h +a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc +D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y +azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug +b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6 +tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7 +C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS +0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs +Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0 +JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf +0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU +sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx +JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j +GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Secure Server CA +============================ +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl +ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG +A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi +eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p +dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ +aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 +gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw +ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw +CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l +dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw +NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow +HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA +BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN +Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 +n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC +AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER +gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B +AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS +o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z +2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX +OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE +ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y +MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT +DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn +2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5 +BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx +JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e +uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1 +jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia +78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm +V+GRMOrN +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +UTN-USER First-Network Applications +=================================== +-----BEGIN CERTIFICATE----- +MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp +BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5 +WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T +YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB +cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug +mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj +DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu +Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi +P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE +j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w +HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j +cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G +CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y +IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK +RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp +xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq +DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE +-----END CERTIFICATE----- + +America Online Root Certification Authority 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG +v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z +DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh +sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP +8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z +o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf +GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF +VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft +3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +America Online Root Certification Authority 2 +============================================= +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en +fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 +f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO +qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN +RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 +gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn +6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid +FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 +Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj +B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op +aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY +T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p ++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg +JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy +zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO +ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh +1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf +GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff +Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP +cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 1 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw +NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88 +7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9 +EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl +0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645 +2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa +HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT +iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9 +28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV +yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR +vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P +qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z +IRlXvVWa +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +TDC Internet Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE +ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx +NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu +ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j +xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL +znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc +5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 +otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI +AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM +VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM +MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC +AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe +UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G +CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m +gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ +2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb +O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU +Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l +-----END CERTIFICATE----- + +TDC OCES Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE +ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5 +MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH +nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0 +zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV +iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde +dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO +3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB +5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k +ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm +cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp +Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x +LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM +MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm +aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy +MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647 ++RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6 +NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4 +A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc +A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9 +AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1 +AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Email Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0 +BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05 +OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx +FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx +ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz +dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx +B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8 +om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG +TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl +yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE +AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV +HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll +bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH +AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne +xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+ +5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV +NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ +w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +UTN USERFirst Object Root CA +============================ +-----BEGIN CERTIFICATE----- +MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb +BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz +NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx +HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy +dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR +loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ +w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu +lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7 +RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL +BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8 +ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly +c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw +DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw +NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO +PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE +qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG +hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Qualified (Class QA) Root +================================= +-----BEGIN CERTIFICATE----- +MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn +eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0 +bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0 +LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0 +dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP +aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV +CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e +8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb +m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ +0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM +0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2 +YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh +biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p +a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz +YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg +YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg +ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov +L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr +Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0 +aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg +YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0 +IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3 +DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN +wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg +W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc +R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR +5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +NetLock Business (Class B) Root +=============================== +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg +VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD +VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv +bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg +VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB +iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S +o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr +1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ +RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh +dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 +ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv +c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg +YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz +Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA +bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl +IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 +YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj +cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM +43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR +stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +NetLock Express (Class C) Root +============================== +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ +BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j +ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z +W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 +euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw +DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN +RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn +YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB +IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i +aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 +ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y +emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k +IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ +UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg +YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 +xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW +gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Firmaprofesional Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT +GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp +Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA +ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL +MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT +OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2 +ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V +j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH +lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf +3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8 +NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww +KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG +AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD +ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq +u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf +wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm +7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG +VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA= +-----END CERTIFICATE----- + +Wells Fargo Root CA +=================== +-----BEGIN CERTIFICATE----- +MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl +bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv +MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX +x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3 +E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5 +OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j +sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj +YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF +BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD +ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv +m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R +OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx +x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023 +tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Platinum CA - G2 +========================== +-----BEGIN CERTIFICATE----- +MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw +HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM +U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu +669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF +eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne +WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo +j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6 +8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T +aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy +domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D ++m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV +CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv +zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW +IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1 +Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3 +NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4 +U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8 +KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl +9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B +aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs +OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY +Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci +IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +S-TRUST Authentication and Encryption Root CA 2005 PN +===================================================== +-----BEGIN CERTIFICATE----- +MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh +cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT +LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w +NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk +ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj +aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp +b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob +4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL +g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf +eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3 +KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB +/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv +bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU +D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD +pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08 +P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA +nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit +F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b +Hz2eBIPdltkdOpQ= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. +====================================== +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT +AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg +LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w +HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ +U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh +IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN +yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU +2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 +4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP +2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm +8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf +HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa +Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK +5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b +czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g +ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF +BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug +cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf +AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX +EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v +/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 +MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 +3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk +eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f +/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h +RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU +Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 3 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw +MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W +yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo +6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ +uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk +2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE +O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 +yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 +IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal +092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc +5A== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign CA +========== +-----BEGIN CERTIFICATE----- +MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD +EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy +MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp +Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q +ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy +P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN +GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk +YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM +rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy +oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P +AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+ +VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2 +QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI +mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb +/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG +zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U +AGegcQCCSA== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) FÅ‘tanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ +VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2 +yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa +XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n +0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ +RjXZ+Hxb +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi +=================================================== +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz +ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 +MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 +cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u +aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY +8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y +jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI +JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk +9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG +SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d +F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq +D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 +Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq +fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +TC TrustCenter Universal CA III +=============================== +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe +Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU +QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex +KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt +QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO +juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut +CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1 +M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G +A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA +g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+ +KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK +BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq +woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +TÃœRKTRUST Elektronik Sertifika Hizmet SaÄŸlayıcısı +====================================================== +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- diff --git a/includes/social_connect/facebook/index.html b/includes/social_connect/facebook/index.html new file mode 100644 index 00000000..7714370b --- /dev/null +++ b/includes/social_connect/facebook/index.html @@ -0,0 +1,10 @@ + + + +Icy Phoenix + + +






    + + + \ No newline at end of file diff --git a/includes/social_connect/facebook_app/base_facebook.php b/includes/social_connect/facebook_app/base_facebook.php new file mode 100644 index 00000000..95e18fb1 --- /dev/null +++ b/includes/social_connect/facebook_app/base_facebook.php @@ -0,0 +1,1530 @@ + + */ +class FacebookApiException extends Exception +{ + /** + * The result from the API server that represents the exception information. + * + * @var mixed + */ + protected $result; + + /** + * Make a new API Exception with the given result. + * + * @param array $result The result from the API server + */ + public function __construct($result) { + $this->result = $result; + + $code = 0; + if (isset($result['error_code']) && is_int($result['error_code'])) { + $code = $result['error_code']; + } + + if (isset($result['error_description'])) { + // OAuth 2.0 Draft 10 style + $msg = $result['error_description']; + } else if (isset($result['error']) && is_array($result['error'])) { + // OAuth 2.0 Draft 00 style + $msg = $result['error']['message']; + } else if (isset($result['error_msg'])) { + // Rest server style + $msg = $result['error_msg']; + } else { + $msg = 'Unknown Error. Check getResult()'; + } + + parent::__construct($msg, $code); + } + + /** + * Return the associated result object returned by the API server. + * + * @return array The result from the API server + */ + public function getResult() { + return $this->result; + } + + /** + * Returns the associated type for the error. This will default to + * 'Exception' when a type is not available. + * + * @return string + */ + public function getType() { + if (isset($this->result['error'])) { + $error = $this->result['error']; + if (is_string($error)) { + // OAuth 2.0 Draft 10 style + return $error; + } else if (is_array($error)) { + // OAuth 2.0 Draft 00 style + if (isset($error['type'])) { + return $error['type']; + } + } + } + + return 'Exception'; + } + + /** + * To make debugging easier. + * + * @return string The string representation of the error + */ + public function __toString() { + $str = $this->getType() . ': '; + if ($this->code != 0) { + $str .= $this->code . ': '; + } + return $str . $this->message; + } +} + +/** + * Provides access to the Facebook Platform. This class provides + * a majority of the functionality needed, but the class is abstract + * because it is designed to be sub-classed. The subclass must + * implement the four abstract methods listed at the bottom of + * the file. + * + * @author Naitik Shah + */ +abstract class BaseFacebook +{ + /** + * Version. + */ + const VERSION = '3.2.3'; + + /** + * Signed Request Algorithm. + */ + const SIGNED_REQUEST_ALGORITHM = 'HMAC-SHA256'; + + /** + * Default options for curl. + * + * @var array + */ + public static $CURL_OPTS = array( + CURLOPT_CONNECTTIMEOUT => 10, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 60, + CURLOPT_USERAGENT => 'facebook-php-3.2', + ); + + /** + * List of query parameters that get automatically dropped when rebuilding + * the current URL. + * + * @var array + */ + protected static $DROP_QUERY_PARAMS = array( + 'code', + 'state', + 'signed_request', + ); + + /** + * Maps aliases to Facebook domains. + * + * @var array + */ + public static $DOMAIN_MAP = array( + 'api' => 'https://api.facebook.com/', + 'api_video' => 'https://api-video.facebook.com/', + 'api_read' => 'https://api-read.facebook.com/', + 'graph' => 'https://graph.facebook.com/', + 'graph_video' => 'https://graph-video.facebook.com/', + 'www' => 'https://www.facebook.com/', + ); + + /** + * The Application ID. + * + * @var string + */ + protected $appId; + + /** + * The Application App Secret. + * + * @var string + */ + protected $appSecret; + + /** + * The ID of the Facebook user, or 0 if the user is logged out. + * + * @var integer + */ + protected $user; + + /** + * The data from the signed_request token. + * + * @var string + */ + protected $signedRequest; + + /** + * A CSRF state variable to assist in the defense against CSRF attacks. + * + * @var string + */ + protected $state; + + /** + * The OAuth access token received in exchange for a valid authorization + * code. null means the access token has yet to be determined. + * + * @var string + */ + protected $accessToken = null; + + /** + * Indicates if the CURL based @ syntax for file uploads is enabled. + * + * @var boolean + */ + protected $fileUploadSupport = false; + + /** + * Indicates if we trust HTTP_X_FORWARDED_* headers. + * + * @var boolean + */ + protected $trustForwarded = false; + + /** + * Indicates if signed_request is allowed in query parameters. + * + * @var boolean + */ + protected $allowSignedRequest = true; + + /** + * Initialize a Facebook Application. + * + * The configuration: + * - appId: the application ID + * - secret: the application secret + * - fileUpload: (optional) boolean indicating if file uploads are enabled + * - allowSignedRequest: (optional) boolean indicating if signed_request is + * allowed in query parameters or POST body. Should be + * false for non-canvas apps. Defaults to true. + * + * @param array $config The application configuration + */ + public function __construct($config) { + $this->setAppId($config['appId']); + $this->setAppSecret($config['secret']); + if (isset($config['fileUpload'])) { + $this->setFileUploadSupport($config['fileUpload']); + } + if (isset($config['trustForwarded']) && $config['trustForwarded']) { + $this->trustForwarded = true; + } + if (isset($config['allowSignedRequest']) + && !$config['allowSignedRequest']) { + $this->allowSignedRequest = false; + } + $state = $this->getPersistentData('state'); + if (!empty($state)) { + $this->state = $state; + } + } + + /** + * Set the Application ID. + * + * @param string $appId The Application ID + * + * @return BaseFacebook + */ + public function setAppId($appId) { + $this->appId = $appId; + return $this; + } + + /** + * Get the Application ID. + * + * @return string the Application ID + */ + public function getAppId() { + return $this->appId; + } + + /** + * Set the App Secret. + * + * @param string $apiSecret The App Secret + * + * @return BaseFacebook + * @deprecated Use setAppSecret instead. + * @see setAppSecret() + */ + public function setApiSecret($apiSecret) { + $this->setAppSecret($apiSecret); + return $this; + } + + /** + * Set the App Secret. + * + * @param string $appSecret The App Secret + * + * @return BaseFacebook + */ + public function setAppSecret($appSecret) { + $this->appSecret = $appSecret; + return $this; + } + + /** + * Get the App Secret. + * + * @return string the App Secret + * + * @deprecated Use getAppSecret instead. + * @see getAppSecret() + */ + public function getApiSecret() { + return $this->getAppSecret(); + } + + /** + * Get the App Secret. + * + * @return string the App Secret + */ + public function getAppSecret() { + return $this->appSecret; + } + + /** + * Set the file upload support status. + * + * @param boolean $fileUploadSupport The file upload support status. + * + * @return BaseFacebook + */ + public function setFileUploadSupport($fileUploadSupport) { + $this->fileUploadSupport = $fileUploadSupport; + return $this; + } + + /** + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function getFileUploadSupport() { + return $this->fileUploadSupport; + } + + /** + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + * + * @deprecated Use getFileUploadSupport instead. + * @see getFileUploadSupport() + */ + public function useFileUploadSupport() { + return $this->getFileUploadSupport(); + } + + /** + * Sets the access token for api calls. Use this if you get + * your access token by other means and just want the SDK + * to use it. + * + * @param string $access_token an access token. + * + * @return BaseFacebook + */ + public function setAccessToken($access_token) { + $this->accessToken = $access_token; + return $this; + } + + /** + * Extend an access token, while removing the short-lived token that might + * have been generated via client-side flow. Thanks to http://bit.ly/b0Pt0H + * for the workaround. + */ + public function setExtendedAccessToken() { + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format. + $access_token_response = $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = array( + 'client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'grant_type' => 'fb_exchange_token', + 'fb_exchange_token' => $this->getAccessToken(), + ) + ); + } + catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = array(); + parse_str($access_token_response, $response_params); + + if (!isset($response_params['access_token'])) { + return false; + } + + $this->destroySession(); + + $this->setPersistentData( + 'access_token', $response_params['access_token'] + ); + } + + /** + * Determines the access token that should be used for API calls. + * The first time this is called, $this->accessToken is set equal + * to either a valid user access token, or it's set to the application + * access token if a valid user access token wasn't available. Subsequent + * calls return whatever the first call returned. + * + * @return string The access token + */ + public function getAccessToken() { + if ($this->accessToken !== null) { + // we've done this already and cached it. Just return. + return $this->accessToken; + } + + // first establish access token to be the application + // access token, in case we navigate to the /oauth/access_token + // endpoint, where SOME access token is required. + $this->setAccessToken($this->getApplicationAccessToken()); + $user_access_token = $this->getUserAccessToken(); + if ($user_access_token) { + $this->setAccessToken($user_access_token); + } + + return $this->accessToken; + } + + /** + * Determines and returns the user access token, first using + * the signed request if present, and then falling back on + * the authorization code if present. The intent is to + * return a valid user access token, or false if one is determined + * to not be available. + * + * @return string A valid user access token, or false if one + * could not be determined. + */ + protected function getUserAccessToken() { + // first, consider a signed request if it's supplied. + // if there is a signed request, then it alone determines + // the access token. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + // apps.facebook.com hands the access_token in the signed_request + if (array_key_exists('oauth_token', $signed_request)) { + $access_token = $signed_request['oauth_token']; + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // the JS SDK puts a code in with the redirect_uri of '' + if (array_key_exists('code', $signed_request)) { + $code = $signed_request['code']; + if ($code && $code == $this->getPersistentData('code')) { + // short-circuit if the code we have is the same as the one presented + return $this->getPersistentData('access_token'); + } + + $access_token = $this->getAccessTokenFromCode($code, ''); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + } + + // signed request states there's no access token, so anything + // stored should be cleared. + $this->clearAllPersistentData(); + return false; // respect the signed request's data, even + // if there's an authorization code or something else + } + + $code = $this->getCode(); + if ($code && $code != $this->getPersistentData('code')) { + $access_token = $this->getAccessTokenFromCode($code); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // code was bogus, so everything based on it should be invalidated. + $this->clearAllPersistentData(); + return false; + } + + // as a fallback, just return whatever is in the persistent + // store, knowing nothing explicit (signed request, authorization + // code, etc.) was present to shadow it (or we saw a code in $_REQUEST, + // but it's the same as what's in the persistent store) + return $this->getPersistentData('access_token'); + } + + /** + * Retrieve the signed request, either from a request parameter or, + * if not present, from a cookie. + * + * @return string the signed request, if available, or null otherwise. + */ + public function getSignedRequest() { + if (!$this->signedRequest) { + if ($this->allowSignedRequest && !empty($_REQUEST['signed_request'])) { + $this->signedRequest = $this->parseSignedRequest( + $_REQUEST['signed_request'] + ); + } else if (!empty($_COOKIE[$this->getSignedRequestCookieName()])) { + $this->signedRequest = $this->parseSignedRequest( + $_COOKIE[$this->getSignedRequestCookieName()]); + } + } + return $this->signedRequest; + } + + /** + * Get the UID of the connected user, or 0 + * if the Facebook user is not connected. + * + * @return string the UID if available. + */ + public function getUser() { + if ($this->user !== null) { + // we've already determined this and cached the value. + return $this->user; + } + + return $this->user = $this->getUserFromAvailableData(); + } + + /** + * Determines the connected user by first examining any signed + * requests, then considering an authorization code, and then + * falling back to any persistent store storing the user. + * + * @return integer The id of the connected Facebook user, + * or 0 if no such user exists. + */ + protected function getUserFromAvailableData() { + // if a signed request is supplied, then it solely determines + // who the user is. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + if (array_key_exists('user_id', $signed_request)) { + $user = $signed_request['user_id']; + + if($user != $this->getPersistentData('user_id')){ + $this->clearAllPersistentData(); + } + + $this->setPersistentData('user_id', $signed_request['user_id']); + return $user; + } + + // if the signed request didn't present a user id, then invalidate + // all entries in any persistent store. + $this->clearAllPersistentData(); + return 0; + } + + $user = $this->getPersistentData('user_id', $default = 0); + $persisted_access_token = $this->getPersistentData('access_token'); + + // use access_token to fetch user id if we have a user access_token, or if + // the cached access token has changed. + $access_token = $this->getAccessToken(); + if ($access_token && + $access_token != $this->getApplicationAccessToken() && + !($user && $persisted_access_token == $access_token)) { + $user = $this->getUserFromAccessToken(); + if ($user) { + $this->setPersistentData('user_id', $user); + } else { + $this->clearAllPersistentData(); + } + } + + return $user; + } + + /** + * Get a Login URL for use with redirects. By default, full page redirect is + * assumed. If you are using the generated URL with a window.open() call in + * JavaScript, you can pass in display=popup as part of the $params. + * + * The parameters: + * - redirect_uri: the url to go to after a successful login + * - scope: comma separated list of requested extended perms + * + * @param array $params Provide custom parameters + * @return string The URL for the login flow + */ + public function getLoginUrl($params=array()) { + $this->establishCSRFTokenState(); + $currentUrl = $this->getCurrentUrl(); + + // if 'scope' is passed as an array, convert to comma separated list + $scopeParams = isset($params['scope']) ? $params['scope'] : null; + if ($scopeParams && is_array($scopeParams)) { + $params['scope'] = implode(',', $scopeParams); + } + + return $this->getUrl( + 'www', + 'dialog/oauth', + array_merge( + array( + 'client_id' => $this->getAppId(), + 'redirect_uri' => $currentUrl, // possibly overwritten + 'state' => $this->state, + 'sdk' => 'php-sdk-'.self::VERSION + ), + $params + )); + } + + /** + * Get a Logout URL suitable for use with redirects. + * + * The parameters: + * - next: the url to go to after a successful logout + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLogoutUrl($params=array()) { + return $this->getUrl( + 'www', + 'logout.php', + array_merge(array( + 'next' => $this->getCurrentUrl(), + 'access_token' => $this->getUserAccessToken(), + ), $params) + ); + } + + /** + * Make an API call. + * + * @return mixed The decoded response + */ + public function api(/* polymorphic */) { + $args = func_get_args(); + if (is_array($args[0])) { + return $this->_restserver($args[0]); + } else { + return call_user_func_array(array($this, '_graph'), $args); + } + } + + /** + * Constructs and returns the name of the cookie that + * potentially houses the signed request for the app user. + * The cookie is not set by the BaseFacebook class, but + * it may be set by the JavaScript SDK. + * + * @return string the name of the cookie that would house + * the signed request value. + */ + protected function getSignedRequestCookieName() { + return 'fbsr_'.$this->getAppId(); + } + + /** + * Constructs and returns the name of the cookie that potentially contain + * metadata. The cookie is not set by the BaseFacebook class, but it may be + * set by the JavaScript SDK. + * + * @return string the name of the cookie that would house metadata. + */ + protected function getMetadataCookieName() { + return 'fbm_'.$this->getAppId(); + } + + /** + * Get the authorization code from the query parameters, if it exists, + * and otherwise return false to signal no authorization code was + * discoverable. + * + * @return mixed The authorization code, or false if the authorization + * code could not be determined. + */ + protected function getCode() { + if (!isset($_REQUEST['code']) || !isset($_REQUEST['state'])) { + return false; + } + if ($this->state === $_REQUEST['state']) { + // CSRF state has done its job, so clear it + $this->state = null; + $this->clearPersistentData('state'); + return $_REQUEST['code']; + } + self::errorLog('CSRF state token does not match one provided.'); + + return false; + } + + /** + * Retrieves the UID with the understanding that + * $this->accessToken has already been set and is + * seemingly legitimate. It relies on Facebook's Graph API + * to retrieve user information and then extract + * the user ID. + * + * @return integer Returns the UID of the Facebook user, or 0 + * if the Facebook user could not be determined. + */ + protected function getUserFromAccessToken() { + try { + $user_info = $this->api('/me'); + return $user_info['id']; + } catch (FacebookApiException $e) { + return 0; + } + } + + /** + * Returns the access token that should be used for logged out + * users when no authorization code is available. + * + * @return string The application access token, useful for gathering + * public information about users and applications. + */ + public function getApplicationAccessToken() { + return $this->appId.'|'.$this->appSecret; + } + + /** + * Lays down a CSRF state token for this process. + * + * @return void + */ + protected function establishCSRFTokenState() { + if ($this->state === null) { + $this->state = md5(uniqid(mt_rand(), true)); + $this->setPersistentData('state', $this->state); + } + } + + /** + * Retrieves an access token for the given authorization code + * (previously generated from www.facebook.com on behalf of + * a specific user). The authorization code is sent to graph.facebook.com + * and a legitimate access token is generated provided the access token + * and the user for which it was generated all match, and the user is + * either logged in to Facebook or has granted an offline access permission. + * + * @param string $code An authorization code. + * @param string $redirect_uri Optional redirect URI. Default null + * + * @return mixed An access token exchanged for the authorization code, or + * false if an access token could not be generated. + */ + protected function getAccessTokenFromCode($code, $redirect_uri = null) { + if (empty($code)) { + return false; + } + + if ($redirect_uri === null) { + $redirect_uri = $this->getCurrentUrl(); + } + + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format. + $access_token_response = + $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = array('client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'redirect_uri' => $redirect_uri, + 'code' => $code)); + } catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = array(); + parse_str($access_token_response, $response_params); + if (!isset($response_params['access_token'])) { + return false; + } + + return $response_params['access_token']; + } + + /** + * Invoke the old restserver.php endpoint. + * + * @param array $params Method call object + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _restserver($params) { + // generic application level parameters + $params['api_key'] = $this->getAppId(); + $params['format'] = 'json-strings'; + + $result = json_decode($this->_oauthRequest( + $this->getApiUrl($params['method']), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error_code'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + $method = strtolower($params['method']); + if ($method === 'auth.expiresession' || + $method === 'auth.revokeauthorization') { + $this->destroySession(); + } + + return $result; + } + + /** + * Return true if this is video post. + * + * @param string $path The path + * @param string $method The http method (default 'GET') + * + * @return boolean true if this is video post + */ + protected function isVideoPost($path, $method = 'GET') { + if ($method == 'POST' && preg_match("/^(\/)(.+)(\/)(videos)$/", $path)) { + return true; + } + return false; + } + + /** + * Invoke the Graph API. + * + * @param string $path The path (required) + * @param string $method The http method (default 'GET') + * @param array $params The query/post data + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _graph($path, $method = 'GET', $params = array()) { + if (is_array($method) && empty($params)) { + $params = $method; + $method = 'GET'; + } + $params['method'] = $method; // method override as we always do a POST + + if ($this->isVideoPost($path, $method)) { + $domainKey = 'graph_video'; + } else { + $domainKey = 'graph'; + } + + $result = json_decode($this->_oauthRequest( + $this->getUrl($domainKey, $path), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + return $result; + } + + /** + * Make a OAuth Request. + * + * @param string $url The path (required) + * @param array $params The query/post data + * + * @return string The decoded response object + * @throws FacebookApiException + */ + protected function _oauthRequest($url, $params) { + if (!isset($params['access_token'])) { + $params['access_token'] = $this->getAccessToken(); + } + + if (isset($params['access_token']) && !isset($params['appsecret_proof'])) { + $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']); + } + + // json_encode all params values that are not strings + foreach ($params as $key => $value) { + if (!is_string($value) && !($value instanceof CURLFile)) { + $params[$key] = json_encode($value); + } + } + + return $this->makeRequest($url, $params); + } + + /** + * Generate a proof of App Secret + * This is required for all API calls originating from a server + * It is a sha256 hash of the access_token made using the app secret + * + * @param string $access_token The access_token to be hashed (required) + * + * @return string The sha256 hash of the access_token + */ + protected function getAppSecretProof($access_token) { + return hash_hmac('sha256', $access_token, $this->getAppSecret()); + } + + /** + * Makes an HTTP request. This method can be overridden by subclasses if + * developers want to do fancier things or use something other than curl to + * make the request. + * + * @param string $url The URL to make the request to + * @param array $params The parameters to use for the POST body + * @param CurlHandler $ch Initialized curl handle + * + * @return string The response text + */ + protected function makeRequest($url, $params, $ch=null) { + if (!$ch) { + $ch = curl_init(); + } + + $opts = self::$CURL_OPTS; + if ($this->getFileUploadSupport()) { + $opts[CURLOPT_POSTFIELDS] = $params; + } else { + $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); + } + $opts[CURLOPT_URL] = $url; + + // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait + // for 2 seconds if the server does not support this header. + if (isset($opts[CURLOPT_HTTPHEADER])) { + $existing_headers = $opts[CURLOPT_HTTPHEADER]; + $existing_headers[] = 'Expect:'; + $opts[CURLOPT_HTTPHEADER] = $existing_headers; + } else { + $opts[CURLOPT_HTTPHEADER] = array('Expect:'); + } + + curl_setopt_array($ch, $opts); + $result = curl_exec($ch); + + $errno = curl_errno($ch); + // CURLE_SSL_CACERT || CURLE_SSL_CACERT_BADFILE + if ($errno == 60 || $errno == 77) { + self::errorLog('Invalid or no certificate authority found, '. + 'using bundled information'); + curl_setopt($ch, CURLOPT_CAINFO, + dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fb_ca_chain_bundle.crt'); + $result = curl_exec($ch); + } + + // With dual stacked DNS responses, it's possible for a server to + // have IPv6 enabled but not have IPv6 connectivity. If this is + // the case, curl will try IPv4 first and if that fails, then it will + // fall back to IPv6 and the error EHOSTUNREACH is returned by the + // operating system. + if ($result === false && empty($opts[CURLOPT_IPRESOLVE])) { + $matches = array(); + $regex = '/Failed to connect to ([^:].*): Network is unreachable/'; + if (preg_match($regex, curl_error($ch), $matches)) { + if (strlen(@inet_pton($matches[1])) === 16) { + self::errorLog('Invalid IPv6 configuration on server, '. + 'Please disable or get native IPv6 on your server.'); + self::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; + curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + $result = curl_exec($ch); + } + } + } + + if ($result === false) { + $e = new FacebookApiException(array( + 'error_code' => curl_errno($ch), + 'error' => array( + 'message' => curl_error($ch), + 'type' => 'CurlException', + ), + )); + curl_close($ch); + throw $e; + } + curl_close($ch); + return $result; + } + + /** + * Parses a signed_request and validates the signature. + * + * @param string $signed_request A signed token + * + * @return array The payload inside it or null if the sig is wrong + */ + protected function parseSignedRequest($signed_request) { + + if (!$signed_request || strpos($signed_request, '.') === false) { + self::errorLog('Signed request was invalid!'); + return null; + } + + list($encoded_sig, $payload) = explode('.', $signed_request, 2); + + // decode the data + $sig = self::base64UrlDecode($encoded_sig); + $data = json_decode(self::base64UrlDecode($payload), true); + + if (!isset($data['algorithm']) + || strtoupper($data['algorithm']) !== self::SIGNED_REQUEST_ALGORITHM + ) { + self::errorLog( + 'Unknown algorithm. Expected ' . self::SIGNED_REQUEST_ALGORITHM); + return null; + } + + // check sig + $expected_sig = hash_hmac('sha256', $payload, + $this->getAppSecret(), $raw = true); + + if (strlen($expected_sig) !== strlen($sig)) { + self::errorLog('Bad Signed JSON signature!'); + return null; + } + + $result = 0; + for ($i = 0; $i < strlen($expected_sig); $i++) { + $result |= ord($expected_sig[$i]) ^ ord($sig[$i]); + } + + if ($result == 0) { + return $data; + } else { + self::errorLog('Bad Signed JSON signature!'); + return null; + } + } + + /** + * Makes a signed_request blob using the given data. + * + * @param array $data The data array. + * + * @return string The signed request. + */ + protected function makeSignedRequest($data) { + if (!is_array($data)) { + throw new InvalidArgumentException( + 'makeSignedRequest expects an array. Got: ' . print_r($data, true)); + } + $data['algorithm'] = self::SIGNED_REQUEST_ALGORITHM; + $data['issued_at'] = time(); + $json = json_encode($data); + $b64 = self::base64UrlEncode($json); + $raw_sig = hash_hmac('sha256', $b64, $this->getAppSecret(), $raw = true); + $sig = self::base64UrlEncode($raw_sig); + return $sig.'.'.$b64; + } + + /** + * Build the URL for api given parameters. + * + * @param string $method The method name. + * + * @return string The URL for the given parameters + */ + protected function getApiUrl($method) { + static $READ_ONLY_CALLS = + array('admin.getallocation' => 1, + 'admin.getappproperties' => 1, + 'admin.getbannedusers' => 1, + 'admin.getlivestreamvialink' => 1, + 'admin.getmetrics' => 1, + 'admin.getrestrictioninfo' => 1, + 'application.getpublicinfo' => 1, + 'auth.getapppublickey' => 1, + 'auth.getsession' => 1, + 'auth.getsignedpublicsessiondata' => 1, + 'comments.get' => 1, + 'connect.getunconnectedfriendscount' => 1, + 'dashboard.getactivity' => 1, + 'dashboard.getcount' => 1, + 'dashboard.getglobalnews' => 1, + 'dashboard.getnews' => 1, + 'dashboard.multigetcount' => 1, + 'dashboard.multigetnews' => 1, + 'data.getcookies' => 1, + 'events.get' => 1, + 'events.getmembers' => 1, + 'fbml.getcustomtags' => 1, + 'feed.getappfriendstories' => 1, + 'feed.getregisteredtemplatebundlebyid' => 1, + 'feed.getregisteredtemplatebundles' => 1, + 'fql.multiquery' => 1, + 'fql.query' => 1, + 'friends.arefriends' => 1, + 'friends.get' => 1, + 'friends.getappusers' => 1, + 'friends.getlists' => 1, + 'friends.getmutualfriends' => 1, + 'gifts.get' => 1, + 'groups.get' => 1, + 'groups.getmembers' => 1, + 'intl.gettranslations' => 1, + 'links.get' => 1, + 'notes.get' => 1, + 'notifications.get' => 1, + 'pages.getinfo' => 1, + 'pages.isadmin' => 1, + 'pages.isappadded' => 1, + 'pages.isfan' => 1, + 'permissions.checkavailableapiaccess' => 1, + 'permissions.checkgrantedapiaccess' => 1, + 'photos.get' => 1, + 'photos.getalbums' => 1, + 'photos.gettags' => 1, + 'profile.getinfo' => 1, + 'profile.getinfooptions' => 1, + 'stream.get' => 1, + 'stream.getcomments' => 1, + 'stream.getfilters' => 1, + 'users.getinfo' => 1, + 'users.getloggedinuser' => 1, + 'users.getstandardinfo' => 1, + 'users.hasapppermission' => 1, + 'users.isappuser' => 1, + 'users.isverified' => 1, + 'video.getuploadlimits' => 1); + $name = 'api'; + if (isset($READ_ONLY_CALLS[strtolower($method)])) { + $name = 'api_read'; + } else if (strtolower($method) == 'video.upload') { + $name = 'api_video'; + } + return self::getUrl($name, 'restserver.php'); + } + + /** + * Build the URL for given domain alias, path and parameters. + * + * @param string $name The name of the domain + * @param string $path Optional path (without a leading slash) + * @param array $params Optional query parameters + * + * @return string The URL for the given parameters + */ + protected function getUrl($name, $path='', $params=array()) { + $url = self::$DOMAIN_MAP[$name]; + if ($path) { + if ($path[0] === '/') { + $path = substr($path, 1); + } + $url .= $path; + } + if ($params) { + $url .= '?' . http_build_query($params, null, '&'); + } + + return $url; + } + + /** + * Returns the HTTP Host + * + * @return string The HTTP Host + */ + protected function getHttpHost() { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { + $forwardProxies = explode(',', $_SERVER['HTTP_X_FORWARDED_HOST']); + if (!empty($forwardProxies)) { + return $forwardProxies[0]; + } + } + return $_SERVER['HTTP_HOST']; + } + + /** + * Returns the HTTP Protocol + * + * @return string The HTTP Protocol + */ + protected function getHttpProtocol() { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { + return 'https'; + } + return 'http'; + } + /*apache + variants specific way of checking for https*/ + if (isset($_SERVER['HTTPS']) && + ($_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] == 1)) { + return 'https'; + } + /*nginx way of checking for https*/ + if (isset($_SERVER['SERVER_PORT']) && + ($_SERVER['SERVER_PORT'] === '443')) { + return 'https'; + } + return 'http'; + } + + /** + * Returns the base domain used for the cookie. + * + * @return string The base domain + */ + protected function getBaseDomain() { + // The base domain is stored in the metadata cookie if not we fallback + // to the current hostname + $metadata = $this->getMetadataCookie(); + if (array_key_exists('base_domain', $metadata) && + !empty($metadata['base_domain'])) { + return trim($metadata['base_domain'], '.'); + } + return $this->getHttpHost(); + } + + /** + * Returns the Current URL, stripping it of known FB parameters that should + * not persist. + * + * @return string The current URL + */ + protected function getCurrentUrl() { + $protocol = $this->getHttpProtocol() . '://'; + $host = $this->getHttpHost(); + $currentUrl = $protocol.$host.$_SERVER['REQUEST_URI']; + $parts = parse_url($currentUrl); + + $query = ''; + if (!empty($parts['query'])) { + // drop known fb params + $params = explode('&', $parts['query']); + $retained_params = array(); + foreach ($params as $param) { + if ($this->shouldRetainParam($param)) { + $retained_params[] = $param; + } + } + + if (!empty($retained_params)) { + $query = '?'.implode($retained_params, '&'); + } + } + + // use port if non default + $port = + isset($parts['port']) && + (($protocol === 'http://' && $parts['port'] !== 80) || + ($protocol === 'https://' && $parts['port'] !== 443)) + ? ':' . $parts['port'] : ''; + + // rebuild + return $protocol . $parts['host'] . $port . $parts['path'] . $query; + } + + /** + * Returns true if and only if the key or key/value pair should + * be retained as part of the query string. This amounts to + * a brute-force search of the very small list of Facebook-specific + * params that should be stripped out. + * + * @param string $param A key or key/value pair within a URL's query (e.g. + * 'foo=a', 'foo=', or 'foo'. + * + * @return boolean + */ + protected function shouldRetainParam($param) { + foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) { + if ($param === $drop_query_param || + strpos($param, $drop_query_param.'=') === 0) { + return false; + } + } + + return true; + } + + /** + * Analyzes the supplied result to see if it was thrown + * because the access token is no longer valid. If that is + * the case, then we destroy the session. + * + * @param array $result A record storing the error message returned + * by a failed API call. + */ + protected function throwAPIException($result) { + $e = new FacebookApiException($result); + switch ($e->getType()) { + // OAuth 2.0 Draft 00 style + case 'OAuthException': + // OAuth 2.0 Draft 10 style + case 'invalid_token': + // REST server errors are just Exceptions + case 'Exception': + $message = $e->getMessage(); + if ((strpos($message, 'Error validating access token') !== false) || + (strpos($message, 'Invalid OAuth access token') !== false) || + (strpos($message, 'An active access token must be used') !== false) + ) { + $this->destroySession(); + } + break; + } + + throw $e; + } + + + /** + * Prints to the error log if you aren't in command line mode. + * + * @param string $msg Log message + */ + protected static function errorLog($msg) { + // disable error log if we are running in a CLI environment + // @codeCoverageIgnoreStart + if (php_sapi_name() != 'cli') { + error_log($msg); + } + // uncomment this if you want to see the errors on the page + // print 'error_log: '.$msg."\n"; + // @codeCoverageIgnoreEnd + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * No padded = + * + * @param string $input base64UrlEncoded input + * + * @return string The decoded string + */ + protected static function base64UrlDecode($input) { + return base64_decode(strtr($input, '-_', '+/')); + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * + * @param string $input The input to encode + * @return string The base64Url encoded input, as a string. + */ + protected static function base64UrlEncode($input) { + $str = strtr(base64_encode($input), '+/', '-_'); + $str = str_replace('=', '', $str); + return $str; + } + + /** + * Destroy the current session + */ + public function destroySession() { + $this->accessToken = null; + $this->signedRequest = null; + $this->user = null; + $this->clearAllPersistentData(); + + // Javascript sets a cookie that will be used in getSignedRequest that we + // need to clear if we can + $cookie_name = $this->getSignedRequestCookieName(); + if (array_key_exists($cookie_name, $_COOKIE)) { + unset($_COOKIE[$cookie_name]); + if (!headers_sent()) { + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.'.$base_domain); + } else { + // @codeCoverageIgnoreStart + self::errorLog( + 'There exists a cookie that we wanted to clear that we couldn\'t '. + 'clear because headers was already sent. Make sure to do the first '. + 'API call before outputing anything.' + ); + // @codeCoverageIgnoreEnd + } + } + } + + /** + * Parses the metadata cookie that our Javascript API set + * + * @return array an array mapping key to value + */ + protected function getMetadataCookie() { + $cookie_name = $this->getMetadataCookieName(); + if (!array_key_exists($cookie_name, $_COOKIE)) { + return array(); + } + + // The cookie value can be wrapped in "-characters so remove them + $cookie_value = trim($_COOKIE[$cookie_name], '"'); + + if (empty($cookie_value)) { + return array(); + } + + $parts = explode('&', $cookie_value); + $metadata = array(); + foreach ($parts as $part) { + $pair = explode('=', $part, 2); + if (!empty($pair[0])) { + $metadata[urldecode($pair[0])] = + (count($pair) > 1) ? urldecode($pair[1]) : ''; + } + } + + return $metadata; + } + + /** + * Finds whether the given domain is allowed or not + * + * @param string $big The value to be checked against $small + * @param string $small The input string + * + * @return boolean Returns TRUE if $big matches $small + */ + protected static function isAllowedDomain($big, $small) { + if ($big === $small) { + return true; + } + return self::endsWith($big, '.'.$small); + } + + /** + * Checks if $big string ends with $small string + * + * @param string $big The value to be checked against $small + * @param string $small The input string + * + * @return boolean TRUE if $big ends with $small + */ + protected static function endsWith($big, $small) { + $len = strlen($small); + if ($len === 0) { + return true; + } + return substr($big, -$len) === $small; + } + + /** + * Each of the following four methods should be overridden in + * a concrete subclass, as they are in the provided Facebook class. + * The Facebook class uses PHP sessions to provide a primitive + * persistent store, but another subclass--one that you implement-- + * might use a database, memcache, or an in-memory cache. + * + * @see Facebook + */ + + /** + * Stores the given ($key, $value) pair, so that future calls to + * getPersistentData($key) return $value. This call may be in another request. + * + * @param string $key + * @param array $value + * + * @return void + */ + abstract protected function setPersistentData($key, $value); + + /** + * Get the data for $key, persisted by BaseFacebook::setPersistentData() + * + * @param string $key The key of the data to retrieve + * @param boolean $default The default value to return if $key is not found + * + * @return mixed + */ + abstract protected function getPersistentData($key, $default = false); + + /** + * Clear the data with $key from the persistent storage + * + * @param string $key + * + * @return void + */ + abstract protected function clearPersistentData($key); + + /** + * Clear all data from the persistent storage + * + * @return void + */ + abstract protected function clearAllPersistentData(); +} diff --git a/includes/social_connect/facebook_app/base_facebook2.php b/includes/social_connect/facebook_app/base_facebook2.php new file mode 100644 index 00000000..adc8b52e --- /dev/null +++ b/includes/social_connect/facebook_app/base_facebook2.php @@ -0,0 +1,1477 @@ + + */ +class FacebookApiException extends Exception +{ + /** + * The result from the API server that represents the exception information. + */ + protected $result; + + /** + * Make a new API Exception with the given result. + * + * @param array $result The result from the API server + */ + public function __construct($result) { + $this->result = $result; + + $code = isset($result['error_code']) ? $result['error_code'] : 0; + + if (isset($result['error_description'])) { + // OAuth 2.0 Draft 10 style + $msg = $result['error_description']; + } else if (isset($result['error']) && is_array($result['error'])) { + // OAuth 2.0 Draft 00 style + $msg = $result['error']['message']; + } else if (isset($result['error_msg'])) { + // Rest server style + $msg = $result['error_msg']; + } else { + $msg = 'Unknown Error. Check getResult()'; + } + + parent::__construct($msg, $code); + } + + /** + * Return the associated result object returned by the API server. + * + * @return array The result from the API server + */ + public function getResult() { + return $this->result; + } + + /** + * Returns the associated type for the error. This will default to + * 'Exception' when a type is not available. + * + * @return string + */ + public function getType() { + if (isset($this->result['error'])) { + $error = $this->result['error']; + if (is_string($error)) { + // OAuth 2.0 Draft 10 style + return $error; + } else if (is_array($error)) { + // OAuth 2.0 Draft 00 style + if (isset($error['type'])) { + return $error['type']; + } + } + } + + return 'Exception'; + } + + /** + * To make debugging easier. + * + * @return string The string representation of the error + */ + public function __toString() { + $str = $this->getType() . ': '; + if ($this->code != 0) { + $str .= $this->code . ': '; + } + return $str . $this->message; + } +} + +/** + * Provides access to the Facebook Platform. This class provides + * a majority of the functionality needed, but the class is abstract + * because it is designed to be sub-classed. The subclass must + * implement the four abstract methods listed at the bottom of + * the file. + * + * @author Naitik Shah + */ +abstract class BaseFacebook +{ + /** + * Version. + */ + const VERSION = '3.2.2'; + + /** + * Signed Request Algorithm. + */ + const SIGNED_REQUEST_ALGORITHM = 'HMAC-SHA256'; + + /** + * Default options for curl. + */ + public static $CURL_OPTS = array( + CURLOPT_CONNECTTIMEOUT => 10, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 60, + CURLOPT_USERAGENT => 'facebook-php-3.2', + ); + + /** + * List of query parameters that get automatically dropped when rebuilding + * the current URL. + */ + protected static $DROP_QUERY_PARAMS = array( + 'code', + 'state', + 'signed_request', + ); + + /** + * Maps aliases to Facebook domains. + */ + public static $DOMAIN_MAP = array( + 'api' => 'https://api.facebook.com/', + 'api_video' => 'https://api-video.facebook.com/', + 'api_read' => 'https://api-read.facebook.com/', + 'graph' => 'https://graph.facebook.com/', + 'graph_video' => 'https://graph-video.facebook.com/', + 'www' => 'https://www.facebook.com/', + ); + + /** + * The Application ID. + * + * @var string + */ + protected $appId; + + /** + * The Application App Secret. + * + * @var string + */ + protected $appSecret; + + /** + * The ID of the Facebook user, or 0 if the user is logged out. + * + * @var integer + */ + protected $user; + + /** + * The data from the signed_request token. + */ + protected $signedRequest; + + /** + * A CSRF state variable to assist in the defense against CSRF attacks. + */ + protected $state; + + /** + * The OAuth access token received in exchange for a valid authorization + * code. null means the access token has yet to be determined. + * + * @var string + */ + protected $accessToken = null; + + /** + * Indicates if the CURL based @ syntax for file uploads is enabled. + * + * @var boolean + */ + protected $fileUploadSupport = false; + + /** + * Indicates if we trust HTTP_X_FORWARDED_* headers. + * + * @var boolean + */ + protected $trustForwarded = false; + + /** + * Initialize a Facebook Application. + * + * The configuration: + * - appId: the application ID + * - secret: the application secret + * - fileUpload: (optional) boolean indicating if file uploads are enabled + * + * @param array $config The application configuration + */ + public function __construct($config) { + $this->setAppId($config['appId']); + $this->setAppSecret($config['secret']); + if (isset($config['fileUpload'])) { + $this->setFileUploadSupport($config['fileUpload']); + } + if (isset($config['trustForwarded']) && $config['trustForwarded']) { + $this->trustForwarded = true; + } + $state = $this->getPersistentData('state'); + if (!empty($state)) { + $this->state = $state; + } + } + + /** + * Set the Application ID. + * + * @param string $appId The Application ID + * @return BaseFacebook + */ + public function setAppId($appId) { + $this->appId = $appId; + return $this; + } + + /** + * Get the Application ID. + * + * @return string the Application ID + */ + public function getAppId() { + return $this->appId; + } + + /** + * Set the App Secret. + * + * @param string $apiSecret The App Secret + * @return BaseFacebook + * @deprecated + */ + public function setApiSecret($apiSecret) { + $this->setAppSecret($apiSecret); + return $this; + } + + /** + * Set the App Secret. + * + * @param string $appSecret The App Secret + * @return BaseFacebook + */ + public function setAppSecret($appSecret) { + $this->appSecret = $appSecret; + return $this; + } + + /** + * Get the App Secret. + * + * @return string the App Secret + * @deprecated + */ + public function getApiSecret() { + return $this->getAppSecret(); + } + + /** + * Get the App Secret. + * + * @return string the App Secret + */ + public function getAppSecret() { + return $this->appSecret; + } + + /** + * Set the file upload support status. + * + * @param boolean $fileUploadSupport The file upload support status. + * @return BaseFacebook + */ + public function setFileUploadSupport($fileUploadSupport) { + $this->fileUploadSupport = $fileUploadSupport; + return $this; + } + + /** + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function getFileUploadSupport() { + return $this->fileUploadSupport; + } + + /** + * DEPRECATED! Please use getFileUploadSupport instead. + * + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function useFileUploadSupport() { + return $this->getFileUploadSupport(); + } + + /** + * Sets the access token for api calls. Use this if you get + * your access token by other means and just want the SDK + * to use it. + * + * @param string $access_token an access token. + * @return BaseFacebook + */ + public function setAccessToken($access_token) { + $this->accessToken = $access_token; + return $this; + } + + /** + * Extend an access token, while removing the short-lived token that might + * have been generated via client-side flow. Thanks to http://bit.ly/b0Pt0H + * for the workaround. + */ + public function setExtendedAccessToken() { + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format. + $access_token_response = $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = array( + 'client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'grant_type' => 'fb_exchange_token', + 'fb_exchange_token' => $this->getAccessToken(), + ) + ); + } + catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = array(); + parse_str($access_token_response, $response_params); + + if (!isset($response_params['access_token'])) { + return false; + } + + $this->destroySession(); + + $this->setPersistentData( + 'access_token', $response_params['access_token'] + ); + } + + /** + * Determines the access token that should be used for API calls. + * The first time this is called, $this->accessToken is set equal + * to either a valid user access token, or it's set to the application + * access token if a valid user access token wasn't available. Subsequent + * calls return whatever the first call returned. + * + * @return string The access token + */ + public function getAccessToken() { + if ($this->accessToken !== null) { + // we've done this already and cached it. Just return. + return $this->accessToken; + } + + // first establish access token to be the application + // access token, in case we navigate to the /oauth/access_token + // endpoint, where SOME access token is required. + $this->setAccessToken($this->getApplicationAccessToken()); + $user_access_token = $this->getUserAccessToken(); + if ($user_access_token) { + $this->setAccessToken($user_access_token); + } + + return $this->accessToken; + } + + /** + * Determines and returns the user access token, first using + * the signed request if present, and then falling back on + * the authorization code if present. The intent is to + * return a valid user access token, or false if one is determined + * to not be available. + * + * @return string A valid user access token, or false if one + * could not be determined. + */ + protected function getUserAccessToken() { + // first, consider a signed request if it's supplied. + // if there is a signed request, then it alone determines + // the access token. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + // apps.facebook.com hands the access_token in the signed_request + if (array_key_exists('oauth_token', $signed_request)) { + $access_token = $signed_request['oauth_token']; + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // the JS SDK puts a code in with the redirect_uri of '' + if (array_key_exists('code', $signed_request)) { + $code = $signed_request['code']; + if ($code && $code == $this->getPersistentData('code')) { + // short-circuit if the code we have is the same as the one presented + return $this->getPersistentData('access_token'); + } + + $access_token = $this->getAccessTokenFromCode($code, ''); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + } + + // signed request states there's no access token, so anything + // stored should be cleared. + $this->clearAllPersistentData(); + return false; // respect the signed request's data, even + // if there's an authorization code or something else + } + + $code = $this->getCode(); + if ($code && $code != $this->getPersistentData('code')) { + $access_token = $this->getAccessTokenFromCode($code); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // code was bogus, so everything based on it should be invalidated. + $this->clearAllPersistentData(); + return false; + } + + // as a fallback, just return whatever is in the persistent + // store, knowing nothing explicit (signed request, authorization + // code, etc.) was present to shadow it (or we saw a code in $_REQUEST, + // but it's the same as what's in the persistent store) + return $this->getPersistentData('access_token'); + } + + /** + * Retrieve the signed request, either from a request parameter or, + * if not present, from a cookie. + * + * @return string the signed request, if available, or null otherwise. + */ + public function getSignedRequest() { + if (!$this->signedRequest) { + if (!empty($_REQUEST['signed_request'])) { + $this->signedRequest = $this->parseSignedRequest( + $_REQUEST['signed_request']); + } else if (!empty($_COOKIE[$this->getSignedRequestCookieName()])) { + $this->signedRequest = $this->parseSignedRequest( + $_COOKIE[$this->getSignedRequestCookieName()]); + } + } + return $this->signedRequest; + } + + /** + * Get the UID of the connected user, or 0 + * if the Facebook user is not connected. + * + * @return string the UID if available. + */ + public function getUser() { + if ($this->user !== null) { + // we've already determined this and cached the value. + return $this->user; + } + + return $this->user = $this->getUserFromAvailableData(); + } + + /** + * Determines the connected user by first examining any signed + * requests, then considering an authorization code, and then + * falling back to any persistent store storing the user. + * + * @return integer The id of the connected Facebook user, + * or 0 if no such user exists. + */ + protected function getUserFromAvailableData() { + // if a signed request is supplied, then it solely determines + // who the user is. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + if (array_key_exists('user_id', $signed_request)) { + $user = $signed_request['user_id']; + + if($user != $this->getPersistentData('user_id')){ + $this->clearAllPersistentData(); + } + + $this->setPersistentData('user_id', $signed_request['user_id']); + return $user; + } + + // if the signed request didn't present a user id, then invalidate + // all entries in any persistent store. + $this->clearAllPersistentData(); + return 0; + } + + $user = $this->getPersistentData('user_id', $default = 0); + $persisted_access_token = $this->getPersistentData('access_token'); + + // use access_token to fetch user id if we have a user access_token, or if + // the cached access token has changed. + $access_token = $this->getAccessToken(); + if ($access_token && + $access_token != $this->getApplicationAccessToken() && + !($user && $persisted_access_token == $access_token)) { + $user = $this->getUserFromAccessToken(); + if ($user) { + $this->setPersistentData('user_id', $user); + } else { + $this->clearAllPersistentData(); + } + } + + return $user; + } + + /** + * Get a Login URL for use with redirects. By default, full page redirect is + * assumed. If you are using the generated URL with a window.open() call in + * JavaScript, you can pass in display=popup as part of the $params. + * + * The parameters: + * - redirect_uri: the url to go to after a successful login + * - scope: comma separated list of requested extended perms + * + * @param array $params Provide custom parameters + * @return string The URL for the login flow + */ + public function getLoginUrl($params=array()) { + $this->establishCSRFTokenState(); + $currentUrl = $this->getCurrentUrl(); + + // if 'scope' is passed as an array, convert to comma separated list + $scopeParams = isset($params['scope']) ? $params['scope'] : null; + if ($scopeParams && is_array($scopeParams)) { + $params['scope'] = implode(',', $scopeParams); + } + + return $this->getUrl( + 'www', + 'dialog/oauth', + array_merge(array( + 'client_id' => $this->getAppId(), + 'redirect_uri' => $currentUrl, // possibly overwritten + 'state' => $this->state), + $params)); + } + + /** + * Get a Logout URL suitable for use with redirects. + * + * The parameters: + * - next: the url to go to after a successful logout + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLogoutUrl($params=array()) { + return $this->getUrl( + 'www', + 'logout.php', + array_merge(array( + 'next' => $this->getCurrentUrl(), + 'access_token' => $this->getUserAccessToken(), + ), $params) + ); + } + + /** + * Get a login status URL to fetch the status from Facebook. + * + * The parameters: + * - ok_session: the URL to go to if a session is found + * - no_session: the URL to go to if the user is not connected + * - no_user: the URL to go to if the user is not signed into facebook + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLoginStatusUrl($params=array()) { + return $this->getUrl( + 'www', + 'extern/login_status.php', + array_merge(array( + 'api_key' => $this->getAppId(), + 'no_session' => $this->getCurrentUrl(), + 'no_user' => $this->getCurrentUrl(), + 'ok_session' => $this->getCurrentUrl(), + 'session_version' => 3, + ), $params) + ); + } + + /** + * Make an API call. + * + * @return mixed The decoded response + */ + public function api(/* polymorphic */) { + $args = func_get_args(); + if (is_array($args[0])) + { + return $this->_restserver($args[0]); + } + else + { + return call_user_func_array(array($this, '_graph'), $args); + } + } + + /** + * Constructs and returns the name of the cookie that + * potentially houses the signed request for the app user. + * The cookie is not set by the BaseFacebook class, but + * it may be set by the JavaScript SDK. + * + * @return string the name of the cookie that would house + * the signed request value. + */ + protected function getSignedRequestCookieName() { + return 'fbsr_'.$this->getAppId(); + } + + /** + * Constructs and returns the name of the coookie that potentially contain + * metadata. The cookie is not set by the BaseFacebook class, but it may be + * set by the JavaScript SDK. + * + * @return string the name of the cookie that would house metadata. + */ + protected function getMetadataCookieName() { + return 'fbm_'.$this->getAppId(); + } + + /** + * Get the authorization code from the query parameters, if it exists, + * and otherwise return false to signal no authorization code was + * discoverable. + * + * @return mixed The authorization code, or false if the authorization + * code could not be determined. + */ + protected function getCode() { + if (isset($_REQUEST['code'])) { + if ($this->state !== null && + isset($_REQUEST['state']) && + $this->state === $_REQUEST['state']) { + + // CSRF state has done its job, so clear it + $this->state = null; + $this->clearPersistentData('state'); + return $_REQUEST['code']; + } else { + self::errorLog('CSRF state token does not match one provided.'); + return false; + } + } + + return false; + } + + /** + * Retrieves the UID with the understanding that + * $this->accessToken has already been set and is + * seemingly legitimate. It relies on Facebook's Graph API + * to retrieve user information and then extract + * the user ID. + * + * @return integer Returns the UID of the Facebook user, or 0 + * if the Facebook user could not be determined. + */ + protected function getUserFromAccessToken() { + try { + $user_info = $this->api('/me'); + return $user_info['id']; + } catch (FacebookApiException $e) { + return 0; + } + } + + /** + * Returns the access token that should be used for logged out + * users when no authorization code is available. + * + * @return string The application access token, useful for gathering + * public information about users and applications. + */ + protected function getApplicationAccessToken() { + return $this->appId.'|'.$this->appSecret; + } + + /** + * Lays down a CSRF state token for this process. + * + * @return void + */ + protected function establishCSRFTokenState() { + if ($this->state === null) { + $this->state = md5(uniqid(mt_rand(), true)); + $this->setPersistentData('state', $this->state); + } + } + + /** + * Retrieves an access token for the given authorization code + * (previously generated from www.facebook.com on behalf of + * a specific user). The authorization code is sent to graph.facebook.com + * and a legitimate access token is generated provided the access token + * and the user for which it was generated all match, and the user is + * either logged in to Facebook or has granted an offline access permission. + * + * @param string $code An authorization code. + * @return mixed An access token exchanged for the authorization code, or + * false if an access token could not be generated. + */ + protected function getAccessTokenFromCode($code, $redirect_uri = null) { + if (empty($code)) { + return false; + } + + if ($redirect_uri === null) { + $redirect_uri = $this->getCurrentUrl(); + } + + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format. + $access_token_response = + $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = array('client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'redirect_uri' => $redirect_uri, + 'code' => $code)); + } catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = array(); + parse_str($access_token_response, $response_params); + if (!isset($response_params['access_token'])) { + return false; + } + + return $response_params['access_token']; + } + + /** + * Invoke the old restserver.php endpoint. + * + * @param array $params Method call object + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _restserver($params) { + // generic application level parameters + $params['api_key'] = $this->getAppId(); + $params['format'] = 'json-strings'; + + $result = json_decode($this->_oauthRequest( + $this->getApiUrl($params['method']), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error_code'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + $method = strtolower($params['method']); + if ($method === 'auth.expiresession' || + $method === 'auth.revokeauthorization') { + $this->destroySession(); + } + + return $result; + } + + /** + * Return true if this is video post. + * + * @param string $path The path + * @param string $method The http method (default 'GET') + * + * @return boolean true if this is video post + */ + protected function isVideoPost($path, $method = 'GET') { + if ($method == 'POST' && preg_match("/^(\/)(.+)(\/)(videos)$/", $path)) { + return true; + } + return false; + } + + /** + * Invoke the Graph API. + * + * @param string $path The path (required) + * @param string $method The http method (default 'GET') + * @param array $params The query/post data + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _graph($path, $method = 'GET', $params = array()) { + if (is_array($method) && empty($params)) { + $params = $method; + $method = 'GET'; + } + $params['method'] = $method; // method override as we always do a POST + + if ($this->isVideoPost($path, $method)) { + $domainKey = 'graph_video'; + } else { + $domainKey = 'graph'; + } + + $result = json_decode($this->_oauthRequest( + $this->getUrl($domainKey, $path), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + return $result; + } + + /** + * Make a OAuth Request. + * + * @param string $url The path (required) + * @param array $params The query/post data + * + * @return string The decoded response object + * @throws FacebookApiException + */ + protected function _oauthRequest($url, $params) { + if (!isset($params['access_token'])) { + $params['access_token'] = $this->getAccessToken(); + } + + if (isset($params['access_token'])) { + $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']); + } + + // json_encode all params values that are not strings + foreach ($params as $key => $value) { + if (!is_string($value)) { + $params[$key] = json_encode($value); + } + } + + return $this->makeRequest($url, $params); + } + + /** + * Generate a proof of App Secret + * This is required for all API calls originating from a server + * It is a sha256 hash of the access_token made using the app secret + * + * @param string $access_token The access_token to be hashed (required) + * + * @return string The sha256 hash of the access_token + */ + protected function getAppSecretProof($access_token) { + return hash_hmac('sha256', $access_token, $this->getAppSecret()); + } + + /** + * Makes an HTTP request. This method can be overridden by subclasses if + * developers want to do fancier things or use something other than curl to + * make the request. + * + * @param string $url The URL to make the request to + * @param array $params The parameters to use for the POST body + * @param CurlHandler $ch Initialized curl handle + * + * @return string The response text + */ + protected function makeRequest($url, $params, $ch=null) { + if (!$ch) { + $ch = curl_init(); + } + + $opts = self::$CURL_OPTS; + if ($this->getFileUploadSupport()) { + $opts[CURLOPT_POSTFIELDS] = $params; + } else { + $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); + } + $opts[CURLOPT_URL] = $url; + + // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait + // for 2 seconds if the server does not support this header. + if (isset($opts[CURLOPT_HTTPHEADER])) { + $existing_headers = $opts[CURLOPT_HTTPHEADER]; + $existing_headers[] = 'Expect:'; + $opts[CURLOPT_HTTPHEADER] = $existing_headers; + } else { + $opts[CURLOPT_HTTPHEADER] = array('Expect:'); + } + + curl_setopt_array($ch, $opts); + $result = curl_exec($ch); + + if (curl_errno($ch) == 60) { // CURLE_SSL_CACERT + self::errorLog('Invalid or no certificate authority found, '. + 'using bundled information'); + curl_setopt($ch, CURLOPT_CAINFO, + dirname(__FILE__) . '/fb_ca_chain_bundle.crt'); + $result = curl_exec($ch); + } + + // With dual stacked DNS responses, it's possible for a server to + // have IPv6 enabled but not have IPv6 connectivity. If this is + // the case, curl will try IPv4 first and if that fails, then it will + // fall back to IPv6 and the error EHOSTUNREACH is returned by the + // operating system. + if ($result === false && empty($opts[CURLOPT_IPRESOLVE])) { + $matches = array(); + $regex = '/Failed to connect to ([^:].*): Network is unreachable/'; + if (preg_match($regex, curl_error($ch), $matches)) { + if (strlen(@inet_pton($matches[1])) === 16) { + self::errorLog('Invalid IPv6 configuration on server, '. + 'Please disable or get native IPv6 on your server.'); + self::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; + curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + $result = curl_exec($ch); + } + } + } + + if ($result === false) { + $e = new FacebookApiException(array( + 'error_code' => curl_errno($ch), + 'error' => array( + 'message' => curl_error($ch), + 'type' => 'CurlException', + ), + )); + curl_close($ch); + throw $e; + } + curl_close($ch); + return $result; + } + + /** + * Parses a signed_request and validates the signature. + * + * @param string $signed_request A signed token + * @return array The payload inside it or null if the sig is wrong + */ + protected function parseSignedRequest($signed_request) { + list($encoded_sig, $payload) = explode('.', $signed_request, 2); + + // decode the data + $sig = self::base64UrlDecode($encoded_sig); + $data = json_decode(self::base64UrlDecode($payload), true); + + if (strtoupper($data['algorithm']) !== self::SIGNED_REQUEST_ALGORITHM) { + self::errorLog( + 'Unknown algorithm. Expected ' . self::SIGNED_REQUEST_ALGORITHM); + return null; + } + + // check sig + $expected_sig = hash_hmac('sha256', $payload, + $this->getAppSecret(), $raw = true); + if ($sig !== $expected_sig) { + self::errorLog('Bad Signed JSON signature!'); + return null; + } + + return $data; + } + + /** + * Makes a signed_request blob using the given data. + * + * @param array The data array. + * @return string The signed request. + */ + protected function makeSignedRequest($data) { + if (!is_array($data)) { + throw new InvalidArgumentException( + 'makeSignedRequest expects an array. Got: ' . print_r($data, true)); + } + $data['algorithm'] = self::SIGNED_REQUEST_ALGORITHM; + $data['issued_at'] = time(); + $json = json_encode($data); + $b64 = self::base64UrlEncode($json); + $raw_sig = hash_hmac('sha256', $b64, $this->getAppSecret(), $raw = true); + $sig = self::base64UrlEncode($raw_sig); + return $sig.'.'.$b64; + } + + /** + * Build the URL for api given parameters. + * + * @param $method String the method name. + * @return string The URL for the given parameters + */ + protected function getApiUrl($method) { + static $READ_ONLY_CALLS = + array('admin.getallocation' => 1, + 'admin.getappproperties' => 1, + 'admin.getbannedusers' => 1, + 'admin.getlivestreamvialink' => 1, + 'admin.getmetrics' => 1, + 'admin.getrestrictioninfo' => 1, + 'application.getpublicinfo' => 1, + 'auth.getapppublickey' => 1, + 'auth.getsession' => 1, + 'auth.getsignedpublicsessiondata' => 1, + 'comments.get' => 1, + 'connect.getunconnectedfriendscount' => 1, + 'dashboard.getactivity' => 1, + 'dashboard.getcount' => 1, + 'dashboard.getglobalnews' => 1, + 'dashboard.getnews' => 1, + 'dashboard.multigetcount' => 1, + 'dashboard.multigetnews' => 1, + 'data.getcookies' => 1, + 'events.get' => 1, + 'events.getmembers' => 1, + 'fbml.getcustomtags' => 1, + 'feed.getappfriendstories' => 1, + 'feed.getregisteredtemplatebundlebyid' => 1, + 'feed.getregisteredtemplatebundles' => 1, + 'fql.multiquery' => 1, + 'fql.query' => 1, + 'friends.arefriends' => 1, + 'friends.get' => 1, + 'friends.getappusers' => 1, + 'friends.getlists' => 1, + 'friends.getmutualfriends' => 1, + 'gifts.get' => 1, + 'groups.get' => 1, + 'groups.getmembers' => 1, + 'intl.gettranslations' => 1, + 'links.get' => 1, + 'notes.get' => 1, + 'notifications.get' => 1, + 'pages.getinfo' => 1, + 'pages.isadmin' => 1, + 'pages.isappadded' => 1, + 'pages.isfan' => 1, + 'permissions.checkavailableapiaccess' => 1, + 'permissions.checkgrantedapiaccess' => 1, + 'photos.get' => 1, + 'photos.getalbums' => 1, + 'photos.gettags' => 1, + 'profile.getinfo' => 1, + 'profile.getinfooptions' => 1, + 'stream.get' => 1, + 'stream.getcomments' => 1, + 'stream.getfilters' => 1, + 'users.getinfo' => 1, + 'users.getloggedinuser' => 1, + 'users.getstandardinfo' => 1, + 'users.hasapppermission' => 1, + 'users.isappuser' => 1, + 'users.isverified' => 1, + 'video.getuploadlimits' => 1); + $name = 'api'; + if (isset($READ_ONLY_CALLS[strtolower($method)])) { + $name = 'api_read'; + } else if (strtolower($method) == 'video.upload') { + $name = 'api_video'; + } + return self::getUrl($name, 'restserver.php'); + } + + /** + * Build the URL for given domain alias, path and parameters. + * + * @param $name string The name of the domain + * @param $path string Optional path (without a leading slash) + * @param $params array Optional query parameters + * + * @return string The URL for the given parameters + */ + protected function getUrl($name, $path='', $params=array()) { + $url = self::$DOMAIN_MAP[$name]; + if ($path) { + if ($path[0] === '/') { + $path = substr($path, 1); + } + $url .= $path; + } + if ($params) { + $url .= '?' . http_build_query($params, null, '&'); + } + + return $url; + } + + protected function getHttpHost() { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { + return $_SERVER['HTTP_X_FORWARDED_HOST']; + } + return $_SERVER['HTTP_HOST']; + } + + protected function getHttpProtocol() { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { + return 'https'; + } + return 'http'; + } + /*apache + variants specific way of checking for https*/ + if (isset($_SERVER['HTTPS']) && + ($_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] == 1)) { + return 'https'; + } + /*nginx way of checking for https*/ + if (isset($_SERVER['SERVER_PORT']) && + ($_SERVER['SERVER_PORT'] === '443')) { + return 'https'; + } + return 'http'; + } + + /** + * Get the base domain used for the cookie. + */ + protected function getBaseDomain() { + // The base domain is stored in the metadata cookie if not we fallback + // to the current hostname + $metadata = $this->getMetadataCookie(); + if (array_key_exists('base_domain', $metadata) && + !empty($metadata['base_domain'])) { + return trim($metadata['base_domain'], '.'); + } + return $this->getHttpHost(); + } + + /** + + /** + * Returns the Current URL, stripping it of known FB parameters that should + * not persist. + * + * @return string The current URL + */ + protected function getCurrentUrl() { + $protocol = $this->getHttpProtocol() . '://'; + $host = $this->getHttpHost(); + $currentUrl = $protocol.$host.$_SERVER['REQUEST_URI']; + $parts = parse_url($currentUrl); + + $query = ''; + if (!empty($parts['query'])) { + // drop known fb params + $params = explode('&', $parts['query']); + $retained_params = array(); + foreach ($params as $param) { + if ($this->shouldRetainParam($param)) { + $retained_params[] = $param; + } + } + + if (!empty($retained_params)) { + $query = '?'.implode($retained_params, '&'); + } + } + + // use port if non default + $port = + isset($parts['port']) && + (($protocol === 'http://' && $parts['port'] !== 80) || + ($protocol === 'https://' && $parts['port'] !== 443)) + ? ':' . $parts['port'] : ''; + + // rebuild + return $protocol . $parts['host'] . $port . $parts['path'] . $query; + } + + /** + * Returns true if and only if the key or key/value pair should + * be retained as part of the query string. This amounts to + * a brute-force search of the very small list of Facebook-specific + * params that should be stripped out. + * + * @param string $param A key or key/value pair within a URL's query (e.g. + * 'foo=a', 'foo=', or 'foo'. + * + * @return boolean + */ + protected function shouldRetainParam($param) { + foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) { + if (strpos($param, $drop_query_param.'=') === 0) { + return false; + } + } + + return true; + } + + /** + * Analyzes the supplied result to see if it was thrown + * because the access token is no longer valid. If that is + * the case, then we destroy the session. + * + * @param $result array A record storing the error message returned + * by a failed API call. + */ + protected function throwAPIException($result) { + $e = new FacebookApiException($result); + switch ($e->getType()) { + // OAuth 2.0 Draft 00 style + case 'OAuthException': + // OAuth 2.0 Draft 10 style + case 'invalid_token': + // REST server errors are just Exceptions + case 'Exception': + $message = $e->getMessage(); + if ((strpos($message, 'Error validating access token') !== false) || + (strpos($message, 'Invalid OAuth access token') !== false) || + (strpos($message, 'An active access token must be used') !== false) + ) { + $this->destroySession(); + } + break; + } + + throw $e; + } + + + /** + * Prints to the error log if you aren't in command line mode. + * + * @param string $msg Log message + */ + protected static function errorLog($msg) { + // disable error log if we are running in a CLI environment + // @codeCoverageIgnoreStart + if (php_sapi_name() != 'cli') { + error_log($msg); + } + // uncomment this if you want to see the errors on the page + // print 'error_log: '.$msg."\n"; + // @codeCoverageIgnoreEnd + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * No padded = + * + * @param string $input base64UrlEncoded string + * @return string + */ + protected static function base64UrlDecode($input) { + return base64_decode(strtr($input, '-_', '+/')); + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * + * @param string $input string + * @return string base64Url encoded string + */ + protected static function base64UrlEncode($input) { + $str = strtr(base64_encode($input), '+/', '-_'); + $str = str_replace('=', '', $str); + return $str; + } + + /** + * Destroy the current session + */ + public function destroySession() { + $this->accessToken = null; + $this->signedRequest = null; + $this->user = null; + $this->clearAllPersistentData(); + + // Javascript sets a cookie that will be used in getSignedRequest that we + // need to clear if we can + $cookie_name = $this->getSignedRequestCookieName(); + if (array_key_exists($cookie_name, $_COOKIE)) { + unset($_COOKIE[$cookie_name]); + if (!headers_sent()) { + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.'.$base_domain); + } else { + // @codeCoverageIgnoreStart + self::errorLog( + 'There exists a cookie that we wanted to clear that we couldn\'t '. + 'clear because headers was already sent. Make sure to do the first '. + 'API call before outputing anything.' + ); + // @codeCoverageIgnoreEnd + } + } + } + + /** + * Parses the metadata cookie that our Javascript API set + * + * @return an array mapping key to value + */ + protected function getMetadataCookie() { + $cookie_name = $this->getMetadataCookieName(); + if (!array_key_exists($cookie_name, $_COOKIE)) { + return array(); + } + + // The cookie value can be wrapped in "-characters so remove them + $cookie_value = trim($_COOKIE[$cookie_name], '"'); + + if (empty($cookie_value)) { + return array(); + } + + $parts = explode('&', $cookie_value); + $metadata = array(); + foreach ($parts as $part) { + $pair = explode('=', $part, 2); + if (!empty($pair[0])) { + $metadata[urldecode($pair[0])] = + (count($pair) > 1) ? urldecode($pair[1]) : ''; + } + } + + return $metadata; + } + + protected static function isAllowedDomain($big, $small) { + if ($big === $small) { + return true; + } + return self::endsWith($big, '.'.$small); + } + + protected static function endsWith($big, $small) { + $len = strlen($small); + if ($len === 0) { + return true; + } + return substr($big, -$len) === $small; + } + + /** + * Each of the following four methods should be overridden in + * a concrete subclass, as they are in the provided Facebook class. + * The Facebook class uses PHP sessions to provide a primitive + * persistent store, but another subclass--one that you implement-- + * might use a database, memcache, or an in-memory cache. + * + * @see Facebook + */ + + /** + * Stores the given ($key, $value) pair, so that future calls to + * getPersistentData($key) return $value. This call may be in another request. + * + * @param string $key + * @param array $value + * + * @return void + */ + abstract protected function setPersistentData($key, $value); + + /** + * Get the data for $key, persisted by BaseFacebook::setPersistentData() + * + * @param string $key The key of the data to retrieve + * @param boolean $default The default value to return if $key is not found + * + * @return mixed + */ + abstract protected function getPersistentData($key, $default = false); + + /** + * Clear the data with $key from the persistent storage + * + * @param string $key + * @return void + */ + abstract protected function clearPersistentData($key); + + /** + * Clear all data from the persistent storage + * + * @return void + */ + abstract protected function clearAllPersistentData(); +} diff --git a/includes/social_connect/facebook_app/facebook.php b/includes/social_connect/facebook_app/facebook.php new file mode 100644 index 00000000..b6b827dc --- /dev/null +++ b/includes/social_connect/facebook_app/facebook.php @@ -0,0 +1,228 @@ +initSharedSession(); + + // re-load the persisted state, since parent + // attempted to read out of non-shared cookie + $state = $this->getPersistentData('state'); + if (!empty($state)) { + $this->state = $state; + } else { + $this->state = null; + } + + } + } + + /** + * Supported keys for persistent data + * + * @var array + */ + protected static $kSupportedKeys = + array('state', 'code', 'access_token', 'user_id'); + + /** + * Initiates Shared Session + */ + protected function initSharedSession() { + $cookie_name = $this->getSharedSessionCookieName(); + if (isset($_COOKIE[$cookie_name])) { + $data = $this->parseSignedRequest($_COOKIE[$cookie_name]); + if ($data && !empty($data['domain']) && + self::isAllowedDomain($this->getHttpHost(), $data['domain'])) { + // good case + $this->sharedSessionID = $data['id']; + return; + } + // ignoring potentially unreachable data + } + // evil/corrupt/missing case + $base_domain = $this->getBaseDomain(); + $this->sharedSessionID = md5(uniqid(mt_rand(), true)); + $cookie_value = $this->makeSignedRequest( + array( + 'domain' => $base_domain, + 'id' => $this->sharedSessionID, + ) + ); + $_COOKIE[$cookie_name] = $cookie_value; + if (!headers_sent()) { + $expire = time() + self::FBSS_COOKIE_EXPIRE; + setcookie($cookie_name, $cookie_value, $expire, '/', '.'.$base_domain); + } else { + // @codeCoverageIgnoreStart + self::errorLog( + 'Shared session ID cookie could not be set! You must ensure you '. + 'create the Facebook instance before headers have been sent. This '. + 'will cause authentication issues after the first request.' + ); + // @codeCoverageIgnoreEnd + } + } + + /** + * Provides the implementations of the inherited abstract + * methods. The implementation uses PHP sessions to maintain + * a store for authorization codes, user ids, CSRF states, and + * access tokens. + */ + + /** + * {@inheritdoc} + * + * @see BaseFacebook::setPersistentData() + */ + protected function setPersistentData($key, $value) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to setPersistentData.'); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + $_SESSION[$session_var_name] = $value; + } + + /** + * {@inheritdoc} + * + * @see BaseFacebook::getPersistentData() + */ + protected function getPersistentData($key, $default = false) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to getPersistentData.'); + return $default; + } + + $session_var_name = $this->constructSessionVariableName($key); + return isset($_SESSION[$session_var_name]) ? + $_SESSION[$session_var_name] : $default; + } + + /** + * {@inheritdoc} + * + * @see BaseFacebook::clearPersistentData() + */ + protected function clearPersistentData($key) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to clearPersistentData.'); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + if (isset($_SESSION[$session_var_name])) { + unset($_SESSION[$session_var_name]); + } + } + + /** + * {@inheritdoc} + * + * @see BaseFacebook::clearAllPersistentData() + */ + protected function clearAllPersistentData() { + foreach (self::$kSupportedKeys as $key) { + $this->clearPersistentData($key); + } + if ($this->sharedSessionID) { + $this->deleteSharedSessionCookie(); + } + } + + /** + * Deletes Shared session cookie + */ + protected function deleteSharedSessionCookie() { + $cookie_name = $this->getSharedSessionCookieName(); + unset($_COOKIE[$cookie_name]); + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.'.$base_domain); + } + + /** + * Returns the Shared session cookie name + * + * @return string The Shared session cookie name + */ + protected function getSharedSessionCookieName() { + return self::FBSS_COOKIE_NAME . '_' . $this->getAppId(); + } + + /** + * Constructs and returns the name of the session key. + * + * @see setPersistentData() + * @param string $key The key for which the session variable name to construct. + * + * @return string The name of the session key. + */ + protected function constructSessionVariableName($key) { + $parts = array('fb', $this->getAppId(), $key); + if ($this->sharedSessionID) { + array_unshift($parts, $this->sharedSessionID); + } + return implode('_', $parts); + } +} diff --git a/includes/social_connect/facebook_app/facebook2.php b/includes/social_connect/facebook_app/facebook2.php new file mode 100644 index 00000000..83a5e6de --- /dev/null +++ b/includes/social_connect/facebook_app/facebook2.php @@ -0,0 +1,177 @@ +load_file( 'functions_admin', 'phpbb3' ); +/** + * Extends the BaseFacebook class with the intent of using + * PHP sessions to store user ids and access tokens. + */ +class Facebook extends BaseFacebook +{ + const FBSS_COOKIE_NAME = 'fbss'; + + // We can set this to a high number because the main session + // expiration will trump this. + const FBSS_COOKIE_EXPIRE = 31556926; // 1 year + + // Stores the shared session ID if one is set. + protected $sharedSessionID; + + /** + * Identical to the parent constructor, except that + * we start a PHP session to store the user ID and + * access token if during the course of execution + * we discover them. + * + * @param Array $config the application configuration. Additionally + * accepts "sharedSession" as a boolean to turn on a secondary + * cookie for environments with a shared session (that is, your app + * shares the domain with other apps). + * @see BaseFacebook::__construct in facebook.php + */ + public function __construct($config) { + if (!session_id()) + { + @session_start(); + } + parent::__construct($config); + if (!empty($config['sharedSession'])) { + $this->initSharedSession(); + } + } + + protected static $kSupportedKeys = + array('state', 'code', 'access_token', 'user_id'); + + protected function initSharedSession() { + $cookie_name = $this->getSharedSessionCookieName(); + if (isset($_COOKIE[$cookie_name])) { + $data = $this->parseSignedRequest($_COOKIE[$cookie_name]); + if ($data && !empty($data['domain']) && + self::isAllowedDomain($this->getHttpHost(), $data['domain'])) { + // good case + $this->sharedSessionID = $data['id']; + return; + } + // ignoring potentially unreachable data + } + // evil/corrupt/missing case + $base_domain = $this->getBaseDomain(); + $this->sharedSessionID = md5(uniqid(mt_rand(), true)); + $cookie_value = $this->makeSignedRequest( + array( + 'domain' => $base_domain, + 'id' => $this->sharedSessionID, + ) + ); + $_COOKIE[$cookie_name] = $cookie_value; + if (!headers_sent()) { + $expire = time() + self::FBSS_COOKIE_EXPIRE; + setcookie($cookie_name, $cookie_value, $expire, '/', '.'.$base_domain); + } else { + // @codeCoverageIgnoreStart + self::errorLog( + 'Shared session ID cookie could not be set! You must ensure you '. + 'create the Facebook instance before headers have been sent. This '. + 'will cause authentication issues after the first request.' + ); + // @codeCoverageIgnoreEnd + } + } + + /** + * Provides the implementations of the inherited abstract + * methods. The implementation uses PHP sessions to maintain + * a store for authorization codes, user ids, CSRF states, and + * access tokens. + */ + protected function setPersistentData($key, $value) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to setPersistentData.'); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + $_SESSION[$session_var_name] = $value; + } + + protected function getPersistentData($key, $default = false) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to getPersistentData.'); + return $default; + } + + $session_var_name = $this->constructSessionVariableName($key); + return isset($_SESSION[$session_var_name]) ? + $_SESSION[$session_var_name] : $default; + } + + protected function clearPersistentData($key) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to clearPersistentData.'); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + unset($_SESSION[$session_var_name]); + } + + protected function clearAllPersistentData() { + foreach (self::$kSupportedKeys as $key) { + $this->clearPersistentData($key); + } + if ($this->sharedSessionID) { + $this->deleteSharedSessionCookie(); + } + } + + protected function deleteSharedSessionCookie() { + $cookie_name = $this->getSharedSessionCookieName(); + unset($_COOKIE[$cookie_name]); + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.'.$base_domain); + } + + protected function getSharedSessionCookieName() { + return self::FBSS_COOKIE_NAME . '_' . $this->getAppId(); + } + + protected function constructSessionVariableName($key) { + $parts = array('fb', $this->getAppId(), $key); + if ($this->sharedSessionID) { + array_unshift($parts, $this->sharedSessionID); + } + return implode('_', $parts); + } +} + +?> \ No newline at end of file diff --git a/includes/social_connect/facebook_app/fb_ca_chain_bundle.crt b/includes/social_connect/facebook_app/fb_ca_chain_bundle.crt new file mode 100644 index 00000000..969239ff --- /dev/null +++ b/includes/social_connect/facebook_app/fb_ca_chain_bundle.crt @@ -0,0 +1,3920 @@ +## +## ca-bundle.crt -- Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Thu Oct 18 19:05:59 2012 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## + +# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.86 $ $Date: 2012/10/18 16:26:52 $ + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 1 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy +MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE +NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i +o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq +kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4 +RbyhkwS7hp86W0N6w4pl +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 3 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy +MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD +VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS +xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi +up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1 +mPnHfxsb1gYgAlihw6ID +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd +k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq +WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM +XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC +lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx +nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC +wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA +ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK +1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk +LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +ValiCert Class 1 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy +MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi +GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm +DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG +lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX +icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP +Orf1LXLI +-----END CERTIFICATE----- + +ValiCert Class 2 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC +CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf +ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ +SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV +UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 +W9ViH0Pd +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E +bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ +rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+ +Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB +FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N +y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 +ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h +a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc +D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y +azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug +b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6 +tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7 +C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS +0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs +Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0 +JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf +0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU +sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx +JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j +GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Secure Server CA +============================ +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl +ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG +A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi +eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p +dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ +aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 +gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw +ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw +CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l +dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw +NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow +HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA +BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN +Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 +n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC +AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER +gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B +AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS +o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z +2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX +OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE +ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y +MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT +DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn +2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5 +BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx +JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e +uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1 +jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia +78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm +V+GRMOrN +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +UTN-USER First-Network Applications +=================================== +-----BEGIN CERTIFICATE----- +MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp +BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5 +WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T +YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB +cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug +mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj +DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu +Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi +P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE +j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w +HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j +cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G +CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y +IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK +RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp +xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq +DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE +-----END CERTIFICATE----- + +America Online Root Certification Authority 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG +v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z +DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh +sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP +8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z +o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf +GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF +VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft +3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +America Online Root Certification Authority 2 +============================================= +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en +fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 +f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO +qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN +RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 +gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn +6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid +FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 +Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj +B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op +aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY +T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p ++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg +JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy +zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO +ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh +1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf +GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff +Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP +cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 1 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw +NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88 +7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9 +EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl +0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645 +2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa +HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT +iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9 +28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV +yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR +vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P +qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z +IRlXvVWa +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +TDC Internet Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE +ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx +NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu +ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j +xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL +znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc +5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 +otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI +AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM +VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM +MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC +AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe +UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G +CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m +gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ +2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb +O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU +Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l +-----END CERTIFICATE----- + +TDC OCES Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE +ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5 +MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH +nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0 +zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV +iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde +dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO +3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB +5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k +ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm +cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp +Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x +LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM +MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm +aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy +MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647 ++RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6 +NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4 +A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc +A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9 +AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1 +AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Email Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0 +BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05 +OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx +FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx +ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz +dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx +B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8 +om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG +TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl +yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE +AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV +HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll +bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH +AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne +xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+ +5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV +NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ +w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +UTN USERFirst Object Root CA +============================ +-----BEGIN CERTIFICATE----- +MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb +BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz +NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx +HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy +dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR +loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ +w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu +lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7 +RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL +BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8 +ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly +c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw +DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw +NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO +PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE +qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG +hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Qualified (Class QA) Root +================================= +-----BEGIN CERTIFICATE----- +MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn +eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0 +bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0 +LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0 +dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP +aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV +CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e +8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb +m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ +0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM +0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2 +YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh +biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p +a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz +YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg +YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg +ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov +L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr +Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0 +aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg +YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0 +IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3 +DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN +wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg +W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc +R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR +5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +NetLock Business (Class B) Root +=============================== +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg +VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD +VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv +bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg +VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB +iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S +o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr +1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ +RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh +dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 +ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv +c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg +YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz +Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA +bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl +IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 +YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj +cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM +43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR +stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +NetLock Express (Class C) Root +============================== +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ +BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j +ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z +W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 +euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw +DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN +RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn +YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB +IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i +aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 +ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y +emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k +IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ +UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg +YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 +xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW +gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Firmaprofesional Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT +GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp +Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA +ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL +MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT +OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2 +ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V +j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH +lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf +3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8 +NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww +KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG +AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD +ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq +u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf +wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm +7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG +VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA= +-----END CERTIFICATE----- + +Wells Fargo Root CA +=================== +-----BEGIN CERTIFICATE----- +MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl +bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv +MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX +x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3 +E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5 +OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j +sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj +YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF +BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD +ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv +m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R +OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx +x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023 +tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Platinum CA - G2 +========================== +-----BEGIN CERTIFICATE----- +MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw +HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM +U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu +669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF +eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne +WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo +j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6 +8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T +aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy +domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D ++m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV +CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv +zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW +IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1 +Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3 +NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4 +U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8 +KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl +9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B +aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs +OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY +Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci +IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +S-TRUST Authentication and Encryption Root CA 2005 PN +===================================================== +-----BEGIN CERTIFICATE----- +MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh +cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT +LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w +NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk +ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj +aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp +b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob +4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL +g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf +eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3 +KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB +/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv +bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU +D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD +pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08 +P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA +nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit +F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b +Hz2eBIPdltkdOpQ= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. +====================================== +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT +AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg +LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w +HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ +U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh +IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN +yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU +2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 +4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP +2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm +8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf +HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa +Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK +5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b +czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g +ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF +BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug +cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf +AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX +EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v +/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 +MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 +3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk +eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f +/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h +RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU +Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 3 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw +MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W +yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo +6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ +uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk +2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE +O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 +yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 +IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal +092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc +5A== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign CA +========== +-----BEGIN CERTIFICATE----- +MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD +EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy +MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp +Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q +ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy +P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN +GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk +YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM +rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy +oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P +AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+ +VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2 +QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI +mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb +/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG +zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U +AGegcQCCSA== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ +VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2 +yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa +XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n +0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ +RjXZ+Hxb +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi +=================================================== +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz +ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 +MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 +cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u +aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY +8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y +jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI +JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk +9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG +SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d +F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq +D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 +Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq +fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +TC TrustCenter Universal CA III +=============================== +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe +Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU +QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex +KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt +QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO +juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut +CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1 +M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G +A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA +g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+ +KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK +BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq +woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı +====================================================== +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- diff --git a/includes/social_connect/facebook_app/fb_ca_chain_bundle2.crt b/includes/social_connect/facebook_app/fb_ca_chain_bundle2.crt new file mode 100644 index 00000000..969239ff --- /dev/null +++ b/includes/social_connect/facebook_app/fb_ca_chain_bundle2.crt @@ -0,0 +1,3920 @@ +## +## ca-bundle.crt -- Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Thu Oct 18 19:05:59 2012 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## + +# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.86 $ $Date: 2012/10/18 16:26:52 $ + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 1 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy +MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE +NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i +o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq +kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4 +RbyhkwS7hp86W0N6w4pl +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 3 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy +MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD +VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS +xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi +up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1 +mPnHfxsb1gYgAlihw6ID +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd +k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq +WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM +XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC +lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx +nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC +wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA +ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK +1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk +LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +ValiCert Class 1 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy +MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi +GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm +DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG +lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX +icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP +Orf1LXLI +-----END CERTIFICATE----- + +ValiCert Class 2 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC +CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf +ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ +SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV +UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 +W9ViH0Pd +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E +bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ +rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+ +Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB +FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N +y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 +ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h +a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc +D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y +azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug +b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6 +tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7 +C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS +0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs +Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0 +JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf +0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU +sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx +JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j +GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Secure Server CA +============================ +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl +ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG +A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi +eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p +dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ +aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 +gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw +ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw +CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l +dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw +NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow +HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA +BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN +Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 +n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC +AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER +gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B +AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS +o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z +2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX +OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE +ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y +MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT +DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn +2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5 +BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx +JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e +uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1 +jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia +78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm +V+GRMOrN +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +UTN-USER First-Network Applications +=================================== +-----BEGIN CERTIFICATE----- +MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp +BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5 +WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T +YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB +cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug +mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj +DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu +Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi +P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE +j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w +HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j +cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G +CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y +IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK +RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp +xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq +DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE +-----END CERTIFICATE----- + +America Online Root Certification Authority 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG +v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z +DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh +sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP +8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z +o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf +GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF +VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft +3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +America Online Root Certification Authority 2 +============================================= +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en +fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 +f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO +qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN +RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 +gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn +6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid +FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 +Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj +B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op +aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY +T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p ++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg +JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy +zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO +ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh +1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf +GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff +Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP +cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 1 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw +NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88 +7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9 +EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl +0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645 +2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa +HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT +iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9 +28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV +yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR +vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P +qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z +IRlXvVWa +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +TDC Internet Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE +ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx +NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu +ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j +xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL +znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc +5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 +otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI +AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM +VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM +MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC +AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe +UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G +CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m +gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ +2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb +O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU +Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l +-----END CERTIFICATE----- + +TDC OCES Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE +ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5 +MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH +nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0 +zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV +iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde +dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO +3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB +5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k +ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm +cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp +Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x +LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM +MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm +aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy +MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647 ++RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6 +NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4 +A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc +A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9 +AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1 +AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Email Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0 +BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05 +OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx +FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx +ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz +dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx +B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8 +om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG +TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl +yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE +AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV +HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll +bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH +AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne +xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+ +5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV +NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ +w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +UTN USERFirst Object Root CA +============================ +-----BEGIN CERTIFICATE----- +MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb +BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz +NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx +HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy +dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR +loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ +w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu +lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7 +RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL +BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8 +ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly +c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw +DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw +NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO +PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE +qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG +hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Qualified (Class QA) Root +================================= +-----BEGIN CERTIFICATE----- +MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn +eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0 +bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0 +LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0 +dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP +aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV +CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e +8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb +m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ +0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM +0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2 +YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh +biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p +a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz +YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg +YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg +ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov +L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr +Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0 +aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg +YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0 +IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3 +DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN +wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg +W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc +R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR +5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +NetLock Business (Class B) Root +=============================== +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg +VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD +VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv +bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg +VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB +iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S +o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr +1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ +RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh +dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 +ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv +c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg +YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz +Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA +bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl +IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 +YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj +cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM +43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR +stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +NetLock Express (Class C) Root +============================== +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ +BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j +ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z +W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 +euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw +DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN +RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn +YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB +IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i +aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 +ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y +emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k +IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ +UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg +YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 +xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW +gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Firmaprofesional Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT +GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp +Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA +ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL +MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT +OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2 +ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V +j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH +lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf +3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8 +NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww +KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG +AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD +ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq +u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf +wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm +7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG +VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA= +-----END CERTIFICATE----- + +Wells Fargo Root CA +=================== +-----BEGIN CERTIFICATE----- +MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl +bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv +MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX +x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3 +E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5 +OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j +sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj +YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF +BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD +ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv +m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R +OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx +x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023 +tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Platinum CA - G2 +========================== +-----BEGIN CERTIFICATE----- +MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw +HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM +U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu +669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF +eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne +WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo +j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6 +8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T +aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy +domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D ++m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV +CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv +zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW +IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1 +Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3 +NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4 +U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8 +KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl +9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B +aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs +OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY +Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci +IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +S-TRUST Authentication and Encryption Root CA 2005 PN +===================================================== +-----BEGIN CERTIFICATE----- +MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh +cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT +LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w +NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk +ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj +aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp +b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob +4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL +g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf +eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3 +KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB +/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv +bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU +D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD +pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08 +P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA +nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit +F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b +Hz2eBIPdltkdOpQ= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. +====================================== +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT +AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg +LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w +HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ +U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh +IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN +yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU +2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 +4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP +2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm +8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf +HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa +Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK +5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b +czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g +ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF +BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug +cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf +AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX +EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v +/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 +MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 +3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk +eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f +/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h +RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU +Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 3 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw +MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W +yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo +6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ +uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk +2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE +O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 +yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 +IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal +092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc +5A== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign CA +========== +-----BEGIN CERTIFICATE----- +MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD +EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy +MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp +Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q +ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy +P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN +GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk +YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM +rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy +oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P +AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+ +VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2 +QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI +mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb +/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG +zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U +AGegcQCCSA== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ +VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2 +yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa +XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n +0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ +RjXZ+Hxb +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi +=================================================== +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz +ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 +MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 +cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u +aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY +8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y +jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI +JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk +9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG +SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d +F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq +D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 +Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq +fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +TC TrustCenter Universal CA III +=============================== +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe +Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU +QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex +KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt +QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO +juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut +CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1 +M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G +A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA +g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+ +KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK +BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq +woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı +====================================================== +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- diff --git a/includes/social_connect/facebook_app/index.htm b/includes/social_connect/facebook_app/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/includes/social_connect/facebook_app/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/includes/social_connect/facebook_app/index.html b/includes/social_connect/facebook_app/index.html new file mode 100644 index 00000000..7714370b --- /dev/null +++ b/includes/social_connect/facebook_app/index.html @@ -0,0 +1,10 @@ + + + +Icy Phoenix + + +






    + + + \ No newline at end of file diff --git a/includes/social_connect/functions_fb4phpbb_light.php b/includes/social_connect/functions_fb4phpbb_light.php new file mode 100644 index 00000000..67288f8a --- /dev/null +++ b/includes/social_connect/functions_fb4phpbb_light.php @@ -0,0 +1,171 @@ + $config['fb4phpbb_light_appid'], + 'secret' => $config['fb4phpbb_light_secret'], + )); + $fb_me = $facebook->getUser(); + $sql = 'SELECT user_id + FROM ' . USERS_TABLE + . " WHERE user_fb4phpbb_light_fb_uid='$fb_me'"; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $true = ($row['user_id'] !== $user->data['user_id']) ? true : false; + return $true; +} + +function find_jquery() +{ + global $user; + $not_found = true; + $string = 'styles/' . rawurlencode($user->theme['theme_path']) . '/template/overall_header.html'; + + $doc = new DOMDocument(); + @$doc->loadHTMLFile($string); + + $tags = $doc->getElementsByTagName('script'); + + foreach ($tags as $tag) + { + $attr = $tag->getAttribute('src'); + if (preg_match('#jquery#is', $attr)) + { + $not_found = false; + } + } + return $not_found; +} + +function find_jquery_ui() +{ + global $user; + $not_found = true; + $string = 'styles/' . rawurlencode($user->theme['theme_path']) . '/template/overall_header.html'; + + $doc = new DOMDocument(); + @$doc->loadHTMLFile($string); + + $tags = $doc->getElementsByTagName('script'); + + foreach ($tags as $tag) + { + $attr = $tag->getAttribute('src'); + if (preg_match('#jquery-ui#is', $attr)) + { + $not_found = false; + } + } + return $not_found; +} + +function fb4phpbb_light_init($appid, $lang) +{ + global $cache, $db, $auth, $template, $config, $user; + $user->add_lang('mods/fb4phpbb_light'); + $fbinit = '
    + + + '; + return $fbinit; +} +?> \ No newline at end of file diff --git a/includes/social_connect/index.html b/includes/social_connect/index.html new file mode 100644 index 00000000..7714370b --- /dev/null +++ b/includes/social_connect/index.html @@ -0,0 +1,10 @@ + + + +Icy Phoenix + + +






    + + + \ No newline at end of file diff --git a/includes/social_connect/settings_social_networks.php b/includes/social_connect/settings_social_networks.php new file mode 100644 index 00000000..a07bc807 --- /dev/null +++ b/includes/social_connect/settings_social_networks.php @@ -0,0 +1,65 @@ + 'social_settings', + 'name' => '27_Social_Networks', + 'sort' => 0, + 'sub_name' => '', + 'sub_sort' => 0, + 'menu_name' => 'Preferences', + 'menu_sort' => 0, + 'clear_cache' => false, +); + +$settings_data = array(); +$settings_data = array( + + 'enable_social_connect' => array( + 'lang_key' => 'Enable_Social_Networks_Login', + 'explain' => 'Enable_Social_Networks_Login_Explain', + 'type' => 'LIST_RADIO', + 'default' => 0, + 'values' => $this->list_yes_no, + ), + + 'enable_facebook_login' => array( + 'separator' => 'Facebook_Login_Settings', + 'separator_explain' => 'Facebook_Login_Settings_explain', + 'lang_key' => 'Enable_Facebook_Login', + 'explain' => 'Enable_Facebook_Login_explain', + 'type' => 'LIST_RADIO', + 'default' => 0, + 'values' => $this->list_yes_no, + ), + + 'facebook_app_id' => array( + 'lang_key' => 'Facebook_App_ID', + 'type' => 'VARCHAR', + 'default' => '', + ), + + 'facebook_app_secret' => array( + 'lang_key' => 'Facebook_App_Secret', + 'type' => 'VARCHAR', + 'default' => '', + ), + +); + +$this->init_config($settings_details, $settings_data); + +?> \ No newline at end of file diff --git a/includes/social_connect/ucp/info/ucp_fb4phpbb_light.php b/includes/social_connect/ucp/info/ucp_fb4phpbb_light.php new file mode 100644 index 00000000..252110d1 --- /dev/null +++ b/includes/social_connect/ucp/info/ucp_fb4phpbb_light.php @@ -0,0 +1,46 @@ +.*/ + +/** +* DO NOT CHANGE +*/ +class ucp_fb4phpbb_light_info +{ + function module() + { + return array( + 'filename' => 'ucp_fb4phpbb_light', + 'title' => 'UCP_FB4PHPBB_LIGHT', + 'version' => '1.0.1a', + 'modes' => array( + 'fb4phpbb_light' => array('title' => 'UCP_FB4PHPBB_LIGHT_FACEBOOK', 'auth' => '', 'cat' => array('UCP_FB4PHPBB_LIGHT')), + ), + ); + } + + function install() + { + } + + function uninstall() + { + } +} + +?> \ No newline at end of file diff --git a/includes/social_connect/ucp/ucp_fb4phpbb_light.php b/includes/social_connect/ucp/ucp_fb4phpbb_light.php new file mode 100644 index 00000000..bdc49a3a --- /dev/null +++ b/includes/social_connect/ucp/ucp_fb4phpbb_light.php @@ -0,0 +1,65 @@ +.*/ + +/** +* DO NOT CHANGE +*/ + +if (!defined('IN_PHPBB')) +{ + exit; +} + +class ucp_fb4phpbb_light +{ + var $u_action; + + function main($id, $mode) + { + global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx; + + // Include the fb4phpbb functions. + + // Include the fb4phpbb language files. + $user->add_lang('mods/info_ucp_fb4phpbb_light'); + $user->add_lang('mods/fb4phpbb_light'); + $user->add_lang('ucp'); + + $sql = 'SELECT user_fb4phpbb_light_fb_uid + FROM ' . USERS_TABLE + . " WHERE user_id = '{$user->data['user_id']}'"; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + + $template->assign_vars(array( + 'S_MODE_FB4PHPBB_LIGHT' => ($mode == 'fb4phpbb_light') ? true : false, + 'S_FB4PHPBB_LIGHT_ROW' => ($row['user_fb4phpbb_light_fb_uid'] > 0) ? true : false, + 'S_UCP_FB4PHPBB_LIGHT_DESCRIPTION' => ($row['user_fb4phpbb_light_fb_uid'] > 0) ? sprintf($user->lang['UCP_FB4PHPBB_LIGHT_ENABLE_FACEBOOK_TEXT'], $user->lang['FB4PHPBB_LIGHT']) : sprintf($user->lang['UCP_FB4PHPBB_LIGHT_DISABLE_FACEBOOK_TEXT'], $user->lang['FB4PHPBB_LIGHT']), + 'FB4PHPBB_PATH' => $phpbb_root_path . $config['fb4phpbb_light_path'], + 'S_HIDDEN_FIELDS' => (isset($s_hidden_fields)) ? $s_hidden_fields : '', + 'S_UCP_ACTION' => $this->u_action, + 'S_AJAX' => (request_var('ajax', '') == 'yes') ? true : false)); + + // Set desired template + $this->tpl_name = 'ucp_fb4phpbb_light'; + $this->page_title = 'UCP_FB4PHPBB_LIGHT'; + } +} + +?> \ No newline at end of file diff --git a/includes/social_connect/ucp/ucp_fblight_register.php b/includes/social_connect/ucp/ucp_fblight_register.php new file mode 100644 index 00000000..bf0b5dc7 --- /dev/null +++ b/includes/social_connect/ucp/ucp_fblight_register.php @@ -0,0 +1,473 @@ + + * @license http://opensource.org/licenses/gpl-license.php GNU Public License + * @link http://forums.damienkeitel.com + * @copyright (c) 2011 Damien Keitel + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + */ +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + /** + * ucp_fbregister + * Facebook Board registration + * @package Facebook 2011 + */ +class ucp_fblight_register +{ + var $u_action; + + function return_ajax($value = '') + { + echo($value); + die; + } + + function main($id, $mode) + { + global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx; + + if ($config['require_activation'] == USER_ACTIVATION_DISABLE) + { + trigger_error('UCP_REGISTER_DISABLE'); + } + if (!function_exists('custom_profile')) + { + include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx); + } + + $user->add_lang('mods/fb4phpbb_light'); + $user->add_lang('mods/info_ucp_fb4phpbb_light'); + + $coppa = (isset($_REQUEST['coppa'])) ? ((!empty($_REQUEST['coppa'])) ? 1 : 0) : false; + $agreed = (!empty($_POST['agreed'])) ? 1 : 0; + $submit = (isset($_POST['submit'])) ? true : false; + $change_lang = request_var('change_lang', ''); + $user_lang = request_var('lang', $user->lang_name); + $fb4phpbb_light_uid = request_var('fb4phpbb_light_uid', ''); + $fb4phpbb_light_username = request_var('fb4phpbb_light_username', ''); + $fb4phpbb_light_email = request_var('fb4phpbb_light_email', ''); + $fb4phpbb_light_avatar = request_var('fb4phpbb_light_avatar', ''); + + if ($agreed) + { + add_form_key('ucp_fblight_register'); + } + else + { + add_form_key('ucp_register_terms'); + } + + + if ($change_lang || $user_lang != $config['default_lang']) + { + $use_lang = ($change_lang) ? basename($change_lang) : basename($user_lang); + + if (!validate_language_iso_name($use_lang)) + { + if ($change_lang) + { + $submit = false; + + // Setting back agreed to let the user view the agreement in his/her language + $agreed = (empty($_GET['change_lang'])) ? 0 : $agreed; + } + + $user->lang_name = $user_lang = $use_lang; + $user->lang = array(); + $user->data['user_lang'] = $user->lang_name; + $user->add_lang(array('common', 'ucp', 'mods/fb4phpbb_light')); + } + else + { + $change_lang = ''; + $user_lang = $user->lang_name; + } + } + + + $cp = new custom_profile(); + + $error = $cp_data = $cp_error = array(); + + if (!$agreed || ($coppa === false && $config['coppa_enable']) || ($coppa && !$config['coppa_enable'])) + { + $add_lang = ($change_lang) ? '&change_lang=' . urlencode($change_lang) : ''; + $add_coppa = ($coppa !== false) ? '&coppa=' . $coppa : ''; + + $s_hidden_fields = array( + 'change_lang' => $change_lang, + 'fb4phpbb_light_username' => request_var('fb4phpbb_light_username', ''), + 'fb4phpbb_light_email' => request_var('fb4phpbb_light_email', ''), + 'fb4phpbb_light_uid' => request_var('fb4phpbb_light_uid', ''), + ); + + // If we change the language, we want to pass on some more possible parameter. + if ($change_lang) + { + // We do not include the password + $s_hidden_fields = array_merge($s_hidden_fields, array( + 'lang' => $user->lang_name, + 'tz' => request_var('tz', (float) $config['board_timezone']), + )); + + } + + // Checking amount of available languages + $sql = 'SELECT lang_id + FROM ' . LANG_TABLE; + $result = $db->sql_query($sql); + + $lang_row = array(); + while ($row = $db->sql_fetchrow($result)) + { + $lang_row[] = $row; + } + $db->sql_freeresult($result); + + if ($coppa === false && $config['coppa_enable']) + { + $now = getdate(); + $coppa_birthday = $user->format_date(mktime($now['hours'] + $user->data['user_dst'], $now['minutes'], $now['seconds'], $now['mon'], $now['mday'] - 1, $now['year'] - 13), $user->lang['DATE_FORMAT']); + unset($now); + + $template->assign_vars(array( + 'S_LANG_OPTIONS' => (sizeof($lang_row) > 1) ? language_select($user_lang) : '', + 'L_COPPA_NO' => sprintf($user->lang['UCP_COPPA_BEFORE'], $coppa_birthday), + 'L_COPPA_YES' => sprintf($user->lang['UCP_COPPA_ON_AFTER'], $coppa_birthday), + + 'U_COPPA_NO' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=fblight_register&coppa=0' . $add_lang), + 'U_COPPA_YES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=fblight_register&coppa=1' . $add_lang), + + 'S_SHOW_COPPA' => true, + 'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields), + 'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=fblight_register' . $add_lang), + )); + } + else + { + $template->assign_vars(array( + 'S_LANG_OPTIONS' => (sizeof($lang_row) > 1) ? language_select($user_lang) : '', + 'L_TERMS_OF_USE' => sprintf($user->lang['TERMS_OF_USE_CONTENT'], $config['sitename'], generate_board_url()), + + 'S_SHOW_COPPA' => false, + 'S_REGISTRATION' => true, + 'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields), + 'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=fblight_register' . $add_lang . $add_coppa), + ) + ); + } + unset($lang_row); + + $this->tpl_name = 'ucp_fblight_agreement'; + return; + } + + if ($config['enable_confirm']) + { + if (!function_exists('phpbb_captcha_factory')) + { + include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); + } + $captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']); + $captcha->init(CONFIRM_REG); + } + + $timezone = date('Z') / 3600; + $is_dst = date('I'); + + if ($config['board_timezone'] == $timezone || $config['board_timezone'] == ($timezone - 1)) + { + $timezone = ($is_dst) ? $timezone - 1 : $timezone; + + if (!isset($user->lang['tz_zones'][(string) $timezone])) + { + $timezone = $config['board_timezone']; + } + } + else + { + $is_dst = $config['board_dst']; + $timezone = $config['board_timezone']; + } + + $server_url = generate_board_url(); + $key_len = 54 - strlen($server_url); + $key_len = max(6, $key_len); // we want at least 6 + $key_len = ($config['max_pass_chars']) ? min($key_len, $config['max_pass_chars']) : $key_len; // we want at most $config['max_pass_chars'] + $user_actkey = substr(gen_rand_string(10), 0, $key_len); + $new_user_password = gen_rand_string(8); + $data = array( + 'username' => utf8_normalize_nfc(request_var('fb4phpbb_light_username', '', true)), + 'new_password' => $new_user_password, + 'password_confirm' => $new_user_password, + 'email' => strtolower(request_var('fb4phpbb_light_email', '')), + 'lang' => basename(request_var('lang', $user->lang_name)), + 'tz' => request_var('tz', (float) $timezone)); + + if($submit) + { + if ($config['check_dnsbl']) + { + if (($dnsbl = $user->check_dnsbl('register')) !== false) + { + $error[] = sprintf($user->lang['IP_BLACKLISTED'], $user->ip, $dnsbl[1]); + } + } + + $cp->submit_cp_field('register', $user->get_iso_lang_id(), $cp_data, $error); + + if (!sizeof($error)) + { + $server_url = generate_board_url(); + + $group_name = ($coppa) ? 'REGISTERED_COPPA' : 'REGISTERED'; + + $sql = 'SELECT group_id + FROM ' . GROUPS_TABLE . " + WHERE group_name = '" . $db->sql_escape($group_name) . "' + AND group_type = " . GROUP_SPECIAL; + + $result = $db->sql_query($sql); + + $row = $db->sql_fetchrow($result); + + $db->sql_freeresult($result); + + if (!$row) + { + trigger_error('NO_GROUP'); + } + + $group_id = $row['group_id']; + + if (($coppa || $config['require_activation'] == USER_ACTIVATION_SELF || $config['require_activation'] == USER_ACTIVATION_ADMIN) && $config['email_enable']) + { + $user_actkey = gen_rand_string(mt_rand(6, 10)); + $user_type = USER_INACTIVE; + $user_inactive_reason = INACTIVE_REGISTER; + $user_inactive_time = time(); + } + else + { + $user_type = USER_NORMAL; + $user_actkey = ''; + $user_inactive_reason = 0; + $user_inactive_time = 0; + } + + $user_row = array( + 'username' => $data['username'], + 'user_password' => phpbb_hash($data['new_password']), + 'user_email' => $data['email'], + 'group_id' => (int) $group_id, + 'user_timezone' => (float) $data['tz'], + 'user_dst' => $is_dst, + 'user_lang' => $data['lang'], + 'user_type' => $user_type, + 'user_actkey' => $user_actkey, + 'user_ip' => $user->ip, + 'user_regdate' => time(), + 'user_inactive_reason' => $user_inactive_reason, + 'user_inactive_time' => $user_inactive_time); + + if ($config['new_member_post_limit']) + { + $user_row['user_new'] = 1; + } + + $user_id = user_add($user_row, $cp_data); + + if ($user_id === false) + { + trigger_error('NO_USER', E_USER_ERROR); + } + + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_fb4phpbb_light_fb_uid = '" . $db->sql_escape($fb4phpbb_light_uid) . "' + WHERE user_id = '" . $db->sql_escape($user_id) . "'"; + + $result = $db->sql_query($sql); + if(!$result) + { + trigger_error('Unable to connect with phpBB database.'); + } + + if (($config['allow_avatar_remote_fb'] == 'yes') && ($fb4phpbb_light_avatar == 'true')) + { + $picsql = 'UPDATE ' . USERS_TABLE . " + SET user_avatar='https://graph.facebook.com/" . $fb4phpbb_light_uid . "/picture?type=normal', user_avatar_type=4, user_avatar_width='', user_avatar_height='' + WHERE user_id = '" . $db->sql_escape($user_id) . "'"; + $picresult = $db->sql_query($picsql); + + if(!$picresult) + { + trigger_error('Unable to connect with phpBB database.'); + } + } + + + + $fb4phpbb_light_email_lang = $user->lang['FB4PHPBB_LIGHT']; + + if ($coppa && $config['email_enable']) + { + $message = $user->lang['ACCOUNT_COPPA']; + $email_template = 'coppa_welcome_inactive_fb4phpbb_light'; + } + else if ($config['require_activation'] == USER_ACTIVATION_SELF && $config['email_enable']) + { + $message = $user->lang['ACCOUNT_INACTIVE']; + $email_template = 'user_welcome_inactive_fb4phpbb_light'; + } + else if ($config['require_activation'] == USER_ACTIVATION_ADMIN && $config['email_enable']) + { + $message = $user->lang['ACCOUNT_INACTIVE_ADMIN']; + $email_template = 'admin_welcome_inactive_fb4phpbb_light'; + } + else + { + $message = $user->lang['ACCOUNT_ADDED']; + $email_template = 'user_welcome_fb4phpbb_light'; + } + if ($config['email_enable']) + { + if (!function_exists('messenger')) + { + include($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); + } + $messenger = new messenger(false); + $messenger->template($email_template, $data['lang']); + $messenger->to($data['email'], $data['username']); + $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']); + $messenger->headers('X-AntiAbuse: User_id - ' . $user->data['user_id']); + $messenger->headers('X-AntiAbuse: Username - ' . $user->data['username']); + $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip); + $messenger->assign_vars(array( + 'WELCOME_MSG' => htmlspecialchars_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename'])), + 'USERNAME' => htmlspecialchars_decode($data['username']), + 'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u=$user_id&k=$user_actkey")); + + if ($coppa) + { + $messenger->assign_vars(array( + 'FAX_INFO' => $config['coppa_fax'], + 'MAIL_INFO' => $config['coppa_mail'], + 'EMAIL_ADDRESS' => $data['email'])); + } + + $messenger->send(NOTIFY_EMAIL); + + if ($config['require_activation'] == USER_ACTIVATION_ADMIN) + { + + $admin_ary = $auth->acl_get_list(false, 'a_user', false); + $admin_ary = (!empty($admin_ary[0]['a_user'])) ? $admin_ary[0]['a_user'] : array(); + $where_sql = ' WHERE user_type = ' . USER_FOUNDER; + + if (sizeof($admin_ary)) + { + $where_sql .= ' OR ' . $db->sql_in_set('user_id', $admin_ary); + } + + $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber, user_notify_type + FROM ' . USERS_TABLE . ' ' . + $where_sql; + + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $messenger->template('admin_activate', $row['user_lang']); + $messenger->to($row['user_email'], $row['username']); + $messenger->im($row['user_jabber'], $row['username']); + $messenger->assign_vars(array( + 'USERNAME' => htmlspecialchars_decode($data['username']), + 'U_USER_DETAILS' => "$server_url/memberlist.$phpEx?mode=viewprofile&u=$user_id", + 'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u=$user_id&k=$user_actkey")); + $messenger->send($row['user_notify_type']); + } + + $db->sql_freeresult($result); + } + } + + $message = $message . '

    ' . sprintf($user->lang['RETURN_TIME_FB4PHPBB_LIGHT'] . ' ' . $user->lang['RETURN_INDEX'], '', ''); + $response = $message . ''; + return_ajax($response); + } + } + + $s_hidden_fields = array( + 'agreed' => 'true', + 'change_lang' => 0, + 'fb4phpbb_light_uid' => $fb4phpbb_light_uid, + ); + if ($config['coppa_enable']) + { + $s_hidden_fields['coppa'] = $coppa; + } + if ($config['enable_confirm']) + { + $s_hidden_fields = array_merge($s_hidden_fields, $captcha->get_hidden_fields()); + } + $s_hidden_fields = build_hidden_fields($s_hidden_fields); + + $l_reg_cond = ''; + + switch ($config['require_activation']) + { + case USER_ACTIVATION_SELF: + $l_reg_cond = $user->lang['UCP_EMAIL_ACTIVATE']; + break; + + case USER_ACTIVATION_ADMIN: + $l_reg_cond = $user->lang['UCP_ADMIN_ACTIVATE']; + break; + } + + $template->assign_vars(array( + 'FB4PHPBB_LIGHT_USERNAME' => $fb4phpbb_light_username, + 'FB4PHPBB_LIGHT_EMAIL' => $fb4phpbb_light_email, + 'FB4PHPBB_LIGHT_UID' => $fb4phpbb_light_uid, + 'ERROR' => (sizeof($error)) ? implode('
    ', $error) : '', + 'S_FB4PHPBB_LIGHT_REGO' => true, + 'L_USERNAME_EXPLAIN' => sprintf($user->lang[$config['allow_name_chars'] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']), + 'L_LINK_REMOTE_AVATAR_FB' => $user->lang['LINK_REMOTE_AVATAR_FB'], + 'L_REG_COND' => $l_reg_cond, + 'L_FB_REG_COND' => $user->lang['FB_REG_COND'], + 'S_LANG_OPTIONS' => language_select($data['lang']), + 'S_TZ_OPTIONS' => tz_select($data['tz']), + 'S_CONFIRM_REFRESH' => ($config['enable_confirm'] && $config['confirm_refresh']) ? true : false, + 'S_REGISTRATION' => true, + 'S_COPPA' => $coppa, + 'S_HIDDEN_FIELDS' => $s_hidden_fields, + 'S_UCP_ACTION' => append_sid("ucp.$phpEx", 'mode=fblight_register'))); + + $user->profile_fields = array(); + + $cp->generate_profile_fields('register', $user->get_iso_lang_id()); + + $this->tpl_name = 'ucp_fblight_register'; + $this->page_title = 'UCP_REGISTRATION'; + } +} +?> \ No newline at end of file diff --git a/includes/template.php b/includes/template.php index 68721cd4..c0fcd843 100644 --- a/includes/template.php +++ b/includes/template.php @@ -9,6 +9,21 @@ * */ +/*************************************************************************** + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + ***************************************************************************/ + +/** +* +* @Extra credits for this file +* Vjacheslav Trushkin (http://www.stsoftware.biz) +* +*/ /** * @@ -29,6 +44,11 @@ * */ +if (!defined('IN_PORTAL')) +{ + die('Hacking attempt'); +} + define('XS_SEPARATOR', '.'); define('XS_DIR_CACHE', 'cache'); define('XS_USE_ISSET', '1'); @@ -54,22 +74,35 @@ define('XS_TAG_DEFINE', 9); define('XS_TAG_UNDEFINE', 10); define('XS_TAG_BEGINELSE', 11); - -//MX-Publisher Stuff - - -class Template { +define('XS_TAG_ALIAS', 12); + +define('ALIAS', 12); +define('NONE', 0); +define('PHP', 1); +define('BEGIN', 2); +define('END', 3); +define('INCLUDE', 4); +define('IF', 5); +define('ELSE', 6); +define('ELSEIF', 7); +define('ENDIF', 8); +define('DEFINE', 9); +define('UNDEFINE', 10); +define('BEGINELSE', 11); + +class Template +{ var $classname = "Template"; // variable that holds all the data we'll be substituting into // the compiled templates. - // ... + var $tpldata = array('.' => array(0 => array())); // This will end up being a multi-dimensional array like this: // $this->_tpldata[block.][iteration#][child.][iteration#][child2.][iteration#][variablename] == value // if it's a root-level variable, it'll be like this: // $this->vars[varname] == value or $this->_tpldata['.'][0][varname] == value // array "vars" is added for easier access to data - var $_tpldata = array('.' => array(0 => array())); + var $_tpldata = array('.' => array(0 => array()), 'DEFINE' => array(9 => array())); var $vars; // Hash of filenames for each template handle. @@ -80,12 +113,16 @@ class Template { // Root template directory. var $root = ''; - // Cache directory (compatible with default cache mod) + // Cache directory (compatible with default cache class) var $cachedir = ''; + + // Style directory (compatible with default templates class) + var $template_path = XS_TPL_START; + // Search/replace for unknown files - var $cache_search = array(); - var $cache_replace = array(); + var $mx_cache_search = array(); + var $mx_cache_replace = array(); // Template root directory (generated by set_rootdir) var $tpldir = ''; @@ -128,7 +165,7 @@ class Template { // eXtreme Styles variables var $xs_started = 0; var $xs_version = 8; // number version. internal. do not change. - var $xs_versiontxt = '2.4.0'; // text version + var $xs_versiontxt = '2.4.1'; // text version // These handles will be parsed if pparse() is executed. // Can be used to automatically include header/footer if there is any content. @@ -154,22 +191,40 @@ class Template { // history mod typo: array('site_today', 'site_week'), ); - + + /** + * Constructor + * + * @param $mx_user + */ + public function __construct() + { + global $mx_cache, $mx_user; + + $this->cache = $mx_cache; + $this->user = $mx_user; + } + /** * Constructor. Installs XS mod on first run or updates it and sets the root dir. */ function Template($root = '.') { + global $mx_cache, $mx_user; + + $this->cache = $mx_cache; + $this->user = $mx_user; + // setting pointer "vars" $this->vars = &$this->_tpldata['.'][0]; // load configuration - $this->load_config($root); + $this->load_config($root, true); } /** * Load mod configuration */ - function load_config($root) + function load_config($root, $edit_db) { global $mx_cache, $board_config, $portal_config, $phpbb_root_path, $mx_root_path, $phpEx, $mx_backend; @@ -294,9 +349,22 @@ function load_config($root) $this->cache_replace = array('_', XS_SEPARATOR, XS_SEPARATOR, '.'.$this->php); $old_root = $this->root; $this->set_rootdir($root); + // Mighty Gorgon - Common TPL - BEGIN + $cfg_path = $this->tpl; + if ((defined('IN_PHPBB') || defined('IN_ADMIN'))) + { + $cfg_path = 'all'; + } + // Mighty Gorgon - Common TPL - END if(!empty($this->tpl)) { - $this->load_replacements($this->tpldir . $this->tpl . '/xs.cfg'); + if($this->tpldef != $cfg_path) + { + $file = $this->tpldir . $this->tpldef . '/xs.cfg'; + $this->load_replacements($file); + } + $file = $this->tpldir . $cfg_path . '/xs.cfg'; + $this->load_replacements($file); } if($old_root !== $this->root) { @@ -337,7 +405,7 @@ function set_rootdir($dir) * Set custom template location (able to use directory outside of phpBB) * @access public */ - function set_custom_template($template_path, $template_name) + function set_custom_template2($template_path, $template_name) { global $board_config, $phpbb_root_path, $mx_root_path; @@ -356,9 +424,40 @@ function destroy() { $this->_tpldata = array('.' => array(0 => array())); $this->vars = &$this->_tpldata['.'][0]; + //$this->_rootref = &$this->_tpldata['.'][0]; $this->xs_started = 0; } + + /** + * Reset/empty complete block + * @access public + */ + function destroy_block_vars($blockname) + { + if (strpos($blockname, '.') !== false) + { + // Nested block. + $blocks = explode('.', $blockname); + $blockcount = sizeof($blocks) - 1; + + $str = &$this->_tpldata; + for ($i = 0; $i < $blockcount; $i++) + { + $str = &$str[$blocks[$i]]; + $str = &$str[sizeof($str) - 1]; + } + unset($str[$blocks[$blockcount]]); + } + else + { + // Top-level block. + unset($this->_tpldata[$blockname]); + } + + return true; + } + /** * Clears list of compiled files. */ @@ -375,13 +474,34 @@ function clear_files() * Loads replacements from .cfg file */ function load_replacements($file) - { + { + global $mx_root_path, $phpbb_root_path; + + if (!file_exists($file) && !file_exists($mx_root_path . $file) && !file_exists($phpbb_root_path . $file)) + { + // trigger_error cannot be used here, as the output already started + //echo 'template->_php_include(): File ' . htmlspecialchars($file) . ' does not exist or is empty'; + return; + } + if(@file_exists($file)) { $replace = array(); @include($file); $this->replace = array_merge($this->replace, $replace); } + elseif(@file_exists($phpbb_root_path . $file)) + { + $replace = array(); + @include($phpbb_root_path . $file); + $this->replace = array_merge($this->replace, $replace); + } + elseif(@file_exists($mx_root_path . $file)) + { + $replace = array(); + @include($mx_root_path . $file); + $this->replace = array_merge($this->replace, $replace); + } } /** @@ -481,21 +601,21 @@ function subtemplates_make_filename($filename) { case POST_CAT_URL: $cat_id = $id; - break; + break; case POST_FORUM_URL: $forum_id = $id; - break; + break; case POST_TOPIC_URL: $topic_id = $id; - break; + break; case POST_POST_URL: if ( !defined('IN_PRIVMSG') ) { $post_id = $id; - break; + break; } default: - break; + break; } } @@ -595,8 +715,8 @@ function subtemplates_make_filename($filename) $sub_css_file = ''; $sub_img_file = ''; $sub_img_path = ''; - $template_path = 'templates/'; - $template_name = substr( $this->root, strpos($this->root, $template_path) + strlen($template_path) ); + $template_path = $this->template_path; + $template_name = substr( $this->root, strpos($this->root, $this->template_path) + strlen($this->template_path) ); $real_root = $this->root; if ( $board_config['version'] > '.0.5' ) { @@ -619,7 +739,7 @@ function subtemplates_make_filename($filename) if ( isset($sub_templates[$key]) ) { // get the sub-template path - $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; // set the filename @@ -648,7 +768,7 @@ function subtemplates_make_filename($filename) if ( isset($sub_templates[$key]) ) { // get the sub-template path - $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; if ( empty($sub_css_file) && isset($sub_templates[$key]['head_stylesheet']) && file_exists($root_template_path . '/' . $sub_templates[$key]['head_stylesheet']) ) { @@ -675,7 +795,7 @@ function subtemplates_make_filename($filename) if ( isset($sub_templates[$key]) ) { // get the sub-template path - $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) { @@ -708,7 +828,7 @@ function subtemplates_make_filename($filename) if ( isset($sub_templates[$key]) ) { // get the sub-template path - $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) { @@ -735,7 +855,7 @@ function subtemplates_make_filename($filename) $key = $sub_template_key_image; // get the sub-template path - $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) { @@ -793,38 +913,171 @@ function make_filename($filename, $xs_include = false) */ function make_filename_cache($file) { + $phpEx = 'php'; $str = str_replace($this->cache_search, $this->cache_replace, $file); if(substr($file, 0, $this->tpldir_len) !== $this->tpldir || empty($this->tpl)) { - return $this->cachedir . XS_TPL_PREFIX2 . $str; + return $this->cachedir . XS_TPL_PREFIX2 . $str .'.'. $phpEx; } // removing not needed part - $file = substr($file, $this->tpldir_len, strlen($file)); + $file = substr($file, $this->tpldir_len, strlen($file)) .'.'. $phpEx; // creating filename - return $this->cachedir . XS_TPL_PREFIX . str_replace($this->cache_search, $this->cache_replace, $file); + return $this->cachedir . XS_TPL_PREFIX . str_replace($this->cache_search, $this->cache_replace, $file) .'.'. $phpEx; + } + + /** + * Set template location + * @access public + */ + function set_template() + { + global $phpbb_root_path, $mx_root_path, $mx_user; + + if (file_exists($mx_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template')) + { + $this->root = $mx_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . str_replace('_', '-', $mx_user->theme['template_path']) . '_'; + + if ($this->orig_tpl_storedb === null) + { + $this->orig_tpl_storedb = $mx_user->theme['template_storedb']; + } + + if ($this->orig_tpl_inherits_id === null) + { + $this->orig_tpl_inherits_id = $mx_user->theme['template_inherits_id']; + } + + $mx_user->theme['template_storedb'] = $this->orig_tpl_storedb; + $mx_user->theme['template_inherits_id'] = $this->orig_tpl_inherits_id; + + if ($mx_user->theme['template_inherits_id']) + { + $this->inherit_root = $mx_root_path . XS_TPL_START . $mx_user->theme['template_inherit_path'] . '/template'; + } + } + elseif (file_exists($phpbb_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template')) + { + $this->root = $phpbb_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template'; + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . str_replace('_', '-', $mx_user->theme['template_path']) . '_'; + + if ($this->orig_tpl_storedb === null) + { + $this->orig_tpl_storedb = $mx_user->theme['template_storedb']; + } + + if ($this->orig_tpl_inherits_id === null) + { + $this->orig_tpl_inherits_id = $mx_user->theme['template_inherits_id']; + } + + $mx_user->theme['template_storedb'] = $this->orig_tpl_storedb; + $mx_user->theme['template_inherits_id'] = $this->orig_tpl_inherits_id; + + if ($mx_user->theme['template_inherits_id']) + { + $this->inherit_root = $mx_root_path . XS_TPL_START . $mx_user->theme['template_inherit_path'] . '/template'; + } + } + else + { + trigger_error('Template path could not be found: ' . XS_TPL_START . $mx_user->theme['template_path'] . '/template', E_USER_ERROR); + } + //$this->vars = &$this->tpldata['.'][0]; + $this->vars = &$this->_tpldata['.'][0]; + $this->_rootref = &$this->_tpldata['.'][0]; + //$this->rootref = &$this->tpldata['.'][0]; + return true; } + + /** + * Set custom template location (able to use directory outside of phpBB) + * @access public + */ + function set_custom_template($template_path, $template_name, $fallback_template_path = false) + { + global $mx_root_path, $mx_user; + + // Make sure $template_path has no ending slash + if (substr($template_path, -1) == '/') + { + $template_path = substr($template_path, 0, -1); + } + + $this->root = $template_path; + $this->cachepath = $mx_root_path . 'cache/ctpl_' . str_replace('_', '-', $template_name) . '_'; + + if ($fallback_template_path !== false) + { + if (substr($fallback_template_path, -1) == '/') + { + $fallback_template_path = substr($fallback_template_path, 0, -1); + } + + $this->inherit_root = $fallback_template_path; + $this->orig_tpl_inherits_id = true; + } + else + { + $this->orig_tpl_inherits_id = false; + } + + // the database does not store the path or name of a custom template + // so there is no way we can properly store custom templates there + $this->orig_tpl_storedb = false; + $this->vars = &$this->_tpldata['.'][0]; + $this->_rootref = &$this->_tpldata['.'][0]; + return true; + } + /** - * Sets the template filenames for handles. $filename_array - * should be a hash of handle => filename pairs. - */ + * Sets the template filenames for handles. $filename_array + * should be a hash of handle => filename pairs. + * @access public + */ function set_filenames($filename_array) { if (!is_array($filename_array)) { return false; } - - foreach($filename_array as $handle => $filename) - { - $this->set_filename($handle, $filename); + foreach ($filename_array as $handle => $filename) + { + if (empty($filename)) + { + + trigger_error("template->set_filenames: Empty filename specified for $handle", E_USER_ERROR); + } + + /** */ + $this->filename[$handle] = $filename; + $this->files[$handle] = $this->root . '/' . $filename; + /** */ + $res = $this->set_filename($handle, $filename); + /** */ + if ($this->inherit_root) + { + $this->files_inherit[$handle] = $this->inherit_root . '/' . $filename; + } + /** */ } return true; } - - + + /** + * Get a filename from the handle + * + * @param string $handle + * @return string + */ + protected function get_filename_from_handle($handle) + { + return (isset($this->filenames[$handle])) ? $this->filenames[$handle] : $handle; + } + /** * Assigns template filename for handle. */ @@ -856,9 +1109,9 @@ function set_filename($handle, $filename, $xs_include = false, $quiet = false) die("Template->make_filename(): Error - invalid template $filename"); } } - + // creating cache filename - if($can_cache != '') + if(!empty($can_cache)) { $this->files_cache2[$handle] = $this->make_filename_cache($this->files[$handle]); if(@file_exists($this->files_cache2[$handle])) @@ -930,7 +1183,16 @@ function execute($filename, $code, $handle, $include_once = false) if (!defined('IN_ADMIN')) { $admin_script = ($admin_script) ? $admin_script : $filename; - } + } + + //if ( !(PORTAL_BACKEND == 'phpbb3') ) + //{ + // $template = $theme['template_name']; + //} + //else + //{ + // $template = $theme['style_name']; + //} $template = $mx_user->template_name; @@ -960,7 +1222,54 @@ function execute($filename, $code, $handle, $include_once = false) } return true; } + + /** + * Extra CSS and JS + */ + function add_css_js() + { + if (!defined('CSS_JS_PARSED')) + { + define('CSS_JS_PARSED', true); + } + + // Include custom CSS from templates/CURRENT_TPL folder + if(is_array($this->css_style_include) && !empty($this->css_style_include)) + { + for ($i = 0; $i < sizeof($this->css_style_include); $i++) + { + $this->assign_block_vars('css_style_include', array( + 'CSS_FILE' => $this->css_style_include[$i], + ) + ); + } + } + + // Include custom CSS from templates/common folder + if(is_array($this->css_include) && !empty($this->css_include)) + { + for ($i = 0; $i < sizeof($this->css_include); $i++) + { + $this->assign_block_vars('css_include', array( + 'CSS_FILE' => $this->css_include[$i], + ) + ); + } + } + // Include custom JS from templates/common folder + if(is_array($this->js_include) && !empty($this->js_include)) + { + for ($i = 0; $i < sizeof($this->js_include); $i++) + { + $this->assign_block_vars('js_include', array( + 'JS_FILE' => $this->js_include[$i], + ) + ); + } + } + } + /** * Load the file for the handle, compile the file, * and run the compiled code. This will print out @@ -969,6 +1278,23 @@ function execute($filename, $code, $handle, $include_once = false) function pparse($handle) { global $board_config; + + // Mighty Gorgon - Extra Debug - BEGIN + if (defined('DEBUG_EXTRA') && !empty($_REQUEST['explain'])) + { + global $mx_user, $db; + if (($mx_user->data['user_level'] == ADMIN) && method_exists($db, 'sql_report')) + { + return false; + } + } + // Mighty Gorgon - Extra Debug - END + + if (!defined('CSS_JS_PARSED')) + { + $this->add_css_js(); + } + // parsing header if there is one if($this->preparse || $this->postparse) { @@ -993,8 +1319,7 @@ function pparse($handle) die("Template->loadfile(): No files found for handle $handle"); } $this->xs_startup(); - $force_recompile = empty($this->uncompiled_code[$handle]) ? false : true; - + $force_recompile = empty($this->uncompiled_code[$handle]) ? false : true; // checking if php file exists. if (!empty($this->files_cache[$handle]) && !$force_recompile) { @@ -1018,8 +1343,7 @@ function pparse($handle) { $this->compiled_code[$handle] = $this->compile2($this->uncompiled_code[$handle], '', ''); } - } - + } // Run the compiled code. if (empty($this->files_cache[$handle]) || $force_recompile) { @@ -1029,10 +1353,10 @@ function pparse($handle) { $this->execute($this->files_cache[$handle], '', $handle); } - return true; } + /** * Load a compiled template if possible, if not, recompile it * @access private @@ -1183,40 +1507,112 @@ function assign_var_from_handle($varname, $handle) } /** - * Block-level variable assignment. Adds a new block iteration with the given - * variable assignments. Note that this should only be called once per block - * iteration. - */ - function assign_block_vars($blockname, $vararray) + * Assign key variable pairs from an array to a specified block + * + * @param string $blockname Name of block to assign $vararray to + * @param array $vararray A hash of variable name => value pairs + * @return true + */ + public function assign_block_vars($blockname, array $vararray) { + $this->num_rows_is_set = false; if (strstr($blockname, '.')) { - // Nested block. + // For nested block, $blockcount > 0, for top-level block, $blockcount == 0 $blocks = explode('.', $blockname); - $blockcount = sizeof($blocks) - 1; - + $blockcount = count($blocks) - 1; $str = &$this->_tpldata; - for($i = 0; $i < $blockcount; $i++) + $block = &$this->tpldata; + for ($i = 0; $i < $blockcount; $i++) { + $pos = strpos($blocks[$i], '['); + $name = ($pos !== false) ? substr($blocks[$i], 0, $pos) : $blocks[$i]; + $block = &$block[$name]; + $index = (!$pos || strpos($blocks[$i], '[]') === $pos) ? (count($block) - 1) : (min((int) substr($blocks[$i], $pos + 1, -1), count($block) - 1)); + $block = &$block[$index]; + $str = &$str[$blocks[$i].'.']; - $str = &$str[sizeof($str)-1]; + + $str = &$str[sizeof($str)-1]; + } + + // $block = &$block[$blocks[$i]]; // Do not traverse the last block as it might be empty + $name = $blocks[$i]; + + // Assign S_ROW_COUNT and S_ROW_NUM + $s_row_count = isset($block[$name]) ? count($block[$name]) : 0; + $vararray['S_ROW_COUNT'] = $vararray['S_ROW_NUM'] = $s_row_count; + + // Assign S_FIRST_ROW + if (!$s_row_count) + { + $vararray['S_FIRST_ROW'] = true; + } + + // Assign S_BLOCK_NAME + $vararray['S_BLOCK_NAME'] = $name; + + // Now the tricky part, we always assign S_LAST_ROW and remove the entry before + // This is much more clever than going through the complete template data on display (phew) + $vararray['S_LAST_ROW'] = true; + if ($s_row_count > 0) + { + unset($block[$name][($s_row_count - 1)]['S_LAST_ROW']); } + // Now we add the block that we're actually assigning to. // We're adding a new iteration to this block with the given - // variable assignments. + // variable assignments. + $block[$name][] = $vararray; $str[$blocks[$blockcount].'.'][] = $vararray; } else { // Top-level block. + $s_row_count = (isset($this->_tpldata[$blockname])) ? sizeof($this->_tpldata[$blockname]) : 0; + // T$s_row_count = (isset($this->tpldata[$blockname])) ? sizeof($this->tpldata[$blockname]) : 0; + $vararray['S_ROW_COUNT'] = $s_row_count; + + // Assign S_FIRST_ROW + if (!$s_row_count) + { + $vararray['S_FIRST_ROW'] = true; + } + + // We always assign S_LAST_ROW and remove the entry before + $vararray['S_LAST_ROW'] = true; + if ($s_row_count > 0) + { + unset($this->_tpldata[$blockname][($s_row_count - 1)]['S_LAST_ROW']); + } + // Add a new iteration to this block with the variable assignments // we were given. $this->_tpldata[$blockname.'.'][] = $vararray; + //$this->tpldata[$blockname.'.'][] = $vararray; + // Add a new iteration to this block with the variable assignments we were given. } return true; } + + /** + * Assign key variable pairs from an array to a whole specified block loop + * + * @param string $blockname Name of block to assign $block_vars_array to + * @param array $block_vars_array An array of hashes of variable name => value pairs + * @return true + */ + public function assign_block_vars_array($blockname, array $block_vars_array) + { + foreach ($block_vars_array as $vararray) + { + $this->assign_block_vars($blockname, $vararray); + } + return true; + } + /** * Root-level variable assignment. Adds to current assignments, overriding * any existing variable assignment with the same name. @@ -1226,6 +1622,7 @@ function assign_vars($vararray) foreach($vararray as $key => $val) { $this->vars[$key] = $val; + //$this->_rootref[$key] = $val; } return true; } @@ -1237,10 +1634,94 @@ function assign_vars($vararray) function assign_var($varname, $varval) { $this->vars[$varname] = $varval; - + //$this->_rootref[$varname] = $varval; + return true; } + + /** + * Returns a reference to template data array. + * + * This function is public so that template renderer may invoke it. + * Users should alter template variables via functions in \phpbb\template\template. + * + * Note: modifying returned array will affect data stored in the context. + * + * @return array template data + */ + function &get_data_ref() + { + // returning a reference directly is not + // something php is capable of doing + $ref = &$this->tpldata; + + if (!$this->num_rows_is_set) + { + /* + * We do not set S_NUM_ROWS while adding a row, to reduce the complexity + * If we would set it on adding, each subsequent adding would cause + * n modifications, resulting in a O(n!) complexity, rather then O(n) + */ + foreach ($ref as $loop_name => &$loop_data) + { + if ($loop_name === '.') + { + continue; + } + + $this->set_num_rows($loop_data); + } + $this->num_rows_is_set = true; + } + + return $ref; + } + + /** + * Set S_NUM_ROWS for each row in this template block + * + * @param array $loop_data + */ + protected function set_num_rows(&$loop_data) + { + $s_num_rows = sizeof($loop_data); + foreach ($loop_data as &$mod_block) + { + foreach ($mod_block as $sub_block_name => &$sub_block) + { + // If the key name is lowercase and the data is an array, + // it could be a template loop. So we set the S_NUM_ROWS there + // aswell. + if ($sub_block_name === strtolower($sub_block_name) && is_array($sub_block)) + { + $this->set_num_rows($sub_block); + } + } + + // Check whether we are inside a block before setting the variable + if (isset($mod_block['S_BLOCK_NAME'])) + { + $mod_block['S_NUM_ROWS'] = $s_num_rows; + } + } + } + /** + * Returns a reference to template root scope. + * + * This function is public so that template renderer may invoke it. + * Users should not need to invoke this function. + * + * Note: modifying returned array will affect data stored in the context. + * + * @return array template data + */ + public function &get_root_ref() + { + // rootref is already a reference + return $this->rootref; + } + /** * If not already done, load the file for the given handle and populate * the uncompiled_code[] hash with its code. Do not compile. @@ -1265,10 +1746,19 @@ function loadfile($handle) { die("Template->loadfile(): No file specified for handle $handle"); } - - $filename = $this->files[$handle]; - - $str = implode('', @file($filename)); + + // Don't chmod links as mostly those require 0777 and that cannot be changed + if (is_file($this->files[$handle])) + { + $filename = $this->files[$handle]; + $str = @implode('', file($filename)); + } + else if (is_dir($this->files[$handle]) || (is_link($this->files[$handle]))) + { + $filename = $this->files[$handle] . 'index_'.$handle.'.html'; + $str = @implode('', file($filename)); + } + if (empty($str)) { die("Template->loadfile(): File $filename for handle $handle is empty"); @@ -1324,6 +1814,7 @@ function generate_block_varref($namespace, $varname, $use_isset = true) */ function generate_block_data_ref($blockname, $include_last_iterator, $defop = false) { + $blockname = !empty($blockname) ? $blockname : 'parent'; // Get an array of the blocks involved. $blocks = explode('.', $blockname); $blockcount = sizeof($blocks) - 1; @@ -1353,10 +1844,161 @@ function generate_block_data_ref($blockname, $include_last_iterator, $defop = fa return '$'. $blocks[$blockcount-1]. '_item[\''. $blocks[$blockcount]. '.\']'; } } + + /** + * Remove any PHP tags that do not belong, these regular expressions are derived from + * the ones that exist in zend_language_scanner.l + * @access private + */ + function remove_php_tags(&$code) + { + // This matches the information gathered from the internal PHP lexer + $match = array( + '#<([\?%])=?.*?\1>#s', + '#.*?#s', + '#<\?php(?:\r\n?|[ \n\t]).*?\?>#s' + ); - function compile_code($filename, $code, $use_isset = false) + $code = preg_replace($match, '', $code); + } + + /** + * Compile blocks + * @access private + */ + function compile_tag_block($tag_args) { - // $filename - file to load code from. used if $code is empty + $no_nesting = false; + + // Is the designer wanting to call another loop in a loop? + if (strpos($tag_args, '!') === 0) + { + // Count the number of ! occurrences (not allowed in vars) + $no_nesting = substr_count($tag_args, '!'); + $tag_args = substr($tag_args, $no_nesting); + } + + // Allow for control of looping (indexes start from zero): + // foo(2) : Will start the loop on the 3rd entry + // foo(-2) : Will start the loop two entries from the end + // foo(3,4) : Will start the loop on the fourth entry and end it on the fifth + // foo(3,-4) : Will start the loop on the fourth entry and end it four from last + if (preg_match('#^([^()]*)\(([\-\d]+)(?:,([\-\d]+))?\)$#', $tag_args, $match)) + { + $tag_args = $match[1]; + + if ($match[2] < 0) + { + $loop_start = '($_' . $tag_args . '_count ' . $match[2] . ' < 0 ? 0 : $_' . $tag_args . '_count ' . $match[2] . ')'; + } + else + { + $loop_start = '($_' . $tag_args . '_count < ' . $match[2] . ' ? $_' . $tag_args . '_count : ' . $match[2] . ')'; + } + + if (strlen($match[3]) < 1 || $match[3] == -1) + { + $loop_end = '$_' . $tag_args . '_count'; + } + else if ($match[3] >= 0) + { + $loop_end = '(' . ($match[3] + 1) . ' > $_' . $tag_args . '_count ? $_' . $tag_args . '_count : ' . ($match[3] + 1) . ')'; + } + else //if ($match[3] < -1) + { + $loop_end = '$_' . $tag_args . '_count' . ($match[3] + 1); + } + } + else + { + $loop_start = 0; + $loop_end = '$_' . $tag_args . '_count'; + } + $this->block_names = is_array($this->block_names) ? $this->block_names : array($this->block_names, $this->block_names); + $tag_template_php = ''; + array_push($this->block_names, $tag_args); + + if ($no_nesting !== false) + { + // We need to implode $no_nesting times from the end... + $block = array_slice($this->block_names, -$no_nesting); + } + else + { + $block = $this->block_names; + } + + if (sizeof($block) < 2) + { + // Block is not nested. + $tag_template_php = '$_' . $tag_args . "_count = (isset(\$this->_tpldata['$tag_args'])) ? sizeof(\$this->_tpldata['$tag_args']) : 0;"; + $varref = "\$this->_tpldata['$tag_args']"; + //$varref = $this->_tpldata[$tag_args]; + } + else + { + // This block is nested. + // Generate a namespace string for this block. + $namespace = implode('.', $block); + + // Get a reference to the data array for this block that depends on the + // current indices of all parent blocks. + $varref = $this->generate_block_data_ref($namespace, false); + + // Create the for loop code to iterate over this block. + $tag_template_php = '$_' . $tag_args . '_count = (isset(' . $varref . ')) ? sizeof(' . $varref . ') : 0;'; + } + + $tag_template_php .= 'if ($_' . $tag_args . '_count) {'; + + /** + * The following uses foreach for iteration instead of a for loop, foreach is faster but requires PHP to make a copy of the contents of the array which uses more memory + * + * if (!$offset) + * { + * $tag_template_php .= 'foreach (' . $varref . ' as $_' . $tag_args . '_i => $_' . $tag_args . '_val){'; + * } + * + */ + + $tag_template_php .= 'for ($_' . $tag_args . '_i = ' . $loop_start . '; $_' . $tag_args . '_i < ' . $loop_end . '; ++$_' . $tag_args . '_i){'; + $tag_template_php .= '$_'. $tag_args . '_val = &' . $varref . '[$_'. $tag_args. '_i];'; + + return $tag_template_php; + } + + /** + * Compile INCLUDE tag + * @access private + */ + function compile_tag_include($tag_args) + { + // Process dynamic includes + if ($tag_args[0] == '$') + { + return "if (isset($tag_args)) { \$this->_tpl_include($tag_args); }"; + } + + return "\$this->_tpl_include('$tag_args');"; + } + + /** + * Compile INCLUDE_PHP tag + * @access private + */ + function compile_tag_include_php($tag_args) + { + return "\$this->_php_include('$tag_args');"; + } + + /** + * Compile variables + * @access private + */ + function compile_code($filename, $code, $use_isset = false) + { + global $mx_user; + // $filename - file to load code from. used if $code is empty // $code - tpl code // $use_isset - if false then compiled code looks more beautiful and easier // to understand and it adds error_reporting() to supress php warnings. @@ -1369,13 +2011,201 @@ function compile_code($filename, $code, $use_isset = false) { $code = @implode('', @file($filename)); } + + /* Our phpBB tags */ + /* Commented out tokens are handled separately from the main replace /* * / + $phpbb_tags = array( + //'BEGIN', + //'BEGINELSE', + //'END', + //'IF', + //'ELSE', + //'ELSEIF', + //'ENDIF', + //'DEFINE', + //'UNDEFINE', + 'ENDDEFINE', + 'INCLUDE', + 'INCLUDEPHP', + 'INCLUDEJS', + 'INCLUDECSS', + 'PHP', + 'ENDPHP', + 'EVENT', + ); - // Replace phpBB 2.2 tags + /** Twig tag masks /** / + $twig_tags = array( + 'autoescape', + 'endautoescape', + 'if', + 'elseif', + 'else', + 'endif', + 'block', + 'endblock', + 'use', + 'extends', + 'embed', + 'filter', + 'endfilter', + 'flush', + 'for', + 'endfor', + 'macro', + 'endmacro', + 'import', + 'from', + 'sandbox', + 'endsandbox', + 'set', + 'endset', + //'spaceless', + //'endspaceless', + 'verbatim', + 'endverbatim', + ); + /**/ + + /** Remove any "loose" php ... we want to give admins the ability + /** to switch on/off PHP for a given template. Allowing unchecked + /** php is a no-no. There is a potential issue here in that non-php + /** content may be removed ... however designers should use entities + /** if they wish to display < and > ** / + $this->remove_php_tags($code); + + /** Replace some unitialised page_header() tags **/ + $code = str_replace('{TEMPLATE_ROOT_PATH}', TEMPLATE_ROOT_PATH, $code); + $code = str_replace('{U_PORTAL_ROOT_PATH}', PORTAL_URL, $code); + $code = str_replace('{U_PHPBB_ROOT_PATH}', PHPBB_URL, $code); + $code = str_replace('{T_MXBB_STYLESHEET}', $mx_user->theme['head_stylesheet'], $code); + + /** Replace phpBB 2.2 tags **/ + preg_match_all('#(.*?)#s', $code, $matches); + $php_blocks = $matches[1]; + $code = preg_replace('#.*?#s', '', $code); + $code = str_replace('$HAS_SUB', 'S_HAS_SUBFORUM', $code); + $code = str_replace('.topicrow', 'S_HAS_SUBFORUM', $code); + $code = str_replace('not .notifications', 'not NOTIFICATIONS_COUNT', $code); + $code = str_replace('.birthdays', 'S_DISPLAY_BIRTHDAY_LIST', $code); + + $code = str_replace('.postrow.contact', '$postrow_item[\'contact.\']', $code); + $code = str_replace('.pagination or', 'PAGINATION or', $code); + $code = str_replace('.pagination', 'PAGINATION', $code); + $code = str_replace('.quickmod', 'QUICKMOD', $code); + + /** Pull out all block/statement level elements and separate plain text **/ + preg_match_all('##', $code, $matches); + $include_blocks = $matches[1]; + + //$code = preg_replace('##', '', $code); + + /** Remove overall_header and overall_footer included in MX-PORTAL and phpBB2 and mx_phpbb3 Forum Integration + via page_header.php and page_tail.php **/ + $code = str_replace('#', $code, $matches); + $includephp_blocks = $matches[1]; + $code = preg_replace('##', '', $code); + + /** Pull out all block/statement level elements and separate plain text **/ + preg_match_all('##', $code, $blocks, PREG_SET_ORDER); + + /** Pull out all block/statement level elements and separate plain text ** / + $text_blocks = preg_split('##', $code); + /** Fix tokens that may have inline variables (e.g. ', $code); + + $code = str_replace('{% set', '', $code); + + /** Fix our BEGIN statements step3 this will break mx_main_layout.html and mx_menu_classic_ver.html. ** / + $code = str_replace('%', '--', $code); + + /**Fix our IF tokens **/ + // $code = $this->fix_if_tokens($code); + + // Replace ELSE IF with ELSEIF + $code = preg_replace('##', '', $code); + + /** Fix our DEFINE tokens **/ + // $code = $this->fix_define_tokens($code); + $code = $this->fix_tokens_define($code); + + /** Replace all of our starting tokens, with Twig style, {% TOKEN %} + // This also strips outer parenthesis, becomes ** / + $code = preg_replace('##', '{% $1 $2 %}', $code); + + /**Replace all of our twig masks with Twig code (e.g. with {% block $1 %}) ** / + $code = $this->replace_tag_twig_masks($code, $twig_tags); + //$code = $this->replace_twig_tag_masks($code, $twig_tags); + + /** Replace all of our language variables, {L_VARNAME}, with Twig style, {{ lang('NAME') }} + // Appends any filters after lang() ** / + $code = preg_replace('#{L_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2 }}', $code); + + /** Replace all of our escaped language variables, {LA_VARNAME}, with Twig style, {{ lang('NAME')|escape('js') }} + // Appends any filters after lang(), but before escape('js') ** / + $code = preg_replace('#{LA_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2|escape(\'js\') }}', $code); + + /** Replace all of our variables, {VARNAME}, with Twig style, {{ VARNAME }} ** / + $code = preg_replace('#{([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ $1$2 }}', $code); + + /**Appends any filters **/ + /** Replace .foo with $foo **/ + //$code = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9]+)([^a-zA-Z_0-9\.])#', '$1\$$2 ', $code); + //$code = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9]+)([^a-zA-Z_0-9\.])#', '$1\$$2 ', $code); + + /**Replace .foo.bar with foo.bar|length ** / + $code = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9\.]+)([^a-zA-Z_0-9\.])#', '$1$2|length$3', $code); + + + /** Replace phpBB 2.2 tags /**/ $search = array('', ''); $replace = array('<'.'?php ', ' ?'.'>'); $code = str_replace($search, $replace, $code); - // Break it up into lines and put " -->" back. + // prepare array for compiled code + $compiled = array(); + $count_bugs = count($this->bugs); + + // array of switches + $sw = array(); + + /** Break it up into lines and put " -->" back. **/ + $code_lines = explode(' -->', $code); $count = count($code_lines); for ($i = 0; $i < ($count - 1); $i++) @@ -1399,7 +2229,7 @@ function compile_code($filename, $code, $use_isset = false) // replace all short php tags $new_code = array(); $line_count = count($code_lines); - for($i=0; $i<$line_count; $i++) + for($i = 0; $i < $line_count; $i++) { $line = $code_lines[$i]; $pos = strpos($line, '', $pos1); + $pos2 = strpos($line, ' -->', $pos1); if($pos2 !== false) { // find end of keyword in comment @@ -1505,7 +2335,7 @@ function compile_code($filename, $code, $use_isset = false) } // remove keyword $keyword_str = substr($line, $pos1, $pos2 - $pos1 + 4); - $params_str = ($pos2 == $pos3) ? '' : trim(substr($line, $pos3 + 1, $pos2 - $pos3 - 1)); + $params_str = $pos2 == $pos3 ? '' : substr($line, $pos3 + 1, $pos2 - $pos3 - 1); $code_lines[$i] = substr($line, $pos2 + 4); $i--; // Check keywords @@ -1644,15 +2474,15 @@ function compile_code($filename, $code, $use_isset = false) $line = '<'."?php\n\n"; if($use_isset) { - $line .= '$'. $var. '_count = ( isset('. $varref. ') ) ? sizeof('. $varref. ') : 0;'; + $line .= '$'. $var . '_count = ( isset('. $varref . ') ) ? sizeof('. $varref . ') : 0;'; } else { - $line .= '$'. $var. '_count = sizeof('. $varref. ');'; + $line .= '$'. $var . '_count = sizeof('. $varref . ');'; } - $line .= "\n". 'for ($'. $var. '_i = 0; $'. $var. '_i < $'. $var. '_count; $'. $var. '_i++)'; + $line .= "\n". 'for ($'. $var . '_i = 0; $'. $var . '_i < $'. $var . '_count; $'. $var . '_i++)'; $line .= "\n". '{'. "\n"; - $line .= ' $'. $var. '_item = &'. $varref. '[$'. $var. '_i];'."\n"; + $line .= ' $'. $var . '_item = &'. $varref . '[$'. $var . '_i];'."\n"; $line .= " \${$var}_item['S_ROW_COUNT'] = \${$var}_i;\n"; $line .= " \${$var}_item['S_NUM_ROWS'] = \${$var}_count;\n"; $line .= "\n?".">"; @@ -1834,7 +2664,73 @@ function compile_code($filename, $code, $use_isset = false) return $code_header . implode('', $compiled) . $code_footer; } + + /** + * Get template vars in a format Twig will use (from the context) + * + * @return array + */ + function get_template_vars() + { + $context_vars = $this->get_data_ref(); + + $vars = array_merge( + $context_vars, // To get normal vars + array( + 'definition' => new definition(), + 'user' => $this->user, + 'loops' => $context_vars, // To get loops + ) + ); + + // cleanup + unset($vars['loops']['.']); + return $vars; + } + + /** + * Compile variables + * @access private + */ + function compile_var_tags(&$text_blocks) + { + // change template varrefs into PHP varrefs + $varrefs = array(); + + // This one will handle varrefs WITH namespaces + preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $text_blocks, $varrefs, PREG_SET_ORDER); + + foreach ($varrefs as $var_val) + { + $namespace = $var_val[1]; + $varname = $var_val[3]; + $new = $this->generate_block_varref($namespace, $varname, true, $var_val[2]); + + $text_blocks = str_replace($var_val[0], $new, $text_blocks); + } + + // This will handle the remaining root-level varrefs + // transform vars prefixed by L_ into their language variable pendant if nothing is set within the tpldata array + if (strpos($text_blocks, '{L_') !== false) + { + $text_blocks = preg_replace('#\{L_([A-Z0-9\-_]+)\}#', "_rootref['L_\\1'])) ? \$this->_rootref['L_\\1'] : ((isset(\$mx_user->lang['\\1'])) ? \$mx_user->lang['\\1'] : '{ \\1 }')); ?>", $text_blocks); + } + + // Handle addslashed language variables prefixed with LA_ + // If a template variable already exist, it will be used in favor of it... + if (strpos($text_blocks, '{LA_') !== false) + { + $text_blocks = preg_replace('#\{LA_([A-Z0-9\-_]+)\}#', "_rootref['LA_\\1'])) ? \$this->_rootref['LA_\\1'] : ((isset(\$this->_rootref['L_\\1'])) ? addslashes(\$this->_rootref['L_\\1']) : ((isset(\$mx_user->lang['\\1'])) ? addslashes(\$mx_user->lang['\\1']) : '{ \\1 }'))); ?>", $text_blocks); + } + + // Handle remaining varrefs + $text_blocks = preg_replace('#\{([A-Z0-9\-_]+)\}#', "_rootref['\\1'])) ? \$this->_rootref['\\1'] : ''; ?>", $text_blocks); + $text_blocks = preg_replace('#\{\$([A-Z0-9\-_]+)\}#', "_tpldata['DEFINE']['.']['\\1'])) ? \$this->_tpldata['DEFINE']['.']['\\1'] : ''; ?>", $text_blocks); + + return; + } + /* * Compile code between tags */ @@ -2023,7 +2919,7 @@ function _parse_is_expr($is_arg, $tokens) { $expr = "!($is_arg % 2)"; } - break; + break; case 'odd': if (@$tokens[$expr_end] == 'by') @@ -2036,7 +2932,7 @@ function _parse_is_expr($is_arg, $tokens) { $expr = "($is_arg % 2)"; } - break; + break; case 'div': if (@$tokens[$expr_end] == 'by') @@ -2045,7 +2941,7 @@ function _parse_is_expr($is_arg, $tokens) $expr_arg = $tokens[$expr_end++]; $expr = "!($is_arg % $expr_arg)"; } - break; + break; default: break; @@ -2079,23 +2975,25 @@ function compile_tag_define($tag_args) else { preg_match('#(true|false|\.)#i', $match[5], $type); - - switch (strtolower($type[1])) + // Aprint_r($type[1]); + switch (@strtolower($type[1])) { case 'true': case 'false': $match[5] = strtoupper($match[5]); - break; + break; case '.'; $match[5] = doubleval($match[5]); - break; + break; default: $match[5] = intval($match[5]); - break; + break; } } - - return (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[3] . '\']' : '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[3] . '\']') . ' = ' . $match[5] . ';'; + + $tag_return = (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[3] . '\']' : '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[3] . '\']') . ' = ' . $match[5] . ';'; + + return $tag_return; } function compile_tag_undefine($tag_args) @@ -2323,6 +3221,7 @@ function append_block_vars($blockname, $vararray) // Top-level block. // Add a new iteration to this block with the variable assignments // we were given. + $this->_tpldata[$blockname.'.'] = isset($this->_tpldata[$blockname.'.']) ? $this->_tpldata[$blockname.'.'] : $blockname; $str = &$this->_tpldata[$blockname.'.']; $count = sizeof($str) - 1; if($count >= 0) @@ -2341,8 +3240,9 @@ function flush_block_vars($blockname) { // Top-level block. // flush a existing block we were given. - $current_iteration = sizeof($this->_tpldata[$blockname . '.']) - 1; - unset($this->_tpldata[$blockname . '.']); + $this->_tpldata[$blockname.'.'] = isset($this->_tpldata[$blockname.'.']) ? $this->_tpldata[$blockname.'.'] : $blockname; + $current_iteration = sizeof($this->_tpldata[$blockname.'.']) - 1; + unset($this->_tpldata[$blockname.'.']); return true; } @@ -2381,6 +3281,35 @@ function _add_config($tpl, $add_vars = true) return true; } } + elseif(@file_exists($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i=0; $istyle_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + $board_config[$config_name] = $str; + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + $db->sql_query($sql); + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } return false; } @@ -2443,6 +3372,45 @@ function _refresh_config($tpl, $add_vars = false) return true; } } + elseif(@file_exists($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i = 0; $i < count($style_config); $i++) + { + if(!isset($this->style_config[$style_config[$i]['var']])) + { + $this->style_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + if(isset($board_config[$config_name])) + { + $sql = "UPDATE " . CONFIG_TABLE . " SET config_value='" . str_replace('\\\'', '\'\'', addslashes($str)) . "' WHERE config_name='" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "'"; + } + else + { + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + } + $db->sql_query($sql); + $board_config[$config_name] = $str; + // recache config table for cat_hierarchy 2.1.0 + global $board_config; + if(isset($board_config['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } return false; } @@ -2537,6 +3505,7 @@ function _serialize($array) } return $str; } + function _unserialize($str) { $array = array(); @@ -2551,7 +3520,728 @@ function _unserialize($str) } return $array; } + + /** + * Change already assigned key variable pair (one-dimensional - single loop entry) + * + * An example of how to use this function: + * {@example alter_block_array.php} + * + * @param string $blockname the blockname, for example 'loop' + * @param array $vararray the var array to insert/add or merge + * @param mixed $key Key to search for + * + * array: KEY => VALUE [the key/value pair to search for within the loop to determine the correct position] + * + * int: Position [the position to change or insert at directly given] + * + * If key is false the position is set to 0 + * If key is true the position is set to the last entry + * + * @param string $mode Mode to execute (valid modes are 'insert' and 'change') + * + * If insert, the vararray is inserted at the given position (position counting from zero). + * If change, the current block gets merged with the vararray (resulting in new key/value pairs be added and existing keys be replaced by the new value). + * + * Since counting begins by zero, inserting at the last position will result in this array: array(vararray, last positioned array) + * and inserting at position 1 will result in this array: array(first positioned array, vararray, following vars) + * + * @return bool false on error, true on success + * @access public + */ + function alter_block_array($blockname, $vararray, $key = false, $mode = 'insert') + { + if (strpos($blockname, '.') !== false) + { + // Nested blocks are not supported + return false; + } + // Change key to zero (change first position) if false and to last position if true + if ($key === false || $key === true) + { + $key = ($key === false) ? 0 : sizeof($this->_tpldata[$blockname]); + } + + // Get correct position if array given + if (is_array($key)) + { + // Search array to get correct position + list($search_key, $search_value) = @each($key); + + $key = NULL; + foreach ($this->_tpldata[$blockname] as $i => $val_ary) + { + if ($val_ary[$search_key] === $search_value) + { + $key = $i; + break; + } + } + + // key/value pair not found + if ($key === NULL) + { + return false; + } + } + + // Insert Block + if ($mode == 'insert') + { + // Make sure we are not exceeding the last iteration + if ($key >= sizeof($this->_tpldata[$blockname])) + { + $key = sizeof($this->_tpldata[$blockname]); + unset($this->_tpldata[$blockname][($key - 1)]['S_LAST_ROW']); + $vararray['S_LAST_ROW'] = true; + } + else if ($key === 0) + { + unset($this->_tpldata[$blockname][0]['S_FIRST_ROW']); + $vararray['S_FIRST_ROW'] = true; + } + + // Re-position template blocks + for ($i = sizeof($this->_tpldata[$blockname]); $i > $key; $i--) + { + $this->_tpldata[$blockname][$i] = $this->_tpldata[$blockname][$i-1]; + $this->_tpldata[$blockname][$i]['S_ROW_COUNT'] = $i; + } + + // Insert vararray at given position + $vararray['S_ROW_COUNT'] = $key; + $this->_tpldata[$blockname][$key] = $vararray; + + return true; + } + + // Which block to change? + if ($mode == 'change') + { + if ($key == sizeof($this->_tpldata[$blockname])) + { + $key--; + } + + $this->_tpldata[$blockname][$key] = array_merge($this->_tpldata[$blockname][$key], $vararray); + return true; + } + + return false; + } + + /** + * Include a separate template + * @access private + */ + function _tpl_include($filename, $include = true) + { + $handle = $filename; + $this->filename[$handle] = $filename; + $this->files[$handle] = $this->root . '/' . $filename; + /** */ + $this->set_filename($handle, $filename); + /** */ + if ($this->inherit_root) + { + $this->files_inherit[$handle] = $this->inherit_root . '/' . $filename; + } + + $filename = $this->_tpl_load($handle); + + if ($include) + { + global $mx_user; + + if ($filename) + { + include($filename); + return; + } + eval(' ?>' . $this->compiled_code[$handle] . '_php_include(): File ' . htmlspecialchars($filename) . ' does not exist or is empty'; + return; + } + } + + public function set_environment() + { + $this->env = ''; + } + + public function tokenize($code, $filename = null) + { + // Our phpBB tags + // Commented out tokens are handled separately from the main replace + $phpbb_tags = array( + /*'BEGIN', + 'BEGINELSE', + 'END', + 'IF', + 'ELSE', + 'ELSEIF', + 'ENDIF', + 'DEFINE', + 'UNDEFINE',*/ + 'ENDDEFINE', + 'INCLUDE', + 'INCLUDEPHP', + 'INCLUDEJS', + 'INCLUDECSS', + 'PHP', + 'ENDPHP', + 'EVENT', + ); + + // Twig tag masks + /** + * Remove whitespaces between HTML tags. + * + *
    +		 * {% spaceless %}
    +		 *      
    + * foo + *
    + * {% endspaceless %} + * + * {# output will be
    foo
    #} + *
    + * + */ + $twig_tags = array( + 'autoescape', + 'endautoescape', + 'if', + 'elseif', + 'else', + 'endif', + 'block', + 'endblock', + 'use', + 'extends', + 'embed', + 'filter', + 'endfilter', + 'flush', + 'for', + 'endfor', + 'macro', + 'endmacro', + 'import', + 'from', + 'sandbox', + 'endsandbox', + 'set', + 'endset', + //'spaceless', + //'endspaceless', + 'verbatim', + 'endverbatim', + ); + + // Fix tokens that may have inline variables (e.g. with Twig style, {% TOKEN %} + // This also strips outer parenthesis, becomes + $code = preg_replace('##', '{% $1 $2 %}', $code); + + // Replace all of our twig masks with Twig code (e.g. with {% block $1 %}) + $code = $this->replace_twig_tag_masks($code, $twig_tags); + + // Replace all of our language variables, {L_VARNAME}, with Twig style, {{ lang('NAME') }} + // Appends any filters after lang() + $code = preg_replace('#{L_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2 }}', $code); + + // Replace all of our escaped language variables, {LA_VARNAME}, with Twig style, {{ lang('NAME')|escape('js') }} + // Appends any filters after lang(), but before escape('js') + $code = preg_replace('#{LA_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2|escape(\'js\') }}', $code); + + // Replace all of our variables, {VARNAME}, with Twig style, {{ VARNAME }} + // Appends any filters + $code = preg_replace('#{([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ $1$2 }}', $code); + + // Tokenize \Twig_Source instance + return $code; + } + + /** + * Strip surrounding quotes + * + * First step to fix tokens that may have inline variables + * E.g. #', '', $code); + } + + /** + * Fix tokens that may have inline variables + * + * Second step to fix tokens that may have inline variables + * E.g. "; + }; + + return preg_replace_callback('##', $callback, $code); + } + + /** + * Add surrounding quotes + * + * Last step to fix tokens that may have inline variables + * E.g. #', '', $code); + } + + /** + * Fix begin tokens (convert our BEGIN to Twig for) + * + * Not meant to be used outside of this context, public because the anonymous function calls this + * + * @param string $code + * @param array $parent_nodes (used in recursion) + * @return string + */ + public function fix_begin_tokens($code, $parent_nodes = array()) + { + // PHP 5.3 cannot use $this in an anonymous function, so use this as a work-around + $parent_class = $this; + $callback = function ($matches) use ($parent_class, $parent_nodes) + { + $hard_parents = explode('.', $matches[1]); + array_pop($hard_parents); // ends with . + if ($hard_parents) + { + $parent_nodes = array_merge($hard_parents, $parent_nodes); + } + + $name = $matches[2]; + $subset = trim(substr($matches[3], 1, -1)); // Remove parenthesis + $body = $matches[4]; + + // Replace + $body = str_replace('', '{% else %}', $body); + + // Is the designer wanting to call another loop in a loop? + // + // + // + // + // 'loop2' is actually on the same nesting level as 'loop' you assign + // variables to it with template->assign_block_vars('loop2', array(...)) + if (strpos($name, '!') === 0) + { + // Count the number if ! occurrences + $count = substr_count($name, '!'); + for ($i = 0; $i < $count; $i++) + { + array_pop($parent_nodes); + $name = substr($name, 1); + } + } + + // Remove all parent nodes, e.g. foo, bar from foo.bar.foobar.VAR + foreach ($parent_nodes as $node) + { + $body = preg_replace('#([^a-zA-Z0-9_])' . $node . '\.([a-zA-Z0-9_]+)\.#', '$1$2.', $body); + } + + // Add current node to list of parent nodes for child nodes + $parent_nodes[] = $name; + + // Recursive...fix any child nodes + $body = $parent_class->fix_begin_tokens($body, $parent_nodes); + + // Need the parent variable name + array_pop($parent_nodes); + $parent = (!empty($parent_nodes)) ? end($parent_nodes).'.' : ''; + + if ($subset !== '') + { + $subset = '|subset(' . $subset . ')'; + } + + $parent = ($parent) ? $parent : 'loops.'; + // Turn into a Twig for loop + return "{% for {$name} in {$parent}{$name}{$subset} %}{$body}{% endfor %}"; + }; + + return preg_replace_callback('#(.+?)#s', $callback, $code); + } + + /** + * Fix begin tokens (convert our Twig to BEGIN for) + * + * Not meant to be used outside of this context, public because the anonymous function calls this + * + * @param string $code + * @param array $parent_nodes (used in recursion) + * @return string + */ + public function fix_tokens_begin($code, $parent_nodes = array()) + { + // PHP 5.3 cannot use $this in an anonymous function, so use this as a work-around + $parent_class = $this; + $callback = function ($matches) use ($parent_class, $parent_nodes) + { + $hard_parents = explode('.', $matches[1]); + array_pop($hard_parents); // ends with . + if ($hard_parents) + { + $parent_nodes = array_merge($hard_parents, $parent_nodes); + } + + $name = $matches[2]; + $subset = trim(substr($matches[3], 1, -1)); // Remove parenthesis + $body = $matches[4]; + + // Replace + $body = str_replace('{% else %}', '', $body); + + // Is the designer wanting to call another loop in a loop? + // + // + // + // + // 'loop2' is actually on the same nesting level as 'loop' you assign + // variables to it with template->assign_block_vars('loop2', array(...)) + if (strpos($name, '!') === 0) + { + // Count the number if ! occurrences + $count = substr_count($name, '!'); + for ($i = 0; $i < $count; $i++) + { + array_pop($parent_nodes); + $name = substr($name, 1); + } + } + + // Remove all parent nodes, e.g. foo, bar from foo.bar.foobar.VAR + foreach ($parent_nodes as $node) + { + $body = preg_replace('#([^a-zA-Z0-9_])' . $node . '\.([a-zA-Z0-9_]+)\.#', ' $1 $2 . ', $body); + } + + // Add current node to list of parent nodes for child nodes + $parent_nodes[] = $name; + + // Recursive...fix any child nodes + $body = $parent_class->fix_tokens_begin($body, $parent_nodes); + + // Need the parent variable name + array_pop($parent_nodes); + $parent = (!empty($parent_nodes)) ? end($parent_nodes) . '.' : ''; + + if ($subset !== '') + { + $subset = '|subset(' . $subset . ')'; + } + + $parent = ($parent) ? $parent : 'loops.'; + // loop + return "{$body}"; + }; + + return preg_replace_callback('#(.+?)#s', $callback, $code); + } + + /** + * Fix IF statements + * + * @param string $code + * @return string + */ + protected function fix_if_tokens($code) + { + // Replace ELSE IF with ELSEIF + $code = preg_replace('##', '', $code); + + // Replace our "div by" with Twig's divisibleby (Twig does not like test names with spaces) + $code = preg_replace('# div by ([0-9]+)#', ' divisibleby($1)', $code); + + $callback = function($matches) + { + $inner = $matches[2]; + // Replace $TEST with definition.TEST + $inner = preg_replace('#(\s\(*!?)\$([a-zA-Z_0-9]+)#', '$1definition.$2', $inner); + + // Replace .foo with loops.foo|length + // $inner = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9]+)([^a-zA-Z_0-9\.])#', '$1loops.$2|length$3', $inner); + + // Replace .foo.bar with foo.bar|length + // $inner = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9\.]+)([^a-zA-Z_0-9\.])#', '$1$2|length$3', $inner); + + return ""; + }; + + return preg_replace_callback('##', $callback, $code); + } + + /** + * Fix DEFINE statements and {$VARNAME} variables + * + * @param string $code + * @return string + */ + protected function fix_define_tokens($code) + { + /** + * Changing $VARNAME to definition.varname because set is only local + * context (e.g. DEFINE $TEST will only make $TEST available in current + * template and any child templates, but not any parent templates). + * + * DEFINE handles setting it properly to definition in its node, but the + * variables reading FROM it need to be altered to definition.VARNAME + * + * Setting up definition as a class in the array passed to Twig + * ($context) makes set definition.TEST available in the global context + */ + + // Replace #', '{% DEFINE $1 %}', $code); + + // Changing UNDEFINE NAME to DEFINE NAME = null to save from creating an extra token parser/node + $code = preg_replace('##', '{% DEFINE $1= null %}', $code); + + // Replace all of our variables, {$VARNAME}, with Twig style, {{ definition.VARNAME }} + $code = preg_replace('#{\$([a-zA-Z0-9_\.]+)}#', '{{ definition.$1 }}', $code); + + // Replace all of our variables, ~ $VARNAME ~, with Twig style, ~ definition.VARNAME ~ + $code = preg_replace('#~ \$([a-zA-Z0-9_\.]+) ~#', '~ definition.$1 ~', $code); + + return $code; + } + + /** + * Fix DEFINE statements and {$VARNAME} variables + * + * @param string $code + * @return string + */ + protected function fix_tokens_define($code) + { + /** + * Changing $VARNAME to definition.varname because set is only local + * context (e.g. DEFINE $TEST will only make $TEST available in current + * template and any child templates, but not any parent templates). + * + * DEFINE handles setting it properly to definition in its node, but the + * variables reading FROM it need to be altered to definition.VARNAME + * + * Setting up definition as a class in the array passed to Twig + * ($context) makes set definition.TEST available in the global context + */ + + // Replace ', $code); + + // Changing UNDEFINE NAME to DEFINE NAME = null to save from creating an extra token parser/node + $code = preg_replace('#{% UNDEFINE \$(.*?)%}#', '', $code); + + // Replace all of our variables, {$VARNAME}, with Twig style, {{ definition.VARNAME }} + //$code = preg_replace('#{\$([a-zA-Z0-9_\.]+)}#', '{{ definition.$1 }}', $code); + + // Replace all of our variables, ~ $VARNAME ~, with Twig style, ~ definition.VARNAME ~ + //$code = preg_replace('#~ \$([a-zA-Z0-9_\.]+) ~#', '~ definition.$1 ~', $code); + + return $code; + } + + /** + * Replace Twig tag masks with Twig tag calls + * + * E.g. with {% block foo %} + * + * @param string $code + * @param array $twig_tags All tags we want to create a mask for + * @return string + */ + protected function replace_twig_tag_masks($code, $twig_tags) + { + $callback = function ($matches) + { + $matches[1] = strtolower($matches[1]); + + return "{% {$matches[1]}{$matches[2]}%}"; + }; + + foreach ($twig_tags as &$tag) + { + $tag = strtoupper($tag); + } + + // twig_tags is an array of the twig tags, which are all lowercase, but we use all uppercase tags + $code = preg_replace_callback('##', $callback, $code); + + return $code; + } + + /** + * Replace Twig tag masks with Twig tag calls + * + * E.g. with {% block foo %} + * + * @param string $code + * @param array $twig_tags All tags we want to create a mask for + * @return string + */ + protected function replace_tag_twig_masks($code, $twig_tags) + { + $callback = function ($matches) + { + $matches[1] = strtolower($matches[1]); + + return ""; + }; + + foreach ($twig_tags as &$tag) + { + $tag = strtoupper($tag); + } + + // twig_tags is an array of the twig tags, which are all lowercase, but we use all uppercase tags + $code = preg_replace_callback('#{% (' . implode('|', $twig_tags) . ')(.*?)%}#', $callback, $code); + + return $code; + } +} + +/** +* This class holds all DEFINE variables from the current page load +*/ +class definition +{ + /** @var array **/ + protected $definitions = array(); + + /** + * Get a DEFINE'd variable + * + * @param string $name + * @param array $arguments + * + * @return mixed Null if not found + */ + public function __call($name, $arguments) + { + return (isset($this->definitions[$name])) ? $this->definitions[$name] : null; + } + + /** + * DEFINE a variable + * + * @param string $name + * @param mixed $value + * @return \phpbb\template\twig\definition + */ + public function set($name, $value) + { + $this->definitions[$name] = $value; + + return $this; + } + + /** + * Append to a variable + * + * @param string $name + * @param string $value + * @return \phpbb\template\twig\definition + */ + public function append($name, $value) + { + if (!isset($this->definitions[$name])) + { + $this->definitions[$name] = ''; + } + + $this->definitions[$name] .= $value; + + return $this; + } } function xs_switch($tpl, $name) diff --git a/includes/template_beta.php b/includes/template_beta.php new file mode 100644 index 00000000..68721cd4 --- /dev/null +++ b/includes/template_beta.php @@ -0,0 +1,2562 @@ +_tpldata[block.][iteration#][child.][iteration#][child2.][iteration#][variablename] == value + // if it's a root-level variable, it'll be like this: + // $this->vars[varname] == value or $this->_tpldata['.'][0][varname] == value + // array "vars" is added for easier access to data + var $_tpldata = array('.' => array(0 => array())); + var $vars; + + // Hash of filenames for each template handle. + var $files = array(); + var $files_cache = array(); // array of cache files that exists + var $files_cache2 = array(); // array of cache files (exists or not exists) + + // Root template directory. + var $root = ''; + + // Cache directory (compatible with default cache mod) + var $cachedir = ''; + + // Search/replace for unknown files + var $cache_search = array(); + var $cache_replace = array(); + + // Template root directory (generated by set_rootdir) + var $tpldir = ''; + var $tpldir_len = 0; + + // Default template directory. + // If file for default template isn't found file from this template is used. + //var $tpldef = 'subSilver'; + var $tpldef = '_core'; + + // this will hash handle names to the compiled code for that handle. + var $compiled_code = array(); + + // This will hold the uncompiled code for that handle. + var $uncompiled_code = array(); + + // Cache settings + var $use_cache = 1; + var $cache_writable = 1; + + // Auto-compile setting + var $auto_compile = 1; + + // Current template name + var $tpl = ''; + + // List of replacements. tpl files in this list will be replaced with other tpl files + // according to configuration in xs.cfg + var $replace = array(); + + // counter for include + var $include_count = 0; + + // php extension. will be replaced by $phpEx in Template() function unless you disable it there + var $php = 'php'; + + // True if check switches + var $xs_check_switches = 1; + + // eXtreme Styles variables + var $xs_started = 0; + var $xs_version = 8; // number version. internal. do not change. + var $xs_versiontxt = '2.4.0'; // text version + + // These handles will be parsed if pparse() is executed. + // Can be used to automatically include header/footer if there is any content. + var $preparse = ''; + var $postparse = ''; + + // subtemplates mod detection + var $subtemplates = false; + + // style configuration + var $style_config = array(); + + // list of switches that are known typos in some mods. + // when error checking is enabled these errors will be auto-fixed. + // format: + // array(start_tag, end_tag) + var $bugs = array( + // ezportal typo: + array('fetchpost_row', 'fetch_post_row'), + // mycalendar 2.2.7 typos: + array('date_cell', 'date_cells'), + array('date_row', 'date_rows'), + // history mod typo: + array('site_today', 'site_week'), + ); + + /** + * Constructor. Installs XS mod on first run or updates it and sets the root dir. + */ + function Template($root = '.') + { + // setting pointer "vars" + $this->vars = &$this->_tpldata['.'][0]; + // load configuration + $this->load_config($root); + } + + /** + * Load mod configuration + */ + function load_config($root) + { + global $mx_cache, $board_config, $portal_config, $phpbb_root_path, $mx_root_path, $phpEx, $mx_backend; + + $edit_db = $mx_backend->edit_db; + + // getting mod version from config and comparing with real data + $ver = isset($board_config['xs_version']) ? $board_config['xs_version'] : ( isset($portal_config['xs_version']) ? $portal_config['xs_version'] : 0 ); + // check configuration + // set config values if there aren't any + $add = array(); + $del = array(); + $up = array(); + // list of outdated variables + $outdated = array( + 'xs_versoin', // was a typo in one of previous versions + 'xs_separator', // no longer used + 'xs_cache_dir_absolute', // no longer used + 'xs_cache_dir', // no longer used + 'xs_use_isset', // no longer used + ); + // list of default values + $default = array( + 'xs_auto_compile' => 1, + 'xs_auto_recompile' => 1, + 'xs_use_cache' => 1, + 'xs_php' => $phpEx, + 'xs_def_template' => 'subSilver', + 'xs_check_switches' => 1, + 'xs_warn_includes' => 1, + 'xs_add_comments' => 0, + 'xs_ftp_host' => '', + 'xs_ftp_login' => '', + 'xs_ftp_path' => '', + 'xs_downloads_count' => '0', + 'xs_downloads_default' => '0', + 'xs_shownav' => '1', + 'xs_template_time' => '0', + ); + // checking if all variables exist + foreach($default as $var => $value) + { + if(!isset($board_config[$var])) + { + $board_config[$var] = $value; + $add[] = $var; + } + } + // checking if there are any outdated variables that should be deleted + for($i=0; $ixs_version; + $add[] = 'xs_version'; + } + elseif($board_config['xs_version'] != $this->xs_version) + { + $board_config['xs_version'] = $this->xs_version; + $up[] = 'xs_version'; + } + // check config + if(!empty($board_config['xs_auto_recompile'])) + { + if(!$board_config['xs_auto_compile']) + { + $board_config['xs_auto_compile'] = 1; + if(!in_array('xs_auto_compile', $up) && !in_array('xs_auto_compile', $add)) + { + $up[] = 'xs_auto_compile'; + } + } + } + // install/upgrade + if($edit_db && ((count($add) > 0) || (count($up) > 0) || (count($del) > 0))) + { + $board_config['xs_template_time'] = time(); + if(!in_array('xs_template_time', $up)) + { + $up[] = 'xs_template_time'; + } + global $db; + if(!empty($db)) + { + // adding new config values + for($i=0; $isql_query($sql); + } + // removing old configuration variables that aren't used + for($i=0; $isql_query($sql); + } + // updating variables that should be overwritten + for($i=0; $iput( 'phpbb_config', $board_config ); + $db->sql_query($sql); + } + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + } + } + $this->php = isset($board_config['xs_php']) ? $board_config['xs_php'] : ( isset($portal_config['xs_php']) ? $portal_config['xs_php'] : '' ); + $this->tpldef = isset($board_config['xs_def_template']) ? $board_config['xs_def_template'] : ( isset($portal_config['xs_def_template']) ? $portal_config['xs_def_template'] : '' ); + $this->use_cache = isset($board_config['xs_use_cache']) ? $board_config['xs_use_cache'] : ( isset($portal_config['xs_use_cache']) ? $portal_config['xs_use_cache'] : '' ); + $this->auto_compile = isset($board_config['xs_auto_compile']) ? $board_config['xs_auto_compile'] : ( isset($portal_config['xs_auto_compile']) ? $portal_config['xs_auto_compile'] : '' ); + $this->xs_check_switches = isset($board_config['xs_check_switches']) ? $board_config['xs_check_switches'] : ( isset($portal_config['xs_check_switches']) ? $portal_config['xs_check_switches'] : '' ); + $this->cache_search = array('.', '\\', '/', '_tpl'); + $this->cache_replace = array('_', XS_SEPARATOR, XS_SEPARATOR, '.'.$this->php); + $old_root = $this->root; + $this->set_rootdir($root); + if(!empty($this->tpl)) + { + $this->load_replacements($this->tpldir . $this->tpl . '/xs.cfg'); + } + if($old_root !== $this->root) + { + $this->clear_files(); + } + } + + /** + * Sets the template root directory for this Template object. + */ + function set_rootdir($dir) + { + global $board_config, $phpbb_root_path, $mx_root_path; + if (!@is_dir($dir)) + { + return false; + } + $dir = str_replace('\\', '/', $dir); + // creating absolute path for cache + $this->cachedir = $mx_root_path . XS_DIR_CACHE . '/'; + // creating absolute path for current template and root dir + $this->tpldir = $mx_root_path . 'templates/'; + $this->tpldir_len = strlen($this->tpldir); + $this->root = $dir; + $this->tpl = $this->template_name($dir); + // check configuration + $this->get_config(); + // check subtemplates mod + $sub_templates_cfg = $this->root . '/sub_templates.cfg'; + if(defined('LANG_EXTEND_DONE') && @file_exists($sub_templates_cfg)) + { + $this->subtemplates = true; + } + return true; + } + + /** + * Set custom template location (able to use directory outside of phpBB) + * @access public + */ + function set_custom_template($template_path, $template_name) + { + global $board_config, $phpbb_root_path, $mx_root_path; + + $this->root = $template_path; + $this->cachepath = $mx_root_path . 'cache/ctpl_' . $template_name . '_'; + $this->cachedir = $mx_root_path . XS_DIR_CACHE . '/'; + + return true; + } + + /** + * Destroys this template object. Should be called when you're done with it, in order + * to clear out the template data so you can load/parse a new template set. + */ + function destroy() + { + $this->_tpldata = array('.' => array(0 => array())); + $this->vars = &$this->_tpldata['.'][0]; + $this->xs_started = 0; + } + + /** + * Clears list of compiled files. + */ + function clear_files() + { + $this->files = array(); + $this->files_cache = array(); + $this->files_cache2 = array(); + $this->compiled_code = array(); + $this->uncompiled_code = array(); + } + + /** + * Loads replacements from .cfg file + */ + function load_replacements($file) + { + if(@file_exists($file)) + { + $replace = array(); + @include($file); + $this->replace = array_merge($this->replace, $replace); + } + } + + /** + * Extracts template name from path + */ + function template_name($dir) + { + $tpl = XS_TPL_ANY; // can start at any position + $tpl_null = XS_TPL_START; // can start only at zero position + // searching for 'templates/' and removing everything before it + $pos = strpos($dir, $tpl); + if($pos === false) + { + if(substr($dir, 0, strlen($tpl_null)) !== $tpl_null) + { + return ''; + } + $str = substr($dir, strlen($tpl_null), strlen($dir)); + } + else + { + $str = substr($dir, $pos + strlen($tpl), strlen($dir)); + } + // searching for one more 'templates/' + // that can happen if full path is like /home/some_dude/templates/phpbb/templates/subSilver/ + $dir = $this->template_name($str); + if(!$dir) + { + $dir = $str; + } + if(strpos($str, $tpl) !== false) + { + $dir = $this->template_name($str); + } + // check for another subdirectory + $pos = strpos($dir, '/'); + if($pos) + { + $dir = substr($dir, 0, $pos); + } + return $dir; + } + + function subtemplates_make_filename($filename) + { + global $mx_request_vars, $db, $board_config, $images, $theme; + global $sub_template_key_image, $sub_templates; + global $tree; + + // initiate the sub-template image pack that will be use + $sub_template_key_image = POST_CAT_URL . '0'; + + // Check if sub_templates are defined for this theme + if ( $board_config['version'] > '.0.5' ) + { + $sub_templates_cfg = mx_realpath($this->root . '/sub_templates.cfg'); + } + else + { + $sub_templates_cfg = $this->root . '/sub_templates.cfg'; + } + @include($sub_templates_cfg); + if ( isset($sub_templates) ) + { + // search an id + $cat_id = 0; + $forum_id = 0; + $topic_id = 0; + $post_id = 0; + + if ( !defined('IN_PRIVMSG') && $mx_request_vars->is_request(POST_POST_URL)) + { + $post_id = $mx_request_vars->request(POST_POST_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request(POST_TOPIC_URL) ) + { + $topic_id = $mx_request_vars->request(POST_TOPIC_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request(POST_FORUM_URL)) + { + $forum_id = $mx_request_vars->request(POST_FORUM_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request(POST_CAT_URL)) + { + $cat_id = $mx_request_vars->request(POST_CAT_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request('selected_id')) + { + $selected_id = $mx_request_vars->request('selected_id', MX_TYPE_NO_TAGS); + $type = substr($selected_id, 0, 1); + $id = intval(substr($selected_id, 1)); + if (!empty($id)) switch ($type) + { + case POST_CAT_URL: + $cat_id = $id; + break; + case POST_FORUM_URL: + $forum_id = $id; + break; + case POST_TOPIC_URL: + $topic_id = $id; + break; + case POST_POST_URL: + if ( !defined('IN_PRIVMSG') ) + { + $post_id = $id; + break; + } + default: + break; + } + } + + // find the forum + if ( ($forum_id <= 0) && ($cat_id <= 0) ) + { + if ($post_id > 0) + { + $sql = "SELECT * FROM " . POSTS_TABLE . " WHERE post_id=$post_id"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Wasn\'t able to access posts', '', __LINE__, __FILE__, $sql); + } + if ( $row = $db->sql_fetchrow($result) ) + { + $forum_id = $row['forum_id']; + } + } + + if ($topic_id > 0) + { + $sql = "SELECT * FROM " . TOPICS_TABLE . " WHERE topic_id=$topic_id"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Wasn\'t able to access topics', '', __LINE__, __FILE__, $sql); + } + if ( $row = $db->sql_fetchrow($result) ) + { + $forum_id = $row['forum_id']; + } + } + } + + // is the categories hierarchy v 2 installed ? + $cat_hierarchy = function_exists('get_auth_keys'); + + // get the ids (forums and cats) + $fids = array(); + if (!$cat_hierarchy) + { + if ($forum_id > 0) + { + // add the forum_id + $fids[] = POST_FORUM_URL . $forum_id; + + // get the cat_id + $sql = "SELECT * FROM " . FORUMS_TABLE . " WHERE forum_id=$forum_id"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Wasn\'t able to access forums', '', __LINE__, __FILE__, $sql); + } + if ( $row = $db->sql_fetchrow($result) ) + { + $cat_id = $row['cat_id']; + } + } + + // add the cat_id + if ($cat_id > 0) + { + $fids[] = POST_CAT_URL . $cat_id; + } + + // add the root level + $fids[] = 'Root'; + } + else + { + // categories hierarchy v 2 compliancy + $cur = 'Root'; + if ($forum_id > 0) + { + $cur = POST_FORUM_URL . $forum_id; + } + else if ($cat_id > 0) + { + $cur = POST_CAT_URL . $cat_id; + } + + // add start + $fids[] = $cur; + while ( ($cur != 'Root') && !empty($cur) ) + { + // get parent level + $cur = (isset($tree['main'][ $tree['keys'][$cur] ])) ? $tree['main'][ $tree['keys'][$cur] ] : 'Root'; + + // add the parent level + if ( !empty($cur) ) + { + $fids[] = $cur; + } + } + } + + // search if this file is part of a sub-template + $sub_tpl_file = ''; + $sub_css_file = ''; + $sub_img_file = ''; + $sub_img_path = ''; + $template_path = 'templates/'; + $template_name = substr( $this->root, strpos($this->root, $template_path) + strlen($template_path) ); + $real_root = $this->root; + if ( $board_config['version'] > '.0.5' ) + { + $real_root = mx_realpath($this->root); + } + if (substr($filename, 0, 1) != '/') + { + $found = false; + $num_fids = count($fids); + for ($i = 0; !$found && ($i < $num_fids); $i++) + { + $key = $fids[$i]; + + // convert root into c0 category + if ( ($key == 'Root') || empty($key) ) + { + $key = POST_CAT_URL . '0'; + } + + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + + // set the filename + if ( empty($sub_tpl_file) && file_exists($root_template_path . '/' . $filename) ) + { + $found = true; + $sub_tpl_file = $sub_templates[$key]['dir'] . '/' . $filename; + break; + } + } + } + + // set the css file name + $found = false; + $num_fids = count($fids); + for ($i = 0; !$found && ($i < $num_fids); $i++) + { + $key = $fids[$i]; + + // convert root into c0 category + if ( ($key == 'Root') || empty($key) ) + { + $key = POST_CAT_URL . '0'; + } + + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( empty($sub_css_file) && isset($sub_templates[$key]['head_stylesheet']) && file_exists($root_template_path . '/' . $sub_templates[$key]['head_stylesheet']) ) + { + $found = true; + $sub_css_file = $sub_templates[$key]['dir'] . '/' . $sub_templates[$key]['head_stylesheet']; + break; + } + } + } + + // set the img file name + $found = false; + $num_fids = count($fids); + for ($i = 0; !$found && ($i < $num_fids); $i++) + { + $key = $fids[$i]; + + // convert root into c0 category + if ( ($key == 'Root') || empty($key) ) + { + $key = POST_CAT_URL . '0'; + } + + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) + { + $sub_img_path = $sub_templates[$key]['dir']; + $sub_img_file = $sub_templates[$key]['imagefile']; + + // send back the lowest level of the images file + $found = true; + $sub_template_key_image = $key; + break; + } + } + } + } + + // set the tpl file + if ( !empty($sub_tpl_file) ) + { + $filename = $sub_tpl_file; + } + + // set the css file + if ( !empty($sub_css_file) ) + { + $theme['head_stylesheet'] = $sub_css_file; + } + + // get the root level images + $key = POST_CAT_URL . '0'; + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) + { + $sav_images = $images; + $images = array(); + @include($root_template_path . '/' . $sub_templates[$key]['imagefile']); + $img_lang = ( file_exists($root_template_path . '/images/lang_' . $board_config['default_lang']) ) ? $board_config['default_lang'] : 'english'; + foreach($images as $key => $value) + { + if ( !is_array($value) ) + { + $images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value); + } + $sav_images[$key] = $images[$key]; + } + $images = $sav_images; + $sav_images = array(); + } + } + + // get the current images + if ( !empty($sub_template_key_image) && ($sub_template_key_image != POST_CAT_URL . '0') ) + { + $key = $sub_template_key_image; + + // get the sub-template path + $current_template_path = $template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) + { + $sav_images = $images; + $images = array(); + @include($root_template_path . '/' . $sub_templates[$key]['imagefile']); + $img_lang = ( file_exists($root_template_path . '/images/lang_' . $board_config['default_lang']) ) ? $board_config['default_lang'] : 'english'; + foreach($images as $key => $value) + { + if ( !is_array($value) ) + { + $images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value); + } + $sav_images[$key] = $images[$key]; + } + $images = $sav_images; + $sav_images = array(); + } + } + } + return $filename; + } + + /** + * Generates a full path+filename for the given filename, which can either + * be an absolute name, or a name relative to the rootdir for this Template + * object. + */ + function make_filename($filename, $xs_include = false) + { + if($this->subtemplates) + { + $filename = $this->subtemplates_make_filename($filename); + } + // Check replacements list + if(!$xs_include && isset($this->replace[$filename])) + { + $filename = $this->replace[$filename]; + } + // Check if it's an absolute or relative path. + if ((substr($filename, 0, 1) !== '/') && (substr($filename, 1, 1) !== ':')) + { + return $this->root . '/' . $filename; + } + else + { + return str_replace('\\', '/', $filename); + } + } + + /** + * Converts template filename to cache filename. + * Returns empty string if non-cachable (for tpl files outside of root dir). + * $file should be absolute filename + */ + function make_filename_cache($file) + { + $str = str_replace($this->cache_search, $this->cache_replace, $file); + if(substr($file, 0, $this->tpldir_len) !== $this->tpldir || empty($this->tpl)) + { + return $this->cachedir . XS_TPL_PREFIX2 . $str; + } + // removing not needed part + $file = substr($file, $this->tpldir_len, strlen($file)); + // creating filename + return $this->cachedir . XS_TPL_PREFIX . str_replace($this->cache_search, $this->cache_replace, $file); + } + + /** + * Sets the template filenames for handles. $filename_array + * should be a hash of handle => filename pairs. + */ + function set_filenames($filename_array) + { + if (!is_array($filename_array)) + { + return false; + } + + foreach($filename_array as $handle => $filename) + { + + $this->set_filename($handle, $filename); + } + + return true; + } + + + /** + * Assigns template filename for handle. + */ + function set_filename($handle, $filename, $xs_include = false, $quiet = false) + { + global $board_config, $module_root_path, $mx_root_path, $phpbb_root_path, $theme, $mx_user, $mx_block; + $can_cache = $this->use_cache; + if(strpos($filename, '..') !== false) + { + $can_cache = false; + } + $this->files[$handle] = $this->make_filename($filename, $xs_include); + $this->files_cache[$handle] = ''; + $this->files_cache2[$handle] = ''; + // check if we are in admin control panel and override extreme styles mod controls if needed + if(defined('XS_ADMIN_OVERRIDE') && XS_ADMIN_OVERRIDE === true && @function_exists('xs_admin_override')) + { + xs_admin_override(); + } + // checking if we have valid filename + if(!$this->files[$handle]) + { + if($xs_include || $quiet) + { + return false; + } + else + { + die("Template->make_filename(): Error - invalid template $filename"); + } + } + + // creating cache filename + if($can_cache != '') + { + $this->files_cache2[$handle] = $this->make_filename_cache($this->files[$handle]); + if(@file_exists($this->files_cache2[$handle])) + { + $this->files_cache[$handle] = $this->files_cache2[$handle]; + } + } + // checking if tpl and/or php file exists + if(empty($this->files_cache[$handle]) && !@file_exists($this->files[$handle])) + { + // trying to load alternative filename (usually subSilver) + if(!empty($this->tpldef) && !empty($this->tpl) && ($this->tpldef !== $this->tpl)) + { + $this->files[$handle] = ''; + // save old configuration + $root = $this->root; + $tpl_name = $this->tpl; + // set temporary configuration + $this->root = $this->tpldir . $this->tpldef; + $this->tpl = $this->tpldef; + // recursively run set_filename + $res = $this->set_filename($handle, $filename, $xs_include, $quiet); + // restore old configuration + $this->root = $root; + $this->tpl = $tpl_name; + return $res; + } + if($quiet) + { + return false; + } + if($xs_include) + { + if($board_config['xs_warn_includes']) + { + die('Template->make_filename(): Error - included template file not found: ' . $filename); + } + return false; + } + else + { + die('Template->make_filename(): Error - template file not found: ' . $filename); + } + } + // checking if we should recompile cache + if(!empty($this->files_cache[$handle]) && !empty($board_config['xs_auto_recompile'])) + { + $cache_time = @filemtime($this->files_cache[$handle]); + if(@filemtime($this->files[$handle]) > $cache_time || $board_config['xs_template_time'] > $cache_time) + { + // file was changed. don't use cache file (will be recompled if configuration allowes it) + $this->files_cache[$handle] = ''; + } + } + return true; + } + + /** + * includes file or executes code + */ + function execute($filename, $code, $handle, $include_once = false) + { + global $lang, $theme, $board_config, $mx_user; + global $admin_script; + + // + // Note: This little snippet is needed to make the templating work with Olympus + // + if (!defined('IN_ADMIN')) + { + $admin_script = ($admin_script) ? $admin_script : $filename; + } + + $template = $mx_user->template_name; + + global $$template; + $theme_info = &$$template; + if($board_config['xs_add_comments'] && $handle) + { + echo ''; + } + //inlcude_once() only includes one block per module + if ($filename) + { + ($include_once) ? @include_once($filename) : @require($filename); + } + elseif ($admin_script) + { + ($include_once) ? @include_once($admin_script) : @require($admin_script); // See note above + } + else + { + @eval($code); + } + + if($board_config['xs_add_comments'] && $handle) + { + echo ''; + } + return true; + } + + /** + * Load the file for the handle, compile the file, + * and run the compiled code. This will print out + * the results of executing the template. + */ + function pparse($handle) + { + global $board_config; + // parsing header if there is one + if($this->preparse || $this->postparse) + { + $preparse = $this->preparse; + $postparse = $this->postparse; + $this->preparse = ''; + $this->postparse = ''; + if($preparse) + { + $this->pparse($preparse); + } + if($postparse) + { + $str = $handle; + $handle = $postparse; + $this->pparse($str); + } + } + // checking if handle exists + if (empty($this->files[$handle]) && empty($this->files_cache[$handle])) + { + die("Template->loadfile(): No files found for handle $handle"); + } + $this->xs_startup(); + $force_recompile = empty($this->uncompiled_code[$handle]) ? false : true; + + // checking if php file exists. + if (!empty($this->files_cache[$handle]) && !$force_recompile) + { + // php file exists - running it instead of tpl + $this->execute($this->files_cache[$handle], '', $handle); + return true; + } + if (!$this->loadfile($handle)) + { + die("Template->pparse(): Couldn't load template file for handle $handle"); + } + // actually compile the template now. + if (empty($this->compiled_code[$handle])) + { + // Actually compile the code now. + if(!empty($this->files_cache2[$handle]) && empty($this->files_cache[$handle]) && !$force_recompile) + { + $this->compiled_code[$handle] = $this->compile2($this->uncompiled_code[$handle], $handle, $this->files_cache2[$handle]); + } + else + { + $this->compiled_code[$handle] = $this->compile2($this->uncompiled_code[$handle], '', ''); + } + } + + // Run the compiled code. + if (empty($this->files_cache[$handle]) || $force_recompile) + { + $this->execute('', $this->compiled_code[$handle], $handle); + } + else + { + $this->execute($this->files_cache[$handle], '', $handle); + } + + return true; + } + + /** + * Load a compiled template if possible, if not, recompile it + * @access private + */ + function _tpl_load(&$handle) + { + global $mx_user, $phpEx, $board_config; + + $recompile = (($board_config['load_tplcompile'] && @filemtime($filename) < filemtime($this->files[$handle])) || !file_exists($filename) || @filesize($filename) === 0) ? true : false; + + // Recompile page if the original template is newer, otherwise load the compiled version + if (!$recompile) + { + return $filename; + } + + // Just compile if no user object is present (happens within the installer) + $this->loadfile($handle); + return false; + } + + /** + * Display handle + * @access public + */ + function display($handle, $include_once = true) + { + global $mx_user, $phpbb_hook; + + if (!empty($phpbb_hook) && $phpbb_hook->call_hook(array(__CLASS__, __FUNCTION__), $handle, $include_once)) + { + if ($phpbb_hook->hook_return(array(__CLASS__, __FUNCTION__))) + { + return $phpbb_hook->hook_return_result(array(__CLASS__, __FUNCTION__)); + } + } + + if (defined('IN_ERROR_HANDLER')) + { + if ((E_NOTICE & error_reporting()) == E_NOTICE) + { + error_reporting(error_reporting() ^ E_NOTICE); + } + } + + + //if ($filename = $this->_tpl_load($handle)) + if ($filename) + { + ($include_once) ? include_once($filename) : include($filename); + } + else + { + eval(' ?>' . $this->compiled_code[$handle] . 'display($handle, $include_once); + $contents = ob_get_clean(); + + if ($return_content) + { + return $contents; + } + + $this->assign_var($template_var, $contents); + + return true; + } + + /** + * Precompile file + */ + function precompile($template, $filename) + { + global $precompile_num, $board_config; + if(empty($precompile_num)) + { + $precompile_num = 0; + } + $precompile_num ++; + $handle = 'precompile_' . $precompile_num; + // save old configuration + $root = $this->root; + $tpl_name = $this->tpl; + $old_config = $this->use_cache; + $old_autosave = $this->auto_compile; + // set temporary configuration + $this->root = $this->tpldir . $template; + $this->tpl = $template; + $this->use_cache = 1; + $this->auto_compile = 1; + // set filename + $res = $this->set_filename($handle, $filename, true, true); + if(!$res || !$this->files_cache2[$handle]) + { + $this->root = $root; + $this->tpl = $tpl_name; + $this->use_cache = $old_config; + $this->auto_compile = $old_autosave; + return false; + } + $this->files_cache[$handle] = ''; + // load template + $res = $this->loadfile($handle); + if(!$res || empty($this->uncompiled_code[$handle])) + { + $this->root = $root; + $this->tpl = $tpl_name; + $this->use_cache = $old_config; + $this->auto_compile = $old_autosave; + return false; + } + // compile the code + $this->compile2($this->uncompiled_code[$handle], $handle, $this->files_cache2[$handle]); + // restore confirugation + $this->root = $root; + $this->tpl = $tpl_name; + $this->use_cache = $old_config; + $this->auto_compile = $old_autosave; + return true; + } + + /** + * Inserts the uncompiled code for $handle as the + * value of $varname in the root-level. This can be used + * to effectively include a template in the middle of another + * template. + * Note that all desired assignments to the variables in $handle should be done + * BEFORE calling this function. + */ + function assign_var_from_handle($varname, $handle) + { + ob_start(); + $res = $this->pparse($handle); + $this->vars[$varname] = ob_get_contents(); + ob_end_clean(); + return $res; + } + + /** + * Block-level variable assignment. Adds a new block iteration with the given + * variable assignments. Note that this should only be called once per block + * iteration. + */ + function assign_block_vars($blockname, $vararray) + { + if (strstr($blockname, '.')) + { + // Nested block. + $blocks = explode('.', $blockname); + $blockcount = sizeof($blocks) - 1; + + $str = &$this->_tpldata; + for($i = 0; $i < $blockcount; $i++) + { + $str = &$str[$blocks[$i].'.']; + $str = &$str[sizeof($str)-1]; + } + // Now we add the block that we're actually assigning to. + // We're adding a new iteration to this block with the given + // variable assignments. + $str[$blocks[$blockcount].'.'][] = $vararray; + } + else + { + // Top-level block. + // Add a new iteration to this block with the variable assignments + // we were given. + $this->_tpldata[$blockname.'.'][] = $vararray; + } + + return true; + } + + /** + * Root-level variable assignment. Adds to current assignments, overriding + * any existing variable assignment with the same name. + */ + function assign_vars($vararray) + { + foreach($vararray as $key => $val) + { + $this->vars[$key] = $val; + } + return true; + } + + /** + * Root-level variable assignment. Adds to current assignments, overriding + * any existing variable assignment with the same name. + */ + function assign_var($varname, $varval) + { + $this->vars[$varname] = $varval; + + return true; + } + + /** + * If not already done, load the file for the given handle and populate + * the uncompiled_code[] hash with its code. Do not compile. + */ + function loadfile($handle) + { + global $board_config; + // If cached file exists do nothing - it will be included via include() + if(!empty($this->files_cache[$handle])) + { + return true; + } + + // If the file for this handle is already loaded and compiled, do nothing. + if (!empty($this->uncompiled_code[$handle])) + { + return true; + } + + // If we don't have a file assigned to this handle, die. + if (empty($this->files[$handle])) + { + die("Template->loadfile(): No file specified for handle $handle"); + } + + $filename = $this->files[$handle]; + + $str = implode('', @file($filename)); + if (empty($str)) + { + die("Template->loadfile(): File $filename for handle $handle is empty"); + } + + $this->uncompiled_code[$handle] = $str; + + return true; + } + + + + /** + * Generates a reference to the given variable inside the given (possibly nested) + * block namespace. This is a string of the form: + * ' . $this->_tpldata['parent.'][$_parent_i]['$child1.'][$_child1_i]['$child2.'][$_child2_i]...['varname'] . ' + * It's ready to be inserted into an "echo" line in one of the templates. + * NOTE: expects a trailing "." on the namespace. + */ + function generate_block_varref($namespace, $varname, $use_isset = true) + { + // Strip the trailing period. + $namespace = substr($namespace, 0, strlen($namespace) - 1); + + // Get a reference to the data block for this namespace. + $varref = $this->generate_block_data_ref($namespace, true); + // Prepend the necessary code to stick this in an echo line. + + // Append the variable reference. + $varref .= '[\'' . $varname . '\']'; + + if($use_isset) + { + $varref = '<'.'?php echo isset(' . $varref . ') ? ' . $varref . ' : \'\'; ?'.'>'; + } + else + { + $varref = '<'.'?php echo ' . $varref . '; ?'.'>'; + } + + return $varref; + + } + + + /** + * Generates a reference to the array of data values for the given + * (possibly nested) block namespace. This is a string of the form: + * $this->_tpldata['parent.'][$_parent_i]['$child1.'][$_child1_i]['$child2.'][$_child2_i]...['$childN.'] + * + * If $include_last_iterator is true, then [$_childN_i] will be appended to the form shown above. + * NOTE: does not expect a trailing "." on the blockname. + */ + function generate_block_data_ref($blockname, $include_last_iterator, $defop = false) + { + // Get an array of the blocks involved. + $blocks = explode('.', $blockname); + $blockcount = sizeof($blocks) - 1; + if($defop) + { + $varref = '$this->_tpldata[\'DEFINE\']'; + // Build up the string with everything but the last child. + for ($i = 0; $i < $blockcount; $i++) + { + $varref .= "['" . $blocks[$i] . ".'][\$" . $blocks[$i] . '_i]'; + } + // Add the block reference for the last child. + $varref .= "['" . $blocks[$blockcount] . ".']"; + // Add the iterator for the last child if requried. + if ($include_last_iterator) + { + $varref .= '[$' . $blocks[$blockcount] . '_i]'; + } + return $varref; + } + if($include_last_iterator) + { + return '$'. $blocks[$blockcount]. '_item'; + } + else + { + return '$'. $blocks[$blockcount-1]. '_item[\''. $blocks[$blockcount]. '.\']'; + } + } + + function compile_code($filename, $code, $use_isset = false) + { + // $filename - file to load code from. used if $code is empty + // $code - tpl code + // $use_isset - if false then compiled code looks more beautiful and easier + // to understand and it adds error_reporting() to supress php warnings. + // if true then isset() is used to check variables instead of supressing + // php warnings. note: for extreme styles mod 2.x it works only for + // block variables and for usual variables its always true. + + // load code from file + if(!$code && !empty($filename)) + { + $code = @implode('', @file($filename)); + } + + // Replace phpBB 2.2 tags + $search = array('', ''); + $replace = array('<'.'?php ', ' ?'.'>'); + $code = str_replace($search, $replace, $code); + + // Break it up into lines and put " -->" back. + $code_lines = explode(' -->', $code); + $count = count($code_lines); + for ($i = 0; $i < ($count - 1); $i++) + { + $code_lines[$i] .= ' -->'; + } + + $block_nesting_level = 0; + $block_names = array(); + $block_names[0] = "."; + $block_items = array(); + $count_if = 0; + + // prepare array for compiled code + $compiled = array(); + $count_bugs = count($this->bugs); + + // array of switches + $sw = array(); + + // replace all short php tags + $new_code = array(); + $line_count = count($code_lines); + for($i=0; $i<$line_count; $i++) + { + $line = $code_lines[$i]; + $pos = strpos($line, ''; + $code_lines[$i] = substr($line, $pos + 2); + $i --; + } + $code_lines = $new_code; + + // main loop + $line_count = count($code_lines); + for($i=0; $i<$line_count; $i++) + { + $line = $code_lines[$i]; + // reset keyword type + $keyword_type = XS_TAG_NONE; + // check if we have valid keyword in current line + $pos1 = strpos($line, '', $pos1); + if($pos2 !== false) + { + // find end of keyword in comment + $pos3 = strpos($line, ' ', $pos1 + 5); + if($pos3 !== false && $pos3 <= $pos2) + { + $keyword = substr($line, $pos1 + 5, $pos3 - $pos1 - 5); + // check keyword against list of supported keywords. case-sensitive + if($keyword === 'BEGIN') + { + $keyword_type = XS_TAG_BEGIN; + } + elseif($keyword === 'END') + { + $keyword_type = XS_TAG_END; + } + elseif($keyword === 'INCLUDE') + { + $keyword_type = XS_TAG_INCLUDE; + } + elseif($keyword === 'IF') + { + $keyword_type = XS_TAG_IF; + } + elseif($keyword === 'ELSE') + { + $keyword_type = XS_TAG_ELSE; + } + elseif($keyword === 'ELSEIF') + { + $keyword_type = XS_TAG_ELSEIF; + } + elseif($keyword === 'ENDIF') + { + $keyword_type = XS_TAG_ENDIF; + } + elseif($keyword === 'DEFINE') + { + $keyword_type = XS_TAG_DEFINE; + } + elseif($keyword === 'UNDEFINE') + { + $keyword_type = XS_TAG_UNDEFINE; + } + elseif($keyword === 'BEGINELSE') + { + $keyword_type = XS_TAG_BEGINELSE; + } + } + } + if(!$keyword_type) + { + // not valid keyword. process the rest of line + $compiled[] = $this->_compile_text(substr($line, 0, $pos1 + 4), $use_isset); + $code_lines[$i] = substr($line, $pos1 + 4); + $i --; + continue; + } + // remove code before keyword + if($pos1 > 0) + { + $compiled[] = $this->_compile_text(substr($line, 0, $pos1), $use_isset); + } + // remove keyword + $keyword_str = substr($line, $pos1, $pos2 - $pos1 + 4); + $params_str = ($pos2 == $pos3) ? '' : trim(substr($line, $pos3 + 1, $pos2 - $pos3 - 1)); + $code_lines[$i] = substr($line, $pos2 + 4); + $i--; + // Check keywords + + /* + * + */ + if($keyword_type == XS_TAG_BEGIN) + { + $params = explode(' ', $params_str); + $num_params = count($params); + // get variable name + if($num_params == 1) + { + $var = $params[0]; + } + elseif($num_params == 2) + { + if($params[0] === '') + { + $var = $params[1]; + } + elseif($params[1] === '') + { + $var = $params[0]; + } + else + { + // invalid tag + $compiled[] = $keyword_str; + continue; + } + } + else + { + // invalid tag + $compiled[] = $keyword_str; + continue; + } + // check variable for matching end + if($this->xs_check_switches) + { + $found = 0; + $str = ''; + for ($j = $i+1; ($j < $line_count) && !$found; $j++) + { + $pos = strpos($code_lines[$j], $str); + if($pos !== false) + { + $found = 1; + $found_var = $var; + } + } + if(!$found && ($this->xs_check_switches == 1)) + { + // checking list of known buggy switches + $item = -1; + for($j=0; $j<$count_bugs; $j++) + { + if($this->bugs[$j][0] === $var) + { + $item = $j; + } + } + if($item >= 0) + { + $str1 = ''; + for ($j = $i+1; ($j < $line_count) && !$found; $j++) + { + $pos = strpos($code_lines[$j], $str1); + if($pos !== false) + { + $found_var = $this->bugs[$item][1]; + $found = 1; + $code_lines[$j] = str_replace($str, $str1, $code_lines[$j]); + } + } + } + } + if(!$found) + { + $compiled[] = $keyword_str; + continue; + } + // adding to list of switches + if(isset($sw[$found_var])) + { + $sw[$found_var] ++; + } + else + { + $sw[$found_var] = 1; + } + } + // adding code + $block_nesting_level++; + $block_names[$block_nesting_level] = $var; + if(isset($block_items[$var])) + { + $block_items[$var] ++; + } + else + { + $block_items[$var] = 1; + } + if ($block_nesting_level < 2) + { + // Block is not nested. + $line = '<'."?php\n\n"; + if($use_isset) + { + $line .= '$'. $var. '_count = ( isset($this->_tpldata[\''. $var. '.\']) ) ? sizeof($this->_tpldata[\''. $var. '.\']) : 0;'; + } + else + { + $line .= '$'. $var. '_count = sizeof($this->_tpldata[\''. $var. '.\']);'; + } + $line .= "\n" . 'for ($'. $var. '_i = 0; $'. $var. '_i < $'. $var. '_count; $'. $var. '_i++)'; + $line .= "\n". '{'. "\n"; + $line .= ' $'. $var. '_item = &$this->_tpldata[\''. $var. '.\'][$'. $var. '_i];'."\n"; + $line .= " \${$var}_item['S_ROW_COUNT'] = \${$var}_i;\n"; + $line .= " \${$var}_item['S_NUM_ROWS'] = \${$var}_count;\n"; + $line .= "\n?".">"; + } + else + { + // This block is nested. + // Generate a namespace string for this block. + $namespace = implode('.', $block_names); + // strip leading period from root level.. + $namespace = substr($namespace, 2); + // Get a reference to the data array for this block that depends on the + // current indices of all parent blocks. + $varref = $this->generate_block_data_ref($namespace, false); + // Create the for loop code to iterate over this block. + $line = '<'."?php\n\n"; + if($use_isset) + { + $line .= '$'. $var. '_count = ( isset('. $varref. ') ) ? sizeof('. $varref. ') : 0;'; + } + else + { + $line .= '$'. $var. '_count = sizeof('. $varref. ');'; + } + $line .= "\n". 'for ($'. $var. '_i = 0; $'. $var. '_i < $'. $var. '_count; $'. $var. '_i++)'; + $line .= "\n". '{'. "\n"; + $line .= ' $'. $var. '_item = &'. $varref. '[$'. $var. '_i];'."\n"; + $line .= " \${$var}_item['S_ROW_COUNT'] = \${$var}_i;\n"; + $line .= " \${$var}_item['S_NUM_ROWS'] = \${$var}_count;\n"; + $line .= "\n?".">"; + } + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_END) + { + $params = explode(' ', $params_str); + $num_params = count($params); + if($num_params == 1) + { + $var = $params[0]; + } + elseif($num_params == 2 && $params[0] === '') + { + $var = $params[1]; + } + elseif($num_params == 2 && $params[1] === '') + { + $var = $params[0]; + } + else + { + $compiled[] = $keyword_str; + continue; + } + if($this->xs_check_switches) + { + // checking if this switch was opened + if(!isset($sw[$var]) || ($sw[$var] < 1)) + { + // there is no opening switch + $compiled[] = $keyword_str; + continue; + } + $sw[$var] --; + } + // We have the end of a block. + $line = '<'."?php\n\n"; + $line .= '} // END ' . $var . "\n\n"; + $line .= 'if(isset($' . $var . '_item)) { unset($' . $var . '_item); } '; + $line .= "\n\n?".">"; + if(isset($block_items[$var])) + { + $block_items[$var] --; + } + else + { + $block_items[$var] = -1; + } + unset($block_names[$block_nesting_level]); + $block_nesting_level--; + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_BEGINELSE) + { + if($block_nesting_level) + { + $var = $block_names[$block_nesting_level]; + $compiled[] = '<' . '?php } if(!$' . $var . '_count) { ?' . '>'; + } + else + { + $compiled[] = $keyword_str; + continue; + } + } + /* + * + */ + if($keyword_type == XS_TAG_INCLUDE) + { + $params = explode(' ', $params_str); + $num_params = count($params); + if($num_params != 1) + { + $compiled[] = $keyword_str; + continue; + } + $line = '<'.'?php '; + $filehash = md5($params_str . $this->include_count . time()); + $line .= ' $this->set_filename(\'xs_include_' . $filehash . '\', \'' . $params_str .'\', true); '; + $line .= ' $this->pparse(\'xs_include_' . $filehash . '\'); '; + $line .= ' ?'.'>'; + $this->include_count ++; + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_IF || $keyword_type == XS_TAG_ELSEIF) + { + if(!$count_if) + { + $keyword_type = XS_TAG_IF; + } + $str = $this->compile_tag_if($params_str, $keyword_type == XS_TAG_IF ? false : true); + if($str) + { + $compiled[] = ''; + if($keyword_type == XS_TAG_IF) + { + $count_if ++; + } + } + else + { + $compiled[] = $keyword_str; + } + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_ELSE && $count_if > 0) + { + $compiled[] = ''; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_ENDIF && $count_if > 0) + { + $compiled[] = ''; + $count_if --; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_DEFINE) + { + $str = $this->compile_tag_define($params_str); + if($str) + { + $compiled[] = ''; + } + else + { + $compiled[] = $keyword_str; + } + } + /* + * + */ + if($keyword_type == XS_TAG_UNDEFINE) + { + $str = $this->compile_tag_undefine($params_str); + if($str) + { + $compiled[] = ''; + } + else + { + $compiled[] = $keyword_str; + } + } + } + + // bring it back into a single string. + $code_header = ''; + $code_footer = ''; + if(!$use_isset) + { + $code_header = "<". "?php\n\$old_level = @error_reporting(E_ERROR | E_WARNING | E_PARSE); \n?".">"; + $code_footer = '<'."?php @error_reporting(\$old_level); ?".'>'; + } + + return $code_header . implode('', $compiled) . $code_footer; + } + + /* + * Compile code between tags + */ + function _compile_text($code, $use_isset) + { + if(strlen($code) < 3) + { + return $code; + } + // change template varrefs into PHP varrefs + // This one will handle varrefs WITH namespaces + $varrefs = array(); + preg_match_all('#\{(([a-z0-9\-_]+?\.)+?)([a-z0-9\-_]+?)\}#is', $code, $varrefs); + $varcount = sizeof($varrefs[1]); + $search = array(); + $replace = array(); + for ($i = 0; $i < $varcount; $i++) + { + $namespace = $varrefs[1][$i]; + $varname = $varrefs[3][$i]; + $new = $this->generate_block_varref($namespace, $varname, $use_isset); + $search[] = $varrefs[0][$i]; + $replace[] = $new; + } + if(count($search) > 0) + { + $code = str_replace($search, $replace, $code); + } + // This will handle the remaining root-level varrefs + $code = preg_replace('#\{([a-z0-9\-_]*?)\}#is', '<'.'?php echo isset($this->vars[\'\1\']) ? $this->vars[\'\1\'] : $this->lang(\'\1\'); ?'.'>', $code); + $code = preg_replace('#\{\$([a-z0-9\-_]*?)\}#is', '<'.'?php echo isset($this->_tpldata[\'DEFINE\'][\'.\'][\'\\1\']) ? $this->_tpldata[\'DEFINE\'][\'.\'][\'\\1\'] : \'\'; ?'.'>', $code); + return $code; + } + + // + // Compile IF tags - much of this is from Smarty with + // some adaptions for our block level methods + // + function compile_tag_if($tag_args, $elseif) + { + /* Tokenize args for 'if' tag. */ + preg_match_all('/(?: + "[^"\\\\]*(?:\\\\.[^"\\\\]*)*" | + \'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\' | + [(),] | + [^\s(),]+)/x', $tag_args, $match); + + $tokens = $match[0]; + $is_arg_stack = array(); + + for ($i = 0; $i < count($tokens); $i++) + { + $token = &$tokens[$i]; + + switch ($token) + { + case '!': + case '%': + case '!==': + case '==': + case '===': + case '>': + case '<': + case '!=': + case '<>': + case '<<': + case '>>': + case '<=': + case '>=': + case '&&': + case '||': + case '|': + case '^': + case '&': + case '~': + case ')': + case ',': + case '+': + case '-': + case '*': + case '/': + case '@': + break; + + case 'eq': + $token = '=='; + break; + + case 'ne': + case 'neq': + $token = '!='; + break; + + case 'lt': + $token = '<'; + break; + + case 'le': + case 'lte': + $token = '<='; + break; + + case 'gt': + $token = '>'; + break; + + case 'ge': + case 'gte': + $token = '>='; + break; + + case 'and': + $token = '&&'; + break; + + case 'or': + $token = '||'; + break; + + case 'not': + $token = '!'; + break; + + case 'mod': + $token = '%'; + break; + + case '(': + array_push($is_arg_stack, $i); + break; + + case 'is': + $is_arg_start = ($tokens[$i-1] == ')') ? array_pop($is_arg_stack) : $i-1; + $is_arg = implode(' ', array_slice($tokens, $is_arg_start, $i - $is_arg_start)); + + $new_tokens = $this->_parse_is_expr($is_arg, array_slice($tokens, $i+1)); + + array_splice($tokens, $is_arg_start, count($tokens), $new_tokens); + + $i = $is_arg_start; + + default: + if (preg_match('#^(([a-z0-9\-_]+?\.)+?)?(\$)?([A-Z]+[A-Z0-9\-_]+)$#s', $token, $varrefs)) + { + $token = (!empty($varrefs[1])) ? $this->generate_block_data_ref(substr($varrefs[1], 0, -1), true, $varrefs[3]) . '[\'' . $varrefs[4] . '\']' : (($varrefs[3]) ? '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $varrefs[4] . '\']' : '$this->vars[\'' . $varrefs[4] . '\']'); + } + else if ( $token[0] == '.' ) + { + $token = 'sizeOf( $this->_tpldata[\'' . substr( $token, 1) . '.\'])'; + } + break; + } + } + + $code = (($elseif) ? '} elseif (' : 'if (') . (implode(' ', $tokens) . ') { '); + + return $code; + } + + // This is from Smarty + function _parse_is_expr($is_arg, $tokens) + { + $expr_end = 0; + $negate_expr = false; + + if (($first_token = array_shift($tokens)) == 'not') + { + $negate_expr = true; + $expr_type = array_shift($tokens); + } + else + { + $expr_type = $first_token; + } + + switch ($expr_type) + { + case 'even': + if (@$tokens[$expr_end] == 'by') + { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!(($is_arg / $expr_arg) % $expr_arg)"; + } + else + { + $expr = "!($is_arg % 2)"; + } + break; + + case 'odd': + if (@$tokens[$expr_end] == 'by') + { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "(($is_arg / $expr_arg) % $expr_arg)"; + } + else + { + $expr = "($is_arg % 2)"; + } + break; + + case 'div': + if (@$tokens[$expr_end] == 'by') + { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!($is_arg % $expr_arg)"; + } + break; + + default: + break; + } + + if ($negate_expr) + { + $expr = "!($expr)"; + } + + array_splice($tokens, 0, $expr_end, $expr); + + return $tokens; + } + + + function compile_tag_define($tag_args) + { + preg_match('#^(([a-z0-9\-_]+?\.)+?)?\$([A-Z][A-Z0-9_\-]*?) = (\'?)(.*?)(\'?)$#', $tag_args, $match); + + if (empty($match[3]) || empty($match[5])) + { + return ''; + } + + // Are we a string? + if ($match[4] && $match[6]) + { + $match[5] = "'" . addslashes(str_replace(array('\\\'', '\\\\'), array('\'', '\\'), $match[5])) . "'"; + } + else + { + preg_match('#(true|false|\.)#i', $match[5], $type); + + switch (strtolower($type[1])) + { + case 'true': + case 'false': + $match[5] = strtoupper($match[5]); + break; + case '.'; + $match[5] = doubleval($match[5]); + break; + default: + $match[5] = intval($match[5]); + break; + } + } + + return (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[3] . '\']' : '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[3] . '\']') . ' = ' . $match[5] . ';'; + } + + function compile_tag_undefine($tag_args) + { + preg_match('#^(([a-z0-9\-_]+?\.)+?)?\$([A-Z][A-Z0-9_\-]*?)$#', $tag_args, $match); + if (empty($match[3])) + { + return ''; + } + return 'unset(' . (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[3] . '\']' : '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[3] . '\']') . ');'; + } + + /** + * Compiles code and writes to cache if needed + */ + function compile2($code, $handle, $cache_file) + { + $code = $this->compile_code('', $code, XS_USE_ISSET); + if($cache_file && !empty($this->use_cache) && !empty($this->auto_compile)) + { + $res = $this->write_cache($cache_file, $code); + if($handle && $res) + { + $this->files_cache[$handle] = $cache_file; + } + } + $code = '?'.'>'.$code.'<'."?php\n"; + return $code; + } + + /** + * Compiles the given string of code, and returns + * the result in a string. + * If "do_not_echo" is true, the returned code will not be directly + * executable, but can be used as part of a variable assignment + * for use in assign_code_from_handle(). + * This function isn't used and kept only for compatibility with original template.php + */ + function compile($code, $do_not_echo = false, $retvar = '') + { + $code = ' ?'.'>' . $this->compile_code('', $code, true) . '<'."?php \n"; + if($do_not_echo) + { + $code = "ob_start();\n". $code. "\n\${$retvar} = ob_get_contents();\nob_end_clean();\n"; + } + return $code; + } + + /** + * Write cache to disk + */ + function write_cache($filename, $code) + { + // check if cache is writable + if(!$this->cache_writable) + { + return false; + } + // check if filename is valid + if(substr($filename, 0, strlen($this->cachedir)) !== $this->cachedir) + { + return false; + } + // try to open file + $file = @fopen($filename, 'w'); + if(!$file) + { + // try to create directories + $dir = substr($filename, strlen($this->cachedir), strlen($filename)); + $dirs = explode('/', $dir); + $path = $this->cachedir; + @umask(0); + if(!@is_dir($path)) + { + if(!@mkdir($path)) + { + $this->cache_writable = 0; + return false; + } + else + { + @chmod($path, 0777); + } + } + $count = count($dirs); + if($count > 0) + for($i=0; $i<$count-1; $i++) + { + if($i>0) + { + $path .= '/'; + } + $path .= $dirs[$i]; + if(!@is_dir($path)) + { + if(!@mkdir($path)) + { + $this->cache_writable = 0; + return false; + } + else + { + @chmod($path, 0777); + } + } + } + // try to open file again after directories were created + $file = @fopen($filename, 'w'); + } + if(!$file) + { + $this->cache_writable = 0; + return false; + } + fputs($file, ""); + fputs($file, $code); + fclose($file); + @chmod($filename, 0777); + return true; + } + + function xs_startup() + { + global $phpEx, $board_config, $phpbb_root_path, $mx_root_path; + if(empty($this->xs_started)) + { // adding predefined variables + $this->xs_started = 1; + // file extension with session ID (eg: "php?sid=123&" or "php?") + // can be used to make custom URLs without modding phpbb + // contains "&" or "?" at the end so you can easily append paramenters + $php = mx_append_sid($phpEx); + if(strpos($php, '?')) + { + $php .= '&'; + } + else + { + $php .= '?'; + } + $this->vars['PHP'] = isset($this->vars['PHP']) ? $this->vars['PHP'] : $php; + // adding language variable (eg: "english" or "german") + // can be used to make truly multi-lingual templates + $this->vars['LANG'] = isset($this->vars['LANG']) ? $this->vars['LANG'] : $board_config['default_lang']; + // adding current template + $tpl = $this->root . '/'; // $mx_root_path . 'templates/' . $this->tpl . '/'; + if(substr($tpl, 0, 2) === './') + { + $tpl = substr($tpl, 2, strlen($tpl)); + } + $this->vars['TEMPLATE'] = isset($this->vars['TEMPLATE']) ? $this->vars['TEMPLATE'] : $tpl; + $this->vars['TEMPLATE_NAME'] = isset($this->vars['TEMPLATE_NAME']) ? $this->vars['TEMPLATE_NAME'] : $this->tpl; + $this->_tpldata['switch_xs_enabled.'] = array(array('version' => $this->xs_versiontxt)); + } + } + + /** + * Checks for empty variable and shows language variable if possible. + */ + function lang($var) + { + global $lang; + if(substr($var, 0, 2) === 'L_') + { + $var = substr($var, 2); + // check variable as it is + if(isset($lang[$var])) + { + return $lang[$var]; + } + // check variable in lower case + if(isset($lang[strtolower($var)])) + { + return $lang[strtolower($var)]; + } + // check variable with first letter in upper case + $str = ucfirst(strtolower($var)); + if(isset($lang[$str])) + { + return $lang[$str]; + } + return "{{$var}}"; //str_replace('_', ' ', $var); + } + return ''; + } + + // + // + // Functions added for USERGROUP MOD (optimized) + // + // + function append_var_from_handle_to_block($blockname, $varname, $handle) + { + $this->assign_var_from_handle('_tmp', $handle); + // assign the value of the generated variable to the given varname. + $this->append_block_vars($blockname, array($varname => $this->vars['_tmp'])); + return true; + } + + function append_block_vars($blockname, $vararray) + { + if(strstr($blockname, '.')) + { + // Nested block. + $blocks = explode('.', $blockname); + $blockcount = sizeof($blocks) - 1; + $str = &$this->_tpldata; + for($i = 0; $i < $blockcount; $i++) + { + $str = &$str[$blocks[$i].'.']; + $str = &$str[sizeof($str)-1]; + } + // Now we add the block that we're actually assigning to. + // We're adding a new iteration to this block with the given + // variable assignments. + $str = &$str[$blocks[$blockcount].'.']; + $count = sizeof($str) - 1; + if($count >= 0) + { + // adding only if there is at least one item + $str[$count] = array_merge($str[$count], $vararray); + } + } + else + { + // Top-level block. + // Add a new iteration to this block with the variable assignments + // we were given. + $str = &$this->_tpldata[$blockname.'.']; + $count = sizeof($str) - 1; + if($count >= 0) + { + // adding only if there is at least one item + $str[$count] = array_merge($str[$count], $vararray); + } + } + return true; + } + + /* + * Flush a root level block, so it becomes empty. + */ + function flush_block_vars($blockname) + { + // Top-level block. + // flush a existing block we were given. + $current_iteration = sizeof($this->_tpldata[$blockname . '.']) - 1; + unset($this->_tpldata[$blockname . '.']); + return true; + } + + /* + * Add style configuration + */ + function _add_config($tpl, $add_vars = true) + { + global $phpbb_root_path, $mx_root_path; + if(@file_exists($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i=0; $istyle_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + $board_config[$config_name] = $str; + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + $db->sql_query($sql); + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } + return false; + } + + function add_config($tpl) + { + $config_name = 'xs_style_' . $tpl; + global $board_config; + $result = false; + if(empty($board_config[$config_name])) + { + $old = $this->style_config; + $result = $this->_add_config($tpl, false); + $this->style_config = $old; + } + return $result; + } + + /* + * Refresh config data + */ + function _refresh_config($tpl, $add_vars = false) + { + global $mx_root_path, $phpbb_root_path; + if(@file_exists($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i=0; $istyle_config[$style_config[$i]['var']])) + { + $this->style_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + if(isset($board_config[$config_name])) + { + $sql = "UPDATE " . CONFIG_TABLE . " SET config_value='" . str_replace('\\\'', '\'\'', addslashes($str)) . "' WHERE config_name='" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "'"; + } + else + { + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + } + $db->sql_query($sql); + $board_config[$config_name] = $str; + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } + return false; + } + + function refresh_config($tpl = '') + { + if($tpl === '') + { + $tpl = $this->tpl; + } + if($tpl == $this->tpl) + { + $result = $this->_refresh_config($tpl, true); + } + else + { + $old = $this->style_config; + $result = $this->_refresh_config($tpl, false); + $this->style_config = $old; + } + return $result; + } + + /* + * Get style configuration + */ + function _get_config($tpl, $add_config) + { + $this->style_config = array(); + if(empty($tpl)) + { + $tpl = $this->tpl; + } + $config_name = 'xs_style_' . $tpl; + global $board_config; + if(empty($board_config[$config_name])) + { + if($add_config) + { + $this->_add_config($tpl, $tpl === $this->tpl ? true : false); + } + return $this->style_config; + } + $this->style_config = $this->_unserialize($board_config[$config_name]); + if($tpl === $this->tpl) + { + foreach($this->style_config as $var => $value) + { + $this->vars['TPL_CFG_' . strtoupper($var)] = $value; + } + } + return $this->style_config; + } + + function get_config($tpl = '', $add_config = true) + { + if(empty($tpl)) + { + if(empty($this->tpl)) + { + return array(); + } + $this->_get_config($this->tpl, $add_config); + return $this->style_config; + } + else + { + $old_config = $this->style_config; + $result = $this->_get_config($tpl, $add_config); + $this->style_config = $old_config; + return $result; + } + } + + /* + * Split/merge config data. + * Using this function instead of (un)serialize because it generates smaller string so it can be stored in phpbb_config + */ + function _serialize($array) + { + if(!is_array($array)) + { + return ''; + } + $str = ''; + foreach($array as $var => $value) + { + if($str) + { + $str .= '|'; + } + $str .= $var . '=' . str_replace('|', '', $value); + } + return $str; + } + function _unserialize($str) + { + $array = array(); + $list = explode('|', $str); + for($i=0; $i_tpldata[$name.'.']) && count($tpl->_tpldata[$name.'.']) > 0); +} + +?> \ No newline at end of file diff --git a/includes/template_new.php b/includes/template_new.php new file mode 100644 index 00000000..76ee6ea5 --- /dev/null +++ b/includes/template_new.php @@ -0,0 +1,4733 @@ + array(0 => array())); + // This will end up being a multi-dimensional array like this: + // $this->_tpldata[block.][iteration#][child.][iteration#][child2.][iteration#][variablename] == value + // if it's a root-level variable, it'll be like this: + // $this->vars[varname] == value or $this->_tpldata['.'][0][varname] == value + // array "vars" is added for easier access to data + var $_tpldata = array('.' => array(0 => array()), 'DEFINE' => array(9 => array())); + var $vars; + + // Hash of filenames for each template handle. + var $files = array(); + var $files_cache = array(); // array of cache files that exists + var $files_cache2 = array(); // array of cache files (exists or not exists) + + // Root template directory. + var $root = ''; + + // Cache directory (compatible with default cache class) + var $cachedir = ''; + + + // Style directory (compatible with default templates class) + var $template_path = XS_TPL_START; + + // Search/replace for unknown files + var $mx_cache_search = array(); + var $mx_cache_replace = array(); + + // Template root directory (generated by set_rootdir) + var $tpldir = ''; + var $tpldir_len = 0; + + // Default template directory. + // If file for default template isn't found file from this template is used. + //var $tpldef = 'subSilver'; + var $tpldef = '_core'; + + // this will hash handle names to the compiled code for that handle. + var $compiled_code = array(); + + // This will hold the uncompiled code for that handle. + var $uncompiled_code = array(); + + // Cache settings + var $use_cache = 1; + var $cache_writable = 1; + + // Auto-compile setting + var $auto_compile = 1; + + // Current template name + var $tpl = ''; + + // List of replacements. tpl files in this list will be replaced with other tpl files + // according to configuration in xs.cfg + var $replace = array(); + + // counter for include + var $include_count = 0; + + // php extension. will be replaced by $phpEx in Template() function unless you disable it there + var $php = 'php'; + + // True if check switches + var $xs_check_switches = 1; + + // eXtreme Styles variables + var $xs_started = 0; + var $xs_version = 8; // number version. internal. do not change. + var $xs_versiontxt = '2.4.1'; // text version + + // These handles will be parsed if pparse() is executed. + // Can be used to automatically include header/footer if there is any content. + var $preparse = ''; + var $postparse = ''; + + // subtemplates mod detection + var $subtemplates = false; + + // style configuration + var $style_config = array(); + + // list of switches that are known typos in some mods. + // when error checking is enabled these errors will be auto-fixed. + // format: + // array(start_tag, end_tag) + var $bugs = array( + // ezportal typo: + array('fetchpost_row', 'fetch_post_row'), + // mycalendar 2.2.7 typos: + array('date_cell', 'date_cells'), + array('date_row', 'date_rows'), + // history mod typo: + array('site_today', 'site_week'), + ); + + /** + * Constructor + * + * @param $mx_user + */ + public function __construct() + { + global $mx_cache, $mx_user; + + $this->cache = $mx_cache; + $this->user = $mx_user; + } + + /** + * Constructor. Installs XS mod on first run or updates it and sets the root dir. + */ + function Template($root = '.') + { + global $mx_cache, $mx_user; + + $this->cache = $mx_cache; + $this->user = $mx_user; + + // setting pointer "vars" + $this->vars = &$this->_tpldata['.'][0]; + // load configuration + $this->load_config($root, true); + } + + /** + * Load mod configuration + */ + function load_config($root, $edit_db) + { + global $mx_cache, $board_config, $portal_config, $phpbb_root_path, $mx_root_path, $phpEx, $mx_backend; + + $edit_db = $mx_backend->edit_db; + + // getting mod version from config and comparing with real data + $ver = isset($board_config['xs_version']) ? $board_config['xs_version'] : ( isset($portal_config['xs_version']) ? $portal_config['xs_version'] : 0 ); + // check configuration + // set config values if there aren't any + $add = array(); + $del = array(); + $up = array(); + // list of outdated variables + $outdated = array( + 'xs_versoin', // was a typo in one of previous versions + 'xs_separator', // no longer used + 'xs_cache_dir_absolute', // no longer used + 'xs_cache_dir', // no longer used + 'xs_use_isset', // no longer used + ); + // list of default values + $default = array( + 'xs_auto_compile' => 1, + 'xs_auto_recompile' => 1, + 'xs_use_cache' => 1, + 'xs_php' => $phpEx, + 'xs_def_template' => 'subSilver', + 'xs_check_switches' => 1, + 'xs_warn_includes' => 1, + 'xs_add_comments' => 0, + 'xs_ftp_host' => '', + 'xs_ftp_login' => '', + 'xs_ftp_path' => '', + 'xs_downloads_count' => '0', + 'xs_downloads_default' => '0', + 'xs_shownav' => '1', + 'xs_template_time' => '0', + ); + // checking if all variables exist + foreach($default as $var => $value) + { + if(!isset($board_config[$var])) + { + $board_config[$var] = $value; + $add[] = $var; + } + } + // checking if there are any outdated variables that should be deleted + for($i=0; $ixs_version; + $add[] = 'xs_version'; + } + elseif($board_config['xs_version'] != $this->xs_version) + { + $board_config['xs_version'] = $this->xs_version; + $up[] = 'xs_version'; + } + // check config + if(!empty($board_config['xs_auto_recompile'])) + { + if(!$board_config['xs_auto_compile']) + { + $board_config['xs_auto_compile'] = 1; + if(!in_array('xs_auto_compile', $up) && !in_array('xs_auto_compile', $add)) + { + $up[] = 'xs_auto_compile'; + } + } + } + // install/upgrade + if($edit_db && ((count($add) > 0) || (count($up) > 0) || (count($del) > 0))) + { + $board_config['xs_template_time'] = time(); + if(!in_array('xs_template_time', $up)) + { + $up[] = 'xs_template_time'; + } + global $db; + if(!empty($db)) + { + // adding new config values + for($i=0; $isql_query($sql); + } + // removing old configuration variables that aren't used + for($i=0; $isql_query($sql); + } + // updating variables that should be overwritten + for($i=0; $iput( 'phpbb_config', $board_config ); + $db->sql_query($sql); + } + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + } + } + $this->php = isset($board_config['xs_php']) ? $board_config['xs_php'] : ( isset($portal_config['xs_php']) ? $portal_config['xs_php'] : '' ); + $this->tpldef = isset($board_config['xs_def_template']) ? $board_config['xs_def_template'] : ( isset($portal_config['xs_def_template']) ? $portal_config['xs_def_template'] : '' ); + $this->use_cache = isset($board_config['xs_use_cache']) ? $board_config['xs_use_cache'] : ( isset($portal_config['xs_use_cache']) ? $portal_config['xs_use_cache'] : '' ); + $this->auto_compile = isset($board_config['xs_auto_compile']) ? $board_config['xs_auto_compile'] : ( isset($portal_config['xs_auto_compile']) ? $portal_config['xs_auto_compile'] : '' ); + $this->xs_check_switches = isset($board_config['xs_check_switches']) ? $board_config['xs_check_switches'] : ( isset($portal_config['xs_check_switches']) ? $portal_config['xs_check_switches'] : '' ); + $this->cache_search = array('.', '\\', '/', '_tpl'); + $this->cache_replace = array('_', XS_SEPARATOR, XS_SEPARATOR, '.'.$this->php); + $old_root = $this->root; + $this->set_rootdir($root); + // Mighty Gorgon - Common TPL - BEGIN + $cfg_path = $this->tpl; + if ((defined('IN_PHPBB') || defined('IN_ADMIN'))) + { + $cfg_path = 'all'; + } + // Mighty Gorgon - Common TPL - END + if(!empty($this->tpl)) + { + if($this->tpldef != $cfg_path) + { + $file = $this->tpldir . $this->tpldef . '/xs.cfg'; + $this->load_replacements($file); + } + $file = $this->tpldir . $cfg_path . '/xs.cfg'; + $this->load_replacements($file); + } + if($old_root !== $this->root) + { + $this->clear_files(); + } + } + + /** + * Sets the template root directory for this Template object. + */ + function set_rootdir($dir) + { + global $board_config, $phpbb_root_path, $mx_root_path; + if (!@is_dir($dir)) + { + return false; + } + $dir = str_replace('\\', '/', $dir); + // creating absolute path for cache + $this->cachedir = $mx_root_path . XS_DIR_CACHE . '/'; + // creating absolute path for current template and root dir + $this->tpldir = $mx_root_path . 'templates/'; + $this->tpldir_len = strlen($this->tpldir); + $this->root = $dir; + $this->tpl = $this->template_name($dir); + // check configuration + $this->get_config(); + // check subtemplates mod + $sub_templates_cfg = $this->root . '/sub_templates.cfg'; + if(defined('LANG_EXTEND_DONE') && @file_exists($sub_templates_cfg)) + { + $this->subtemplates = true; + } + return true; + } + + /** + * Set custom template location (able to use directory outside of phpBB) + * @access public + */ + function set_custom_template2($template_path, $template_name) + { + global $board_config, $phpbb_root_path, $mx_root_path; + + $this->root = $template_path; + $this->cachepath = $mx_root_path . 'cache/ctpl_' . $template_name . '_'; + $this->cachedir = $mx_root_path . XS_DIR_CACHE . '/'; + + return true; + } + + /** + * Destroys this template object. Should be called when you're done with it, in order + * to clear out the template data so you can load/parse a new template set. + */ + function destroy() + { + $this->_tpldata = array('.' => array(0 => array())); + $this->vars = &$this->_tpldata['.'][0]; + //$this->_rootref = &$this->_tpldata['.'][0]; + $this->xs_started = 0; + } + + /** + * Reset/empty complete block + * @access public + */ + function destroy_block_vars($blockname) + { + if (strpos($blockname, '.') !== false) + { + // Nested block. + $blocks = explode('.', $blockname); + $blockcount = sizeof($blocks) - 1; + + $str = &$this->_tpldata; + for ($i = 0; $i < $blockcount; $i++) + { + $str = &$str[$blocks[$i]]; + $str = &$str[sizeof($str) - 1]; + } + + unset($str[$blocks[$blockcount]]); + } + else + { + // Top-level block. + unset($this->_tpldata[$blockname]); + } + + return true; + } + + /** + * Clears list of compiled files. + */ + function clear_files() + { + $this->files = array(); + $this->files_cache = array(); + $this->files_cache2 = array(); + $this->compiled_code = array(); + $this->uncompiled_code = array(); + } + + /** + * Loads replacements from .cfg file + */ + function load_replacements($file) + { + global $mx_root_path, $phpbb_root_path; + + if (!file_exists($file) && !file_exists($mx_root_path . $file) && !file_exists($phpbb_root_path . $file)) + { + // trigger_error cannot be used here, as the output already started + //echo 'template->_php_include(): File ' . htmlspecialchars($file) . ' does not exist or is empty'; + return; + } + + if(@file_exists($file)) + { + $replace = array(); + @include($file); + $this->replace = array_merge($this->replace, $replace); + } + elseif(@file_exists($phpbb_root_path . $file)) + { + $replace = array(); + @include($phpbb_root_path . $file); + $this->replace = array_merge($this->replace, $replace); + } + elseif(@file_exists($mx_root_path . $file)) + { + $replace = array(); + @include($mx_root_path . $file); + $this->replace = array_merge($this->replace, $replace); + } + } + + /** + * Extracts template name from path + */ + function template_name($dir) + { + $tpl = XS_TPL_ANY; // can start at any position + $tpl_null = XS_TPL_START; // can start only at zero position + // searching for 'templates/' and removing everything before it + $pos = strpos($dir, $tpl); + if($pos === false) + { + if(substr($dir, 0, strlen($tpl_null)) !== $tpl_null) + { + return ''; + } + $str = substr($dir, strlen($tpl_null), strlen($dir)); + } + else + { + $str = substr($dir, $pos + strlen($tpl), strlen($dir)); + } + // searching for one more 'templates/' + // that can happen if full path is like /home/some_dude/templates/phpbb/templates/subSilver/ + $dir = $this->template_name($str); + if(!$dir) + { + $dir = $str; + } + if(strpos($str, $tpl) !== false) + { + $dir = $this->template_name($str); + } + // check for another subdirectory + $pos = strpos($dir, '/'); + if($pos) + { + $dir = substr($dir, 0, $pos); + } + return $dir; + } + + function subtemplates_make_filename($filename) + { + global $mx_request_vars, $db, $board_config, $images, $theme; + global $sub_template_key_image, $sub_templates; + global $tree; + + // initiate the sub-template image pack that will be use + $sub_template_key_image = POST_CAT_URL . '0'; + + // Check if sub_templates are defined for this theme + if ( $board_config['version'] > '.0.5' ) + { + $sub_templates_cfg = mx_realpath($this->root . '/sub_templates.cfg'); + } + else + { + $sub_templates_cfg = $this->root . '/sub_templates.cfg'; + } + @include($sub_templates_cfg); + if ( isset($sub_templates) ) + { + // search an id + $cat_id = 0; + $forum_id = 0; + $topic_id = 0; + $post_id = 0; + + if ( !defined('IN_PRIVMSG') && $mx_request_vars->is_request(POST_POST_URL)) + { + $post_id = $mx_request_vars->request(POST_POST_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request(POST_TOPIC_URL) ) + { + $topic_id = $mx_request_vars->request(POST_TOPIC_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request(POST_FORUM_URL)) + { + $forum_id = $mx_request_vars->request(POST_FORUM_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request(POST_CAT_URL)) + { + $cat_id = $mx_request_vars->request(POST_CAT_URL, MX_TYPE_INT); + } + + if ($mx_request_vars->is_request('selected_id')) + { + $selected_id = $mx_request_vars->request('selected_id', MX_TYPE_NO_TAGS); + $type = substr($selected_id, 0, 1); + $id = intval(substr($selected_id, 1)); + if (!empty($id)) switch ($type) + { + case POST_CAT_URL: + $cat_id = $id; + break; + case POST_FORUM_URL: + $forum_id = $id; + break; + case POST_TOPIC_URL: + $topic_id = $id; + break; + case POST_POST_URL: + if ( !defined('IN_PRIVMSG') ) + { + $post_id = $id; + break; + } + default: + break; + } + } + + // find the forum + if ( ($forum_id <= 0) && ($cat_id <= 0) ) + { + if ($post_id > 0) + { + $sql = "SELECT * FROM " . POSTS_TABLE . " WHERE post_id=$post_id"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Wasn\'t able to access posts', '', __LINE__, __FILE__, $sql); + } + if ( $row = $db->sql_fetchrow($result) ) + { + $forum_id = $row['forum_id']; + } + } + + if ($topic_id > 0) + { + $sql = "SELECT * FROM " . TOPICS_TABLE . " WHERE topic_id=$topic_id"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Wasn\'t able to access topics', '', __LINE__, __FILE__, $sql); + } + if ( $row = $db->sql_fetchrow($result) ) + { + $forum_id = $row['forum_id']; + } + } + } + + // is the categories hierarchy v 2 installed ? + $cat_hierarchy = function_exists('get_auth_keys'); + + // get the ids (forums and cats) + $fids = array(); + if (!$cat_hierarchy) + { + if ($forum_id > 0) + { + // add the forum_id + $fids[] = POST_FORUM_URL . $forum_id; + + // get the cat_id + $sql = "SELECT * FROM " . FORUMS_TABLE . " WHERE forum_id=$forum_id"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Wasn\'t able to access forums', '', __LINE__, __FILE__, $sql); + } + if ( $row = $db->sql_fetchrow($result) ) + { + $cat_id = $row['cat_id']; + } + } + + // add the cat_id + if ($cat_id > 0) + { + $fids[] = POST_CAT_URL . $cat_id; + } + + // add the root level + $fids[] = 'Root'; + } + else + { + // categories hierarchy v 2 compliancy + $cur = 'Root'; + if ($forum_id > 0) + { + $cur = POST_FORUM_URL . $forum_id; + } + else if ($cat_id > 0) + { + $cur = POST_CAT_URL . $cat_id; + } + + // add start + $fids[] = $cur; + while ( ($cur != 'Root') && !empty($cur) ) + { + // get parent level + $cur = (isset($tree['main'][ $tree['keys'][$cur] ])) ? $tree['main'][ $tree['keys'][$cur] ] : 'Root'; + + // add the parent level + if ( !empty($cur) ) + { + $fids[] = $cur; + } + } + } + + // search if this file is part of a sub-template + $sub_tpl_file = ''; + $sub_css_file = ''; + $sub_img_file = ''; + $sub_img_path = ''; + $template_path = $this->template_path; + $template_name = substr( $this->root, strpos($this->root, $this->template_path) + strlen($this->template_path) ); + $real_root = $this->root; + if ( $board_config['version'] > '.0.5' ) + { + $real_root = mx_realpath($this->root); + } + if (substr($filename, 0, 1) != '/') + { + $found = false; + $num_fids = count($fids); + for ($i = 0; !$found && ($i < $num_fids); $i++) + { + $key = $fids[$i]; + + // convert root into c0 category + if ( ($key == 'Root') || empty($key) ) + { + $key = POST_CAT_URL . '0'; + } + + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + + // set the filename + if ( empty($sub_tpl_file) && file_exists($root_template_path . '/' . $filename) ) + { + $found = true; + $sub_tpl_file = $sub_templates[$key]['dir'] . '/' . $filename; + break; + } + } + } + + // set the css file name + $found = false; + $num_fids = count($fids); + for ($i = 0; !$found && ($i < $num_fids); $i++) + { + $key = $fids[$i]; + + // convert root into c0 category + if ( ($key == 'Root') || empty($key) ) + { + $key = POST_CAT_URL . '0'; + } + + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( empty($sub_css_file) && isset($sub_templates[$key]['head_stylesheet']) && file_exists($root_template_path . '/' . $sub_templates[$key]['head_stylesheet']) ) + { + $found = true; + $sub_css_file = $sub_templates[$key]['dir'] . '/' . $sub_templates[$key]['head_stylesheet']; + break; + } + } + } + + // set the img file name + $found = false; + $num_fids = count($fids); + for ($i = 0; !$found && ($i < $num_fids); $i++) + { + $key = $fids[$i]; + + // convert root into c0 category + if ( ($key == 'Root') || empty($key) ) + { + $key = POST_CAT_URL . '0'; + } + + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) + { + $sub_img_path = $sub_templates[$key]['dir']; + $sub_img_file = $sub_templates[$key]['imagefile']; + + // send back the lowest level of the images file + $found = true; + $sub_template_key_image = $key; + break; + } + } + } + } + + // set the tpl file + if ( !empty($sub_tpl_file) ) + { + $filename = $sub_tpl_file; + } + + // set the css file + if ( !empty($sub_css_file) ) + { + $theme['head_stylesheet'] = $sub_css_file; + } + + // get the root level images + $key = POST_CAT_URL . '0'; + if ( isset($sub_templates[$key]) ) + { + // get the sub-template path + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) + { + $sav_images = $images; + $images = array(); + @include($root_template_path . '/' . $sub_templates[$key]['imagefile']); + $img_lang = ( file_exists($root_template_path . '/images/lang_' . $board_config['default_lang']) ) ? $board_config['default_lang'] : 'english'; + foreach($images as $key => $value) + { + if ( !is_array($value) ) + { + $images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value); + } + $sav_images[$key] = $images[$key]; + } + $images = $sav_images; + $sav_images = array(); + } + } + + // get the current images + if ( !empty($sub_template_key_image) && ($sub_template_key_image != POST_CAT_URL . '0') ) + { + $key = $sub_template_key_image; + + // get the sub-template path + $current_template_path = $this->template_path . $template_name . '/' . $sub_templates[$key]['dir']; + $root_template_path = $real_root . '/' . $sub_templates[$key]['dir']; + if ( isset($sub_templates[$key]['imagefile']) && file_exists($root_template_path . '/' . $sub_templates[$key]['imagefile']) ) + { + $sav_images = $images; + $images = array(); + @include($root_template_path . '/' . $sub_templates[$key]['imagefile']); + $img_lang = ( file_exists($root_template_path . '/images/lang_' . $board_config['default_lang']) ) ? $board_config['default_lang'] : 'english'; + foreach($images as $key => $value) + { + if ( !is_array($value) ) + { + $images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value); + } + $sav_images[$key] = $images[$key]; + } + $images = $sav_images; + $sav_images = array(); + } + } + } + return $filename; + } + + /** + * Generates a full path+filename for the given filename, which can either + * be an absolute name, or a name relative to the rootdir for this Template + * object. + */ + function make_filename($filename, $xs_include = false) + { + if($this->subtemplates) + { + $filename = $this->subtemplates_make_filename($filename); + } + // Check replacements list + if(!$xs_include && isset($this->replace[$filename])) + { + $filename = $this->replace[$filename]; + } + // Check if it's an absolute or relative path. + if ((substr($filename, 0, 1) !== '/') && (substr($filename, 1, 1) !== ':')) + { + return $this->root . '/' . $filename; + } + else + { + return str_replace('\\', '/', $filename); + } + } + + /** + * Converts template filename to cache filename. + * Returns empty string if non-cachable (for tpl files outside of root dir). + * $file should be absolute filename + */ + function make_filename_cache($file) + { + $phpEx = 'php'; + $str = str_replace($this->cache_search, $this->cache_replace, $file); + if(substr($file, 0, $this->tpldir_len) !== $this->tpldir || empty($this->tpl)) + { + return $this->cachedir . XS_TPL_PREFIX2 . $str .'.'. $phpEx; + } + // removing not needed part + $file = substr($file, $this->tpldir_len, strlen($file)) .'.'. $phpEx; + // creating filename + return $this->cachedir . XS_TPL_PREFIX . str_replace($this->cache_search, $this->cache_replace, $file) .'.'. $phpEx; + } + + /** + * Set template location + * @access public + */ + function set_template() + { + global $phpbb_root_path, $mx_root_path, $mx_user; + + if (file_exists($mx_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template')) + { + $this->root = $mx_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template'; + $this->cachepath = $mx_root_path . 'cache/tpl_' . str_replace('_', '-', $mx_user->theme['template_path']) . '_'; + + if ($this->orig_tpl_storedb === null) + { + $this->orig_tpl_storedb = $mx_user->theme['template_storedb']; + } + + if ($this->orig_tpl_inherits_id === null) + { + $this->orig_tpl_inherits_id = $mx_user->theme['template_inherits_id']; + } + + $mx_user->theme['template_storedb'] = $this->orig_tpl_storedb; + $mx_user->theme['template_inherits_id'] = $this->orig_tpl_inherits_id; + + if ($mx_user->theme['template_inherits_id']) + { + $this->inherit_root = $mx_root_path . XS_TPL_START . $mx_user->theme['template_inherit_path'] . '/template'; + } + } + elseif (file_exists($phpbb_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template')) + { + $this->root = $phpbb_root_path . XS_TPL_START . $mx_user->theme['template_path'] . '/template'; + $this->cachepath = $phpbb_root_path . 'cache/tpl_' . str_replace('_', '-', $mx_user->theme['template_path']) . '_'; + + if ($this->orig_tpl_storedb === null) + { + $this->orig_tpl_storedb = $mx_user->theme['template_storedb']; + } + + if ($this->orig_tpl_inherits_id === null) + { + $this->orig_tpl_inherits_id = $mx_user->theme['template_inherits_id']; + } + + $mx_user->theme['template_storedb'] = $this->orig_tpl_storedb; + $mx_user->theme['template_inherits_id'] = $this->orig_tpl_inherits_id; + + if ($mx_user->theme['template_inherits_id']) + { + $this->inherit_root = $mx_root_path . XS_TPL_START . $mx_user->theme['template_inherit_path'] . '/template'; + } + } + else + { + trigger_error('Template path could not be found: ' . XS_TPL_START . $mx_user->theme['template_path'] . '/template', E_USER_ERROR); + } + //$this->vars = &$this->tpldata['.'][0]; + $this->vars = &$this->_tpldata['.'][0]; + $this->_rootref = &$this->_tpldata['.'][0]; + //$this->rootref = &$this->tpldata['.'][0]; + return true; + } + + /** + * Set custom template location (able to use directory outside of phpBB) + * @access public + */ + function set_custom_template($template_path, $template_name, $fallback_template_path = false) + { + global $mx_root_path, $mx_user; + + // Make sure $template_path has no ending slash + if (substr($template_path, -1) == '/') + { + $template_path = substr($template_path, 0, -1); + } + + $this->root = $template_path; + $this->cachepath = $mx_root_path . 'cache/ctpl_' . str_replace('_', '-', $template_name) . '_'; + + if ($fallback_template_path !== false) + { + if (substr($fallback_template_path, -1) == '/') + { + $fallback_template_path = substr($fallback_template_path, 0, -1); + } + + $this->inherit_root = $fallback_template_path; + $this->orig_tpl_inherits_id = true; + } + else + { + $this->orig_tpl_inherits_id = false; + } + + // the database does not store the path or name of a custom template + // so there is no way we can properly store custom templates there + $this->orig_tpl_storedb = false; + $this->vars = &$this->_tpldata['.'][0]; + $this->_rootref = &$this->_tpldata['.'][0]; + + return true; + } + + /** + * Sets the template filenames for handles. $filename_array + * should be a hash of handle => filename pairs. + * @access public + */ + function set_filenames($filename_array) + { + if (!is_array($filename_array)) + { + return false; + } + + foreach ($filename_array as $handle => $filename) + { + if (empty($filename)) + { + + trigger_error("template->set_filenames: Empty filename specified for $handle", E_USER_ERROR); + } + + /** */ + $this->filename[$handle] = $filename; + $this->files[$handle] = $this->root . '/' . $filename; + /** */ + $res = $this->set_filename($handle, $filename); + /** */ + if ($this->inherit_root) + { + $this->files_inherit[$handle] = $this->inherit_root . '/' . $filename; + } + /** */ + } + + return true; + } + + /** + * Get a filename from the handle + * + * @param string $handle + * @return string + */ + protected function get_filename_from_handle($handle) + { + return (isset($this->filenames[$handle])) ? $this->filenames[$handle] : $handle; + } + + /** + * Assigns template filename for handle. + */ + function set_filename($handle, $filename, $xs_include = false, $quiet = false) + { + global $board_config, $module_root_path, $mx_root_path, $phpbb_root_path, $theme, $mx_user, $mx_block; + $can_cache = $this->use_cache; + if(strpos($filename, '..') !== false) + { + $can_cache = false; + } + $this->files[$handle] = $this->make_filename($filename, $xs_include); + $this->files_cache[$handle] = ''; + $this->files_cache2[$handle] = ''; + // check if we are in admin control panel and override extreme styles mod controls if needed + if(defined('XS_ADMIN_OVERRIDE') && XS_ADMIN_OVERRIDE === true && @function_exists('xs_admin_override')) + { + xs_admin_override(); + } + // checking if we have valid filename + if(!$this->files[$handle]) + { + if($xs_include || $quiet) + { + return false; + } + else + { + die("Template->make_filename(): Error - invalid template $filename"); + } + } + + // creating cache filename + if(!empty($can_cache)) + { + $this->files_cache2[$handle] = $this->make_filename_cache($this->files[$handle]); + if(@file_exists($this->files_cache2[$handle])) + { + $this->files_cache[$handle] = $this->files_cache2[$handle]; + } + } + // checking if tpl and/or php file exists + if(empty($this->files_cache[$handle]) && !@file_exists($this->files[$handle])) + { + // trying to load alternative filename (usually subSilver) + if(!empty($this->tpldef) && !empty($this->tpl) && ($this->tpldef !== $this->tpl)) + { + $this->files[$handle] = ''; + // save old configuration + $root = $this->root; + $tpl_name = $this->tpl; + // set temporary configuration + $this->root = $this->tpldir . $this->tpldef; + $this->tpl = $this->tpldef; + // recursively run set_filename + $res = $this->set_filename($handle, $filename, $xs_include, $quiet); + // restore old configuration + $this->root = $root; + $this->tpl = $tpl_name; + return $res; + } + if($quiet) + { + return false; + } + if($xs_include) + { + if($board_config['xs_warn_includes']) + { + die('Template->make_filename(): Error - included template file not found: ' . $filename); + } + return false; + } + else + { + die('Template->make_filename(): Error - template file not found: ' . $filename); + } + } + // checking if we should recompile cache + if(!empty($this->files_cache[$handle]) && !empty($board_config['xs_auto_recompile'])) + { + $cache_time = @filemtime($this->files_cache[$handle]); + if(@filemtime($this->files[$handle]) > $cache_time || $board_config['xs_template_time'] > $cache_time) + { + // file was changed. don't use cache file (will be recompled if configuration allowes it) + $this->files_cache[$handle] = ''; + } + } + return true; + } + + /** + * includes file or executes code + */ + function execute($filename, $code, $handle, $include_once = false) + { + global $lang, $theme, $board_config, $mx_user; + global $admin_script; + + // + // Note: This little snippet is needed to make the templating work with Olympus + // + if (!defined('IN_ADMIN')) + { + $admin_script = ($admin_script) ? $admin_script : $filename; + } + + //if ( !(PORTAL_BACKEND == 'phpbb3') ) + //{ + // $template = $theme['template_name']; + //} + //else + //{ + // $template = $theme['style_name']; + //} + + $template = $mx_user->template_name; + + global $$template; + $theme_info = &$$template; + if($board_config['xs_add_comments'] && $handle) + { + echo ''; + } + //inlcude_once() only includes one block per module + if ($filename) + { + ($include_once) ? @include_once($filename) : @require($filename); + } + elseif ($admin_script) + { + ($include_once) ? @include_once($admin_script) : @require($admin_script); // See note above + } + else + { + @eval($code); + } + + if($board_config['xs_add_comments'] && $handle) + { + echo ''; + } + return true; + } + + /** + * Extra CSS and JS + */ + function add_css_js() + { + if (!defined('CSS_JS_PARSED')) + { + define('CSS_JS_PARSED', true); + } + + // Include custom CSS from templates/CURRENT_TPL folder + if(is_array($this->css_style_include) && !empty($this->css_style_include)) + { + for ($i = 0; $i < sizeof($this->css_style_include); $i++) + { + $this->assign_block_vars('css_style_include', array( + 'CSS_FILE' => $this->css_style_include[$i], + ) + ); + } + } + + // Include custom CSS from templates/common folder + if(is_array($this->css_include) && !empty($this->css_include)) + { + for ($i = 0; $i < sizeof($this->css_include); $i++) + { + $this->assign_block_vars('css_include', array( + 'CSS_FILE' => $this->css_include[$i], + ) + ); + } + } + + // Include custom JS from templates/common folder + if(is_array($this->js_include) && !empty($this->js_include)) + { + for ($i = 0; $i < sizeof($this->js_include); $i++) + { + $this->assign_block_vars('js_include', array( + 'JS_FILE' => $this->js_include[$i], + ) + ); + } + } + } + + /** + * Load the file for the handle, compile the file, + * and run the compiled code. This will print out + * the results of executing the template. + */ + function pparse($handle) + { + global $board_config; + + // Mighty Gorgon - Extra Debug - BEGIN + if (defined('DEBUG_EXTRA') && !empty($_REQUEST['explain'])) + { + global $mx_user, $db; + if (($mx_user->data['user_level'] == ADMIN) && method_exists($db, 'sql_report')) + { + return false; + } + } + // Mighty Gorgon - Extra Debug - END + + if (!defined('CSS_JS_PARSED')) + { + $this->add_css_js(); + } + + // parsing header if there is one + if($this->preparse || $this->postparse) + { + $preparse = $this->preparse; + $postparse = $this->postparse; + $this->preparse = ''; + $this->postparse = ''; + if($preparse) + { + $this->pparse($preparse); + } + if($postparse) + { + $str = $handle; + $handle = $postparse; + $this->pparse($str); + } + } + // checking if handle exists + if (empty($this->files[$handle]) && empty($this->files_cache[$handle])) + { + die("Template->loadfile(): No files found for handle $handle"); + } + $this->xs_startup(); + $force_recompile = empty($this->uncompiled_code[$handle]) ? false : true; + // checking if php file exists. + if (!empty($this->files_cache[$handle]) && !$force_recompile) + { + // php file exists - running it instead of tpl + $this->execute($this->files_cache[$handle], '', $handle); + return true; + } + if (!$this->loadfile($handle)) + { + die("Template->pparse(): Couldn't load template file for handle $handle"); + } + // actually compile the template now. + if (empty($this->compiled_code[$handle])) + { + // Actually compile the code now. + if(!empty($this->files_cache2[$handle]) && empty($this->files_cache[$handle]) && !$force_recompile) + { + $this->compiled_code[$handle] = $this->compile2($this->uncompiled_code[$handle], $handle, $this->files_cache2[$handle]); + } + else + { + $this->compiled_code[$handle] = $this->compile2($this->uncompiled_code[$handle], '', ''); + } + } + // Run the compiled code. + if (empty($this->files_cache[$handle]) || $force_recompile) + { + $this->execute('', $this->compiled_code[$handle], $handle); + } + else + { + $this->execute($this->files_cache[$handle], '', $handle); + } + return true; + } + + + /** + * Load a compiled template if possible, if not, recompile it + * @access private + */ + function _tpl_load(&$handle) + { + global $mx_user, $phpEx, $board_config; + + $recompile = (($board_config['load_tplcompile'] && @filemtime($filename) < filemtime($this->files[$handle])) || !file_exists($filename) || @filesize($filename) === 0) ? true : false; + + // Recompile page if the original template is newer, otherwise load the compiled version + if (!$recompile) + { + return $filename; + } + + // Just compile if no user object is present (happens within the installer) + $this->loadfile($handle); + return false; + } + + /** + * Display handle + * @access public + */ + function display($handle, $include_once = true) + { + global $mx_user, $phpbb_hook; + + if (!empty($phpbb_hook) && $phpbb_hook->call_hook(array(__CLASS__, __FUNCTION__), $handle, $include_once)) + { + if ($phpbb_hook->hook_return(array(__CLASS__, __FUNCTION__))) + { + return $phpbb_hook->hook_return_result(array(__CLASS__, __FUNCTION__)); + } + } + + if (defined('IN_ERROR_HANDLER')) + { + if ((E_NOTICE & error_reporting()) == E_NOTICE) + { + error_reporting(error_reporting() ^ E_NOTICE); + } + } + + + //if ($filename = $this->_tpl_load($handle)) + if ($filename) + { + ($include_once) ? include_once($filename) : include($filename); + } + else + { + eval(' ?>' . $this->compiled_code[$handle] . 'display($handle, $include_once); + $contents = ob_get_clean(); + + if ($return_content) + { + return $contents; + } + + $this->assign_var($template_var, $contents); + + return true; + } + + /** + * Precompile file + */ + function precompile($template, $filename) + { + global $precompile_num, $board_config; + if(empty($precompile_num)) + { + $precompile_num = 0; + } + $precompile_num ++; + $handle = 'precompile_' . $precompile_num; + // save old configuration + $root = $this->root; + $tpl_name = $this->tpl; + $old_config = $this->use_cache; + $old_autosave = $this->auto_compile; + // set temporary configuration + $this->root = $this->tpldir . $template; + $this->tpl = $template; + $this->use_cache = 1; + $this->auto_compile = 1; + // set filename + $res = $this->set_filename($handle, $filename, true, true); + if(!$res || !$this->files_cache2[$handle]) + { + $this->root = $root; + $this->tpl = $tpl_name; + $this->use_cache = $old_config; + $this->auto_compile = $old_autosave; + return false; + } + $this->files_cache[$handle] = ''; + // load template + $res = $this->loadfile($handle); + if(!$res || empty($this->uncompiled_code[$handle])) + { + $this->root = $root; + $this->tpl = $tpl_name; + $this->use_cache = $old_config; + $this->auto_compile = $old_autosave; + return false; + } + // compile the code + $this->compile2($this->uncompiled_code[$handle], $handle, $this->files_cache2[$handle]); + // restore confirugation + $this->root = $root; + $this->tpl = $tpl_name; + $this->use_cache = $old_config; + $this->auto_compile = $old_autosave; + return true; + } + + /** + * Inserts the uncompiled code for $handle as the + * value of $varname in the root-level. This can be used + * to effectively include a template in the middle of another + * template. + * Note that all desired assignments to the variables in $handle should be done + * BEFORE calling this function. + */ + function assign_var_from_handle($varname, $handle) + { + ob_start(); + $res = $this->pparse($handle); + $this->vars[$varname] = ob_get_contents(); + ob_end_clean(); + return $res; + } + + /** + * Assign key variable pairs from an array to a specified block + * + * @param string $blockname Name of block to assign $vararray to + * @param array $vararray A hash of variable name => value pairs + * @return true + */ + public function assign_block_vars($blockname, array $vararray) + { + $this->num_rows_is_set = false; + if (strstr($blockname, '.')) + { + // For nested block, $blockcount > 0, for top-level block, $blockcount == 0 + $blocks = explode('.', $blockname); + $blockcount = count($blocks) - 1; + $str = &$this->_tpldata; + $block = &$this->tpldata; + for ($i = 0; $i < $blockcount; $i++) + { + $pos = strpos($blocks[$i], '['); + $name = ($pos !== false) ? substr($blocks[$i], 0, $pos) : $blocks[$i]; + $block = &$block[$name]; + $index = (!$pos || strpos($blocks[$i], '[]') === $pos) ? (count($block) - 1) : (min((int) substr($blocks[$i], $pos + 1, -1), count($block) - 1)); + $block = &$block[$index]; + + $str = &$str[$blocks[$i].'.']; + + $str = &$str[sizeof($str)-1]; + } + + // $block = &$block[$blocks[$i]]; // Do not traverse the last block as it might be empty + $name = $blocks[$i]; + + // Assign S_ROW_COUNT and S_ROW_NUM + $s_row_count = isset($block[$name]) ? count($block[$name]) : 0; + $vararray['S_ROW_COUNT'] = $vararray['S_ROW_NUM'] = $s_row_count; + + // Assign S_FIRST_ROW + if (!$s_row_count) + { + $vararray['S_FIRST_ROW'] = true; + } + + // Assign S_BLOCK_NAME + $vararray['S_BLOCK_NAME'] = $name; + + // Now the tricky part, we always assign S_LAST_ROW and remove the entry before + // This is much more clever than going through the complete template data on display (phew) + $vararray['S_LAST_ROW'] = true; + if ($s_row_count > 0) + { + unset($block[$name][($s_row_count - 1)]['S_LAST_ROW']); + } + + // Now we add the block that we're actually assigning to. + // We're adding a new iteration to this block with the given + // variable assignments. + $block[$name][] = $vararray; + $str[$blocks[$blockcount].'.'][] = $vararray; + } + else + { + // Top-level block. + $s_row_count = (isset($this->_tpldata[$blockname])) ? sizeof($this->_tpldata[$blockname]) : 0; + // T$s_row_count = (isset($this->tpldata[$blockname])) ? sizeof($this->tpldata[$blockname]) : 0; + $vararray['S_ROW_COUNT'] = $s_row_count; + + // Assign S_FIRST_ROW + if (!$s_row_count) + { + $vararray['S_FIRST_ROW'] = true; + } + + // We always assign S_LAST_ROW and remove the entry before + $vararray['S_LAST_ROW'] = true; + if ($s_row_count > 0) + { + unset($this->_tpldata[$blockname][($s_row_count - 1)]['S_LAST_ROW']); + } + + // Add a new iteration to this block with the variable assignments + // we were given. + $this->_tpldata[$blockname.'.'][] = $vararray; + //$this->tpldata[$blockname.'.'][] = $vararray; + // Add a new iteration to this block with the variable assignments we were given. + } + + return true; + } + + /** + * Assign key variable pairs from an array to a whole specified block loop + * + * @param string $blockname Name of block to assign $block_vars_array to + * @param array $block_vars_array An array of hashes of variable name => value pairs + * @return true + */ + public function assign_block_vars_array($blockname, array $block_vars_array) + { + foreach ($block_vars_array as $vararray) + { + $this->assign_block_vars($blockname, $vararray); + } + + return true; + } + + /** + * Root-level variable assignment. Adds to current assignments, overriding + * any existing variable assignment with the same name. + */ + function assign_vars($vararray) + { + foreach($vararray as $key => $val) + { + $this->vars[$key] = $val; + //$this->_rootref[$key] = $val; + } + return true; + } + + /** + * Root-level variable assignment. Adds to current assignments, overriding + * any existing variable assignment with the same name. + */ + function assign_var($varname, $varval) + { + $this->vars[$varname] = $varval; + //$this->_rootref[$varname] = $varval; + + return true; + } + + /** + * Returns a reference to template data array. + * + * This function is public so that template renderer may invoke it. + * Users should alter template variables via functions in \phpbb\template\template. + * + * Note: modifying returned array will affect data stored in the context. + * + * @return array template data + */ + function &get_data_ref() + { + // returning a reference directly is not + // something php is capable of doing + $ref = &$this->tpldata; + + if (!$this->num_rows_is_set) + { + /* + * We do not set S_NUM_ROWS while adding a row, to reduce the complexity + * If we would set it on adding, each subsequent adding would cause + * n modifications, resulting in a O(n!) complexity, rather then O(n) + */ + foreach ($ref as $loop_name => &$loop_data) + { + if ($loop_name === '.') + { + continue; + } + + $this->set_num_rows($loop_data); + } + $this->num_rows_is_set = true; + } + + return $ref; + } + + /** + * Set S_NUM_ROWS for each row in this template block + * + * @param array $loop_data + */ + protected function set_num_rows(&$loop_data) + { + $s_num_rows = sizeof($loop_data); + foreach ($loop_data as &$mod_block) + { + foreach ($mod_block as $sub_block_name => &$sub_block) + { + // If the key name is lowercase and the data is an array, + // it could be a template loop. So we set the S_NUM_ROWS there + // aswell. + if ($sub_block_name === strtolower($sub_block_name) && is_array($sub_block)) + { + $this->set_num_rows($sub_block); + } + } + + // Check whether we are inside a block before setting the variable + if (isset($mod_block['S_BLOCK_NAME'])) + { + $mod_block['S_NUM_ROWS'] = $s_num_rows; + } + } + } + + /** + * Returns a reference to template root scope. + * + * This function is public so that template renderer may invoke it. + * Users should not need to invoke this function. + * + * Note: modifying returned array will affect data stored in the context. + * + * @return array template data + */ + public function &get_root_ref() + { + // rootref is already a reference + return $this->rootref; + } + + /** + * If not already done, load the file for the given handle and populate + * the uncompiled_code[] hash with its code. Do not compile. + */ + function loadfile($handle) + { + global $board_config; + // If cached file exists do nothing - it will be included via include() + if(!empty($this->files_cache[$handle])) + { + return true; + } + + // If the file for this handle is already loaded and compiled, do nothing. + if (!empty($this->uncompiled_code[$handle])) + { + return true; + } + + // If we don't have a file assigned to this handle, die. + if (empty($this->files[$handle])) + { + die("Template->loadfile(): No file specified for handle $handle"); + } + + // Don't chmod links as mostly those require 0777 and that cannot be changed + if (is_file($this->files[$handle])) + { + $filename = $this->files[$handle]; + $str = @implode('', file($filename)); + } + else if (is_dir($this->files[$handle]) || (is_link($this->files[$handle]))) + { + $filename = $this->files[$handle] . 'index.htm'; + $str = ''; + } + + if (empty($str)) + { + die("Template->loadfile(): File $filename for handle $handle is empty"); + } + + $this->uncompiled_code[$handle] = $str; + + return true; + } + + + + /** + * Generates a reference to the given variable inside the given (possibly nested) + * block namespace. This is a string of the form: + * ' . $this->_tpldata['parent.'][$_parent_i]['$child1.'][$_child1_i]['$child2.'][$_child2_i]...['varname'] . ' + * It's ready to be inserted into an "echo" line in one of the templates. + * NOTE: expects a trailing "." on the namespace. + */ + function generate_block_varref($namespace, $varname, $use_isset = true) + { + // Strip the trailing period. + $namespace = substr($namespace, 0, strlen($namespace) - 1); + + // Get a reference to the data block for this namespace. + $varref = $this->generate_block_data_ref($namespace, true); + // Prepend the necessary code to stick this in an echo line. + + // Append the variable reference. + $varref .= '[\'' . $varname . '\']'; + + if($use_isset) + { + $varref = '<'.'?php echo isset(' . $varref . ') ? ' . $varref . ' : \'\'; ?'.'>'; + } + else + { + $varref = '<'.'?php echo ' . $varref . '; ?'.'>'; + } + + return $varref; + + } + + + /** + * Generates a reference to the array of data values for the given + * (possibly nested) block namespace. This is a string of the form: + * $this->_tpldata['parent.'][$_parent_i]['$child1.'][$_child1_i]['$child2.'][$_child2_i]...['$childN.'] + * + * If $include_last_iterator is true, then [$_childN_i] will be appended to the form shown above. + * NOTE: does not expect a trailing "." on the blockname. + */ + function generate_block_data_ref($blockname, $include_last_iterator, $defop = false) + { + $blockname = !empty($blockname) ? $blockname : 'parent'; + // Get an array of the blocks involved. + $blocks = explode('.', $blockname); + $blockcount = sizeof($blocks) - 1; + if($defop) + { + $varref = '$this->_tpldata[\'DEFINE\']'; + // Build up the string with everything but the last child. + for ($i = 0; $i < $blockcount; $i++) + { + $varref .= "['" . $blocks[$i] . ".'][\$" . $blocks[$i] . '_i]'; + } + // Add the block reference for the last child. + $varref .= "['" . $blocks[$blockcount] . ".']"; + // Add the iterator for the last child if requried. + if ($include_last_iterator) + { + $varref .= '[$' . $blocks[$blockcount] . '_i]'; + } + return $varref; + } + if($include_last_iterator) + { + return '$'. $blocks[$blockcount]. '_item'; + } + else + { + return '$'. $blocks[$blockcount-1]. '_item[\''. $blocks[$blockcount]. '.\']'; + } + } + + /** + * Remove any PHP tags that do not belong, these regular expressions are derived from + * the ones that exist in zend_language_scanner.l + * @access private + */ + function remove_php_tags(&$code) + { + // This matches the information gathered from the internal PHP lexer + $match = array( + '#<([\?%])=?.*?\1>#s', + '#.*?#s', + '#<\?php(?:\r\n?|[ \n\t]).*?\?>#s' + ); + + $code = preg_replace($match, '', $code); + } + + /** + * Compile blocks + * @access private + */ + function compile_tag_block($tag_args) + { + $no_nesting = false; + + // Is the designer wanting to call another loop in a loop? + if (strpos($tag_args, '!') === 0) + { + // Count the number of ! occurrences (not allowed in vars) + $no_nesting = substr_count($tag_args, '!'); + $tag_args = substr($tag_args, $no_nesting); + } + + // Allow for control of looping (indexes start from zero): + // foo(2) : Will start the loop on the 3rd entry + // foo(-2) : Will start the loop two entries from the end + // foo(3,4) : Will start the loop on the fourth entry and end it on the fifth + // foo(3,-4) : Will start the loop on the fourth entry and end it four from last + if (preg_match('#^([^()]*)\(([\-\d]+)(?:,([\-\d]+))?\)$#', $tag_args, $match)) + { + $tag_args = $match[1]; + + if ($match[2] < 0) + { + $loop_start = '($_' . $tag_args . '_count ' . $match[2] . ' < 0 ? 0 : $_' . $tag_args . '_count ' . $match[2] . ')'; + } + else + { + $loop_start = '($_' . $tag_args . '_count < ' . $match[2] . ' ? $_' . $tag_args . '_count : ' . $match[2] . ')'; + } + + if (strlen($match[3]) < 1 || $match[3] == -1) + { + $loop_end = '$_' . $tag_args . '_count'; + } + else if ($match[3] >= 0) + { + $loop_end = '(' . ($match[3] + 1) . ' > $_' . $tag_args . '_count ? $_' . $tag_args . '_count : ' . ($match[3] + 1) . ')'; + } + else //if ($match[3] < -1) + { + $loop_end = '$_' . $tag_args . '_count' . ($match[3] + 1); + } + } + else + { + $loop_start = 0; + $loop_end = '$_' . $tag_args . '_count'; + } + + $tag_template_php = ''; + + /** + * Minimum Requirement: PHP 5.4.0 for phpBB3 + */ + if (version_compare(PHP_VERSION_MX, '5.4') > 0) + { + //array_push(is_array($this->block_names) ? $this->block_names : array($this->block_names), $tag_args); + array_push($this->block_names, $tag_args); + } + elseif (version_compare(PHP_VERSION, '5.6') < 0) + { + array_push($this->block_names, $tag_args); + } + else + { + //array_push(is_array($this->block_names) ? $this->block_names : array($this->block_names), $tag_args); + array_push($this->block_names, $tag_args); + } + + if ($no_nesting !== false) + { + // We need to implode $no_nesting times from the end... + $block = array_slice($this->block_names, -$no_nesting); + } + else + { + $block = $this->block_names; + } + + if (sizeof($block) < 2) + { + // Block is not nested. + $tag_template_php = '$_' . $tag_args . "_count = (isset(\$this->_tpldata['$tag_args'])) ? sizeof(\$this->_tpldata['$tag_args']) : 0;"; + $varref = "\$this->_tpldata['$tag_args']"; + //$varref = $this->_tpldata[$tag_args]; + } + else + { + // This block is nested. + // Generate a namespace string for this block. + $namespace = implode('.', $block); + + // Get a reference to the data array for this block that depends on the + // current indices of all parent blocks. + $varref = $this->generate_block_data_ref($namespace, false); + + // Create the for loop code to iterate over this block. + $tag_template_php = '$_' . $tag_args . '_count = (isset(' . $varref . ')) ? sizeof(' . $varref . ') : 0;'; + } + + $tag_template_php .= 'if ($_' . $tag_args . '_count) {'; + + /** + * The following uses foreach for iteration instead of a for loop, foreach is faster but requires PHP to make a copy of the contents of the array which uses more memory + * + * if (!$offset) + * { + * $tag_template_php .= 'foreach (' . $varref . ' as $_' . $tag_args . '_i => $_' . $tag_args . '_val){'; + * } + * + */ + + $tag_template_php .= 'for ($_' . $tag_args . '_i = ' . $loop_start . '; $_' . $tag_args . '_i < ' . $loop_end . '; ++$_' . $tag_args . '_i){'; + $tag_template_php .= '$_'. $tag_args . '_val = &' . $varref . '[$_'. $tag_args. '_i];'; + + return $tag_template_php; + } + + /** + * Compile INCLUDE tag + * @access private + */ + function compile_tag_include($tag_args) + { + // Process dynamic includes + if ($tag_args[0] == '$') + { + return "if (isset($tag_args)) { \$this->_tpl_include($tag_args); }"; + } + + return "\$this->_tpl_include('$tag_args');"; + } + + /** + * Compile INCLUDE_PHP tag + * @access private + */ + function compile_tag_include_php($tag_args) + { + return "\$this->_php_include('$tag_args');"; + } + + function compile_code2($filename, $code, $use_isset = false) + { + // $filename - file to load code from. used if $code is empty + // $code - tpl code + // $use_isset - if false then compiled code looks more beautiful and easier + // to understand and it adds error_reporting() to supress php warnings. + // if true then isset() is used to check variables instead of supressing + // php warnings. note: for extreme styles mod 2.x it works only for + // block variables and for usual variables its always true. + + // load code from file + if(!$code && !empty($filename)) + { + $code = @implode('', @file($filename)); + } + + // Replace phpBB 2.2 tags + $search = array('', ''); + $replace = array('<'.'?php ', ' ?'.'>'); + $code = str_replace($search, $replace, $code); + + // Break it up into lines and put " -->" back. + $code_lines = explode(' -->', $code); + $count = count($code_lines); + for ($i = 0; $i < ($count - 1); $i++) + { + $code_lines[$i] .= ' -->'; + } + + $block_nesting_level = 0; + $block_names = array(); + $block_names[0] = "."; + $block_items = array(); + $count_if = 0; + + // prepare array for compiled code + $compiled = array(); + $count_bugs = count($this->bugs); + + // array of switches + $sw = array(); + + // replace all short php tags + $new_code = array(); + $line_count = count($code_lines); + for($i=0; $i<$line_count; $i++) + { + $line = $code_lines[$i]; + $pos = strpos($line, ''; + $code_lines[$i] = substr($line, $pos + 2); + $i --; + } + $code_lines = $new_code; + + // main loop + $line_count = count($code_lines); + for($i=0; $i<$line_count; $i++) + { + $line = $code_lines[$i]; + // reset keyword type + $keyword_type = XS_TAG_NONE; + // check if we have valid keyword in current line + $pos1 = strpos($line, '', $pos1); + if($pos2 !== false) + { + // find end of keyword in comment + $pos3 = strpos($line, ' ', $pos1 + 5); + if($pos3 !== false && $pos3 <= $pos2) + { + $keyword = substr($line, $pos1 + 5, $pos3 - $pos1 - 5); + // check keyword against list of supported keywords. case-sensitive + if($keyword === 'BEGIN') + { + $keyword_type = XS_TAG_BEGIN; + } + elseif($keyword === 'END') + { + $keyword_type = XS_TAG_END; + } + elseif($keyword === 'INCLUDE') + { + $keyword_type = XS_TAG_INCLUDE; + } + elseif($keyword === 'IF') + { + $keyword_type = XS_TAG_IF; + } + elseif($keyword === 'ELSE') + { + $keyword_type = XS_TAG_ELSE; + } + elseif($keyword === 'ELSEIF') + { + $keyword_type = XS_TAG_ELSEIF; + } + elseif($keyword === 'ENDIF') + { + $keyword_type = XS_TAG_ENDIF; + } + elseif($keyword === 'DEFINE') + { + $keyword_type = XS_TAG_DEFINE; + } + elseif($keyword === 'UNDEFINE') + { + $keyword_type = XS_TAG_UNDEFINE; + } + elseif($keyword === 'BEGINELSE') + { + $keyword_type = XS_TAG_BEGINELSE; + } + } + } + if(!$keyword_type) + { + // not valid keyword. process the rest of line + $compiled[] = $this->_compile_text(substr($line, 0, $pos1 + 4), $use_isset); + $code_lines[$i] = substr($line, $pos1 + 4); + $i --; + continue; + } + // remove code before keyword + if($pos1 > 0) + { + $compiled[] = $this->_compile_text(substr($line, 0, $pos1), $use_isset); + } + // remove keyword + $keyword_str = substr($line, $pos1, $pos2 - $pos1 + 4); + $params_str = ($pos2 == $pos3) ? '' : trim(substr($line, $pos3 + 1, $pos2 - $pos3 - 1)); + $code_lines[$i] = substr($line, $pos2 + 4); + $i--; + // Check keywords + + /* + * + */ + if($keyword_type == XS_TAG_BEGIN) + { + $params = explode(' ', $params_str); + $num_params = count($params); + // get variable name + if($num_params == 1) + { + $var = $params[0]; + } + elseif($num_params == 2) + { + if($params[0] === '') + { + $var = $params[1]; + } + elseif($params[1] === '') + { + $var = $params[0]; + } + else + { + // invalid tag + $compiled[] = $keyword_str; + continue; + } + } + else + { + // invalid tag + $compiled[] = $keyword_str; + continue; + } + // check variable for matching end + if($this->xs_check_switches) + { + $found = 0; + $str = ''; + for ($j = $i+1; ($j < $line_count) && !$found; $j++) + { + $pos = strpos($code_lines[$j], $str); + if($pos !== false) + { + $found = 1; + $found_var = $var; + } + } + if(!$found && ($this->xs_check_switches == 1)) + { + // checking list of known buggy switches + $item = -1; + for($j=0; $j<$count_bugs; $j++) + { + if($this->bugs[$j][0] === $var) + { + $item = $j; + } + } + if($item >= 0) + { + $str1 = ''; + for ($j = $i+1; ($j < $line_count) && !$found; $j++) + { + $pos = strpos($code_lines[$j], $str1); + if($pos !== false) + { + $found_var = $this->bugs[$item][1]; + $found = 1; + $code_lines[$j] = str_replace($str, $str1, $code_lines[$j]); + } + } + } + } + if(!$found) + { + $compiled[] = $keyword_str; + continue; + } + // adding to list of switches + if(isset($sw[$found_var])) + { + $sw[$found_var] ++; + } + else + { + $sw[$found_var] = 1; + } + } + // adding code + $block_nesting_level++; + $block_names[$block_nesting_level] = $var; + if(isset($block_items[$var])) + { + $block_items[$var] ++; + } + else + { + $block_items[$var] = 1; + } + if ($block_nesting_level < 2) + { + // Block is not nested. + $line = '<'."?php\n\n"; + if($use_isset) + { + $line .= '$'. $var. '_count = ( isset($this->_tpldata[\''. $var. '.\']) ) ? sizeof($this->_tpldata[\''. $var. '.\']) : 0;'; + } + else + { + $line .= '$'. $var. '_count = sizeof($this->_tpldata[\''. $var. '.\']);'; + } + $line .= "\n" . 'for ($'. $var. '_i = 0; $'. $var. '_i < $'. $var. '_count; $'. $var. '_i++)'; + $line .= "\n". '{'. "\n"; + $line .= ' $'. $var. '_item = &$this->_tpldata[\''. $var. '.\'][$'. $var. '_i];'."\n"; + $line .= " \${$var}_item['S_ROW_COUNT'] = \${$var}_i;\n"; + $line .= " \${$var}_item['S_NUM_ROWS'] = \${$var}_count;\n"; + $line .= "\n?".">"; + } + else + { + // This block is nested. + // Generate a namespace string for this block. + $namespace = implode('.', $block_names); + // strip leading period from root level.. + $namespace = substr($namespace, 2); + // Get a reference to the data array for this block that depends on the + // current indices of all parent blocks. + $varref = $this->generate_block_data_ref($namespace, false); + // Create the for loop code to iterate over this block. + $line = '<'."?php\n\n"; + if($use_isset) + { + $line .= '$'. $var. '_count = ( isset('. $varref. ') ) ? sizeof('. $varref. ') : 0;'; + } + else + { + $line .= '$'. $var. '_count = sizeof('. $varref. ');'; + } + $line .= "\n". 'for ($'. $var. '_i = 0; $'. $var. '_i < $'. $var. '_count; $'. $var. '_i++)'; + $line .= "\n". '{'. "\n"; + $line .= ' $'. $var. '_item = &'. $varref. '[$'. $var. '_i];'."\n"; + $line .= " \${$var}_item['S_ROW_COUNT'] = \${$var}_i;\n"; + $line .= " \${$var}_item['S_NUM_ROWS'] = \${$var}_count;\n"; + $line .= "\n?".">"; + } + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_END) + { + $params = explode(' ', $params_str); + $num_params = count($params); + if($num_params == 1) + { + $var = $params[0]; + } + elseif($num_params == 2 && $params[0] === '') + { + $var = $params[1]; + } + elseif($num_params == 2 && $params[1] === '') + { + $var = $params[0]; + } + else + { + $compiled[] = $keyword_str; + continue; + } + if($this->xs_check_switches) + { + // checking if this switch was opened + if(!isset($sw[$var]) || ($sw[$var] < 1)) + { + // there is no opening switch + $compiled[] = $keyword_str; + continue; + } + $sw[$var] --; + } + // We have the end of a block. + $line = '<'."?php\n\n"; + $line .= '} // END ' . $var . "\n\n"; + $line .= 'if(isset($' . $var . '_item)) { unset($' . $var . '_item); } '; + $line .= "\n\n?".">"; + if(isset($block_items[$var])) + { + $block_items[$var] --; + } + else + { + $block_items[$var] = -1; + } + unset($block_names[$block_nesting_level]); + $block_nesting_level--; + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_BEGINELSE) + { + if($block_nesting_level) + { + $var = $block_names[$block_nesting_level]; + $compiled[] = '<' . '?php } if(!$' . $var . '_count) { ?' . '>'; + } + else + { + $compiled[] = $keyword_str; + continue; + } + } + /* + * + */ + if($keyword_type == XS_TAG_INCLUDE) + { + $params = explode(' ', $params_str); + $num_params = count($params); + if($num_params != 1) + { + $compiled[] = $keyword_str; + continue; + } + $line = '<'.'?php '; + $filehash = md5($params_str . $this->include_count . time()); + $line .= ' $this->set_filename(\'xs_include_' . $filehash . '\', \'' . $params_str .'\', true); '; + $line .= ' $this->pparse(\'xs_include_' . $filehash . '\'); '; + $line .= ' ?'.'>'; + $this->include_count ++; + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_IF || $keyword_type == XS_TAG_ELSEIF) + { + if(!$count_if) + { + $keyword_type = XS_TAG_IF; + } + $str = $this->compile_tag_if($params_str, $keyword_type == XS_TAG_IF ? false : true); + if($str) + { + $compiled[] = ''; + if($keyword_type == XS_TAG_IF) + { + $count_if ++; + } + } + else + { + $compiled[] = $keyword_str; + } + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_ELSE && $count_if > 0) + { + $compiled[] = ''; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_ENDIF && $count_if > 0) + { + $compiled[] = ''; + $count_if --; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_DEFINE) + { + $str = $this->compile_tag_define($params_str); + if($str) + { + $compiled[] = ''; + } + else + { + $compiled[] = $keyword_str; + } + } + /* + * + */ + if($keyword_type == XS_TAG_UNDEFINE) + { + $str = $this->compile_tag_undefine($params_str); + if($str) + { + $compiled[] = ''; + } + else + { + $compiled[] = $keyword_str; + } + } + } + + // bring it back into a single string. + $code_header = ''; + $code_footer = ''; + if(!$use_isset) + { + $code_header = "<". "?php\n\$old_level = @error_reporting(E_ERROR | E_WARNING | E_PARSE); \n?".">"; + $code_footer = '<'."?php @error_reporting(\$old_level); ?".'>'; + } + + return $code_header . implode('', $compiled) . $code_footer; + } + + /** + * Compile variables + * @access private + */ + function compile_code($filename, $code, $use_isset = false) + { + global $mx_user; + // $filename - file to load code from. used if $code is empty + // $code - tpl code + // $use_isset - if false then compiled code looks more beautiful and easier + // to understand and it adds error_reporting() to supress php warnings. + // if true then isset() is used to check variables instead of supressing + // php warnings. note: for extreme styles mod 2.x it works only for + // block variables and for usual variables its always true. + + // load code from file + if(!$code && !empty($filename)) + { + $code = @implode('', @file($filename)); + } + // Our phpBB tags + // Commented out tokens are handled separately from the main replace + $phpbb_tags = array( + /*'BEGIN', + 'BEGINELSE', + 'END', + 'IF', + 'ELSE', + 'ELSEIF', + 'ENDIF', + 'DEFINE', + 'UNDEFINE',*/ + 'ENDDEFINE', + 'INCLUDE', + 'INCLUDEPHP', + 'INCLUDEJS', + 'INCLUDECSS', + 'PHP', + 'ENDPHP', + 'EVENT', + ); + + // Twig tag masks + $twig_tags = array( + 'autoescape', + 'endautoescape', + 'if', + 'elseif', + 'else', + 'endif', + 'block', + 'endblock', + 'use', + 'extends', + 'embed', + 'filter', + 'endfilter', + 'flush', + 'for', + 'endfor', + 'macro', + 'endmacro', + 'import', + 'from', + 'sandbox', + 'endsandbox', + 'set', + 'endset', + //'spaceless', + //'endspaceless', + 'verbatim', + 'endverbatim', + ); + + /** Remove any "loose" php ... we want to give admins the ability + /** to switch on/off PHP for a given template. Allowing unchecked + /** php is a no-no. There is a potential issue here in that non-php + /** content may be removed ... however designers should use entities + /** if they wish to display < and > ** / + $this->remove_php_tags($code); + + /** Replace some unitialised page_header() tags **/ + $code = str_replace('{TEMPLATE_ROOT_PATH}', TEMPLATE_ROOT_PATH, $code); + $code = str_replace('{U_PORTAL_ROOT_PATH}', PORTAL_URL, $code); + $code = str_replace('{U_PHPBB_ROOT_PATH}', PHPBB_URL, $code); + $code = str_replace('{T_MXBB_STYLESHEET}', $mx_user->theme['head_stylesheet'], $code); + + /** Replace phpBB 2.2 tags **/ + preg_match_all('#(.*?)#s', $code, $matches); + $php_blocks = $matches[1]; + $code = preg_replace('#.*?#s', '', $code); + $code = str_replace('$HAS_SUB', 'S_HAS_SUBFORUM', $code); + $code = str_replace('.topicrow', 'S_HAS_SUBFORUM', $code); + $code = str_replace('not .notifications', 'not NOTIFICATIONS_COUNT', $code); + $code = str_replace('.birthdays', 'S_DISPLAY_BIRTHDAY_LIST', $code); + + $code = str_replace('.postrow.contact', '$postrow_item[\'contact.\']', $code); + $code = str_replace('.pagination or', 'PAGINATION or', $code); + $code = str_replace('.pagination', 'PAGINATION', $code); + $code = str_replace('.quickmod', 'QUICKMOD', $code); + + /** Pull out all block/statement level elements and separate plain text **/ + preg_match_all('##', $code, $matches); + $include_blocks = $matches[1]; + + //$code = preg_replace('##', '', $code); + + /** Remove overall_header and overall_footer included in MX-PORTAL and phpBB2 and mx_phpbb3 Forum Integration + via page_header.php and page_tail.php **/ + $code = str_replace('#', $code, $matches); + $includephp_blocks = $matches[1]; + $code = preg_replace('##', '', $code); + + /** Pull out all block/statement level elements and separate plain text ** / + preg_match_all('##', $code, $blocks, PREG_SET_ORDER); + + /** Pull out all block/statement level elements and separate plain text ** / + $text_blocks = preg_split('##', $code); + + + /** Fix tokens that may have inline variables (e.g. ', $code); + + $code = str_replace('{% set', '', $code); + + /** Fix our BEGIN statements step3 this will break mx_main_layout.html and mx_menu_classic_ver.html. ** / + $code = str_replace('%', '--', $code); + + /**Fix our IF tokens **/ + // $code = $this->fix_if_tokens($code); + + // Replace ELSE IF with ELSEIF + $code = preg_replace('##', '', $code); + + /** Fix our DEFINE tokens **/ + // $code = $this->fix_define_tokens($code); + $code = $this->fix_tokens_define($code); + + /** Replace all of our starting tokens, with Twig style, {% TOKEN %} + // This also strips outer parenthesis, becomes ** / + $code = preg_replace('##', '{% $1 $2 %}', $code); + + /**Replace all of our twig masks with Twig code (e.g. with {% block $1 %}) ** / + $code = $this->replace_tag_twig_masks($code, $twig_tags); + //$code = $this->replace_twig_tag_masks($code, $twig_tags); + + /** Replace all of our language variables, {L_VARNAME}, with Twig style, {{ lang('NAME') }} + // Appends any filters after lang() ** / + $code = preg_replace('#{L_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2 }}', $code); + + /** Replace all of our escaped language variables, {LA_VARNAME}, with Twig style, {{ lang('NAME')|escape('js') }} + // Appends any filters after lang(), but before escape('js') ** / + $code = preg_replace('#{LA_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2|escape(\'js\') }}', $code); + + /** Replace all of our variables, {VARNAME}, with Twig style, {{ VARNAME }} ** / + $code = preg_replace('#{([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ $1$2 }}', $code); + /**Appends any filters **/ + + /** Replace .foo with $foo **/ + $code = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9]+)([^a-zA-Z_0-9\.])#', '$1\$$2 ', $code); + $code = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9]+)([^a-zA-Z_0-9\.])#', '$1\$$2 ', $code); + + /**Replace .foo.bar with foo.bar|length **/ + $code = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9\.]+)([^a-zA-Z_0-9\.])#', '$1$2|length$3', $code); + + /** Break it up into lines and put " -->" back. **/ + + $code_lines = explode(' -->', $code); + $count = count($code_lines); + for ($i = 0; $i < ($count - 1); $i++) + { + $code_lines[$i] .= ' -->'; + } + + $block_nesting_level = 0; + $block_names = array(); + $block_names[0] = "."; + $block_items = array(); + $count_if = 0; + + // prepare array for compiled code + $compiled = array(); + $count_bugs = count($this->bugs); + + // array of switches + $sw = array(); + + // replace all short php tags + $new_code = array(); + $line_count = count($code_lines); + for($i = 0; $i < $line_count; $i++) + { + $line = $code_lines[$i]; + $pos = strpos($line, ''; + $code_lines[$i] = substr($line, $pos + 2); + $i --; + } + $code_lines = $new_code; + + // main loop + $line_count = count($code_lines); + for($i = 0; $i < $line_count; $i++) + { + $line = $code_lines[$i]; + // reset keyword type + $keyword_type = XS_TAG_NONE; + // check if we have valid keyword in current line + $pos1 = strpos($line, '', $pos1); + if($pos2 !== false) + { + // find end of keyword in comment + $pos3 = strpos($line, ' ', $pos1 + 5); + if($pos3 !== false && $pos3 <= $pos2) + { + $keyword = substr($line, $pos1 + 5, $pos3 - $pos1 - 5); + // check keyword against list of supported keywords. case-sensitive + if($keyword === 'BEGIN') + { + $keyword_type = XS_TAG_BEGIN; + } + elseif($keyword === 'END') + { + $keyword_type = XS_TAG_END; + } + elseif($keyword === 'INCLUDE') + { + $keyword_type = XS_TAG_INCLUDE; + } + elseif($keyword === 'IF') + { + $keyword_type = XS_TAG_IF; + } + elseif($keyword === 'ELSE') + { + $keyword_type = XS_TAG_ELSE; + } + elseif($keyword === 'ELSEIF') + { + $keyword_type = XS_TAG_ELSEIF; + } + elseif($keyword === 'ENDIF') + { + $keyword_type = XS_TAG_ENDIF; + } + elseif($keyword === 'DEFINE') + { + $keyword_type = XS_TAG_DEFINE; + } + elseif($keyword === 'UNDEFINE') + { + $keyword_type = XS_TAG_UNDEFINE; + } + elseif($keyword === 'BEGINELSE') + { + $keyword_type = XS_TAG_BEGINELSE; + } + } + } + if(!$keyword_type) + { + // not valid keyword. process the rest of line + $compiled[] = $this->_compile_text(substr($line, 0, $pos1 + 4), $use_isset); + $code_lines[$i] = substr($line, $pos1 + 4); + $i --; + continue; + } + // remove code before keyword + if($pos1 > 0) + { + $compiled[] = $this->_compile_text(substr($line, 0, $pos1), $use_isset); + } + // remove keyword + $keyword_str = substr($line, $pos1, $pos2 - $pos1 + 4); + $params_str = $pos2 == $pos3 ? '' : substr($line, $pos3 + 1, $pos2 - $pos3 - 1); + $code_lines[$i] = substr($line, $pos2 + 4); + $i--; + // Check keywords + + /* + * + */ + if($keyword_type == XS_TAG_BEGIN) + { + $params = explode(' ', $params_str); + $num_params = count($params); + // get variable name + if($num_params == 1) + { + $var = $params[0]; + } + elseif($num_params == 2) + { + if($params[0] === '') + { + $var = $params[1]; + } + elseif($params[1] === '') + { + $var = $params[0]; + } + else + { + // invalid tag + $compiled[] = $keyword_str; + continue; + } + } + else + { + // invalid tag + $compiled[] = $keyword_str; + continue; + } + // check variable for matching end + if($this->xs_check_switches) + { + $found = 0; + $str = ''; + for ($j = $i+1; ($j < $line_count) && !$found; $j++) + { + $pos = strpos($code_lines[$j], $str); + if($pos !== false) + { + $found = 1; + $found_var = $var; + } + } + if(!$found && ($this->xs_check_switches == 1)) + { + // checking list of known buggy switches + $item = -1; + for($j=0; $j<$count_bugs; $j++) + { + if($this->bugs[$j][0] === $var) + { + $item = $j; + } + } + if($item >= 0) + { + $str1 = ''; + for ($j = $i+1; ($j < $line_count) && !$found; $j++) + { + $pos = strpos($code_lines[$j], $str1); + if($pos !== false) + { + $found_var = $this->bugs[$item][1]; + $found = 1; + $code_lines[$j] = str_replace($str, $str1, $code_lines[$j]); + } + } + } + } + if(!$found) + { + $compiled[] = $keyword_str; + continue; + } + // adding to list of switches + if(isset($sw[$found_var])) + { + $sw[$found_var] ++; + } + else + { + $sw[$found_var] = 1; + } + } + // adding code + $block_nesting_level++; + $block_names[$block_nesting_level] = $var; + if(isset($block_items[$var])) + { + $block_items[$var] ++; + } + else + { + $block_items[$var] = 1; + } + if ($block_nesting_level < 2) + { + // Block is not nested. + $line = '<'."?php\n\n"; + if($use_isset) + { + $line .= '$'. $var. '_count = ( isset($this->_tpldata[\''. $var. '.\']) ) ? sizeof($this->_tpldata[\''. $var. '.\']) : 0;'; + } + else + { + $line .= '$'. $var. '_count = sizeof($this->_tpldata[\''. $var. '.\']);'; + } + $line .= "\n" . 'for ($'. $var. '_i = 0; $'. $var. '_i < $'. $var. '_count; $'. $var. '_i++)'; + $line .= "\n". '{'. "\n"; + $line .= ' $'. $var. '_item = &$this->_tpldata[\''. $var. '.\'][$'. $var. '_i];'."\n"; + $line .= " \${$var}_item['S_ROW_COUNT'] = \${$var}_i;\n"; + $line .= " \${$var}_item['S_NUM_ROWS'] = \${$var}_count;\n"; + $line .= "\n?".">"; + } + else + { + // This block is nested. + // Generate a namespace string for this block. + $namespace = implode('.', $block_names); + // strip leading period from root level.. + $namespace = substr($namespace, 2); + // Get a reference to the data array for this block that depends on the + // current indices of all parent blocks. + $varref = $this->generate_block_data_ref($namespace, false); + // Create the for loop code to iterate over this block. + $line = '<'."?php\n\n"; + if($use_isset) + { + $line .= '$'. $var . '_count = ( isset('. $varref . ') ) ? sizeof('. $varref . ') : 0;'; + } + else + { + $line .= '$'. $var . '_count = sizeof('. $varref . ');'; + } + $line .= "\n". 'for ($'. $var . '_i = 0; $'. $var . '_i < $'. $var . '_count; $'. $var . '_i++)'; + $line .= "\n". '{'. "\n"; + $line .= ' $'. $var . '_item = &'. $varref . '[$'. $var . '_i];'."\n"; + $line .= " \${$var}_item['S_ROW_COUNT'] = \${$var}_i;\n"; + $line .= " \${$var}_item['S_NUM_ROWS'] = \${$var}_count;\n"; + $line .= "\n?".">"; + } + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_END) + { + $params = explode(' ', $params_str); + $num_params = count($params); + if($num_params == 1) + { + $var = $params[0]; + } + elseif($num_params == 2 && $params[0] === '') + { + $var = $params[1]; + } + elseif($num_params == 2 && $params[1] === '') + { + $var = $params[0]; + } + else + { + $compiled[] = $keyword_str; + continue; + } + if($this->xs_check_switches) + { + // checking if this switch was opened + if(!isset($sw[$var]) || ($sw[$var] < 1)) + { + // there is no opening switch + $compiled[] = $keyword_str; + continue; + } + $sw[$var] --; + } + // We have the end of a block. + $line = '<'."?php\n\n"; + $line .= '} // END ' . $var . "\n\n"; + $line .= 'if(isset($' . $var . '_item)) { unset($' . $var . '_item); } '; + $line .= "\n\n?".">"; + if(isset($block_items[$var])) + { + $block_items[$var] --; + } + else + { + $block_items[$var] = -1; + } + unset($block_names[$block_nesting_level]); + $block_nesting_level--; + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_BEGINELSE) + { + if($block_nesting_level) + { + $var = $block_names[$block_nesting_level]; + $compiled[] = '<' . '?php } if(!$' . $var . '_count) { ?' . '>'; + } + else + { + $compiled[] = $keyword_str; + continue; + } + } + /* + * + */ + if($keyword_type == XS_TAG_INCLUDE) + { + $params = explode(' ', $params_str); + $num_params = count($params); + if($num_params != 1) + { + $compiled[] = $keyword_str; + continue; + } + $line = '<'.'?php '; + $filehash = md5($params_str . $this->include_count . time()); + $line .= ' $this->set_filename(\'xs_include_' . $filehash . '\', \'' . $params_str .'\', true); '; + $line .= ' $this->pparse(\'xs_include_' . $filehash . '\'); '; + $line .= ' ?'.'>'; + $this->include_count ++; + $compiled[] = $line; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_IF || $keyword_type == XS_TAG_ELSEIF) + { + if(!$count_if) + { + $keyword_type = XS_TAG_IF; + } + $str = $this->compile_tag_if($params_str, $keyword_type == XS_TAG_IF ? false : true); + if($str) + { + $compiled[] = ''; + if($keyword_type == XS_TAG_IF) + { + $count_if ++; + } + } + else + { + $compiled[] = $keyword_str; + } + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_ELSE && $count_if > 0) + { + $compiled[] = ''; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_ENDIF && $count_if > 0) + { + $compiled[] = ''; + $count_if --; + continue; + } + /* + * + */ + if($keyword_type == XS_TAG_DEFINE) + { + $str = $this->compile_tag_define($params_str); + if($str) + { + $compiled[] = ''; + } + else + { + $compiled[] = $keyword_str; + } + } + /* + * + */ + if($keyword_type == XS_TAG_UNDEFINE) + { + $str = $this->compile_tag_undefine($params_str); + if($str) + { + $compiled[] = ''; + } + else + { + $compiled[] = $keyword_str; + } + } + } + + // bring it back into a single string. + $code_header = ''; + $code_footer = ''; + if(!$use_isset) + { + $code_header = "<". "?php\n\$old_level = @error_reporting(E_ERROR | E_WARNING | E_PARSE); \n?".">"; + $code_footer = '<'."?php @error_reporting(\$old_level); ?".'>'; + } + + return $code_header . implode('', $compiled) . $code_footer; + } + + /** + * Get template vars in a format Twig will use (from the context) + * + * @return array + */ + function get_template_vars() + { + $context_vars = $this->get_data_ref(); + + $vars = array_merge( + $context_vars, // To get normal vars + array( + 'definition' => new definition(), + 'user' => $this->user, + 'loops' => $context_vars, // To get loops + ) + ); + + // cleanup + unset($vars['loops']['.']); + + return $vars; + } + + /** + * Compile variables + * @access private + */ + function compile_var_tags(&$text_blocks) + { + // change template varrefs into PHP varrefs + $varrefs = array(); + + // This one will handle varrefs WITH namespaces + preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $text_blocks, $varrefs, PREG_SET_ORDER); + + foreach ($varrefs as $var_val) + { + $namespace = $var_val[1]; + $varname = $var_val[3]; + $new = $this->generate_block_varref($namespace, $varname, true, $var_val[2]); + + $text_blocks = str_replace($var_val[0], $new, $text_blocks); + } + + // This will handle the remaining root-level varrefs + // transform vars prefixed by L_ into their language variable pendant if nothing is set within the tpldata array + if (strpos($text_blocks, '{L_') !== false) + { + $text_blocks = preg_replace('#\{L_([A-Z0-9\-_]+)\}#', "_rootref['L_\\1'])) ? \$this->_rootref['L_\\1'] : ((isset(\$mx_user->lang['\\1'])) ? \$mx_user->lang['\\1'] : '{ \\1 }')); ?>", $text_blocks); + } + + // Handle addslashed language variables prefixed with LA_ + // If a template variable already exist, it will be used in favor of it... + if (strpos($text_blocks, '{LA_') !== false) + { + $text_blocks = preg_replace('#\{LA_([A-Z0-9\-_]+)\}#', "_rootref['LA_\\1'])) ? \$this->_rootref['LA_\\1'] : ((isset(\$this->_rootref['L_\\1'])) ? addslashes(\$this->_rootref['L_\\1']) : ((isset(\$mx_user->lang['\\1'])) ? addslashes(\$mx_user->lang['\\1']) : '{ \\1 }'))); ?>", $text_blocks); + } + + // Handle remaining varrefs + $text_blocks = preg_replace('#\{([A-Z0-9\-_]+)\}#', "_rootref['\\1'])) ? \$this->_rootref['\\1'] : ''; ?>", $text_blocks); + $text_blocks = preg_replace('#\{\$([A-Z0-9\-_]+)\}#', "_tpldata['DEFINE']['.']['\\1'])) ? \$this->_tpldata['DEFINE']['.']['\\1'] : ''; ?>", $text_blocks); + + return; + } + + /* + * Compile code between tags + */ + function _compile_text($code, $use_isset) + { + if(strlen($code) < 3) + { + return $code; + } + // change template varrefs into PHP varrefs + // This one will handle varrefs WITH namespaces + $varrefs = array(); + preg_match_all('#\{(([a-z0-9\-_]+?\.)+?)([a-z0-9\-_]+?)\}#is', $code, $varrefs); + $varcount = sizeof($varrefs[1]); + $search = array(); + $replace = array(); + for ($i = 0; $i < $varcount; $i++) + { + $namespace = $varrefs[1][$i]; + $varname = $varrefs[3][$i]; + $new = $this->generate_block_varref($namespace, $varname, $use_isset); + $search[] = $varrefs[0][$i]; + $replace[] = $new; + } + if(count($search) > 0) + { + $code = str_replace($search, $replace, $code); + } + // This will handle the remaining root-level varrefs + $code = preg_replace('#\{([a-z0-9\-_]*?)\}#is', '<'.'?php echo isset($this->vars[\'\1\']) ? $this->vars[\'\1\'] : $this->lang(\'\1\'); ?'.'>', $code); + $code = preg_replace('#\{\$([a-z0-9\-_]*?)\}#is', '<'.'?php echo isset($this->_tpldata[\'DEFINE\'][\'.\'][\'\\1\']) ? $this->_tpldata[\'DEFINE\'][\'.\'][\'\\1\'] : \'\'; ?'.'>', $code); + return $code; + } + + // + // Compile IF tags - much of this is from Smarty with + // some adaptions for our block level methods + // + function compile_tag_if($tag_args, $elseif) + { + /* Tokenize args for 'if' tag. */ + preg_match_all('/(?: + "[^"\\\\]*(?:\\\\.[^"\\\\]*)*" | + \'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\' | + [(),] | + [^\s(),]+)/x', $tag_args, $match); + + $tokens = $match[0]; + $is_arg_stack = array(); + + for ($i = 0; $i < count($tokens); $i++) + { + $token = &$tokens[$i]; + + switch ($token) + { + case '!': + case '%': + case '!==': + case '==': + case '===': + case '>': + case '<': + case '!=': + case '<>': + case '<<': + case '>>': + case '<=': + case '>=': + case '&&': + case '||': + case '|': + case '^': + case '&': + case '~': + case ')': + case ',': + case '+': + case '-': + case '*': + case '/': + case '@': + break; + + case 'eq': + $token = '=='; + break; + + case 'ne': + case 'neq': + $token = '!='; + break; + + case 'lt': + $token = '<'; + break; + + case 'le': + case 'lte': + $token = '<='; + break; + + case 'gt': + $token = '>'; + break; + + case 'ge': + case 'gte': + $token = '>='; + break; + + case 'and': + $token = '&&'; + break; + + case 'or': + $token = '||'; + break; + + case 'not': + $token = '!'; + break; + + case 'mod': + $token = '%'; + break; + + case '(': + array_push($is_arg_stack, $i); + break; + + case 'is': + $is_arg_start = ($tokens[$i-1] == ')') ? array_pop($is_arg_stack) : $i-1; + $is_arg = implode(' ', array_slice($tokens, $is_arg_start, $i - $is_arg_start)); + + $new_tokens = $this->_parse_is_expr($is_arg, array_slice($tokens, $i+1)); + + array_splice($tokens, $is_arg_start, count($tokens), $new_tokens); + + $i = $is_arg_start; + + default: + if (preg_match('#^(([a-z0-9\-_]+?\.)+?)?(\$)?([A-Z]+[A-Z0-9\-_]+)$#s', $token, $varrefs)) + { + $token = (!empty($varrefs[1])) ? $this->generate_block_data_ref(substr($varrefs[1], 0, -1), true, $varrefs[3]) . '[\'' . $varrefs[4] . '\']' : (($varrefs[3]) ? '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $varrefs[4] . '\']' : '$this->vars[\'' . $varrefs[4] . '\']'); + } + else if ( $token[0] == '.' ) + { + $token = 'sizeOf( $this->_tpldata[\'' . substr( $token, 1) . '.\'])'; + } + break; + } + } + + $code = (($elseif) ? '} elseif (' : 'if (') . (implode(' ', $tokens) . ') { '); + + return $code; + } + + // This is from Smarty + function _parse_is_expr($is_arg, $tokens) + { + $expr_end = 0; + $negate_expr = false; + + if (($first_token = array_shift($tokens)) == 'not') + { + $negate_expr = true; + $expr_type = array_shift($tokens); + } + else + { + $expr_type = $first_token; + } + + switch ($expr_type) + { + case 'even': + if (@$tokens[$expr_end] == 'by') + { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!(($is_arg / $expr_arg) % $expr_arg)"; + } + else + { + $expr = "!($is_arg % 2)"; + } + break; + + case 'odd': + if (@$tokens[$expr_end] == 'by') + { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "(($is_arg / $expr_arg) % $expr_arg)"; + } + else + { + $expr = "($is_arg % 2)"; + } + break; + + case 'div': + if (@$tokens[$expr_end] == 'by') + { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!($is_arg % $expr_arg)"; + } + break; + + default: + break; + } + + if ($negate_expr) + { + $expr = "!($expr)"; + } + + array_splice($tokens, 0, $expr_end, $expr); + + return $tokens; + } + + + function compile_tag_define($tag_args) + { + preg_match('#^(([a-z0-9\-_]+?\.)+?)?\$([A-Z][A-Z0-9_\-]*?) = (\'?)(.*?)(\'?)$#', $tag_args, $match); + + if (empty($match[3]) || empty($match[5])) + { + return ''; + } + + // Are we a string? + if ($match[4] && $match[6]) + { + $match[5] = "'" . addslashes(str_replace(array('\\\'', '\\\\'), array('\'', '\\'), $match[5])) . "'"; + } + else + { + preg_match('#(true|false|\.)#i', $match[5], $type); + // Aprint_r($type[1]); + switch (@strtolower($type[1])) + { + case 'true': + case 'false': + $match[5] = strtoupper($match[5]); + break; + case '.'; + $match[5] = doubleval($match[5]); + break; + default: + $match[5] = intval($match[5]); + break; + } + } + + $tag_return = (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[3] . '\']' : '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[3] . '\']') . ' = ' . $match[5] . ';'; + + return $tag_return; + } + + function compile_tag_undefine($tag_args) + { + preg_match('#^(([a-z0-9\-_]+?\.)+?)?\$([A-Z][A-Z0-9_\-]*?)$#', $tag_args, $match); + if (empty($match[3])) + { + return ''; + } + return 'unset(' . (($match[1]) ? $this->generate_block_data_ref(substr($match[1], 0, -1), true, true) . '[\'' . $match[3] . '\']' : '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[3] . '\']') . ');'; + } + + /** + * Compiles code and writes to cache if needed + */ + function compile2($code, $handle, $cache_file) + { + $code = $this->compile_code('', $code, XS_USE_ISSET); + if($cache_file && !empty($this->use_cache) && !empty($this->auto_compile)) + { + $res = $this->write_cache($cache_file, $code); + if($handle && $res) + { + $this->files_cache[$handle] = $cache_file; + } + } + $code = '?'.'>'.$code.'<'."?php\n"; + return $code; + } + + /** + * Compiles the given string of code, and returns + * the result in a string. + * If "do_not_echo" is true, the returned code will not be directly + * executable, but can be used as part of a variable assignment + * for use in assign_code_from_handle(). + * This function isn't used and kept only for compatibility with original template.php + */ + function compile($code, $do_not_echo = false, $retvar = '') + { + $code = ' ?'.'>' . $this->compile_code('', $code, true) . '<'."?php \n"; + if($do_not_echo) + { + $code = "ob_start();\n". $code. "\n\${$retvar} = ob_get_contents();\nob_end_clean();\n"; + } + return $code; + } + + /** + * Write cache to disk + */ + function write_cache($filename, $code) + { + // check if cache is writable + if(!$this->cache_writable) + { + return false; + } + // check if filename is valid + if(substr($filename, 0, strlen($this->cachedir)) !== $this->cachedir) + { + return false; + } + // try to open file + $file = @fopen($filename, 'w'); + if(!$file) + { + // try to create directories + $dir = substr($filename, strlen($this->cachedir), strlen($filename)); + $dirs = explode('/', $dir); + $path = $this->cachedir; + @umask(0); + if(!@is_dir($path)) + { + if(!@mkdir($path)) + { + $this->cache_writable = 0; + return false; + } + else + { + @chmod($path, 0777); + } + } + $count = count($dirs); + if($count > 0) + for($i=0; $i<$count-1; $i++) + { + if($i>0) + { + $path .= '/'; + } + $path .= $dirs[$i]; + if(!@is_dir($path)) + { + if(!@mkdir($path)) + { + $this->cache_writable = 0; + return false; + } + else + { + @chmod($path, 0777); + } + } + } + // try to open file again after directories were created + $file = @fopen($filename, 'w'); + } + if(!$file) + { + $this->cache_writable = 0; + return false; + } + fputs($file, ""); + fputs($file, $code); + fclose($file); + @chmod($filename, 0777); + return true; + } + + function xs_startup() + { + global $phpEx, $board_config, $phpbb_root_path, $mx_root_path; + if(empty($this->xs_started)) + { // adding predefined variables + $this->xs_started = 1; + // file extension with session ID (eg: "php?sid=123&" or "php?") + // can be used to make custom URLs without modding phpbb + // contains "&" or "?" at the end so you can easily append paramenters + $php = mx_append_sid($phpEx); + if(strpos($php, '?')) + { + $php .= '&'; + } + else + { + $php .= '?'; + } + $this->vars['PHP'] = isset($this->vars['PHP']) ? $this->vars['PHP'] : $php; + // adding language variable (eg: "english" or "german") + // can be used to make truly multi-lingual templates + $this->vars['LANG'] = isset($this->vars['LANG']) ? $this->vars['LANG'] : $board_config['default_lang']; + // adding current template + $tpl = $this->root . '/'; // $mx_root_path . 'templates/' . $this->tpl . '/'; + if(substr($tpl, 0, 2) === './') + { + $tpl = substr($tpl, 2, strlen($tpl)); + } + $this->vars['TEMPLATE'] = isset($this->vars['TEMPLATE']) ? $this->vars['TEMPLATE'] : $tpl; + $this->vars['TEMPLATE_NAME'] = isset($this->vars['TEMPLATE_NAME']) ? $this->vars['TEMPLATE_NAME'] : $this->tpl; + $this->_tpldata['switch_xs_enabled.'] = array(array('version' => $this->xs_versiontxt)); + } + } + + /** + * Checks for empty variable and shows language variable if possible. + */ + function lang($var) + { + global $lang; + if(substr($var, 0, 2) === 'L_') + { + $var = substr($var, 2); + // check variable as it is + if(isset($lang[$var])) + { + return $lang[$var]; + } + // check variable in lower case + if(isset($lang[strtolower($var)])) + { + return $lang[strtolower($var)]; + } + // check variable with first letter in upper case + $str = ucfirst(strtolower($var)); + if(isset($lang[$str])) + { + return $lang[$str]; + } + return "{{$var}}"; //str_replace('_', ' ', $var); + } + return ''; + } + + // + // + // Functions added for USERGROUP MOD (optimized) + // + // + function append_var_from_handle_to_block($blockname, $varname, $handle) + { + $this->assign_var_from_handle('_tmp', $handle); + // assign the value of the generated variable to the given varname. + $this->append_block_vars($blockname, array($varname => $this->vars['_tmp'])); + return true; + } + + function append_block_vars($blockname, $vararray) + { + if(strstr($blockname, '.')) + { + // Nested block. + $blocks = explode('.', $blockname); + $blockcount = sizeof($blocks) - 1; + $str = &$this->_tpldata; + for($i = 0; $i < $blockcount; $i++) + { + $str = &$str[$blocks[$i].'.']; + $str = &$str[sizeof($str)-1]; + } + // Now we add the block that we're actually assigning to. + // We're adding a new iteration to this block with the given + // variable assignments. + $str = &$str[$blocks[$blockcount].'.']; + $count = sizeof($str) - 1; + if($count >= 0) + { + // adding only if there is at least one item + $str[$count] = array_merge($str[$count], $vararray); + } + } + else + { + // Top-level block. + // Add a new iteration to this block with the variable assignments + // we were given. + $this->_tpldata[$blockname.'.'] = isset($this->_tpldata[$blockname.'.']) ? $this->_tpldata[$blockname.'.'] : $blockname; + $str = &$this->_tpldata[$blockname.'.']; + $count = sizeof($str) - 1; + if($count >= 0) + { + // adding only if there is at least one item + $str[$count] = array_merge($str[$count], $vararray); + } + } + return true; + } + + /* + * Flush a root level block, so it becomes empty. + */ + function flush_block_vars($blockname) + { + // Top-level block. + // flush a existing block we were given. + $this->_tpldata[$blockname.'.'] = isset($this->_tpldata[$blockname.'.']) ? $this->_tpldata[$blockname.'.'] : $blockname; + $current_iteration = sizeof($this->_tpldata[$blockname.'.']) - 1; + unset($this->_tpldata[$blockname.'.']); + return true; + } + + /* + * Add style configuration + */ + function _add_config($tpl, $add_vars = true) + { + global $phpbb_root_path, $mx_root_path; + if(@file_exists($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i=0; $istyle_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + $board_config[$config_name] = $str; + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + $db->sql_query($sql); + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } + elseif(@file_exists($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i=0; $istyle_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + $board_config[$config_name] = $str; + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + $db->sql_query($sql); + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } + return false; + } + + function add_config($tpl) + { + $config_name = 'xs_style_' . $tpl; + global $board_config; + $result = false; + if(empty($board_config[$config_name])) + { + $old = $this->style_config; + $result = $this->_add_config($tpl, false); + $this->style_config = $old; + } + return $result; + } + + /* + * Refresh config data + */ + function _refresh_config($tpl, $add_vars = false) + { + global $mx_root_path, $phpbb_root_path; + if(@file_exists($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($mx_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i=0; $istyle_config[$style_config[$i]['var']])) + { + $this->style_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + if(isset($board_config[$config_name])) + { + $sql = "UPDATE " . CONFIG_TABLE . " SET config_value='" . str_replace('\\\'', '\'\'', addslashes($str)) . "' WHERE config_name='" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "'"; + } + else + { + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + } + $db->sql_query($sql); + $board_config[$config_name] = $str; + // recache config table for cat_hierarchy 2.1.0 + global $config; + if(isset($config->data) && $config->data === $board_config && isset($config->data['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } + elseif(@file_exists($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg')) + { + $style_config = array(); + include($phpbb_root_path . 'templates/' . $tpl . '/xs_config.cfg'); + if(count($style_config)) + { + global $board_config, $db; + for($i = 0; $i < count($style_config); $i++) + { + if(!isset($this->style_config[$style_config[$i]['var']])) + { + $this->style_config[$style_config[$i]['var']] = $style_config[$i]['default']; + if($add_vars) + { + $this->vars['TPL_CFG_' . strtoupper($style_config[$i]['var'])] = $style_config[$i]['default']; + } + } + } + $str = $this->_serialize($this->style_config); + $config_name = 'xs_style_' . $tpl; + if(isset($board_config[$config_name])) + { + $sql = "UPDATE " . CONFIG_TABLE . " SET config_value='" . str_replace('\\\'', '\'\'', addslashes($str)) . "' WHERE config_name='" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "'"; + } + else + { + $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value) VALUES ('" . str_replace('\\\'', '\'\'', addslashes($config_name)) . "', '" . str_replace('\\\'', '\'\'', addslashes($str)) . "')"; + } + $db->sql_query($sql); + $board_config[$config_name] = $str; + // recache config table for cat_hierarchy 2.1.0 + global $board_config; + if(isset($board_config['mod_cat_hierarchy'])) + { + $config->read(true); + } + return true; + } + } + return false; + } + + function refresh_config($tpl = '') + { + if($tpl === '') + { + $tpl = $this->tpl; + } + if($tpl == $this->tpl) + { + $result = $this->_refresh_config($tpl, true); + } + else + { + $old = $this->style_config; + $result = $this->_refresh_config($tpl, false); + $this->style_config = $old; + } + return $result; + } + + /* + * Get style configuration + */ + function _get_config($tpl, $add_config) + { + $this->style_config = array(); + if(empty($tpl)) + { + $tpl = $this->tpl; + } + $config_name = 'xs_style_' . $tpl; + global $board_config; + if(empty($board_config[$config_name])) + { + if($add_config) + { + $this->_add_config($tpl, $tpl === $this->tpl ? true : false); + } + return $this->style_config; + } + $this->style_config = $this->_unserialize($board_config[$config_name]); + if($tpl === $this->tpl) + { + foreach($this->style_config as $var => $value) + { + $this->vars['TPL_CFG_' . strtoupper($var)] = $value; + } + } + return $this->style_config; + } + + function get_config($tpl = '', $add_config = true) + { + if(empty($tpl)) + { + if(empty($this->tpl)) + { + return array(); + } + $this->_get_config($this->tpl, $add_config); + return $this->style_config; + } + else + { + $old_config = $this->style_config; + $result = $this->_get_config($tpl, $add_config); + $this->style_config = $old_config; + return $result; + } + } + + /* + * Split/merge config data. + * Using this function instead of (un)serialize because it generates smaller string so it can be stored in phpbb_config + */ + function _serialize($array) + { + if(!is_array($array)) + { + return ''; + } + $str = ''; + foreach($array as $var => $value) + { + if($str) + { + $str .= '|'; + } + $str .= $var . '=' . str_replace('|', '', $value); + } + return $str; + } + + function _unserialize($str) + { + $array = array(); + $list = explode('|', $str); + for($i=0; $i VALUE [the key/value pair to search for within the loop to determine the correct position] + * + * int: Position [the position to change or insert at directly given] + * + * If key is false the position is set to 0 + * If key is true the position is set to the last entry + * + * @param string $mode Mode to execute (valid modes are 'insert' and 'change') + * + * If insert, the vararray is inserted at the given position (position counting from zero). + * If change, the current block gets merged with the vararray (resulting in new key/value pairs be added and existing keys be replaced by the new value). + * + * Since counting begins by zero, inserting at the last position will result in this array: array(vararray, last positioned array) + * and inserting at position 1 will result in this array: array(first positioned array, vararray, following vars) + * + * @return bool false on error, true on success + * @access public + */ + function alter_block_array($blockname, $vararray, $key = false, $mode = 'insert') + { + if (strpos($blockname, '.') !== false) + { + // Nested blocks are not supported + return false; + } + + // Change key to zero (change first position) if false and to last position if true + if ($key === false || $key === true) + { + $key = ($key === false) ? 0 : sizeof($this->_tpldata[$blockname]); + } + + // Get correct position if array given + if (is_array($key)) + { + // Search array to get correct position + list($search_key, $search_value) = @each($key); + + $key = NULL; + foreach ($this->_tpldata[$blockname] as $i => $val_ary) + { + if ($val_ary[$search_key] === $search_value) + { + $key = $i; + break; + } + } + + // key/value pair not found + if ($key === NULL) + { + return false; + } + } + + // Insert Block + if ($mode == 'insert') + { + // Make sure we are not exceeding the last iteration + if ($key >= sizeof($this->_tpldata[$blockname])) + { + $key = sizeof($this->_tpldata[$blockname]); + unset($this->_tpldata[$blockname][($key - 1)]['S_LAST_ROW']); + $vararray['S_LAST_ROW'] = true; + } + else if ($key === 0) + { + unset($this->_tpldata[$blockname][0]['S_FIRST_ROW']); + $vararray['S_FIRST_ROW'] = true; + } + + // Re-position template blocks + for ($i = sizeof($this->_tpldata[$blockname]); $i > $key; $i--) + { + $this->_tpldata[$blockname][$i] = $this->_tpldata[$blockname][$i-1]; + $this->_tpldata[$blockname][$i]['S_ROW_COUNT'] = $i; + } + + // Insert vararray at given position + $vararray['S_ROW_COUNT'] = $key; + $this->_tpldata[$blockname][$key] = $vararray; + + return true; + } + + // Which block to change? + if ($mode == 'change') + { + if ($key == sizeof($this->_tpldata[$blockname])) + { + $key--; + } + + $this->_tpldata[$blockname][$key] = array_merge($this->_tpldata[$blockname][$key], $vararray); + return true; + } + + return false; + } + + /** + * Include a separate template + * @access private + */ + function _tpl_include($filename, $include = true) + { + $handle = $filename; + $this->filename[$handle] = $filename; + $this->files[$handle] = $this->root . '/' . $filename; + /** */ + $this->set_filename($handle, $filename); + /** */ + if ($this->inherit_root) + { + $this->files_inherit[$handle] = $this->inherit_root . '/' . $filename; + } + + $filename = $this->_tpl_load($handle); + + if ($include) + { + global $mx_user; + + if ($filename) + { + include($filename); + return; + } + eval(' ?>' . $this->compiled_code[$handle] . '_php_include(): File ' . htmlspecialchars($filename) . ' does not exist or is empty'; + return; + } + } + + public function set_environment() + { + $this->env = ''; + } + + public function tokenize($code, $filename = null) + { + // Our phpBB tags + // Commented out tokens are handled separately from the main replace + $phpbb_tags = array( + /*'BEGIN', + 'BEGINELSE', + 'END', + 'IF', + 'ELSE', + 'ELSEIF', + 'ENDIF', + 'DEFINE', + 'UNDEFINE',*/ + 'ENDDEFINE', + 'INCLUDE', + 'INCLUDEPHP', + 'INCLUDEJS', + 'INCLUDECSS', + 'PHP', + 'ENDPHP', + 'EVENT', + ); + + // Twig tag masks + /** + * Remove whitespaces between HTML tags. + * + *
    +		 * {% spaceless %}
    +		 *      
    + * foo + *
    + * {% endspaceless %} + * + * {# output will be
    foo
    #} + *
    + * + */ + $twig_tags = array( + 'autoescape', + 'endautoescape', + 'if', + 'elseif', + 'else', + 'endif', + 'block', + 'endblock', + 'use', + 'extends', + 'embed', + 'filter', + 'endfilter', + 'flush', + 'for', + 'endfor', + 'macro', + 'endmacro', + 'import', + 'from', + 'sandbox', + 'endsandbox', + 'set', + 'endset', + //'spaceless', + //'endspaceless', + 'verbatim', + 'endverbatim', + ); + + // Fix tokens that may have inline variables (e.g. with Twig style, {% TOKEN %} + // This also strips outer parenthesis, becomes + $code = preg_replace('##', '{% $1 $2 %}', $code); + + // Replace all of our twig masks with Twig code (e.g. with {% block $1 %}) + $code = $this->replace_twig_tag_masks($code, $twig_tags); + + // Replace all of our language variables, {L_VARNAME}, with Twig style, {{ lang('NAME') }} + // Appends any filters after lang() + $code = preg_replace('#{L_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2 }}', $code); + + // Replace all of our escaped language variables, {LA_VARNAME}, with Twig style, {{ lang('NAME')|escape('js') }} + // Appends any filters after lang(), but before escape('js') + $code = preg_replace('#{LA_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2|escape(\'js\') }}', $code); + + // Replace all of our variables, {VARNAME}, with Twig style, {{ VARNAME }} + // Appends any filters + $code = preg_replace('#{([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ $1$2 }}', $code); + + // Tokenize \Twig_Source instance + return $code; + } + + /** + * Strip surrounding quotes + * + * First step to fix tokens that may have inline variables + * E.g. #', '', $code); + } + + /** + * Fix tokens that may have inline variables + * + * Second step to fix tokens that may have inline variables + * E.g. "; + }; + + return preg_replace_callback('##', $callback, $code); + } + + /** + * Add surrounding quotes + * + * Last step to fix tokens that may have inline variables + * E.g. #', '', $code); + } + + /** + * Fix begin tokens (convert our BEGIN to Twig for) + * + * Not meant to be used outside of this context, public because the anonymous function calls this + * + * @param string $code + * @param array $parent_nodes (used in recursion) + * @return string + */ + public function fix_begin_tokens($code, $parent_nodes = array()) + { + // PHP 5.3 cannot use $this in an anonymous function, so use this as a work-around + $parent_class = $this; + $callback = function ($matches) use ($parent_class, $parent_nodes) + { + $hard_parents = explode('.', $matches[1]); + array_pop($hard_parents); // ends with . + if ($hard_parents) + { + $parent_nodes = array_merge($hard_parents, $parent_nodes); + } + + $name = $matches[2]; + $subset = trim(substr($matches[3], 1, -1)); // Remove parenthesis + $body = $matches[4]; + + // Replace + $body = str_replace('', '{% else %}', $body); + + // Is the designer wanting to call another loop in a loop? + // + // + // + // + // 'loop2' is actually on the same nesting level as 'loop' you assign + // variables to it with template->assign_block_vars('loop2', array(...)) + if (strpos($name, '!') === 0) + { + // Count the number if ! occurrences + $count = substr_count($name, '!'); + for ($i = 0; $i < $count; $i++) + { + array_pop($parent_nodes); + $name = substr($name, 1); + } + } + + // Remove all parent nodes, e.g. foo, bar from foo.bar.foobar.VAR + foreach ($parent_nodes as $node) + { + $body = preg_replace('#([^a-zA-Z0-9_])' . $node . '\.([a-zA-Z0-9_]+)\.#', '$1$2.', $body); + } + + // Add current node to list of parent nodes for child nodes + $parent_nodes[] = $name; + + // Recursive...fix any child nodes + $body = $parent_class->fix_begin_tokens($body, $parent_nodes); + + // Need the parent variable name + array_pop($parent_nodes); + $parent = (!empty($parent_nodes)) ? end($parent_nodes).'.' : ''; + + if ($subset !== '') + { + $subset = '|subset(' . $subset . ')'; + } + + $parent = ($parent) ? $parent : 'loops.'; + // Turn into a Twig for loop + return "{% for {$name} in {$parent}{$name}{$subset} %}{$body}{% endfor %}"; + }; + + return preg_replace_callback('#(.+?)#s', $callback, $code); + } + + /** + * Fix begin tokens (convert our Twig to BEGIN for) + * + * Not meant to be used outside of this context, public because the anonymous function calls this + * + * @param string $code + * @param array $parent_nodes (used in recursion) + * @return string + */ + public function fix_tokens_begin($code, $parent_nodes = array()) + { + // PHP 5.3 cannot use $this in an anonymous function, so use this as a work-around + $parent_class = $this; + $callback = function ($matches) use ($parent_class, $parent_nodes) + { + $hard_parents = explode('.', $matches[1]); + array_pop($hard_parents); // ends with . + if ($hard_parents) + { + $parent_nodes = array_merge($hard_parents, $parent_nodes); + } + + $name = $matches[2]; + $subset = trim(substr($matches[3], 1, -1)); // Remove parenthesis + $body = $matches[4]; + + // Replace + $body = str_replace('{% else %}', '', $body); + + // Is the designer wanting to call another loop in a loop? + // + // + // + // + // 'loop2' is actually on the same nesting level as 'loop' you assign + // variables to it with template->assign_block_vars('loop2', array(...)) + if (strpos($name, '!') === 0) + { + // Count the number if ! occurrences + $count = substr_count($name, '!'); + for ($i = 0; $i < $count; $i++) + { + array_pop($parent_nodes); + $name = substr($name, 1); + } + } + + // Remove all parent nodes, e.g. foo, bar from foo.bar.foobar.VAR + foreach ($parent_nodes as $node) + { + $body = preg_replace('#([^a-zA-Z0-9_])' . $node . '\.([a-zA-Z0-9_]+)\.#', ' $1 $2 . ', $body); + } + + // Add current node to list of parent nodes for child nodes + $parent_nodes[] = $name; + + // Recursive...fix any child nodes + $body = $parent_class->fix_tokens_begin($body, $parent_nodes); + + // Need the parent variable name + array_pop($parent_nodes); + $parent = (!empty($parent_nodes)) ? end($parent_nodes) . '.' : ''; + + if ($subset !== '') + { + $subset = '|subset(' . $subset . ')'; + } + + $parent = ($parent) ? $parent : 'loops.'; + // loop + return "{$body}"; + }; + + return preg_replace_callback('#(.+?)#s', $callback, $code); + } + + /** + * Fix IF statements + * + * @param string $code + * @return string + */ + protected function fix_if_tokens($code) + { + // Replace ELSE IF with ELSEIF + $code = preg_replace('##', '', $code); + + // Replace our "div by" with Twig's divisibleby (Twig does not like test names with spaces) + $code = preg_replace('# div by ([0-9]+)#', ' divisibleby($1)', $code); + + $callback = function($matches) + { + $inner = $matches[2]; + // Replace $TEST with definition.TEST + $inner = preg_replace('#(\s\(*!?)\$([a-zA-Z_0-9]+)#', '$1definition.$2', $inner); + + // Replace .foo with loops.foo|length + // $inner = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9]+)([^a-zA-Z_0-9\.])#', '$1loops.$2|length$3', $inner); + + // Replace .foo.bar with foo.bar|length + // $inner = preg_replace('#(\s\(*!?)\.([a-zA-Z_0-9\.]+)([^a-zA-Z_0-9\.])#', '$1$2|length$3', $inner); + + return ""; + }; + + return preg_replace_callback('##', $callback, $code); + } + + /** + * Fix DEFINE statements and {$VARNAME} variables + * + * @param string $code + * @return string + */ + protected function fix_define_tokens($code) + { + /** + * Changing $VARNAME to definition.varname because set is only local + * context (e.g. DEFINE $TEST will only make $TEST available in current + * template and any child templates, but not any parent templates). + * + * DEFINE handles setting it properly to definition in its node, but the + * variables reading FROM it need to be altered to definition.VARNAME + * + * Setting up definition as a class in the array passed to Twig + * ($context) makes set definition.TEST available in the global context + */ + + // Replace #', '{% DEFINE $1 %}', $code); + + // Changing UNDEFINE NAME to DEFINE NAME = null to save from creating an extra token parser/node + $code = preg_replace('##', '{% DEFINE $1= null %}', $code); + + // Replace all of our variables, {$VARNAME}, with Twig style, {{ definition.VARNAME }} + $code = preg_replace('#{\$([a-zA-Z0-9_\.]+)}#', '{{ definition.$1 }}', $code); + + // Replace all of our variables, ~ $VARNAME ~, with Twig style, ~ definition.VARNAME ~ + $code = preg_replace('#~ \$([a-zA-Z0-9_\.]+) ~#', '~ definition.$1 ~', $code); + + return $code; + } + + /** + * Fix DEFINE statements and {$VARNAME} variables + * + * @param string $code + * @return string + */ + protected function fix_tokens_define($code) + { + /** + * Changing $VARNAME to definition.varname because set is only local + * context (e.g. DEFINE $TEST will only make $TEST available in current + * template and any child templates, but not any parent templates). + * + * DEFINE handles setting it properly to definition in its node, but the + * variables reading FROM it need to be altered to definition.VARNAME + * + * Setting up definition as a class in the array passed to Twig + * ($context) makes set definition.TEST available in the global context + */ + + // Replace ', $code); + + // Changing UNDEFINE NAME to DEFINE NAME = null to save from creating an extra token parser/node + $code = preg_replace('#{% UNDEFINE \$(.*?)%}#', '', $code); + + // Replace all of our variables, {$VARNAME}, with Twig style, {{ definition.VARNAME }} + //$code = preg_replace('#{\$([a-zA-Z0-9_\.]+)}#', '{{ definition.$1 }}', $code); + + // Replace all of our variables, ~ $VARNAME ~, with Twig style, ~ definition.VARNAME ~ + //$code = preg_replace('#~ \$([a-zA-Z0-9_\.]+) ~#', '~ definition.$1 ~', $code); + + return $code; + } + + /** + * Replace Twig tag masks with Twig tag calls + * + * E.g. with {% block foo %} + * + * @param string $code + * @param array $twig_tags All tags we want to create a mask for + * @return string + */ + protected function replace_twig_tag_masks($code, $twig_tags) + { + $callback = function ($matches) + { + $matches[1] = strtolower($matches[1]); + + return "{% {$matches[1]}{$matches[2]}%}"; + }; + + foreach ($twig_tags as &$tag) + { + $tag = strtoupper($tag); + } + + // twig_tags is an array of the twig tags, which are all lowercase, but we use all uppercase tags + $code = preg_replace_callback('##', $callback, $code); + + return $code; + } + + /** + * Replace Twig tag masks with Twig tag calls + * + * E.g. with {% block foo %} + * + * @param string $code + * @param array $twig_tags All tags we want to create a mask for + * @return string + */ + protected function replace_tag_twig_masks($code, $twig_tags) + { + $callback = function ($matches) + { + $matches[1] = strtolower($matches[1]); + + return ""; + }; + + foreach ($twig_tags as &$tag) + { + $tag = strtoupper($tag); + } + + // twig_tags is an array of the twig tags, which are all lowercase, but we use all uppercase tags + $code = preg_replace_callback('#{% (' . implode('|', $twig_tags) . ')(.*?)%}#', $callback, $code); + + return $code; + } +} + +/** +* This class holds all DEFINE variables from the current page load +*/ +class definition +{ + /** @var array **/ + protected $definitions = array(); + + /** + * Get a DEFINE'd variable + * + * @param string $name + * @param array $arguments + * + * @return mixed Null if not found + */ + public function __call($name, $arguments) + { + return (isset($this->definitions[$name])) ? $this->definitions[$name] : null; + } + + /** + * DEFINE a variable + * + * @param string $name + * @param mixed $value + * @return \phpbb\template\twig\definition + */ + public function set($name, $value) + { + $this->definitions[$name] = $value; + + return $this; + } + + /** + * Append to a variable + * + * @param string $name + * @param string $value + * @return \phpbb\template\twig\definition + */ + public function append($name, $value) + { + if (!isset($this->definitions[$name])) + { + $this->definitions[$name] = ''; + } + + $this->definitions[$name] .= $value; + + return $this; + } +} + +function xs_switch($tpl, $name) +{ + return (isset($tpl->_tpldata[$name.'.']) && count($tpl->_tpldata[$name.'.']) > 0); +} + +?> \ No newline at end of file diff --git a/includes/utf/utf_tools.php b/includes/utf/utf_tools.php index a5c07e50..4b2c83f2 100644 --- a/includes/utf/utf_tools.php +++ b/includes/utf/utf_tools.php @@ -2,10 +2,10 @@ /** * * @package utf -* @version $Id: utf_tools.php,v 1.5 2013/06/28 15:33:27 orynider Exp $ +* @version $Id: utf_tools.php,v 1.2 2009/01/24 16:47:52 orynider Exp $ * @copyright (c) 2002-2008 MX-Publisher Project Team & (C) 2005 The phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 -* @link http://mxpcms.sourceforge.net/ +* @link http://mxpcms.sourceforge.net * */ @@ -911,7 +911,7 @@ function utf8_recode($string, $encoding) return gb2312($string); } - // Trigger an error?! Fow now just give bad data :-( + // Trigger an error?! Fow now just gives bad data :-( trigger_error('Unknown encoding: ' . $encoding, E_USER_ERROR); //return $string; // use utf_normalizer::cleanup() ? } @@ -1662,9 +1662,14 @@ function utf8_case_fold_nfkc($text, $option = 'full') global $mx_root_path, $phpEx; include($mx_root_path . 'includes/utf/utf_normalizer.' . $phpEx); } - + + if( !is_object($utf_normalizer)) + { + $utf_normalizer = new utf_normalizer(); + } + // convert to NFKC - utf_normalizer::nfkc($text); + $utf_normalizer->nfkc($text); // FC_NFKC_Closure, http://www.unicode.org/Public/5.0.0/ucd/DerivedNormalizationProps.txt $text = strtr($text, $fc_nfkc_closure); @@ -1779,10 +1784,15 @@ function utf8_normalize_nfc($strings) global $mx_root_path, $phpEx; include($mx_root_path . 'includes/utf/utf_normalizer.' . $phpEx); } - + + if( !isset($utf_normalizer)) + { + $utf_normalizer = new utf_normalizer(); + } + if (!is_array($strings)) { - utf_normalizer::nfc($strings); + $utf_normalizer->nfc($strings); } else if (is_array($strings)) { @@ -1792,12 +1802,12 @@ function utf8_normalize_nfc($strings) { foreach ($string as $_key => $_string) { - utf_normalizer::nfc($strings[$key][$_key]); + $utf_normalizer->nfc($strings[$key][$_key]); } } else { - utf_normalizer::nfc($strings[$key]); + $utf_normalizer->nfc($strings[$key]); } } } diff --git a/install/includes/functions_install.php b/install/includes/functions_install.php index be6bd523..9c5f8375 100644 --- a/install/includes/functions_install.php +++ b/install/includes/functions_install.php @@ -1050,12 +1050,40 @@ function get_backend_info($config) ); } -function get_phpbb_info($config, $backend = 'phpbb3') +function get_phpbb_info($root_path, $backend = 'phpbb3', $phpbbversion = '3.0.14') { + $phpEx = substr(strrchr(__FILE__, '.'), 1); + $config = $root_path . "config.$phpEx"; + // if ((@include $config) === false) { install_die(GENERAL_ERROR, 'Configuration file ' . $config . ' couldn\'t be opened.'); } + // + if ((@include $root_path . "language/en/install.$phpEx") !== false) + { + $left_piece1 = explode('. You', $lang['CONVERT_COMPLETE_EXPLAIN']); + $left_piece2 = explode('phpBB', $left_piece1[0]); + $phpbbversion = strrchr($left_piece2[1], ' '); + switch (true) + { + case (preg_match('/3.0/i', $phpbbversion)): + $backend = 'olympus'; + break; + case (preg_match('/3.1/i', $phpbbversion)): + $backend = 'ascraeus'; + break; + case (preg_match('/3.2/i', $phpbbversion)): + $backend = 'rhea'; + break; + case (preg_match('/3.3/i', $phpbbversion)): + $backend = 'proteus'; + break; + case (preg_match('/4./i', $phpbbversion)): + $backend = 'phpbb4'; + break; + } + } // Check the prefix length to ensure that index names are not too long and does not contain invalid characters switch ($backend) { @@ -1071,7 +1099,8 @@ function get_phpbb_info($config, $backend = 'phpbb3') break; case 'ascraeus': - case 'rhea': + case 'rhea': + case 'proteus': $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/'; $dbms = get_keys_sufix($dbms); $acm_type = get_keys_sufix($acm_type); @@ -1089,31 +1118,29 @@ function get_phpbb_info($config, $backend = 'phpbb3') 'dbuser' => $dbuser, 'dbpasswd' => $dbpasswd, 'table_prefix' => $table_prefix, - 'acm_type' => $acm_type ? $acm_type : '', + 'backend' => $backend, + 'version' => $phpbbversion, + 'acm_type' => $acm_type ? $acm_type : '', 'status' => defined('PHPBB_INSTALLED') ? true : false, ); } function get_smf_info($settings) { - if ((@include $settings) === false) { install_die(GENERAL_ERROR, 'Configuration file ' . $settings . ' couldn\'t be opened.'); - } - + } // If we are on PHP < 5.0.0 we need to force include or we get a blank page if (version_compare(PHP_VERSION, '5.0.0', '<')) { $db_type = str_replace('mysqli', 'mysql4', $db_type); //this version of php does not have mysqli extension and my crash the installer if finds a forum using this } - // If the UTF-8 setting was enabled, add it to the table definitions. if ($db_character_set == 'utf8') { $db_type = str_replace('mysql', 'mysql4', $db_type); } - return array( 'dbms' => $db_type, // 'mysql' 'dbhost' => $db_server, // 'localhost'; @@ -1202,14 +1229,14 @@ function get_phpbb_url($table_prefix, $portal_backend = 'internal') $sql = 'SELECT config_name, config_value FROM ' . $table_prefix . 'config' . $were_sql; - if ( !($result = $db->sql_query($sql)) ) + if (!($result = $db->sql_query($sql))) { if (!function_exists('mx_message_die')) { global $db; - + $sql = "SELECT * FROM ".$table_prefix."config"; - if( !($result = $db->sql_query($sql)) ) + if(!($result = $db->sql_query($sql))) { print("Couldnt query config information, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); return false; @@ -1220,8 +1247,7 @@ function get_phpbb_url($table_prefix, $portal_backend = 'internal') mx_message_die( GENERAL_ERROR, 'Couldnt query config information', '', __LINE__, __FILE__, $sql ); } } - - while ( $row = $db->sql_fetchrow($result) ) + while ($row = $db->sql_fetchrow($result)) { $board_config[$row['config_name']] = $row['config_value']; } diff --git a/install/language/lang_swedish/lang_admin.php b/install/language/lang_swedish/lang_admin.php new file mode 100644 index 00000000..4aeeb7c4 --- /dev/null +++ b/install/language/lang_swedish/lang_admin.php @@ -0,0 +1,103 @@ + $lang['message'] = 'text'; +// +// Specify your language character encoding... [optional] +// +//setlocale(LC_ALL, 'en'); + +$lang['USER_LANG'] = 'sv'; +$lang['ENCODING'] = 'UTF-8'; +$lang['DIRECTION'] = 'ltr'; +$lang['LEFT'] = 'left'; +$lang['RIGHT'] = 'right'; +$lang['DATE_FORMAT'] = 'd/M/Y'; // This should be changed to the default date format for your language, php date() format + + +// +// Install Process +// +$lang['Portal_paths'] = "Sökvägar"; +$lang['ReadOnly'] = " (skrivskyddade)"; +$lang['Welcome_install'] = "Välkommen till mxBB Portalens installationsguide"; +$lang['Install_Instruction'] = "Tack för att du valde mxBB Portalen. För att fortsätta denna installation vänligen fyll i detaljerna som efterfrĺgas nedan."; +$lang['Install_Instruction_mxBB'] = "Ditt adminkonto kommer skapas: användarnamn (admin), lösenord (admin). Ändra lösenordet snarast!"; +$lang['Install_Instruction_phpBB'] = "Notera, även om du väljer att använda mxBB med phpBB, sĺ kommer inte phpBB databasen att pĺverkas av denna installation."; +$lang['Upgrade_Instruction'] = "mxBB-Portal är redan installerad. Vänligen, gör en backup av din databas nu!

    The next step will modify the structure of your database. If for whatever reason this upgrade procedure fails, there would be no other way to return to your current state. Please, make backups of your database BEFORE proceeding !

    Once done, click the button below to start the upgrade procedure."; +$lang['Install_moreinfo'] = '%sRelease Notes%s | %sOnline Manual%s | %sOnline KB%s | %sSupport Forums%s | %sTerms Of Use%s'; +$lang['Install_settings'] = "Installationinställningar"; +$lang['Choose_lang_explain'] = "Välj vilket sprĺk du vill använda under installationen."; +$lang['Choose_lang'] = "Välj sprĺk"; +$lang['Phpbb_only'] = '[phpBBX]'; +$lang['Mxbb_only'] = '[Internal]'; +$lang['Language'] = "Sprĺk"; +$lang['Session_backend'] = 'Användare och sessioner'; +$lang['Session_backend_explain'] = 'mxBB-IWizard (installationsguiden) har upptäckt att phpBB är installerat pĺ servern. Välj här om du vill använda mxBB med phpBB användare och sessioner. Om du är osäker (eller om du vill installera mxBB utan phpBB), välj \'Internal\' istället.
    Du kan ändra denna inställning senare i administrationspanelen'; +$lang['Phpbb_path'] = "Phpbb-relativ sökväg"; +$lang['Phpbb_path_explain'] = "Phpbb-relativ sökväg, t ex. /phpbb2/ eller ../phpbb2/
    Notera snesträcken '/', de är viktiga"; +$lang['Phpbb_url'] = "Full PHPBB URL"; +$lang['Phpbb_url_explain'] = "Full PHPBB URL, t ex
    http://www.mydomain.com/phpbb2/"; +$lang['Portal_url'] = "Full Portal URL"; +$lang['Portal_url_explain'] = "Full Portal URL, t ex
    http://www.mydomain.com/"; +$lang['Database_settings'] = "Databasinställningar"; +$lang['dbms'] = "Databastyp"; +$lang['DB_Host'] = "Databas Server Hostname/DSN"; +$lang['DB_Name'] = "Databasnamn"; +$lang['DB_Username'] = "Databasanvändarnamn"; +$lang['DB_Password'] = "Databaslösenord"; +$lang['Table_Prefix'] = "PhpBB Prefix (t ex phpbb_)"; +$lang['MX_Table_Prefix'] = "mxBB Portal Prefix (t ex mx_)"; +$lang['Start_Install'] = "Starta mxBB installation"; +$lang['Start_Upgrade'] = "Yes, I already did a backup and wish to upgrade my mxBB-Portal now."; +$lang['Portal_intalled'] = "mxBB-Portalen är installerad!"; +$lang['Portal_upgraded'] = "mxBB-Portalen är uppgraderad!"; +$lang['Unwriteable_config'] = "Din konfigfil (config.php) är oskrivbar för tillfället.
    En kopia av konfigfilen kommer laddas ner till dig när du klickar pĺ knappen nedan.
    Du ska ladda upp denna filen till samma mapp som mxBB portalen.
    När detta är gjort ska du lägga till db tabellerna manuellt genom att köra mx_db_upgrade.php skriptet. Sedan behöver du lägga till den korrekta sökvägen till db table mxBB Portal genom att använda ett valfritt db-verktyg.
    Sedan, loggar du in med administratörnamn och lösenord för ditt portal/forum.
    Tack för att du har valt mxBB Portal."; +$lang['Send_file'] = "Skicka bara filen till mig och jag ftp:ar den manuellt"; +$lang['phpBB_nfnd_retry'] = "Tyvärr, lyckades inte lokalisera din phpBB-installation. Please, press the %sBACK%s button of your browser and retry."; +$lang['MissingVariables'] = 'Du mĺste fylla i alla fälten. Please press the %sBACK%s button of your browser and retry.'; +$lang['Installation_error'] = "Ett fel uppstod under installationen"; +$lang['Debug_Information'] = "DEBUG INFORMATION"; +$lang['Install_phpbb_not_found'] = "Tyvärr hittades ingen phpBB installation pĺ denna server.
    Vänligen, se till att phpBB är installerat INNAN ni försöker installera mxBB.
    \n
    \n"; +$lang['Install_phpbb_db_failed'] = "Tyvärr lyckades vi inte fĺ kontakt med phpBB databasen.
    Vänligen, kontrollera att phpBB är korrekt installerard (och fungerar) INNAN ni försöker installera mxBB.
    \n
    \n"; +$lang['Install_phpbb_unsupported'] = "phpBB installationen pĺ denna server stöds inte av mxBB.
    Vänligen, läs installationskraven.
    \n
    \n"; +$lang['Install_noscript_warning'] = "Denna installation kräver en webbläsare med javascriptstöd. Installationen kanske inte fungerar i din webbläsare."; +$lang['Upgrade_are_you_sure'] = "Denna uppgradering kommer att ändra i din databas. Vill du fortsätta?"; +$lang['Writing_config'] = "Skriver config.php filen"; +$lang['Processing_schema'] = "Behandlar SQL informationen '%s'"; +$lang['Portal_intalling'] = "Installera mxBB-Portalen, version %s"; +$lang['Portal_upgrading'] = "Uppgraderar mxBB-Portalen, version %s"; +$lang['Install_warning'] = "Det uppstod 1 varning under uppdateringen av databsen"; +$lang['Install_warnings'] = "Det uppstod %d varningar under uppdateringen av databsen"; +$lang['Subscribe_mxBB_News_now'] = "We recommend that you subscribe to the %smxBB-News Mailing List%s to receive information about important news and release announcements.
     
    %sSubscribe to mxBB-News, now!%s"; +$lang['Portal_install_done'][0] = "Sĺ här lĺngt är installationen klar."; +$lang['Portal_install_done'][1] = "Vänligen, ta bort mapparna /install och /contrib innan du fortsätter!!!"; +$lang['Portal_install_done'][2] = "Glöm inte att göra säkerhetskopior sĺ ofta som möjligt ;-)"; +$lang['Portal_install_done'][3] = "Tryck pĺ knappen nedan och ange ditt administratörsnamn och lösenord för att logga in pĺ systemet."; +$lang['Portal_install_done'][4] = "Uppgradera alla moduler (en efter en) i portaladministrationen - hantering!"; +$lang['Portal_install_done'][5] = "Kontrollera portalens inställningar och gör eventuella ändringar."; +$lang['Go_to_admincp'] = "Uppgradera alla moduler i portaladministrationen - hantering"; +$lang['Thanks_for_choosing'] = "Tack för att du valde mxBB-Portal."; +$lang['Critical_Error'] = "CRITICAL ERROR"; +$lang['Error_loading_config'] = "Tyvärr misslyckades systemet att hitta mxBB-Portal config.php"; +$lang['Error_database_down'] = "Misslyckades att ansluta till databasen."; + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/install/mx_install.php b/install/mx_install.php index 1eced831..041d0de0 100644 --- a/install/mx_install.php +++ b/install/mx_install.php @@ -84,6 +84,11 @@ // ================================================================================ // The following code is based on common.php from phpBB // ================================================================================ +//Temp fix for timezone by orynider +if (@function_exists('date_default_timezone_set') && @function_exists('date_default_timezone_get')) +{ + @date_default_timezone_set(@date_default_timezone_get()); +} /* * Remove variables created by register_globals from the global scope * Thanks to Matt Kavanagh @@ -847,30 +852,31 @@ function deregister_globals() $tplEx = 'tpl'; $backendtype = 'mxbb'; $config_settings = 'config'; - break; + break; + case 'smf2': + $tplEx = 'php'; + $backendtype = 'smf'; + $config_settings = 'Settings'; + break; + case 'mybb': + $tplEx = 'php'; + $backendtype = 'mybb'; + $config_settings = 'inc/config'; + break; case 'phpbb2': $tplEx = 'tpl'; $backendtype = 'phpbb'; $config_settings = 'config'; - break; + break; case 'phpbb3': case 'olympus': case 'ascraeus': case 'rhea': + case 'proteus': $tplEx = 'html'; $backendtype = 'phpbb'; $config_settings = 'config'; - break; - case 'smf2': - $tplEx = 'php'; - $backendtype = 'smf'; - $config_settings = 'Settings'; - break; - case 'mybb': - $tplEx = 'php'; - $backendtype = 'mybb'; - $config_settings = 'inc/config'; - break; + break; } if ($mx_request_vars->is_post('backend')) @@ -883,16 +889,16 @@ function deregister_globals() { case 'mxbb': $backend_info = get_mxbb_info($mx_root_path . $backend_path . "$config_settings.$phpEx"); - break; + break; case 'phpbb': $backend_info = get_phpbb_info($mx_root_path . $backend_path . "config.$phpEx"); - break; + break; case 'smf2': $backend_info = get_smf_info($mx_root_path . $backend_path . "Settings.$phpEx"); - break; + break; case 'mybb': $backend_info = array_merge(get_mybb_info($mx_root_path . $backend_path . "inc/config.$phpEx"), get_mybb_settings($mx_root_path . $backend_path . "inc/settings.$phpEx")); - break; + break; } if( !isset($backend_info['dbms']) || $backend_info['dbms'] != $dbms || $backend_info['dbhost'] != $dbhost || $backend_info['dbname'] != $dbname || $backend_info['dbuser'] != $dbuser || $backend_info['dbpasswd'] != $dbpasswd || $backend_info['table_prefix'] != $table_prefix ) @@ -1164,7 +1170,8 @@ function deregister_globals() case 'phpbb3': case 'olympus': case 'ascraeus': - case 'rhea': + case 'rhea': + case 'proteus': $sql = array(); $sql[] = "INSERT INTO " . $mx_table_prefix . "block VALUES('6', 'Poll', 'This is a Demo Block', '14', '0', '5', '0', '0', '0', '0', '0', '1', '1', '0', '1125841942', '2')"; @@ -1446,13 +1453,15 @@ function deregister_globals() case 'phpbb3': case 'olympus': - case 'ascraeus': + case 'ascraeus': + case 'rhea': + case 'proteus': $sql[] = "INSERT INTO " . $mx_table_prefix . "module VALUES('30', 'phpBB3 Blocks', 'modules/mx_phpbb3blocks/', 'MXP Portal phpBB3 blocks', '', 'MX-Publisher Core Module', 'Original MXP phpBB3 Blocks module by The MXP Development Team')"; $message .= mx_install_cmd_sql($sql) . '
    '; break; - case 'rhea': - $sql[] = "INSERT INTO " . $mx_table_prefix . "module VALUES('30', 'phpBB3 Blocks', 'modules/mx_phpbb4blocks/', 'MXP Portal phpBB4 blocks', '', 'MX-Publisher Core Module', 'Original MXP phpBB4 Blocks module by The MXP Development Team')"; + case 'phpbb4': + $sql[] = "INSERT INTO " . $mx_table_prefix . "module VALUES('30', 'phpBB4 Blocks', 'modules/mx_phpbb4blocks/', 'MXP Portal phpBB4 blocks', '', 'MX-Publisher Core Module', 'Original MXP phpBB4 Blocks module by The MXP Development Team')"; $message .= mx_install_cmd_sql($sql) . '
    '; break; @@ -1462,7 +1471,7 @@ function deregister_globals() break; case 'mybb': - $sql[] = "INSERT INTO " . $mx_table_prefix . "module VALUES('30', 'MyBB Blocks', 'modules/mx_smf2blocks/', 'MXP Portal MyBB blocks', '', 'MX-Publisher Core Module', 'Original MXP MyBB Blocks module by The MXP Development Team')"; + $sql[] = "INSERT INTO " . $mx_table_prefix . "module VALUES('30', 'MyBB Blocks', 'modules/mx_mybbblocks/', 'MXP Portal MyBB blocks', '', 'MX-Publisher Core Module', 'Original MXP MyBB Blocks module by The MXP Development Team')"; $message .= mx_install_cmd_sql($sql) . '
    '; break; } @@ -1803,16 +1812,18 @@ function deregister_globals() // Get the version related information if this forum is phpBB if (file_exists($phpbb_root_path . "modcp.$phpEx")) // phpBB2 { - $phpbbversion = $portal_backend = 'phpbb2'; + $portal_backend = 'phpbb2'; + $phpbbversion = '2.0.24'; } elseif (file_exists($phpbb_root_path . "style.$phpEx")) // phpBB3 Olympus { - $phpbbversion = $portal_backend = 'phpbb3'; - //$phpbbversion = $portal_backend = 'olympus'; + $portal_backend = 'olympus'; //'phpbb3' + $phpbbversion = '3.0.14'; } elseif (file_exists($phpbb_root_path . "report.$phpEx")) // phpBB3 Ascraeus { - $phpbbversion = $portal_backend = 'ascraeus'; + $portal_backend = 'ascraeus'; + $phpbbversion = '3.1.12'; } /* elseif (file_exists($phpbb_root_path . "index.$phpEx")) // phpBB4 Rhea @@ -1823,15 +1834,28 @@ function deregister_globals() if (!file_exists($phpbb_root_path . "config.$phpEx") && !file_exists($phpbb_root_path . "Settings.$phpEx")) { echo("phpBB File: " . $phpbb_root_path . "config.$phpEx" . " not found."); - $phpbbversion = 'phpbb'; + $phpbbversion = $mx_portal_version; $portal_backend = 'internal'; } // Get the DB related information if this forum is phpBB if (file_exists($phpbb_root_path . "config.$phpEx")) { - $phpbb_info = $backend_info = get_phpbb_info($phpbb_root_path . "config.$phpEx", $phpbbversion); + $phpbb_info = $backend_info = get_phpbb_info($phpbb_root_path, $portal_backend, $phpbbversion); + if (file_exists($phpbb_root_path . "report.$phpEx")) // phpBB3.1+ + { + $portal_backend = !empty($phpbb_info['backend']) ? $phpbb_info['backend'] : $portal_backend; + $phpbbversion = !empty($phpbb_info['version']) ? $phpbb_info['version'] : $phpbbversion; + } } - + //Not phpBB + if (file_exists($phpbb_root_path . "Settings.$phpEx")) + { + echo("File: " . $phpbb_root_path . "Settings.$phpEx" . " found."); + //Redenifing phpBb compatible variables + //$phpbb_info = $backend_info = get_phpbb_info($phpbb_root_path, $phpbbversion); + //$phpbbversion = 'phpbb'; + //$portal_backend = 'internal'; + } // Save forums information for debuging purposes $debuginfo[] = array('phpBB Info'.($phpbb_files_cnt > 1 ? " #$i" : ''), 'base:'.$phpbb_base_path. @@ -1869,7 +1893,7 @@ function deregister_globals() 'BACKEND_PATH' => $phpbb_relative, 'PORTAL_URL' => $portal_url, 'BACKEND_URL' => $phpbb_url, - 'PORTAL_BACKEND' => $phpbbversion, + 'PORTAL_BACKEND' => $portal_backend, 'DBMS' => $default_dbms, 'DB_HOST' => $phpbb_info['dbhost'] ? $phpbb_info['dbhost'] : 'localhost', 'DB_NAME' => $phpbb_info['dbname'], @@ -1993,10 +2017,10 @@ function deregister_globals() $mybb_found = true; } /* */ -//$select_database_type .= dbms_select($default_dbms); $select_backend_path .= ''; $select_backend_path .= '
    '; $select_database_type .= ''; +$select_database_type .= dbms_select($default_dbms); $select_database_type .= '
    '; /*-------------------- * DEBUG ONLY ;-) diff --git a/install/schemas/mysql_41_schema_install.sql b/install/schemas/mysql_41_schema_install.sql index 7940052c..44672ca9 100644 --- a/install/schemas/mysql_41_schema_install.sql +++ b/install/schemas/mysql_41_schema_install.sql @@ -97,7 +97,7 @@ INSERT INTO `mx_table_block_system_parameter` VALUES("9", "54", "TRUE", "", "0") INSERT INTO `mx_table_block_system_parameter` VALUES("9", "57", "TRUE", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("9", "55", "b,i,u,img", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("10", "16", "
    MonBusy with this and that
    TueNot so busy
    WenVery busy
    ThuLazy
    FriResting...

    This basic table structure is a nice demonstration in which the wysiwyg editor comes in handy!

    Try it out!
    (to edit use the top right edit button)

    Note: The wysiwyg editor is a 3rd party product (tinyMCE), and must be installed separately. Visit Moxiecode Systems AB to get the software and place the \'tinymce\' folder in the root/modules/mx_shared directory.

    ", "0", "0"); -INSERT INTO `mx_table_block_system_parameter` VALUES("32", "63", "Vertical", "", "0"); +INSERT INTO `mx_table_block_system_parameter` VALUES("32", "63", "Overall_navigation", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("27", "70", "x_iframe", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("27", "71", "/docs", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("27", "72", "325", "", "0"); diff --git a/install/schemas/mysql_61_schema_install.sql b/install/schemas/mysql_61_schema_install.sql index afdc9c11..6cfb8440 100644 --- a/install/schemas/mysql_61_schema_install.sql +++ b/install/schemas/mysql_61_schema_install.sql @@ -97,7 +97,7 @@ INSERT INTO `mx_table_block_system_parameter` VALUES("9", "54", "TRUE", "", "0") INSERT INTO `mx_table_block_system_parameter` VALUES("9", "57", "TRUE", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("9", "55", "b,i,u,img", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("10", "16", "
    MonBusy with this and that
    TueNot so busy
    WenVery busy
    ThuLazy
    FriResting...

    This basic table structure is a nice demonstration in which the wysiwyg editor comes in handy!

    Try it out!
    (to edit use the top right edit button)

    Note: The wysiwyg editor is a 3rd party product (tinyMCE), and must be installed separately. Visit Moxiecode Systems AB to get the software and place the \'tinymce\' folder in the root/modules/mx_shared directory.

    ", "0", "0"); -INSERT INTO `mx_table_block_system_parameter` VALUES("32", "63", "Vertical", "", "0"); +INSERT INTO `mx_table_block_system_parameter` VALUES("32", "63", "Overall_navigation", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("27", "70", "x_iframe", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("27", "71", "/docs", "", "0"); INSERT INTO `mx_table_block_system_parameter` VALUES("27", "72", "325", "", "0"); diff --git a/install/schemas/mysql_61_schema_install_data.sql b/install/schemas/mysql_61_schema_install_data.sql new file mode 100644 index 00000000..b5703a8b --- /dev/null +++ b/install/schemas/mysql_61_schema_install_data.sql @@ -0,0 +1,761 @@ +# MySQL-Front Dump 2.4 +# +# Host: localhost Database: MX-Publisher +#-------------------------------------------------------- + + +# +# Table structure for table 'mx_block' +# +DROP TABLE IF EXISTS `mx_block`; +CREATE TABLE `mx_block` ( + `block_id` smallint(5) unsigned NOT NULL auto_increment, + `block_title` varchar(150), + `block_desc` text, + `function_id` smallint(5) unsigned, + `auth_view` tinyint(2) NOT NULL DEFAULT '0', + `auth_edit` tinyint(2) NOT NULL DEFAULT '0', + `auth_delete` tinyint(2) NOT NULL DEFAULT '0', + `auth_view_group` varchar(255) NOT NULL DEFAULT '0', + `auth_edit_group` varchar(255) NOT NULL DEFAULT '0', + `auth_delete_group` varchar(255) NOT NULL DEFAULT '0', + `auth_moderator_group` varchar(255) NOT NULL DEFAULT '0', + `show_title` tinyint(2) unsigned NOT NULL DEFAULT '1', + `show_block` tinyint(2) unsigned NOT NULL DEFAULT '1', + `show_stats` tinyint(2) unsigned NOT NULL DEFAULT '0', + `block_time` varchar(255) NOT NULL DEFAULT '', + `block_editor_id` mediumint(8) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`block_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_block' +# +INSERT INTO `mx_block` VALUES("1", "Demo Page 3", "Demo", "24", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202765204", "2"); +INSERT INTO `mx_block` VALUES("2", "Split Block", "This is a Demo Block", "11", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("3", "Site Log", "This is a Demo Block", "10", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("4", "Demo page", "SubBlocks", "3", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202761342", "2"); +INSERT INTO `mx_block` VALUES("7", "Language Select", "This is a Demo Block", "6", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("8", "Navigation Menu", "This is a vertical Navigation Menu Demo Block", "51", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("9", "Demo Page 5 - Custom", "Demo", "22", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202761540", "2"); +INSERT INTO `mx_block` VALUES("10", "Demo Page 4 - wysiwyg", "Demo", "23", "0", "5", "0", "0", "0", "0", "0", "1", "1", "1", "1202761496", "2"); +INSERT INTO `mx_block` VALUES("13", "Login", "This is a Demo Block", "7", "9", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("14", "Theme Select", "This is a Demo Block", "12", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("15", "Site Search", "Site Search", "15", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("19", "Who is Online?", "This is a Demo Block", "13", "5", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202763740", "2"); +INSERT INTO `mx_block` VALUES("21", "Google", "This is a Demo Block", "4", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("32", "Demo page", "", "51", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202761705", "2"); +INSERT INTO `mx_block` VALUES("27", "IncludeX", "This is a Demo Block", "5", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); +INSERT INTO `mx_block` VALUES("28", "Welcome", "This is the welcome block", "24", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202766730", "2"); +INSERT INTO `mx_block` VALUES("29", "Demo Page 1", "Demo", "24", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202765153", "2"); +INSERT INTO `mx_block` VALUES("30", "Demo Page 2", "Demo", "24", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202765190", "2"); +INSERT INTO `mx_block` VALUES("31", "Page Navigation", "This is a page navigation menu", "52", "0", "5", "0", "0", "0", "0", "0", "1", "1", "0", "1202598000", "2"); + + + +# +# Table structure for table 'mx_block_system_parameter' +# +DROP TABLE IF EXISTS `mx_block_system_parameter`; +CREATE TABLE `mx_block_system_parameter` ( + `block_id` smallint(5) unsigned NOT NULL default '0', + `parameter_id` smallint(5) unsigned NOT NULL default '0', + `parameter_value` mediumtext, + `parameter_opt` text, + `sub_id` int(255) unsigned NOT NULL default '0', + PRIMARY KEY (`block_id`,`parameter_id`,`sub_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_block_system_parameter' +# +INSERT INTO `mx_block_system_parameter` VALUES("1", "15", "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas malesuada semper ante. Aliquam orci ipsum, aliquam sodales, dictum id, tincidunt non, elit. Proin tincidunt felis id urna. Praesent in erat. Nunc at arcu et nisi tempor interdum. Quisque enim. Nunc et lorem. Ut tortor. Suspendisse potenti. Nam egestas orci at mi. Sed pulvinar est sit amet ante. Mauris pharetra mollis risus. Donec accumsan fermentum leo.\r\n\r\nSuspendisse potenti. Quisque tincidunt, mi viverra semper iaculis, nisl metus vehicula libero, eget tincidunt est massa ac purus. Aenean a justo. Sed ultrices, mi vitae hendrerit suscipit, mauris velit rutrum lectus, eget pharetra metus ipsum in purus. Sed placerat ornare nulla. Nullam vel leo non nulla fermentum varius. Integer nec pede a velit tempor aliquam. Sed eu neque in eros scelerisque eleifend. Vivamus id urna. Pellentesque nec nulla. Fusce et sapien. Nulla venenatis imperdiet ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel nunc eu leo malesuada congue. Praesent faucibus. Vivamus quis sapien in dolor gravida vehicula.", "46dd886e9d", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("2", "60", "16,13,9", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("2", "61", "33%, 33%,*", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("2", "62", "4", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("3", "91", "3 months", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("3", "92", "5", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("4", "80", "29", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("8", "66", "", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("8", "93", "", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("8", "63", "Vertical", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("32", "93", "", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("32", "66", "", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("31", "100", "", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("31", "101", "", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("31", "102", "Overall_navigation", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "50", "This is basically a [i:021a122fa6]standard[/i:021a122fa6] TextBlock, but you may configure settings for bbcodes, html and smilies for [i:021a122fa6]this[/i:021a122fa6] block.\r\n\r\nTry it out! \r\n(to edit use the top right edit button)", "021a122fa6", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "51", "none", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "52", "TRUE", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "53", "TRUE", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "56", "TRUE", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "54", "TRUE", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "57", "TRUE", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("9", "55", "b,i,u,img", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("10", "16", "
    MonBusy with this and that
    TueNot so busy
    WenVery busy
    ThuLazy
    FriResting...

    This basic table structure is a nice demonstration in which the wysiwyg editor comes in handy!

    Try it out!
    (to edit use the top right edit button)

    Note: The wysiwyg editor is a 3rd party product (tinyMCE), and must be installed separately. Visit Moxiecode Systems AB to get the software and place the \'tinymce\' folder in the root/modules/mx_shared directory.

    ", "0", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("32", "63", "Vertical", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("27", "70", "x_iframe", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("27", "71", "/docs", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("27", "72", "325", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("27", "73", "", "", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("28", "15", "[b:787bdbfe25]MX-Publisher[/b:787bdbfe25] is a fully modular CMS, featuring dynamic pages, blocks, styles, and more (eg modules) by means of a powerful yet flexible AdminCP. It works standalone or with phpBB2/phpBB3 by using integrated features and functions. MX-Publisher currently supports the mySQL and postgreSQL databases. MX-Publisher is the classical phpBB portal add-on, improved and enhanced for every phpBB version released since 2001.\r\n\r\n[i:787bdbfe25]Welcome, and thanks for using MX-Publisher![/i:787bdbfe25]", "787bdbfe25", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("29", "15", "On this page we [i:6d09b58ee2]demonstrate[/i:6d09b58ee2] how subpages are easily created, using the CORE dynamic block and the user navigation block. Create new textblocks in the adminCP, and add them in the navigation menu. Have fun!\r\n\r\nLorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas malesuada semper ante. Aliquam orci ipsum, aliquam sodales, dictum id, tincidunt non, elit. Proin tincidunt felis id urna. Praesent in erat. Nunc at arcu et nisi tempor interdum. Quisque enim. Nunc et lorem. Ut tortor. Suspendisse potenti. Nam egestas orci at mi. Sed pulvinar est sit amet ante. Mauris pharetra mollis risus. Donec accumsan fermentum leo.", "6d09b58ee2", "0"); +INSERT INTO `mx_block_system_parameter` VALUES("30", "15", "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas malesuada semper ante. Aliquam orci ipsum, aliquam sodales, dictum id, tincidunt non, elit. Proin tincidunt felis id urna. Praesent in erat. Nunc at arcu et nisi tempor interdum. Quisque enim. Nunc et lorem. Ut tortor. Suspendisse potenti. Nam egestas orci at mi. Sed pulvinar est sit amet ante. Mauris pharetra mollis risus. Donec accumsan fermentum leo.\r\n\r\nSuspendisse potenti. Quisque tincidunt, mi viverra semper iaculis, nisl metus vehicula libero, eget tincidunt est massa ac purus. Aenean a justo. Sed ultrices, mi vitae hendrerit suscipit, mauris velit rutrum lectus, eget pharetra metus ipsum in purus. Sed placerat ornare nulla. Nullam vel leo non nulla fermentum varius. Integer nec pede a velit tempor aliquam. Sed eu neque in eros scelerisque eleifend. Vivamus id urna. Pellentesque nec nulla. Fusce et sapien. Nulla venenatis imperdiet ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel nunc eu leo malesuada congue. Praesent faucibus. Vivamus quis sapien in dolor gravida vehicula.", "61fc3afdd8", "0"); + + + +# +# Table structure for table 'mx_column' +# +DROP TABLE IF EXISTS `mx_column`; +CREATE TABLE `mx_column` ( + `column_id` smallint(5) unsigned NOT NULL auto_increment, + `column_title` varchar(100), + `column_order` smallint(5) unsigned NOT NULL DEFAULT '0', + `bbcode_uid` varchar(10), + `column_size` varchar(5) DEFAULT '100%', + `page_id` smallint(5) NOT NULL DEFAULT '0', + PRIMARY KEY (`column_id`), + KEY cat_order (`column_order`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_column' +# +INSERT INTO `mx_column` VALUES("2", "Main", "35", NULL, "100%", "1"); +INSERT INTO `mx_column` VALUES("6", "Main", "50", NULL, "100%", "3"); +INSERT INTO `mx_column` VALUES("5", "Left", "40", NULL, "200", "3"); +INSERT INTO `mx_column` VALUES("1", "Left", "25", NULL, "200", "1"); +INSERT INTO `mx_column` VALUES("10", "Main", "50", NULL, "100%", "5"); +INSERT INTO `mx_column` VALUES("9", "Left", "40", NULL, "200", "5"); + + + +# +# Table structure for table 'mx_column_block' +# +DROP TABLE IF EXISTS `mx_column_block`; +CREATE TABLE `mx_column_block` ( + `column_id` smallint(5) NOT NULL DEFAULT '0', + `block_id` smallint(5) NOT NULL DEFAULT '0', + `block_order` smallint(5) NOT NULL DEFAULT '0', + PRIMARY KEY (`column_id`,`block_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_column_block' +# +INSERT INTO `mx_column_block` VALUES("2", "19", "20"); +INSERT INTO `mx_column_block` VALUES("2", "28", "10"); +INSERT INTO `mx_column_block` VALUES("1", "8", "10"); +INSERT INTO `mx_column_block` VALUES("9", "21", "10"); +INSERT INTO `mx_column_block` VALUES("6", "4", "20"); +INSERT INTO `mx_column_block` VALUES("5", "32", "10"); +INSERT INTO `mx_column_block` VALUES("10", "15", "10"); + + + +# +# Table structure for table 'mx_column_templates' +# +DROP TABLE IF EXISTS `mx_column_templates`; +CREATE TABLE `mx_column_templates` ( + `column_template_id` smallint(5) unsigned NOT NULL auto_increment, + `column_title` varchar(100) DEFAULT '0', + `column_order` smallint(5) unsigned NOT NULL DEFAULT '0', + `column_size` varchar(5) DEFAULT '0', + `page_template_id` smallint(5) NOT NULL DEFAULT '0', + PRIMARY KEY (`column_template_id`), + KEY cat_order (`column_order`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_column_templates' +# +INSERT INTO `mx_column_templates` VALUES("1", "Left", "40", "200", "2"); +INSERT INTO `mx_column_templates` VALUES("2", "Main", "50", "100%", "2"); +INSERT INTO `mx_column_templates` VALUES("3", "Main", "10", "100%", "3"); +INSERT INTO `mx_column_templates` VALUES("4", "Right", "20", "200", "3"); +INSERT INTO `mx_column_templates` VALUES("5", "Left", "10", "180", "4"); +INSERT INTO `mx_column_templates` VALUES("6", "Middle", "20", "100%", "4"); +INSERT INTO `mx_column_templates` VALUES("7", "Right", "30", "180", "4"); + + + +# +# Table structure for table 'mx_function' +# +DROP TABLE IF EXISTS `mx_function`; +CREATE TABLE `mx_function` ( + `function_id` smallint(5) unsigned NOT NULL auto_increment, + `module_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `function_name` varchar(150), + `function_desc` text, + `function_file` varchar(255), + `function_admin` varchar(255), + PRIMARY KEY (`function_id`), + KEY module_id (`module_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_function' +# +INSERT INTO `mx_function` VALUES("51", "50", "User Navigation", "Advanced menus", "mx_menu_nav.php", ""); +INSERT INTO `mx_function` VALUES("52", "50", "Page Navigation", "Standard Page Menus", "mx_site_nav.php", ""); +INSERT INTO `mx_function` VALUES("6", "10", "Language Select", "Quick Language Select Block", "mx_language.php", ""); +INSERT INTO `mx_function` VALUES("7", "10", "Login", "Login Block", "mx_login.php", ""); +INSERT INTO `mx_function` VALUES("12", "10", "Style Select", "Quick Style Select Block", "mx_theme.php", ""); +INSERT INTO `mx_function` VALUES("4", "10", "Google Search", "Simple Google Search Block", "mx_google.php", ""); +INSERT INTO `mx_function` VALUES("13", "10", "Who is Online", "Who is Online Block", "mx_online.php", ""); +INSERT INTO `mx_function` VALUES("11", "10", "Split Block", "Split columns, put blocks side by side", "mx_multiple_blocks.php", ""); +INSERT INTO `mx_function` VALUES("24", "20", "TextBlock (phpBB)", "BBcodes, html and smilies - phpBB style", "mx_textblock_bbcode.php", ""); +INSERT INTO `mx_function` VALUES("23", "20", "TextBlock (HTML/WYSIWYG)", "User friendly textblocks", "mx_textblock_html.php", ""); +INSERT INTO `mx_function` VALUES("22", "20", "TextBlock (Customized)", "Textblock, featuring block defined settings", "mx_textblock_multi.php", ""); +INSERT INTO `mx_function` VALUES("5", "10", "IncludeX", "Include Whatever", "mx_includex.php", ""); +INSERT INTO `mx_function` VALUES("3", "10", "DynamicBlock", "SubBlocks on the same page", "mx_dynamic.php", ""); +INSERT INTO `mx_function` VALUES("10", "10", "Site Log", "Admin Site Log monitor", "mx_site_log.php", ""); +INSERT INTO `mx_function` VALUES("15", "10", "Site Search", "Textblock Search Block", "mx_search.php", ""); + + + +# +# Table structure for table 'mx_menu_categories' +# +DROP TABLE IF EXISTS `mx_menu_categories`; +CREATE TABLE `mx_menu_categories` ( + `block_id` smallint(5) unsigned NOT NULL default '1', + `cat_id` mediumint(8) unsigned NOT NULL auto_increment, + `cat_title` varchar(100), + `cat_order` mediumint(8) unsigned NOT NULL DEFAULT '0', + `bbcode_uid` varchar(10), + `cat_desc` text, + `cat_show` tinyint(1) unsigned NOT NULL DEFAULT '0', + `cat_url` smallint(5) unsigned DEFAULT '0', + `cat_target` tinyint(2) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`cat_id`), + KEY cat_order (`cat_order`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_menu_categories' +# +INSERT INTO `mx_menu_categories` VALUES("8", "1", "Resources", "20", "c1affc0aaa", "", "0", "0", "0"); +INSERT INTO `mx_menu_categories` VALUES("8", "3", "Home", "10", "eab7a16ce5", "", "1", "1", "0"); +INSERT INTO `mx_menu_categories` VALUES("32", "7", "Demo", "10", "", "", "1", "0", "0"); + + + +# +# Table structure for table 'mx_menu_nav' +# +DROP TABLE IF EXISTS `mx_menu_nav`; +CREATE TABLE `mx_menu_nav` ( + `menu_id` smallint(5) unsigned NOT NULL auto_increment, + `cat_id` mediumint(8) unsigned NOT NULL DEFAULT '0', + `menu_name` varchar(150), + `menu_desc` text, + `menu_links` varchar(255), + `auth_view` tinyint(2) NOT NULL DEFAULT '0', + `menu_order` smallint(5) unsigned DEFAULT '0', + `bbcode_uid` varchar(10), + `menu_icon` varchar(255), + `menu_alt_icon` varchar(255), + `menu_alt_icon_hot` varchar(255), + `function_id` smallint(5) unsigned DEFAULT '0', + `block_id` smallint(8) NOT NULL DEFAULT '0', + `page_id` smallint(5) unsigned DEFAULT '0', + `auth_view_group` smallint(5) NOT NULL DEFAULT '0', + `link_target` tinyint(2) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`menu_id`), + KEY cat_id (`cat_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_menu_nav' +# +INSERT INTO `mx_menu_nav` VALUES("5", "1", "phpBB Home", "", "http://www.phpbb.com", "0", "20", "a9ff189bf5", "icon_info.gif", "", "", "0", "0", "0", "0", "1"); +INSERT INTO `mx_menu_nav` VALUES("16", "7", "Page 1", "", "", "0", "10", "", "icon_home.gif", "", "", "0", "0", "3", "0", "0"); +INSERT INTO `mx_menu_nav` VALUES("4", "1", "MX-Publisher Home", "", "http://www.mx-publisher.com", "0", "10", "1f171544ea", "icon_info.gif", "", "", "0", "0", "0", "0", "1"); +INSERT INTO `mx_menu_nav` VALUES("6", "1", "Demo Page", "On this page we demonstrate a basic subpage setup with textblocks.", "", "0", "30", "", "icon_message.gif", "", "", "0", "0", "3", "0", "0"); +INSERT INTO `mx_menu_nav` VALUES("1", "3", "Welcome to MXP", "Back to home", "", "0", "10", "", "", "", "", "0", "0", "1", "0", "0"); +INSERT INTO `mx_menu_nav` VALUES("17", "7", "Page 2", "", "", "0", "20", "", "icon_dot.gif", "", "", "0", "30", "3", "0", "0"); +INSERT INTO `mx_menu_nav` VALUES("18", "7", "Page 3", "", "", "0", "30", "", "icon_dot.gif", "", "", "0", "1", "3", "0", "0"); +INSERT INTO `mx_menu_nav` VALUES("19", "7", "WYSIWYG", "", "", "0", "40", "", "icon_dot.gif", "", "", "0", "10", "3", "0", "0"); +INSERT INTO `mx_menu_nav` VALUES("20", "7", "CUSTOM", "", "", "0", "50", "", "icon_dot.gif", "", "", "0", "9", "3", "0", "0"); + + + +# +# Table structure for table 'mx_module' +# +DROP TABLE IF EXISTS `mx_module`; +CREATE TABLE `mx_module` ( + `module_id` smallint(5) unsigned NOT NULL auto_increment, + `module_name` varchar(150), + `module_path` varchar(255), + `module_desc` text, + `module_include_admin` char(1) DEFAULT '0', + `module_version` varchar(255), + `module_copy` text, + PRIMARY KEY (`module_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_module' +# +INSERT INTO `mx_module` VALUES("10", "Core Blocks", "modules/mx_coreblocks/", "MX-Publisher Core Blocks", "", "MX-Publisher Core Module", "Original mxBB Core Blocks module by The MX-Publisher Development Team"); +INSERT INTO `mx_module` VALUES("20", "Textblocks", "modules/mx_textblocks/", "MX-Publisher Textblocks", "", "MX-Publisher Core Module", "Original mxBB Textblocks module by Jon"); +INSERT INTO `mx_module` VALUES("40", "Users and Groups", "modules/mx_users/", "MX-Publisher Users and Groups", "1", "MX-Publisher Core Module", "Based on original phpBB Admin Tool MODs by Adam Alkins, Omar Ramadan & wGEric :: Adapted for MX-Publisher by Jon"); +INSERT INTO `mx_module` VALUES("50", "Navigation Menu", "modules/mx_navmenu/", "MX-Publisher Site Navigation", "", "MX-Publisher Core Module", "Original mxBB Navigation Menu module by Jon"); + + + +# +# Table structure for table 'mx_page' +# +DROP TABLE IF EXISTS `mx_page`; +CREATE TABLE `mx_page` ( + `page_id` smallint(5) NOT NULL auto_increment, + `page_name` varchar(255), + `page_desc` varchar(255), + `page_parent` int(50) DEFAULT '0', + `parents_data` mediumtext NOT NULL, + `page_order` smallint(5) DEFAULT '0', + `page_icon` varchar(255), + `page_alt_icon` varchar(255), + `menu_icon` varchar(255), + `menu_alt_icon` varchar(255), + `menu_alt_icon_hot` varchar(255), + `menu_active` tinyint(2) DEFAULT '1', + `auth_view` tinyint(2) NOT NULL DEFAULT '0', + `auth_view_group` varchar(255) NOT NULL DEFAULT '0', + `auth_moderator_group` varchar(255) NOT NULL DEFAULT '0', + `default_style` smallint(5) NOT NULL DEFAULT '-1', + `override_user_style` smallint(2) NOT NULL DEFAULT '-1', + `page_header` varchar(255) DEFAULT '', + `page_footer` varchar(255) DEFAULT '', + `page_main_layout` varchar(255) DEFAULT '', + `navigation_block` smallint(5) unsigned NOT NULL DEFAULT '0', + `ip_filter` varchar(255) NOT NULL DEFAULT '', + `phpbb_stats` tinyint(2) NOT NULL DEFAULT '-1', + PRIMARY KEY (`page_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_page' +# +INSERT INTO `mx_page` VALUES("1", "Home", "This is the startpage", "0", "", "10", "icon_home.gif", "", "none", "", "", "1", "0", "0", "0", "-1", "-1", "", "", "", "0", "a:1:{i:0;s:0:\"\";}", "-1"); +INSERT INTO `mx_page` VALUES("3", "Demo Page", "Block Demos", "0", "", "30", "icon_docs.gif", "", "", "", "", "1", "0", "0", "0", "-1", "-1", "", "", "", "0", "a:1:{i:0;s:0:\"\";}", "-1"); +INSERT INTO `mx_page` VALUES("5", "Site Search", "Site Search page", "0", "", "50", "icon_search.gif", "", "", "", "", "1", "0", "0", "0", "-1", "-1", "", "", "", "0", "a:1:{i:0;s:0:\"\";}", "-1"); + + + +# +# Table structure for table 'mx_page_templates' +# +DROP TABLE IF EXISTS `mx_page_templates`; +CREATE TABLE `mx_page_templates` ( + `page_template_id` smallint(3) unsigned NOT NULL auto_increment, + `template_name` varchar(255) NOT NULL default '', + PRIMARY KEY (`page_template_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_page_templates' +# +INSERT INTO `mx_page_templates` VALUES("1", "NONE"); +INSERT INTO `mx_page_templates` VALUES("2", "Two-Columns left"); +INSERT INTO `mx_page_templates` VALUES("3", "Two-Columns right"); +INSERT INTO `mx_page_templates` VALUES("4", "Three-Columns"); + + + +# +# Table structure for table 'mx_parameter' +# +DROP TABLE IF EXISTS `mx_parameter`; +CREATE TABLE `mx_parameter` ( + `parameter_id` smallint(5) unsigned NOT NULL auto_increment, + `function_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `parameter_name` varchar(150), + `parameter_type` varchar(30), + `parameter_default` varchar(150), + `parameter_function` varchar(255), + `parameter_auth` tinyint(2) NOT NULL DEFAULT '0', + `parameter_order` smallint(5) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`parameter_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Dumping data for table 'mx_parameter' +# +INSERT INTO `mx_parameter` VALUES("15", "24", "Text", "phpBBTextBlock", "Insert your text here", "", "0", "0"); +INSERT INTO `mx_parameter` VALUES("16", "23", "Html", "WysiwygTextBlock", "Entre your Html code here", "", "0", "0"); +INSERT INTO `mx_parameter` VALUES("50", "22", "Text", "CustomizedTextBlock", "Enter your block text here", "", "0", "0"); +INSERT INTO `mx_parameter` VALUES("51", "22", "text_style", "Text", "none", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("52", "22", "block_style", "Boolean", "TRUE", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("53", "22", "title_style", "Boolean", "TRUE", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("91", "10", "log_filter_date", "Menu_single_select", "1 month", "a:12:{i:0;s:8:\"no limit\";i:1;s:5:\"1 day\";i:2;s:6:\"2 days\";i:3;s:6:\"3 days\";i:4;s:6:\"1 week\";i:5;s:7:\"2 weeks\";i:6;s:7:\"3 weeks\";i:7;s:7:\"1 month\";i:8;s:8:\"2 months\";i:9;s:8:\"3 months\";i:10;s:8:\"6 months\";i:11;s:6:\"1 year\";}", "1", "0"); +INSERT INTO `mx_parameter` VALUES("60", "11", "block_ids", "Function", "1,2,3", "get_list_multiple( \"{parameter_id}[]\", BLOCK_TABLE, \'block_id\', \'block_title\', \"{parameter_value}\", TRUE, \'block_desc\')", "0", "0"); +INSERT INTO `mx_parameter` VALUES("61", "11", "block_sizes", "Text", "20%,30%,*", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("62", "11", "space_between", "Number", "4", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("80", "3", "default_block_id", "Function", "0", "get_list_formatted(\"block_list\",\"{parameter_value}\",\"{parameter_id}[]\")", "1", "0"); +INSERT INTO `mx_parameter` VALUES("70", "5", "x_mode", "Menu_single_select", "x_iframe", "a:6:{i:0;s:8:\"x_listen\";i:1;s:8:\"x_iframe\";i:2;s:10:\"x_textfile\";i:3;s:12:\"x_multimedia\";i:4;s:5:\"x_pic\";i:5;s:8:\"x_format\";}", "0", "0"); +INSERT INTO `mx_parameter` VALUES("71", "5", "x_1", "Text", "/docs", "", "0", "0"); +INSERT INTO `mx_parameter` VALUES("72", "5", "x_2", "Text", "325", "", "0", "0"); +INSERT INTO `mx_parameter` VALUES("73", "5", "x_3", "Text", "", "", "0", "0"); +INSERT INTO `mx_parameter` VALUES("66", "51", "Nav menu", "nav_menu", "", "", "0", "10"); +INSERT INTO `mx_parameter` VALUES("93", "51", "menu_custom_tpl", "Text", "", "", "1", "20"); +INSERT INTO `mx_parameter` VALUES("63", "51", "menu_display_mode", "Radio_single_select", "Vertical", "a:3:{i:0;s:8:\"Vertical\";i:1;s:10:\"Horizontal\";i:2;s:18:\"Overall_navigation\";}", "1", "30"); +INSERT INTO `mx_parameter` VALUES("100", "52", "Site menu", "site_menu", "", "", "0", "10"); +INSERT INTO `mx_parameter` VALUES("101", "52", "menu_custom_tpl", "Text", "", "", "1", "20"); +INSERT INTO `mx_parameter` VALUES("102", "52", "menu_display_mode", "Radio_single_select", "Overall_navigation", "a:3:{i:0;s:8:\"Vertical\";i:1;s:10:\"Horizontal\";i:2;s:18:\"Overall_navigation\";}", "1", "30"); +INSERT INTO `mx_parameter` VALUES("92", "10", "numOfEvents", "Number", "5", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("57", "22", "allow_smilies", "Boolean", "TRUE", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("54", "22", "allow_html", "Boolean", "TRUE", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("56", "22", "allow_bbcode", "Boolean", "TRUE", "", "1", "0"); +INSERT INTO `mx_parameter` VALUES("55", "22", "html_tags", "Text", "b,i,u", "", "1", "0"); + + + +# +# Table structure for table 'mx_portal' +# +DROP TABLE IF EXISTS `mx_portal`; +CREATE TABLE `mx_portal` ( + `portal_id` smallint(2) unsigned NOT NULL auto_increment, + `portal_name` varchar(255) NOT NULL DEFAULT 'yourdomain.com', + `portal_desc` varchar(255) NOT NULL DEFAULT 'A _little_ text to describe your site', + `portal_status` smallint(2) unsigned NOT NULL DEFAULT '1', + `disabled_message` varchar(255) NOT NULL DEFAULT 'We are currently upgrading this site with latest MX-Publisher software.', + `server_name` varchar(255) NOT NULL DEFAULT 'www.myserver.tld', + `script_path` varchar(255) NOT NULL DEFAULT '/', + `script_protocol` varchar(255) NOT NULL DEFAULT 'http://', + `server_port` varchar(255) NOT NULL DEFAULT '80', + `default_dateformat` varchar(255) NOT NULL DEFAULT 'D M d, Y g:i a', + `board_timezone` smallint(2) NOT NULL DEFAULT '0', + `gzip_compress` smallint(2) unsigned NOT NULL DEFAULT '0', + `mx_use_cache` smallint(2) unsigned NOT NULL DEFAULT '1', + `mod_rewrite` smallint(2) unsigned NOT NULL DEFAULT '0', + `cookie_domain` varchar(255) NOT NULL DEFAULT '', + `cookie_name` varchar(255) NOT NULL DEFAULT 'mxbb30x', + `cookie_path` varchar(255) NOT NULL DEFAULT '/', + `cookie_secure` smallint(2) unsigned NOT NULL DEFAULT '0', + `session_length` varchar(255) NOT NULL DEFAULT '3600', + `allow_autologin` smallint(2) unsigned NOT NULL DEFAULT '1', + `max_autologin_time` smallint(2) NOT NULL DEFAULT '0', + `max_login_attempts` smallint(2) NOT NULL DEFAULT '5', + `login_reset_time` varchar(255) NOT NULL DEFAULT '30', + `default_lang` varchar(255) NOT NULL DEFAULT 'english', + `default_style` smallint(5) NOT NULL DEFAULT '-1', + `override_user_style` smallint(2) unsigned NOT NULL DEFAULT '1', + `default_admin_style` smallint(5) NOT NULL DEFAULT '-1', + `overall_header` varchar(255) NOT NULL DEFAULT 'overall_header_navigation.tpl', + `overall_footer` varchar(255) NOT NULL DEFAULT 'overall_footer.tpl', + `main_layout` varchar(255) NOT NULL DEFAULT 'mx_main_layout.tpl', + `navigation_block` smallint(5) unsigned NOT NULL DEFAULT '31', + `top_phpbb_links` smallint(2) unsigned NOT NULL DEFAULT '0', + `allow_html` smallint(2) unsigned NOT NULL DEFAULT '1', + `allow_html_tags` varchar(255) NOT NULL DEFAULT 'b,i,u,pre', + `allow_bbcode` smallint(2) unsigned NOT NULL DEFAULT '1', + `allow_smilies` smallint(2) unsigned NOT NULL DEFAULT '1', + `smilies_path` varchar(255) NOT NULL DEFAULT 'images/smiles', + `board_email` varchar(255) NOT NULL DEFAULT 'youraddress@yourdomain.com', + `board_email_sig` varchar(255) NOT NULL DEFAULT 'Thanks, the MX-Publisher Team', + `smtp_delivery` smallint(2) unsigned NOT NULL DEFAULT '0', + `smtp_host` varchar(255) NOT NULL DEFAULT '', + `smtp_username` varchar(255) NOT NULL DEFAULT '', + `smtp_password` varchar(255) NOT NULL DEFAULT '', + `smtp_auth_method` varchar(255) NOT NULL DEFAULT '', + `portal_version` varchar(255) NOT NULL DEFAULT '', + `portal_recached` varchar(255) NOT NULL DEFAULT '', + `portal_backend` varchar(255) NOT NULL DEFAULT 'internal', + `portal_backend_path` varchar(255) NOT NULL DEFAULT '', + `portal_startdate` varchar(255) NOT NULL DEFAULT '0', + `rand_seed` varchar(255) NOT NULL DEFAULT '0', + `record_online_users` varchar(255) NOT NULL DEFAULT '0', + `record_online_date` varchar(255) NOT NULL DEFAULT '0', + PRIMARY KEY (`portal_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Table structure for table 'mx_search_results' +# +DROP TABLE IF EXISTS `mx_search_results`; +CREATE TABLE `mx_search_results` ( + `search_id` int(11) unsigned NOT NULL default '0', + `session_id` varchar(32) NOT NULL default '', + `search_array` text NOT NULL, + PRIMARY KEY (`search_id`), + KEY `session_id` (`session_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Table structure for table 'mx_wordlist' +# +DROP TABLE IF EXISTS `mx_wordlist`; +CREATE TABLE `mx_wordlist` ( + `word_text` varchar(50) binary NOT NULL default '', + `word_id` mediumint(8) unsigned NOT NULL auto_increment, + `word_common` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`word_text`), + KEY `word_id` (`word_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Table structure for table 'mx_wordmatch' +# +DROP TABLE IF EXISTS `mx_wordmatch`; +CREATE TABLE `mx_wordmatch` ( + `block_id` mediumint(8) unsigned NOT NULL default '0', + `word_id` mediumint(8) unsigned NOT NULL default '0', + `title_match` tinyint(1) NOT NULL default '0', + KEY `block_id` (`block_id`), + KEY `word_id` (`word_id`) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Table structure for table 'mx_user_group' +# +DROP TABLE IF EXISTS `mx_user_group`; +CREATE TABLE `mx_user_group` ( + group_id mediumint(8) DEFAULT '0' NOT NULL, + user_id mediumint(8) DEFAULT '0' NOT NULL, + user_pending tinyint(1), + KEY group_id (group_id), + KEY user_id (user_id) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# +# Table structure for table 'mx_groups' +# +DROP TABLE IF EXISTS `mx_groups`; +CREATE TABLE `mx_groups` ( + group_id mediumint(8) NOT NULL auto_increment, + group_type tinyint(4) DEFAULT '1' NOT NULL, + group_name varchar(40) NOT NULL, + group_description varchar(255) NOT NULL, + group_moderator mediumint(8) DEFAULT '0' NOT NULL, + group_single_user tinyint(1) DEFAULT '1' NOT NULL, + PRIMARY KEY (group_id), + KEY group_single_user (group_single_user) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# -------------------------------------------------------- +# +# Table structure for table 'mx_sessions' +# +# Note that if you\'re running 3.23.x you may want to make +# this table a type HEAP. This type of table is stored +# within system memory and therefore for big busy boards +# is likely to be noticeably faster than continually +# writing to disk ... +# +DROP TABLE IF EXISTS `mx_sessions`; +CREATE TABLE `mx_sessions` ( + session_id char(32) DEFAULT '' NOT NULL, + session_user_id mediumint(8) DEFAULT '0' NOT NULL, + session_start int(11) DEFAULT '0' NOT NULL, + session_time int(11) DEFAULT '0' NOT NULL, + session_ip char(8) DEFAULT '0' NOT NULL, + session_page int(11) DEFAULT '0' NOT NULL, + session_logged_in tinyint(1) DEFAULT '0' NOT NULL, + session_admin tinyint(2) DEFAULT '0' NOT NULL, + PRIMARY KEY (session_id), + KEY session_user_id (session_user_id), + KEY session_id_ip_user_id (session_id, session_ip, session_user_id) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# -------------------------------------------------------- +# +# Table structure for table `mx_sessions_keys` +# +DROP TABLE IF EXISTS `mx_sessions_keys`; +CREATE TABLE `mx_sessions_keys` ( + key_id varchar(32) DEFAULT '0' NOT NULL, + user_id mediumint(8) DEFAULT '0' NOT NULL, + last_ip varchar(8) DEFAULT '0' NOT NULL, + last_login int(11) DEFAULT '0' NOT NULL, + PRIMARY KEY (key_id, user_id), + KEY last_login (last_login) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# -------------------------------------------------------- +# +# Table structure for table 'mx_users' +# +DROP TABLE IF EXISTS `mx_users`; +CREATE TABLE `mx_users` ( + user_id mediumint(8) NOT NULL, + user_active tinyint(1) DEFAULT '1', + username varchar(25) NOT NULL, + user_password varchar(32) NOT NULL, + user_session_time int(11) DEFAULT '0' NOT NULL, + user_session_page smallint(5) DEFAULT '0' NOT NULL, + user_lastvisit int(11) DEFAULT '0' NOT NULL, + user_regdate int(11) DEFAULT '0' NOT NULL, + user_level tinyint(4) DEFAULT '0', + user_login_tries smallint(5) UNSIGNED DEFAULT '0' NOT NULL, + user_last_login_try int(11) DEFAULT '0' NOT NULL, + user_email varchar(255), + PRIMARY KEY (user_id), + KEY user_session_time (user_session_time) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# -- Users +INSERT INTO `mx_users` (user_id, username, user_level, user_regdate, user_password, user_email, user_active) VALUES ( -1, 'Anonymous', 0, 0, '', '', 0); + +# -- username: admin password: admin (change this or remove it once everything is working!) +INSERT INTO `mx_users` (user_id, username, user_level, user_regdate, user_password, user_email, user_active) VALUES ( 2, 'Admin', 1, 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', 1); + +# -- Groups +INSERT INTO `mx_groups` (group_id, group_name, group_description, group_single_user) VALUES (1, 'Anonymous', 'Personal User', 1); +INSERT INTO `mx_groups` (group_id, group_name, group_description, group_single_user) VALUES (2, 'Admin', 'Personal User', 1); + + +# -- User -> Group +INSERT INTO `mx_user_group` (group_id, user_id, user_pending) VALUES (1, -1, 0); +INSERT INTO `mx_user_group` (group_id, user_id, user_pending) VALUES (2, 2, 0); + + + +# -------------------------------------------------------- +# +# Table structure for table 'mx_themes' +# +DROP TABLE IF EXISTS `mx_themes`; +CREATE TABLE `mx_themes` ( + themes_id mediumint(8) UNSIGNED NOT NULL auto_increment, + template_name varchar(30) NOT NULL default '', + style_name varchar(30) NOT NULL default '', + head_stylesheet varchar(100) default NULL, + portal_backend varchar(30) NOT NULL default '', + PRIMARY KEY (themes_id) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +INSERT INTO `mx_themes` (themes_id, template_name, style_name, head_stylesheet, portal_backend) VALUES (1, 'mx_prosilver', 'mx_prosilver', 'mx_prosilver.css', 'internal'); +INSERT INTO `mx_themes` (themes_id, template_name, style_name, head_stylesheet, portal_backend) VALUES (2, 'mxBase1', 'mxBase1', 'mxBase1.css', 'internal'); +INSERT INTO `mx_themes` (themes_id, template_name, style_name, head_stylesheet, portal_backend) VALUES (3, 'mxBase2', 'mxBase2', 'mxBase2.css', 'internal'); +INSERT INTO `mx_themes` (themes_id, template_name, style_name, head_stylesheet, portal_backend) VALUES (4, 'mxSilver', 'mxSilver', 'mxSilver.css', 'internal'); +INSERT INTO `mx_themes` (themes_id, template_name, style_name, head_stylesheet, portal_backend) VALUES (5, 'subSilver', 'subSilver', 'subSilver.css', 'phpbb2'); +INSERT INTO `mx_themes` (themes_id, template_name, style_name, head_stylesheet, portal_backend) VALUES (6, 'subsilver2', 'subsilver2', 'subsilver2.css', 'phpbb3'); +INSERT INTO `mx_themes` (themes_id, template_name, style_name, head_stylesheet, portal_backend) VALUES (7, 'prosilver', 'prosilver', 'prosilver.css', 'phpbb3'); + + + +# -------------------------------------------------------- +# +# Table structure for table 'mx_smilies' +# +DROP TABLE IF EXISTS `mx_smilies`; +CREATE TABLE `mx_smilies` ( + smilies_id smallint(5) UNSIGNED NOT NULL auto_increment, + code varchar(50), + smile_url varchar(100), + emoticon varchar(75), + PRIMARY KEY (smilies_id) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; + + + +# -- Smilies +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 1, ':D', 'icon_biggrin.gif', 'Very Happy'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 2, ':-D', 'icon_biggrin.gif', 'Very Happy'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 3, ':grin:', 'icon_biggrin.gif', 'Very Happy'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 4, ':)', 'icon_smile.gif', 'Smile'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 5, ':-)', 'icon_smile.gif', 'Smile'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 6, ':smile:', 'icon_smile.gif', 'Smile'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 7, ':(', 'icon_sad.gif', 'Sad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 8, ':-(', 'icon_sad.gif', 'Sad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 9, ':sad:', 'icon_sad.gif', 'Sad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 10, ':o', 'icon_surprised.gif', 'Surprised'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 11, ':-o', 'icon_surprised.gif', 'Surprised'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 12, ':eek:', 'icon_surprised.gif', 'Surprised'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 13, ':shock:', 'icon_eek.gif', 'Shocked'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 14, ':?', 'icon_confused.gif', 'Confused'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 15, ':-?', 'icon_confused.gif', 'Confused'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 16, ':???:', 'icon_confused.gif', 'Confused'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 17, '8)', 'icon_cool.gif', 'Cool'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 18, '8-)', 'icon_cool.gif', 'Cool'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 19, ':cool:', 'icon_cool.gif', 'Cool'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 20, ':lol:', 'icon_lol.gif', 'Laughing'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 21, ':x', 'icon_mad.gif', 'Mad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 22, ':-x', 'icon_mad.gif', 'Mad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 23, ':mad:', 'icon_mad.gif', 'Mad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 24, ':P', 'icon_razz.gif', 'Razz'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 25, ':-P', 'icon_razz.gif', 'Razz'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 26, ':razz:', 'icon_razz.gif', 'Razz'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 27, ':oops:', 'icon_redface.gif', 'Embarassed'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 28, ':cry:', 'icon_cry.gif', 'Crying or Very sad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 29, ':evil:', 'icon_evil.gif', 'Evil or Very Mad'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 30, ':twisted:', 'icon_twisted.gif', 'Twisted Evil'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 31, ':roll:', 'icon_rolleyes.gif', 'Rolling Eyes'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 32, ':wink:', 'icon_wink.gif', 'Wink'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 33, ';)', 'icon_wink.gif', 'Wink'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 34, ';-)', 'icon_wink.gif', 'Wink'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 35, ':!:', 'icon_exclaim.gif', 'Exclamation'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 36, ':?:', 'icon_question.gif', 'Question'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 37, ':idea:', 'icon_idea.gif', 'Idea'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 38, ':arrow:', 'icon_arrow.gif', 'Arrow'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 39, ':|', 'icon_neutral.gif', 'Neutral'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 40, ':-|', 'icon_neutral.gif', 'Neutral'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 41, ':neutral:', 'icon_neutral.gif', 'Neutral'); +INSERT INTO `mx_smilies` (smilies_id, code, smile_url, emoticon) VALUES ( 42, ':mrgreen:', 'icon_mrgreen.gif', 'Mr. Green'); + + + +# -------------------------------------------------------- +# +# Table structure for table 'mx_words' +# +DROP TABLE IF EXISTS `mx_words`; +CREATE TABLE `mx_words` ( + word_id mediumint(8) UNSIGNED NOT NULL auto_increment, + word char(100) NOT NULL, + replacement char(100) NOT NULL, + PRIMARY KEY (word_id) +) CHARACTER SET `utf8` COLLATE `utf8mb3_bin`; diff --git a/language/lang_chinese_traditional_taiwan/index.htm b/language/lang_chinese_traditional_taiwan/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_chinese_traditional_taiwan/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_chinese_traditional_taiwan/lang_admin.php b/language/lang_chinese_traditional_taiwan/lang_admin.php new file mode 100644 index 00000000..8192b792 --- /dev/null +++ b/language/lang_chinese_traditional_taiwan/lang_admin.php @@ -0,0 +1,167 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +// setlocale(LC_ALL, "en"); + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! + +$lang['Portal_ALL'] = "©Ò¦³·|­û"; +$lang['Portal_REG'] = "µù¥U·|­û"; +$lang['Portal_PRIVATE'] = "¸s²Õ¦¨­û"; +$lang['Portal_MOD'] = "ª©­±ºÞ²z­û"; +$lang['Portal_ADMIN'] = "¨t²ÎºÞ²z­û"; + + +// Configuration +// +$lang['Portal_admin'] = "¤J¤fºô¯¸±±¨î¥x"; +$lang['Portal_admin_explain'] = "¦b³o¸Ì¡M±z¥i¼W¥[, ºM°£, ½s¿è, ­«¾ã©M½Õ¸Õ±zªº¤J¤fºô¯¸"; + +$lang['Portal_General_Config'] = "¤J¤fºô¯¸°ò¥»³]©w¥x"; +$lang['Portal_Config_explain'] = "¥H¤Uªºªí®æ¥iÅý±z¹ï±zªº¤J¤fºô¯¸¶i¦æ¤@¨Ç°ò¥»ªº³]©w."; +$lang['Portal_General_settings'] = "¤j­P³]©w"; +$lang['Portal_Name'] = "¤J¤fºô¯¸¦W¦r :"; +$lang['Portal_PHPBB_Url'] = "URL Adress for the PHPBB Module :"; + +$lang['Portal_Config_updated'] = "¤J¤fºô¯¸³]©w¸g¤w¦¨¥\ªº­×§ï¤F"; +$lang['Click_return_portal_config']= "«ö %s³o¸Ì%s ªð¦^¤J¤fºô¯¸±±¨î¥x"; + + +// +// Menu Management +// + +$lang['Menu_admin'] = "Menu Administration"; +$lang['Menu_admin_explain'] = "From this panel you can add, delete, edit, re-order and re-synchronise categories and menu."; + +$lang['Menu_edit_delete_explain'] = "From this panel you can change the menu informations"; +$lang['Menu_settings'] = "Menu Information"; + +$lang['Menu_delete'] = "Delete a Menu"; +$lang['Menu_delete_explain'] = "The form below will allow you to delete a menu information (or category) and decide where you want to put all (sub-menu) it contained. "; + + +$lang['Edit_menu'] = "Edit a menu"; +$lang['Update'] = "Update"; +$lang['Create_menu'] = "Create new menu"; +$lang['Create_category'] = "«Ø¥ß·s¤À°Ï"; +$lang['Menu_Config_updated'] = "Menu Configuration Updated Successfully"; +$lang['Menus_updated'] = "Menu and Category information updated successfully"; +$lang['Click_return_menuadmin'] = "Click %sHere%s to return to Menu Administration"; +$lang['Menu_name'] = "Menu Name"; +$lang['Menu_desc'] = "Description "; +$lang['Menu_links'] = 'Web Link '; +$lang['Category'] = "¤À°Ï"; + +$lang['Edit'] = "½s¿è"; +$lang['Delete'] = "§R°£"; +$lang['Move_up'] = "©¹¤W²¾°Ê"; +$lang['Move_down'] = "©¹¤U²¾°Ê"; +$lang['Resync'] = "­«¾ã¹ïÀ³¸ê®Æ"; + +$lang['Click_return_admin_index'] = "ÂI¿ï %s³o¸Ì%s ¦^¨ì±±¨î¥x­º­¶"; + +// +// Module Management +// + +$lang['Modules'] = "Modules"; + +$lang['Module_admin'] = "Module Administration"; +$lang['Module_Config_explain'] = "The form below will allow you to customize the modules options."; + +$lang['Column_delete'] = "Delete a Column"; + +$lang['Module_delete'] = "Delete a Module"; +$lang['Module_delete_explain'] = "The form below will allow you to delete a Module information (or column) "; + + +$lang['Edit_module'] = "Edit a module"; +$lang['Create_module'] = "Create new Module"; +$lang['Module_Config_updated'] = "Module Configuration Updated Successfully"; +$lang['Module_updated'] = "Module and Column information updated successfully"; +$lang['Click_return_moduleadmin'] = "Click %sHere%s to return to Module Administration"; + +$lang['Column_name'] = "Column Name"; + +$lang['Module_name'] = "Module Name"; +$lang['Module_desc'] = "Description"; +$lang['Module_var_text'] = "Text for the variable block"; +$lang['Module_path'] = "Path"; +$lang['Module_file'] = "File Name"; +$lang['Module_display'] = "Display this module"; +$lang['Create_column'] = "Create new column"; + +$lang['Column'] = "Column"; + +$lang['Edit_Column'] = "Edit a Column"; +$lang['Edit_Column_explain'] = "Use this form to modify a column information."; + +// delete size_column +$lang['Column_Size'] = "Size of the column"; + +// These are displayed in the drop down boxes for advanced +// mode Module auth, try and keep them short! + +$lang['Module_ALL'] = "©Ò¦³·|­û"; +$lang['Module_REG'] = "µù¥U·|­û"; +$lang['Module_PRIVATE'] = "¸s²Õ¦¨­û"; +$lang['Module_MOD'] = "ª©­±ºÞ²z­û"; +$lang['Module_ADMIN'] = "¨t²ÎºÞ²z­û"; + +$lang['Auth_Module'] = "¨t²ÎºÞ²z­û" ; + +$lang['Menu Navigation'] = "Navigation Menu"; +$lang['Modules'] = "Modules"; +$lang['Poll Administration'] = "Poll Administration"; + +$lang['Portal_index'] = "Portal Index"; + +$lang['Module Last Message'] = "Module Last Message Administration"; +$lang['Module News'] = "Module news Administration"; +$lang['Module Weather'] = "Module Weather Administration"; + +$lang['Poll_Settings'] = "¹ï¦¹¼ÒªO¶i¦æ³]©w - ½Õ¬d/§ë²¼ :"; +$lang['Poll_Display'] = "±z­n¬Ý¨º¤@­Ó§ë²¼ ?"; + +$lang['Welcome_install'] = "Welcome to MX-Portal Installation"; +$lang['Install_Instruction'] = "Thank you for choosing MX-System. In order to complete this install please fill out the details requested below. Please note PHPBB must already be to install and configure to install MX-portal"; +$lang['Language'] = "Language"; +$lang['Initial_config'] = "Basic Configuration"; +$lang['Install_lang'] = 'Choose Language for Installation'; +$lang['Table_Prefix'] = 'Prefix for tables in database'; +$lang['Installer_Error'] = 'An error has occurred during installation'; +$lang['Install_db_error'] = 'An error occurred trying to update the database'; +$lang['Phpbb_path'] = 'Phpbb path'; +$lang['Phpbb_path_explain'] = 'The path where phpBB2 is installed'; +$lang['Phpbb_url'] = 'Phpbb url'; +$lang['Phpbb_url_explain'] = 'Adresse Web where phpBB2 is installed ( this url is use for the images in the portal'; + +$lang['Install'] = 'Install'; + +$lang['Portal_intalled'] = "Portal installed Successfully"; + +$lang['Update_Old_Version'] = "Update old portal version : "; + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/language/lang_chinese_traditional_taiwan/lang_main.php b/language/lang_chinese_traditional_taiwan/lang_main.php new file mode 100644 index 00000000..9572c637 --- /dev/null +++ b/language/lang_chinese_traditional_taiwan/lang_main.php @@ -0,0 +1,69 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +//setlocale(LC_ALL, "chi_big5"); + +// Menu_nav.php + +$lang['Home Page'] = "­º­¶"; +$lang['MX_home'] = "­º­¶"; +$lang['MX_forum'] = "½×¾Â" +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; +$lang['Web Links'] = "Ápµ²"; +$lang['Edit your Profile'] = "­Ó¤H¸ê®Æ"; +$lang['Announcements'] = "¤½§i"; +$lang['Send a new Ad'] = "µoªí¤½§i"; +$lang['Forum'] = "½×¾Â"; +$lang['Main Menu'] = "¿ï³æ"; +$lang['Module Statistics'] = "°Q½×°Ï²Î­p¸ê®Æ"; +$lang['Send a Private message'] = "µo°e·sªº¨p¤H°T®§"; +$lang['Submit a Url'] = "Submit a Url"; + +$lang['Portal_lang'] = "»y¨t"; +$lang['SELECTGUILANG'] = "½Ð¿ï¾Ü±zªº»y¨t:"; + +$lang['Change']="Change now"; + +$lang['Welcome_Title'] = "Åwªï¨Ó¨ì"; +$lang['Welcome_Msg'] = "Åwªï¤º®e"; + +$lang['Theme'] = "¥DÃD"; +$lang['SelectTheme'] = "½Ð¿ï¾Ü¤@­Ó±z³ßÅwªº¥DÃD:"; + +$lang['Surveys/Polls'] = "½Õ¬d / §ë¿ï"; +$lang['Already_voted'] = "±z¤w¸g§ë¹L²¼¤F"; +$lang['Click_view_voted'] = "½Ð«ö %s³o¸Ì%s ¬d¬Ý§ë²¼µ²ªG"; +$lang['Portal_admin'] = "¤J¤fºô¯¸±±¨î¥x"; +$lang['Portal_admin_explain'] = "¦b³o¸Ì¡M±z¥i¼W¥[, ºM°£, ½s¿è, ­«¾ã©M½Õ¸Õ±zªº¤J¤fºô¯¸"; + +$lang['Annonce_sent'] = "±zªº¤½§i¸g¤wµoªí¤F"; +$lang['Annonce_Deleted'] = "±zªº¤½§i¸g¤wºM°£¤F"; + +$lang['Welcome_msg_send'] = "±zªºÅwªïµü¸g¤wµoªí¤F"; +$lang['Edit_Welcome_msg'] = "½s¿è±zªºÅwªïµü"; + +$lang['Url_sent'] = "±zªººô§}¸g¤wµoªí¤F"; +$lang['Url_Deleted'] = "±zªººô§}¸g¤wºM°£¤F"; +$lang['Submit Url'] = "¥[¤JÁpµ²"; + +// +// That's all Folks! +// ------------------------------------------------- + +?> diff --git a/language/lang_dutch/index.htm b/language/lang_dutch/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_dutch/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_dutch/lang_admin.php b/language/lang_dutch/lang_admin.php new file mode 100644 index 00000000..0ee048b9 --- /dev/null +++ b/language/lang_dutch/lang_admin.php @@ -0,0 +1,165 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +//setlocale(LC_ALL, "nl_NL"); + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! + +$lang['Portal_ALL'] = "ALL"; +$lang['Portal_REG'] = "REG"; +$lang['Portal_PRIVATE'] = "PRIVATE"; +$lang['Portal_MOD'] = "MOD"; +$lang['Portal_ADMIN'] = "ADMIN"; + + +// Configuration +// +$lang['Portal_admin'] = "Portal beheer"; +$lang['Portal_admin_explain'] = "Vanuit dit panel kunt u gegevens in uw portal toevoegen, verwijderen, muteren, herordenen and hersynchroniseren"; + +$lang['Portal_General_Config'] = "Portal Configuratie"; +$lang['Portal_Config_explain'] = "Onderstaand heeft u de mogelijkheid om de potal instellingen naar eigen wensen aan te passen."; +$lang['Portal_General_settings'] = "Gebruikelijke instellingen"; +$lang['Portal_Name'] = "Portal naam :"; +$lang['Portal_PHPBB_Url'] = "URL Adress for the PHPBB Module :"; + +$lang['Portal_Config_updated'] = "Portal configuratie succesvol aangepast"; +$lang['Click_return_portal_config']= "Klik %shier%s om terug te keren naar de Portal Configuratie"; + + +// +// Menu Management +// + +$lang['Menu_admin'] = "Menu beheer"; +$lang['Menu_admin_explain'] = "Vanuit dit panel kunt u gegevens in uw menu toevoegen, verwijderen, muteren, herordenen and hersynchroniseren"; + +$lang['Menu_edit_delete_explain'] = "From this panel you can change the menu informations"; +$lang['Menu_settings'] = "Menu Instellingen"; + +$lang['Menu_delete'] = "Menu verwijderd"; +$lang['Menu_delete_explain'] = "The form below will allow you to delete a menu information (or category) and decide where you want to put all (sub-menu) it contained. "; + + +$lang['Edit_menu'] = "Menu muteer"; +$lang['Update'] = "Bijwerken"; +$lang['Create_menu'] = "Maak een nieuwe menu aan"; +$lang['Create_category'] = "Maak een nieuwe categorie aan"; +$lang['Menu_Config_updated'] = "Menu Configuration Updated Successfully"; +$lang['Menus_updated'] = "Menu and Category information updated successfully"; +$lang['Click_return_menuadmin'] = "Klik %sHier%s om terug te gaan naar Menu Beheer"; +$lang['Menu_name'] = "Menu naam"; +$lang['Menu_desc'] = "omschrijving"; +$lang['Menu_links'] = "Web Link "; +$lang['Category'] = "Categorie"; + +$lang['Edit'] = "Bewerk"; +$lang['Delete'] = "Verwijder"; +$lang['Move_up'] = "Schuif omhoog"; +$lang['Move_down'] = "Schuif omloog"; +$lang['Resync'] = "Resync"; + +$lang['Click_return_admin_index'] = "Klik %sHier%s om terug te gaan naar de Beheerder Index"; + +// +// Module Management +// + +$lang['Modules'] = "Modules"; + +$lang['Module_admin'] = "Module beheer"; +$lang['Module_Config_explain'] = "Hier kun je informatie en bepaalde specifieke opties van module aanpassen."; + +$lang['Column_delete'] = "Column verwijderd"; + +$lang['Module_delete'] = "Module verwijderd"; +$lang['Module_delete_explain'] = "The form below will allow you to delete a Module information (or column) "; + + +$lang['Edit_module'] = "Bewerk module"; +$lang['Create_module'] = "Maak een nieuw module aan"; +$lang['Module_Config_updated'] = "configuratie succesvol aangepast"; +$lang['Module_updated'] = "configuratie succesvol aangepast"; +$lang['Click_return_moduleadmin'] = "Klik %sHier%s om terug te gaan naar Module Beheer"; + +$lang['Column_name'] = "Column naam"; + +$lang['Module_name'] = "Module naam"; +$lang['Module_desc'] = "Description"; +$lang['Module_var_text'] = "Text for the variable block"; +$lang['Module_path'] = "Path"; +$lang['Module_file'] = "File Name"; +$lang['Module_display'] = "Display this module"; +$lang['Create_column'] = "Maak een nieuw column aan"; + +$lang['Column'] = "inhoud"; + +$lang['Edit_Column'] = "Column muteer"; +$lang['Edit_Column_explain'] = "Use this form to modify a column information."; + +// delete size_column +$lang['Column_Size'] = "Grootte van de inhoud aan"; + +// These are displayed in the drop down boxes for advanced +// mode Module auth, try and keep them short! + +$lang['Module_ALL'] = "ALL"; +$lang['Module_REG'] = "REG"; +$lang['Module_PRIVATE'] = "PRIVATE"; +$lang['Module_MOD'] = "MOD"; +$lang['Module_ADMIN'] = "ADMIN"; + +$lang['Auth_Module'] = "Permissions" ; + +$lang['Menu Navigation'] = "Navigation Menu"; +$lang['Modules'] = "Modules"; +$lang['Poll Administration'] = "Poll Administration"; + +$lang['Portal_index'] = "Portal Index"; + +$lang['Module Last Message'] = "Module Last Message Administration"; +$lang['Module News'] = "Module news Administration"; +$lang['Module Weather'] = "Module Weather Administration"; + +$lang['Poll_Settings'] = "Configuratie van het module - Poll :"; +$lang['Poll_Display'] = "Welke Poll wilt u laten zien?"; + +$lang['Welcome_install'] = "Welcome to MX-Portal Installation"; +$lang['Install_Instruction'] = "Thank you for choosing MX-System. In order to complete this install please fill out the details requested below. Please note PHPBB must already be to install and configure to install MX-portal"; +$lang['Language'] = "Language"; +$lang['Initial_config'] = "Basic Configuration"; +$lang['Install_lang'] = 'Choose Language for Installation'; +$lang['Table_Prefix'] = 'Prefix for tables in database'; +$lang['Installer_Error'] = 'An error has occurred during installation'; +$lang['Install_db_error'] = 'An error occurred trying to update the database'; +$lang['Phpbb_path'] = 'Phpbb path'; +$lang['Phpbb_path_explain'] = 'The path where phpBB2 is installed'; +$lang['Phpbb_url'] = 'Phpbb url'; +$lang['Phpbb_url_explain'] = 'Adresse Web where phpBB2 is installed ( this url is use for the images in the portal'; + +$lang['Install'] = 'Install'; + +$lang['Portal_intalled'] = "Portal installed Successfully"; + +$lang['Update_Old_Version'] = "Update old portal version : "; +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/language/lang_dutch/lang_main.php b/language/lang_dutch/lang_main.php new file mode 100644 index 00000000..11273817 --- /dev/null +++ b/language/lang_dutch/lang_main.php @@ -0,0 +1,68 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + + +$lang['Home Page'] = "Home Page"; +$lang['Web Links'] = "Web Links"; +$lang['Announcements'] = "Mededelingen"; +$lang['Forum'] = "Forum"; +$lang['Main Menu'] = "Hoofdmenu"; +$lang['Module Statistics'] = "statistieken"; +$lang['Send a Private message'] = "Stuur een privé bericht"; +$lang['Edit your Profile'] = "Uw Account"; +$lang['Send a new Ad'] = "Voeg mededelingen toe"; +$lang['Submit a Url'] = "Submit a Url"; + +$lang['MX_Home'] = "Home"; +$lang['MX_Forum'] = "Forum"; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; + +$lang['Portal_lang'] = "Taal"; +$lang['SELECTGUILANG'] = "Selecteert Interface Taal:"; + +$lang['Change'] = "Change now"; + +$lang['Welcome_Title'] = "Welcome op MX-SYSTEM"; +$lang['Welcome_Msg'] = "Welkomstbericht"; + +$lang['Theme'] = "Thema"; +$lang['SelectTheme'] = "Selecteer Interface Thema:"; + +$lang['Surveys/Polls'] = "Overzichten / Polls"; +$lang['Already_voted'] = "U heeft uw stem al uitgebracht"; +$lang['Click_view_voted'] = "Klik %shier%s om de resultaten te bekijken"; +$lang['Portal_admin'] = "Portal beheer"; +$lang['Portal_admin_explain'] = "Vanuit dit panel kunt u gegevens in uw portal toevoegen, verwijderen, muteren, herordenen and hersynchroniseren"; + +$lang['Annonce_sent'] = "De mededeling is verzonden"; +$lang['Annonce_Deleted'] = "De mededeling is verwijderd"; + +$lang['Welcome_msg_send'] = "Het welkomstbericht is verzonden"; +$lang['Edit_Welcome_msg'] = "Muteer uw welkomstbericht"; + +$lang['Url_sent'] = "De url is verzonden"; +$lang['Url_Deleted'] = "De url is verwijderd"; +$lang['Submit Url'] = "Voeg een Web Link toe"; + +// +// Dit is het mensen! +// ------------------------------------------------- + +?> + diff --git a/language/lang_english/channel.html b/language/lang_english/channel.html new file mode 100644 index 00000000..825f4447 --- /dev/null +++ b/language/lang_english/channel.html @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/language/lang_english/email/admin_welcome_inactive_fb4phpbb_light.txt b/language/lang_english/email/admin_welcome_inactive_fb4phpbb_light.txt new file mode 100644 index 00000000..9e7e1e9e --- /dev/null +++ b/language/lang_english/email/admin_welcome_inactive_fb4phpbb_light.txt @@ -0,0 +1,21 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +Please keep this e-mail for your records. Your account information is as follows: + +---------------------------- +Username: {USERNAME} + +Board URL: {U_BOARD} +---------------------------- + +Your account is currently inactive, the administrator of the board will need to activate it before you can log in. You will receive another e-mail when this has occurred. + +Please remember to log in with the Facebook Login button. + +If you close your Facebook account, you can request a new password which will be activated in the same way as this account. + +Thank you for registering. + +{EMAIL_SIG} \ No newline at end of file diff --git a/language/lang_english/email/coppa_welcome_inactive_fb4phpbb_light.txt b/language/lang_english/email/coppa_welcome_inactive_fb4phpbb_light.txt new file mode 100644 index 00000000..1056d3fe --- /dev/null +++ b/language/lang_english/email/coppa_welcome_inactive_fb4phpbb_light.txt @@ -0,0 +1,45 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +In compliance with the COPPA your account is currently inactive. + +Please print this message out and have your parent or guardian sign and date it. Then fax it to: + +{FAX_INFO} + +OR mail it to: + +{MAIL_INFO} + +------------------------------ CUT HERE ------------------------------ +Permission to participate at "{SITENAME}" - {U_BOARD} + +Username: {USERNAME} +Password: {PASSWORD} +E-mail: {EMAIL_ADDRESS} + +I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO "{SITENAME}" TO STORE THIS INFORMATION. +I UNDERSTAND THIS INFORMATION CAN BE CHANGED AT ANY TIME BY ENTERING A PASSWORD. +I UNDERSTAND THAT I MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM "{SITENAME}" AT ANY TIME. + + +Parent or guardian +(print your name here): _____________________ + +(sign here): __________________ + +Date: _______________ + +------------------------------ CUT HERE ------------------------------ + + +Once the administrator has received the above form via fax or regular mail your account will be activated. + +Please login with the Facebook Login button. + +If you close your Facebook account, you can request a new password which will be activated in the same way as this account. + +Thank you for registering. + +{EMAIL_SIG} diff --git a/language/lang_english/email/user_welcome_fb4phpbb_light.txt b/language/lang_english/email/user_welcome_fb4phpbb_light.txt new file mode 100644 index 00000000..c1df7aa2 --- /dev/null +++ b/language/lang_english/email/user_welcome_fb4phpbb_light.txt @@ -0,0 +1,17 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +Please keep this e-mail for your records. Your account information is as follows: + +---------------------------- +Username: {USERNAME} + +Board URL: {U_BOARD} +---------------------------- + +When logging in please use the Facebook Login button. + +Thank you for registering. + +{EMAIL_SIG} \ No newline at end of file diff --git a/language/lang_english/email/user_welcome_inactive_fb4phpbb_light.txt b/language/lang_english/email/user_welcome_inactive_fb4phpbb_light.txt new file mode 100644 index 00000000..8fe99f30 --- /dev/null +++ b/language/lang_english/email/user_welcome_inactive_fb4phpbb_light.txt @@ -0,0 +1,24 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +Please keep this e-mail for your records. Your account information is as follows: + +---------------------------- +Username: {USERNAME} + +Board URL: {U_BOARD} +---------------------------- + +Your account is currently inactive. You cannot use it until you visit the following link: + +{U_ACTIVATE} + + +In order to login in please use the facebook Login button. + +If you unlink your account or close your facebook account then you can request a new password. + +Thank you for registering. + +{EMAIL_SIG} \ No newline at end of file diff --git a/language/lang_english/lang_admin.php b/language/lang_english/lang_admin.php index c8bdb30b..1b02b7f4 100644 --- a/language/lang_english/lang_admin.php +++ b/language/lang_english/lang_admin.php @@ -517,7 +517,29 @@ $lang['MXP_Latest_version_info'] = 'The latest available version is MX-Publisher %s. '; $lang['MXP_Current_version_info'] = 'You are running MX-Publisher %s.'; $lang['MXP_Mailing_list_subscribe_reminder'] = 'For the latest information on news and updates to MX-Publisher, why not subscribe to our mailing list?'; - +/* lang_admin_gd_info.php - BEGIN */ +$lang['GD_Title'] = 'GD Info'; +$lang['NO_GD'] = 'No GD'; +$lang['GD_Description'] = 'Retrieve information about the currently installed GD library'; +$lang['GD_Freetype_Support'] = 'Freetype Fonts Support:'; +$lang['GD_Freetype_Linkage'] = 'Freetype Link Type:'; +$lang['GD_T1lib_Support'] = 'T1lib Support:'; +$lang['GD_Gif_Read_Support'] = 'Gif Read Support:'; +$lang['GD_Gif_Create_Support'] = 'Gif Create Support:'; +$lang['GD_Jpg_Support'] = 'Jpg/Jpeg Support:'; +$lang['GD_Png_Support'] = 'Png Support:'; +$lang['GD_Wbmp_Support'] = 'WBMP Support:'; +$lang['GD_XBM_Support'] = 'XBM Support:'; +$lang['GD_WebP_Support'] = 'WebP Support:'; +$lang['GD_Jis_Mapped_Support'] = 'Japanese Font Support:'; +$lang['GD_True'] = 'Yes'; +$lang['GD_False'] = 'No'; +$lang['GD_VERSION'] = 'GD Version:'; +$lang['GD_0'] = 'No GD'; +$lang['GD_1'] = 'GD1'; +$lang['GD_2'] = 'GD2'; +$lang['GD_show_img_no_gd'] = 'Show GIF thumbnails without using GD libraries (full images are loaded and then just shown resized).'; +/* lang_admin_gd_info.php - END */ /* * That's all Folks! * -------------------------------------------------*/ diff --git a/language/lang_english/lang_main.php b/language/lang_english/lang_main.php index 30e0a56f..4814e05e 100644 --- a/language/lang_english/lang_main.php +++ b/language/lang_english/lang_main.php @@ -18,6 +18,13 @@ // // setlocale(LC_ALL, 'en'); +$lang['USER_LANG'] = 'en'; +$lang['ENCODING'] = 'UTF-8'; +$lang['DIRECTION'] = 'ltr'; +$lang['LEFT'] = 'left'; +$lang['RIGHT'] = 'right'; +$lang['DATE_FORMAT'] = 'd/M/Y'; // This should be changed to the default date format for your language, php date() format + // // General // @@ -45,6 +52,7 @@ // $lang['MX_home'] = 'Home'; $lang['MX_forum'] = 'Forum'; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; // // Core Blocks - Language @@ -98,6 +106,7 @@ $lang['Block_Info'] = 'Information'; $lang['Block_Config_updated'] = 'Block configuration updated successfully.'; +$lang['Edit'] = 'EDIT'; $lang['Block_Edit'] = 'Edit Block'; $lang['Block_Edit_dyn'] = 'Edit parent dynamic block'; $lang['Block_Edit_sub'] = 'Edit parent split block'; @@ -127,7 +136,7 @@ // This is optional, if you would like a _SHORT_ message output // along with our copyright message indicating you are the translator // please add it here. -//$lang['TRANSLATION_INFO_MXBB'] = 'English Language by MX-Publisher Development Team'; +$lang['TRANSLATION_INFO_MXBB'] = 'English Language by MX-Publisher Development Team'; // // Installation diff --git a/language/lang_french/lang_main.php b/language/lang_french/lang_main.php index b0c83a8e..4650d35a 100644 --- a/language/lang_french/lang_main.php +++ b/language/lang_french/lang_main.php @@ -21,8 +21,8 @@ $lang['USER_LANG'] = 'fr'; $lang['ENCODING'] = 'UTF-8'; $lang['DIRECTION'] = 'ltr'; -$lang['LEFT'] = 'left'; -$lang['RIGHT'] = 'right'; +$lang['LEFT'] = 'gauche'; +$lang['RIGHT'] = 'droit'; $lang['DATE_FORMAT'] = 'd/M/Y'; // This should be changed to the default date format for your language, php date() format @@ -59,7 +59,7 @@ // $lang['MX_home'] = 'Accueil'; $lang['MX_forum'] = 'Forum'; - +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; // // Core Blocks - Language // @@ -112,6 +112,7 @@ $lang['Block_Info'] = 'Information'; $lang['Block_Config_updated'] = 'Configuration de Bloc mise à jour.'; +$lang['Edit'] = 'EDITER'; $lang['Block_Edit'] = 'Editer le Bloc'; $lang['Block_Edit_dyn'] = 'Editer le bloc dynamique parent'; $lang['Block_Edit_sub'] = 'Editer le bloc subdivisé parent'; diff --git a/language/lang_german/index.htm b/language/lang_german/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_german/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_german/lang_admin.php b/language/lang_german/lang_admin.php new file mode 100644 index 00000000..b07124a9 --- /dev/null +++ b/language/lang_german/lang_admin.php @@ -0,0 +1,166 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +//setlocale(LC_ALL, "de_DE"); + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! + +$lang['Portal_ALL'] = "Alle"; +$lang['Portal_REG'] = "Reg"; +$lang['Portal_PRIVATE'] = "Privat"; +$lang['Portal_MOD'] = "Mods"; +$lang['Portal_ADMIN'] = "Admin"; + +// Configuration +// +$lang['Portal_admin'] = "Portal Administration"; +$lang['Portal_admin_explain'] = "Hier kannst Du Kategorien und Portal hinzufügen, löschen, bearbeiten und neu anordnen."; + + +$lang['Portal_General_Config'] = "Portal konfiguration"; +$lang['Portal_Config_explain'] = "Hier kannst Du die allgemeinen Einstellungen Deines Portal ändern."; +$lang['Portal_General_settings'] = "Allgemeine Konfiguration"; +$lang['Portal_Name'] = "Name der Portal:"; +$lang['Portal_PHPBB_Url'] = "URL Adress for the PHPBB Module :"; + +$lang['Portal_Config_updated'] = "Portal konfiguration geändert"; +$lang['Click_return_portal_config']= "Klick %shier%s, um zur Portal administration zurück zu kehren"; + + +// +// Menu Management +// + +$lang['Menu_admin'] = "Menü Administration"; +$lang['Menu_admin_explain'] = "Hier kannst Du Kategorien und Menü hinzufügen, löschen, bearbeiten und neu anordnen."; + +$lang['Menu_edit_delete_explain'] = "Hier kannst Du die Daten und spezielle Optionen eines Menü ändern."; +$lang['Menu_settings'] = "Menü Boardeinstellungen"; + +$lang['Menu_delete'] = "Menü löschen"; +$lang['Menu_delete_explain'] = "Hier kannst ein Menü oder eine Kategorie löschen und entscheiden"; + + +$lang['Edit_menu'] = "Menü bearbeiten"; +$lang['Update'] = "Aktualisieren"; +$lang['Create_menu'] = "Neues Menü erstellen"; +$lang['Create_category'] = "Neue Kategorie erstellen"; +$lang['Menu_Config_updated'] = "Menü konfiguration geändert"; +$lang['Menus_updated'] = "Menü und Kategorie konfiguration geändert"; +$lang['Click_return_menuadmin'] = "Klick %shier%s, um zur Menü administration zurück zu kehren"; +$lang['Menu_name'] = "Name der Menü"; +$lang['Menu_desc'] = "Description "; +$lang['Menu_links'] = 'Web Link '; +$lang['Category'] = "Kategorie "; + +$lang['Edit'] = "Editieren"; +$lang['Delete'] = "Löschen"; +$lang['Move_up'] = "Nach oben"; +$lang['Move_down'] = "Nach unten"; +$lang['Resync'] = "Resync"; + +$lang['Click_return_admin_index'] = "Klicke %shier%s, um zum Admin Index zurück zu kehren"; + +// +// Module Management +// + +$lang['Modules'] = "Modules"; + +$lang['Module_admin'] = "Module Administration"; +$lang['Module_Config_explain'] = "Hier kannst Du die Daten und spezielle Optionen eines Module ändern."; + +$lang['Column_delete'] = "Spalte löschen"; + +$lang['Module_delete'] = "Module löschen"; +$lang['Module_delete_explain'] = "Hier kannst Du Spalte und Module löschen"; + + +$lang['Edit_module'] = "Module bearbeiten"; +$lang['Create_module'] = "Neues Module erstellen"; +$lang['Module_Config_updated'] = "Module konfiguration geändert"; +$lang['Module_updated'] = "Module und Spalte konfiguration geändert"; +$lang['Click_return_moduleadmin'] = "Klick %shier%s, um zur Module administration zurück zu kehren"; + +$lang['Column_name'] = "Name die Spalte"; + +$lang['Module_name'] = "Name der Module"; +$lang['Module_desc'] = "Description"; +$lang['Module_var_text'] = "Text für die variable Block"; +$lang['Module_path'] = "Path"; +$lang['Module_file'] = "Dateiname"; +$lang['Module_display'] = "Module anzeigen"; +$lang['Create_column'] = "Neues Spalte erstellen"; + +$lang['Column'] = "Spalte"; + +$lang['Edit_Column'] = "Spalte bearbeiten"; +$lang['Edit_Column_explain'] = "Hier kannst Du die Daten und spezielle Optionen eines Spalte ändern."; + +// delete size_column +$lang['Column_Size'] = "Größe der Spalte"; + +// These are displayed in the drop down boxes for advanced +// mode Module auth, try and keep them short! + +$lang['Module_ALL'] = "Alle"; +$lang['Module_REG'] = "Reg"; +$lang['Module_PRIVATE'] = "Privat"; +$lang['Module_MOD'] = "Mods"; +$lang['Module_ADMIN'] = "Admin"; + +$lang['Auth_Module'] = "Erlaubnis" ; + + +$lang['Menu Navigation'] = "Menü-Navigation"; +$lang['Modules'] = "Module"; +$lang['Poll Administration'] = "Umfrage Administration"; + +$lang['Portal_index'] = "Portal Index"; + +$lang['Module Last Message'] = "Module Last Message Administration"; +$lang['Module News'] = "Module News Administration"; +$lang['Module Weather'] = "Module Weather Administration"; + +$lang['Poll_Settings'] = "Konfiguration für Module - Poll:"; +$lang['Poll_Display'] = "elchen Poll möchtest Du darstellen?"; + +$lang['Welcome_install'] = "Welcome to MX-Portal Installation"; +$lang['Install_Instruction'] = "Thank you for choosing MX-System. In order to complete this install please fill out the details requested below. Please note PHPBB must already be to install and configure to install MX-portal"; +$lang['Language'] = "Language"; +$lang['Initial_config'] = "Basic Configuration"; +$lang['Install_lang'] = 'Choose Language for Installation'; +$lang['Table_Prefix'] = 'Prefix for tables in database'; +$lang['Installer_Error'] = 'An error has occurred during installation'; +$lang['Install_db_error'] = 'An error occurred trying to update the database'; +$lang['Phpbb_path'] = 'Phpbb path'; +$lang['Phpbb_path_explain'] = 'The path where phpBB2 is installed'; +$lang['Phpbb_url'] = 'Phpbb url'; +$lang['Phpbb_url_explain'] = 'Adresse Web where phpBB2 is installed ( this url is use for the images in the portal'; + +$lang['Install'] = 'Install'; + +$lang['Portal_intalled'] = "Portal installed Successfully"; + +$lang['Update_Old_Version'] = "Update old portal version : "; +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/language/lang_german/lang_main.php b/language/lang_german/lang_main.php new file mode 100644 index 00000000..172a20db --- /dev/null +++ b/language/lang_german/lang_main.php @@ -0,0 +1,68 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +//setlocale(LC_ALL, "en"); + +// Menu_nav.php +$lang['Home Page'] = "Home"; +$lang['Web Links'] = "Links"; +$lang['Announcements'] = "Ankündigungen"; +$lang['Forum'] = "Forum"; +$lang['Main Menu'] = "Hauptmenü"; +$lang['Module Statistics'] = "Statistiken"; +$lang['Send a Private message'] = "Neue Nachricht senden"; +$lang['Edit your Profile'] = "Profil bearbeiten"; +$lang['Send a new Ad'] = "Neue Ad senden"; +$lang['Submit a Url'] = "Url übergeben"; + +$lang['MX_Home'] = "Home"; +$lang['MX_Forum'] = "Forum"; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; + +$lang['Portal_lang'] = "Sprache"; +$lang['SELECTGUILANG'] = "Select Interface Language:"; + +$lang['Change'] = "jetzt Anzeige"; + +$lang['Welcome_Title'] = "Willkommen"; +$lang['Welcome_Msg'] = "Willkommen Anzeige"; + + +$lang['Theme'] = "Themen"; +$lang['SelectTheme'] = "Select Interface Theme:"; + +$lang['Surveys/Polls'] = "Surveys / Polls"; +$lang['Already_voted'] = "You have already voted"; +$lang['Click_view_voted'] = "Click %sHere%s to view the results"; + +$lang['Annonce_sent'] = "The annoncement has been sent"; +$lang['Annonce_Deleted'] = "The annoncement has been deleted"; + +$lang['Welcome_msg_send'] = "The welcome message has been sent"; +$lang['Edit_Welcome_msg'] = "Edit your welcome message"; + +$lang['Url_sent'] = "The url has been sent"; +$lang['Url_Deleted'] = "The url has been deleted"; +$lang['Submit Url'] = "Submit Web Link"; + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/language/lang_greek/lang_main.php b/language/lang_greek/lang_main.php index 1509017b..21950c40 100644 --- a/language/lang_greek/lang_main.php +++ b/language/lang_greek/lang_main.php @@ -50,6 +50,7 @@ // $lang['MX_home'] = 'ΑÏχική Σελίδα'; $lang['MX_forum'] = 'Δημόσια Συζήτηση'; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; // // Core Blocks - Language @@ -103,6 +104,7 @@ $lang['Block_Info'] = 'ΠληÏοφοÏίες'; $lang['Block_Config_updated'] = 'Η διαμόÏφωση του Block ενημεÏώθηκε επιτυχώς.'; +$lang['Edit'] = 'ΕΠΕΞΕΡΓΑ'; $lang['Block_Edit'] = 'ΕπεξεÏγασία Block'; $lang['Block_Edit_dyn'] = 'ΕπεξεÏγασία μητÏÎ¹ÎºÎ¿Ï dynamic block'; $lang['Block_Edit_sub'] = 'ΕπεξεÏγασία μητÏÎ¹ÎºÎ¿Ï Ï‡Ï‰Ïισμένου block'; diff --git a/language/lang_hebrew/index.htm b/language/lang_hebrew/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_hebrew/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_hebrew/lang_main.php b/language/lang_hebrew/lang_main.php new file mode 100644 index 00000000..69345cad --- /dev/null +++ b/language/lang_hebrew/lang_main.php @@ -0,0 +1,101 @@ + 'he', + 'ENCODING' => 'UTF-8', + 'DIRECTION' => 'ltr', + 'LEFT' => 'שמ×לה', + 'RIGHT' => 'ימין', + 'DATE_FORMAT' => 'd/M/Y', + 'Page_Not_Authorised' => '×ž×¦×˜×¢×¨×™× ×תה ××™× × ×ž×•×¨×©×™× ×›×“×™ לגשת לדף ×”×–×”.', + 'Execution_Stats' => 'ש×ילתות %s של יצירת דף - זמן יצירה: %s שניות', + 'Redirect_login' => 'לחץ על %s×›×ן%s כדי להתחבר.', + 'Show_admin_options' => 'הצג / הסתר ×פשרויות מנהל דף:', + 'Block_updated_date' => 'עודכן', + 'Block_updated_by' => 'על ידי', + 'Page_updated_date' => 'דף ×–×” עודכן', + 'Page_updated_by' => 'על ידי', + 'Powered_by' => 'מונע ×¢"×™', + 'mx_spacer' => 'ספ×סר', + 'Yes' => 'כן', + 'No' => 'ל×', + 'Link' => 'קישור', + 'Hidden_block' => 'בלוק מוסתר', + 'Hidden_block_explain' => '×—×¡×•× ×–×” ×”×•× \' מוסתר\', ×בל גלוי ×ל ×תה מ××– יש לך ×ת הרש×ות המת×ימות .', + 'MX_home' => 'בית', + 'MX_forum' => 'פוֹרוּ×', + 'MX_navigation' => '×“×¤×™× × ×™×•×•×˜, לדוגמה. ×¤×•×¨×•× × ×™×•×•×˜, כמו pafiledb ניווט.', + 'Change_default_lang' => 'הגדר ×ת שפת ברירת המחדל של מועצת המנהלי×', + 'Change_user_lang' => 'הגדר ×ת השפה שלך', + 'Portal_lang' => 'שפת שפה', + 'Select_lang' => 'בחר שפה:', + 'Change' => 'החלף עכשיו', + 'Change_default_style' => 'הגדר ×ת סגנון ברירת המחדל של מועצת המנהלי×', + 'Change_user_style' => 'הגדר ×ת הסגנון שלך', + 'Theme' => 'ThemeCP / סגנון', + 'Select_theme' => 'בחר ערכת × ×•×©× / סגנון:', + 'Mx_Page' => 'עמוד', + 'Mx_Block' => 'סָעִיף', + 'Virtual_Create_new' => 'צור חדש', + 'Virtual_Create_new_user' => 'דף משתמש', + 'Virtual_Create_new_group' => 'דף קבוצה', + 'Virtual_Create_new_project' => 'דף הפרויקט', + 'Virtual_Create' => 'צור כעת', + 'Virtual_Edit' => 'עדכון ×©× ×”×“×£', + 'Virtual_Delete' => 'למחוק ×ת הדף', + 'Virtual_Welcome' => 'ברוך הב×', + 'Virtual_Info' => '×›×ן ×תה יכול לשלוט דף ×ינטרנט פרטיות שלך.', + 'Virtual_CP' => 'לוח הבקרה של הדף', + 'Virtual_Go' => 'ללכת', + 'Virtual_Select' => 'בחר:', + 'No_items_found' => '×©×•× ×“×‘×¨ חדש לדוח', + 'Block_Title' => 'כותרת', + 'Block_Info' => 'מֵידָע', + 'Block_Config_updated' => '×—×¡×•× ×ª×¦×•×¨×” עודכן בהצלחה.', + 'Edit' => 'לַעֲרוֹך', + 'Block_Edit' => 'בלוק עריכה', + 'Block_Edit_dyn' => 'עריכת בלוק דינמי של ×ב', + 'Block_Edit_sub' => 'עריכת בלוק ×”×•×¨×™× ×ž×¤×•×¦×œ×™×', + 'General_updated_return_settings' => 'תצורה עודכנה בהצלחה.

    %3 לחץ על %s×›×ן%s כדי לחזור להודעה', + 'General_update_error' => '×œ× × ×™×ª×Ÿ עדכון תצורה.', + 'Mx_search_site' => '×ֲתַר', + 'Mx_search_forum' => 'פוֹרוּ×', + 'Mx_search_kb' => 'מ×מרי×', + 'Mx_search_pafiledb' => 'הורדות', + 'Mx_search_google' => 'Google', + 'Mx_new_search' => 'חיפוש חדש', + 'mx_about_title' => 'MX-Publisher על ', + 'mx_copy_title' => 'MX-Publisher מידע על', + 'mx_copy_modules_title' => 'MX-Publisher מותקן מודולי×', + 'mx_copy_template_title' => 'על הסגנון', + 'mx_copy_translation_title' => 'על התרגו×', + + // This is optional, if you would like a _SHORT_ message output + // along with our copyright message indicating you are the translator + // please add it here. + 'TRANSLATION_INFO_MXBB' => 'Hwbrew Language by MX-Publisher Development Team', + + 'Please_remove_install_contrib' => '×× × ×•×•×“× ×©×ž×—×§×ª ×ת התקיות /install ו- contrib/ ', + )); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/language/lang_hungarian/index.htm b/language/lang_hungarian/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_hungarian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_hungarian/lang_main.php b/language/lang_hungarian/lang_main.php new file mode 100644 index 00000000..28a9b193 --- /dev/null +++ b/language/lang_hungarian/lang_main.php @@ -0,0 +1,96 @@ + 'hu', + 'ENCODING' => 'UTF-8', + 'DIRECTION' => 'ltr', + 'LEFT' => 'balra', + 'RIGHT' => 'jobbra', + 'DATE_FORMAT' => 'd/M/Y', + 'Page_Not_Authorised' => 'Sajnáljuk, de te a nem engedélyezett a hozzáférés ez az oldalt.', + 'Execution_Stats' => 'Az oldal generált%s lekérdezések - Generációs idÅ‘:%s másodperc', + 'Redirect_login' => 'Kattintson a %shere%s a bejelentkezést.', + 'Show_admin_options' => 'Az Adminisztrátori beállítások megjelenítése / elrejtése:', + 'Block_updated_date' => 'Frissítve', + 'Block_updated_by' => 'a', + 'Page_updated_date' => 'Ez az oldal frissült', + 'Page_updated_by' => 'a', + 'Powered_by' => 'Powered by', + 'mx_spacer' => 'spacer', + 'Yes' => 'Igen', + 'No' => 'Nem', + 'Link' => 'Link', + 'Hidden_block' => 'Rejtett blokk', + 'Hidden_block_explain' => 'Ez blokk a \'hidden\', de látható a te mivel te van a megfelelÅ‘ engedélyekkel beállítva.', + 'MX_home' => 'itthon', + 'MX_forum' => 'Fórum', + 'MX_navigation' => 'Pages navigáció, pl. Fórum navigáció, mint pafiledb navigáció.', + 'Change_default_lang' => 'Ãllítsa be az alapértelmezett nyelvet', + 'Change_user_lang' => 'Ãllítsa be nyelvét', + 'Portal_lang' => 'LanguageCP', + 'Select_lang' => 'Válasszon nyelvet:', + 'Change' => 'Most váltson', + 'Change_default_style' => 'Ãllítsa be a tábla alapértelmezett stílusát', + 'Change_user_style' => 'Ãllítsa be a stílusát', + 'Theme' => 'ThemeCP / StyleCP', + 'Select_theme' => 'Téma / stílus kiválasztása:', + 'Mx_Page' => 'oldal', + 'Mx_Block' => 'Szakasz', + 'Virtual_Create_new' => 'Újat készíteni', + 'Virtual_Create_new_user' => 'Felhasználói oldal', + 'Virtual_Create_new_group' => 'Csoportoldal', + 'Virtual_Create_new_project' => 'Projektoldal', + 'Virtual_Create' => 'Hozz létre most', + 'Virtual_Edit' => 'Frissítse az oldal nevét', + 'Virtual_Delete' => 'Törölje ezt az oldalt', + 'Virtual_Welcome' => 'Ãœdvözöljük', + 'Virtual_Info' => 'Itt te doboz control a saját web oldalon.', + 'Virtual_CP' => 'Page VezérlÅ‘pult', + 'Virtual_Go' => 'Megy', + 'Virtual_Select' => 'Select:', + 'No_items_found' => 'Semmi új a jelentést.', + 'Block_Title' => 'Cím', + 'Block_Info' => 'Információ', + 'Block_Config_updated' => 'Blokk konfigurációs frissítve sikeresen.', + 'Edit' => 'EDIT', + 'Block_Edit' => 'Blokk szerkesztése', + 'Block_Edit_dyn' => 'SzülÅ‘ dinamikus blokk szerkesztése', + 'Block_Edit_sub' => 'SzülÅ‘törésblokk szerkesztése', + 'General_updated_return_settings' => 'Configuration frissítve sikeresen.

    Click %shere%s a tovább.', + 'General_update_error' => 'Nem sikerült\'T frissítés konfiguráció.', + 'Mx_search_site' => 'Webhely', + 'Mx_search_forum' => 'Fórum', + 'Mx_search_kb' => 'Cikkek', + 'Mx_search_pafiledb' => 'Letöltések', + 'Mx_search_google' => 'Google', + 'Mx_new_search' => 'Új keresés', + 'mx_about_title' => 'Az MX-PublisherrÅ‘l', + 'mx_copy_title' => 'MX-kiadói információ', + 'mx_copy_modules_title' => 'Telepített MX-Kiadói modulok', + 'mx_copy_template_title' => 'A stílusról', + 'mx_copy_translation_title' => 'A fordításról', + 'TRANSLATION_INFO_MXBB' => 'MX-Kiadó Fejlesztés Csapat">Angol nyelv egy MX-Kiadó Fejlesztés Csapat', + 'Please_remove_install_contrib' => 'Kérjük biztosítására két a telepíthetÅ‘/ és hozzájárulás/ könyvtárak van hagyni.', +)); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/language/lang_italian/lang_admin.php b/language/lang_italian/lang_admin.php index caf68c6b..b62405c3 100644 --- a/language/lang_italian/lang_admin.php +++ b/language/lang_italian/lang_admin.php @@ -508,7 +508,29 @@ $lang['MXP_Latest_version_info'] = 'The latest available version is MX-Publisher %s. '; $lang['MXP_Current_version_info'] = 'You are running MX-Publisher %s.'; $lang['MXP_Mailing_list_subscribe_reminder'] = 'For the latest information on news and updates to MX-Publisher, why not subscribe to our mailing list?'; - +/* lang_admin_gd_info.php - BEGIN */ +$lang['GD_Title'] = 'GD Info'; +$lang['NO_GD'] = 'No GD'; +$lang['GD_Description'] = 'Retrieve information about the currently installed GD library'; +$lang['GD_Freetype_Support'] = 'Freetype Fonts Support:'; +$lang['GD_Freetype_Linkage'] = 'Freetype Link Type:'; +$lang['GD_T1lib_Support'] = 'T1lib Support:'; +$lang['GD_Gif_Read_Support'] = 'Gif Read Support:'; +$lang['GD_Gif_Create_Support'] = 'Gif Create Support:'; +$lang['GD_Jpg_Support'] = 'Jpg/Jpeg Support:'; +$lang['GD_Png_Support'] = 'Png Support:'; +$lang['GD_Wbmp_Support'] = 'WBMP Support:'; +$lang['GD_XBM_Support'] = 'XBM Support:'; +$lang['GD_WebP_Support'] = 'WebP Support:'; +$lang['GD_Jis_Mapped_Support'] = 'Japanese Font Support:'; +$lang['GD_True'] = 'Yes'; +$lang['GD_False'] = 'No'; +$lang['GD_VERSION'] = 'GD Version:'; +$lang['GD_0'] = 'No GD'; +$lang['GD_1'] = 'GD1'; +$lang['GD_2'] = 'GD2'; +$lang['GD_show_img_no_gd'] = 'Show GIF thumbnails without using GD libraries (full images are loaded and then just shown resized).'; +/* lang_admin_gd_info.php - END */ /* * That's all Folks! * -------------------------------------------------*/ diff --git a/language/lang_italian/lang_main.php b/language/lang_italian/lang_main.php index 7362041f..441ce2bb 100644 --- a/language/lang_italian/lang_main.php +++ b/language/lang_italian/lang_main.php @@ -64,6 +64,13 @@ $lang['Reset'] = 'Azzera'; $lang['Cancel'] = 'Cancella'; $lang['Preview'] = 'Anteprima'; + +$lang['MX_home'] = 'Caza'; +$lang['MX_forum'] = 'Forum'; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; + + + // // Timezones ... for display on each page // @@ -224,6 +231,7 @@ $lang['Block_Info'] = 'Informazione'; $lang['Block_Config_updated'] = 'Configurazione blocco aggiornata correttamente.'; +$lang['Edit'] = 'EDITA'; $lang['Block_Edit'] = 'Edita Blocco'; $lang['Block_Edit_dyn'] = 'Edita blocco dinamico contenitore'; $lang['Block_Edit_sub'] = 'Edita blocco affiancato contenitore'; diff --git a/language/lang_portuguese/index.htm b/language/lang_portuguese/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_portuguese/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_portuguese/lang_admin.php b/language/lang_portuguese/lang_admin.php new file mode 100644 index 00000000..0027c957 --- /dev/null +++ b/language/lang_portuguese/lang_admin.php @@ -0,0 +1,165 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +// setlocale(LC_ALL, "en"); + +// These are displayed in the drop down boxes for advanced +// mode forum auth, try and keep them short! + +$lang['Portal_ALL'] = "ALL"; +$lang['Portal_REG'] = "REG"; +$lang['Portal_PRIVATE'] = "PRIVATE"; +$lang['Portal_MOD'] = "MOD"; +$lang['Portal_ADMIN'] = "ADMIN"; + + +// Configuration +// +$lang['Portal_admin'] = "Portal Administration"; +$lang['Portal_admin_explain'] = "From this panel you can add, delete, edit, re-order and re-synchronise your portal"; + +$lang['Portal_General_Config'] = "Portal Configuration"; +$lang['Portal_Config_explain'] = "The form below will allow you to customize all the general portal options."; +$lang['Portal_General_settings'] = "General Settings"; +$lang['Portal_Name'] = "Portal Name:"; +$lang['Portal_PHPBB_Url'] = "URL Adress for the PHPBB Module :"; + +$lang['Portal_Config_updated'] = "Portal Configuration Updated Successfully"; +$lang['Click_return_portal_config']= "Click %sHere%s to return to the Portal Configuration"; + + +// +// Menu Management +// + +$lang['Menu_admin'] = "Menu Administration"; +$lang['Menu_admin_explain'] = "From this panel you can add, delete, edit, re-order and re-synchronise categories and menu."; + +$lang['Menu_edit_delete_explain'] = "From this panel you can change the menu informations"; +$lang['Menu_settings'] = "Menu Information"; + +$lang['Menu_delete'] = "Delete a Menu"; +$lang['Menu_delete_explain'] = "The form below will allow you to delete a menu information (or category) and decide where you want to put all (sub-menu) it contained. "; + + +$lang['Edit_menu'] = "Edit a menu"; +$lang['Update'] = "Update"; +$lang['Create_menu'] = "Create new menu"; +$lang['Create_category'] = "Create new category"; +$lang['Menu_Config_updated'] = "Menu Configuration Updated Successfully"; +$lang['Menus_updated'] = "Menu and Category information updated successfully"; +$lang['Click_return_menuadmin'] = "Click %sHere%s to return to Menu Administration"; +$lang['Menu_name'] = "Menu Name"; +$lang['Menu_desc'] = "Description "; +$lang['Menu_links'] = 'Web Link '; +$lang['Category'] = "Category "; + +$lang['Edit'] = "Edit"; +$lang['Delete'] = "Delete"; +$lang['Move_up'] = "Move up"; +$lang['Move_down'] = "Move down"; +$lang['Resync'] = "Resync"; + +$lang['Click_return_admin_index'] = "Click %sHere%s to return to Index Administration"; + +// +// Module Management +// + +$lang['Modules'] = "Modules"; + +$lang['Module_admin'] = "Module Administration"; +$lang['Module_Config_explain'] = "The form below will allow you to customize the modules options."; + +$lang['Column_delete'] = "Delete a Column"; + +$lang['Module_delete'] = "Delete a Module"; +$lang['Module_delete_explain'] = "The form below will allow you to delete a Module information (or column) "; + + +$lang['Edit_module'] = "Edit a module"; +$lang['Create_module'] = "Create new Module"; +$lang['Module_Config_updated'] = "Module Configuration Updated Successfully"; +$lang['Module_updated'] = "Module and Column information updated successfully"; +$lang['Click_return_moduleadmin'] = "Click %sHere%s to return to Module Administration"; + +$lang['Column_name'] = "Column Name"; + +$lang['Module_name'] = "Module Name"; +$lang['Module_desc'] = "Description"; +$lang['Module_var_text'] = "Text for the variable block"; +$lang['Module_path'] = "Path"; +$lang['Module_file'] = "File Name"; +$lang['Module_display'] = "Display this module"; +$lang['Create_column'] = "Create new column"; + +$lang['Column'] = "Column"; + +$lang['Edit_Column'] = "Edit a Column"; +$lang['Edit_Column_explain'] = "Use this form to modify a column information."; + +// delete size_column +$lang['Column_Size'] = "Size of the column"; + +// These are displayed in the drop down boxes for advanced +// mode Module auth, try and keep them short! + +$lang['Module_ALL'] = "ALL"; +$lang['Module_REG'] = "REG"; +$lang['Module_PRIVATE'] = "PRIVATE"; +$lang['Module_MOD'] = "MOD"; +$lang['Module_ADMIN'] = "ADMIN"; + +$lang['Auth_Module'] = "Permissions" ; + +$lang['Menu Navigation'] = "Navigation Menu"; +$lang['Modules'] = "Modules"; +$lang['Poll Administration'] = "Poll Administration"; + +$lang['Portal_index'] = "Portal Index"; + +$lang['Module Last Message'] = "Module Last Message Administration"; +$lang['Module News'] = "Module News Administration"; +$lang['Module Weather'] = "Module Weather Administration"; + +$lang['Poll_Settings'] = "Configuration for the module - Poll:"; +$lang['Poll_Display'] = "Which Poll do you want to display?"; + +$lang['Welcome_install'] = "Welcome to MX-Portal Installation"; +$lang['Install_Instruction'] = "Thank you for choosing MX-System. In order to complete this install please fill out the details requested below. Please note PHPBB must already be to install and configure to install MX-portal"; +$lang['Language'] = "Language"; +$lang['Initial_config'] = "Basic Configuration"; +$lang['Install_lang'] = 'Choose Language for Installation'; +$lang['Table_Prefix'] = 'Prefix for tables in database'; +$lang['Installer_Error'] = 'An error has occurred during installation'; +$lang['Install_db_error'] = 'An error occurred trying to update the database'; +$lang['Phpbb_path'] = 'Phpbb path'; +$lang['Phpbb_path_explain'] = 'The path where phpBB2 is installed'; +$lang['Phpbb_url'] = 'Phpbb url'; +$lang['Phpbb_url_explain'] = 'Adresse Web where phpBB2 is installed ( this url is use for the images in the portal'; + +$lang['Install'] = 'Install'; + +$lang['Portal_intalled'] = "Portal installed Successfully"; + +$lang['Update_Old_Version'] = "Update old portal version : "; +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/language/lang_portuguese/lang_main.php b/language/lang_portuguese/lang_main.php new file mode 100644 index 00000000..03611bcc --- /dev/null +++ b/language/lang_portuguese/lang_main.php @@ -0,0 +1,68 @@ + $lang['message'] = "text"; +// +// You should also try to set a locale and a character +// encoding (plus direction). The encoding and direction +// will be sent to the template. The locale may or may +// not work, it's dependent on OS support and the syntax +// varies ... give it your best guess! +// + +//setlocale(LC_ALL, "en"); + +// Menu_nav.php +$lang['Home Page'] = "Home Page"; +$lang['Web Links'] = "Web Links"; +$lang['Announcements'] = "Anúncios"; +$lang['Forum'] = "Fórum"; +$lang['Main Menu'] = "Menu Principal"; +$lang['Module Statistics'] = "Estatísticas"; +$lang['Send a Private message'] = "Enviar Mensagem Privada"; +$lang['Edit your Profile'] = "Editar o seu Perfil"; +$lang['Send a new Ad'] = "Enviar Ad"; +$lang['Submit a Url'] = "Enviar Url"; + +$lang['MX_Home'] = "Home"; +$lang['MX_Forum'] = "Fórum"; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; + +$lang['Portal_lang'] = "Língua"; +$lang['SELECTGUILANG'] = "Selecione A Língua De Relação:"; + +$lang['Change'] = "Mudança agora"; + +$lang['Welcome_Title'] = "Welcome"; +$lang['Welcome_Msg'] = "Welcome Message"; + + +$lang['Theme'] = "Theme"; +$lang['SelectTheme'] = "Selecione O Tema Da Relação:"; + +$lang['Surveys/Polls'] = "Surveys / Polls"; +$lang['Already_voted'] = "Você tem votado já"; +$lang['Click_view_voted'] = "Estale %saqui%s para ver os resultados"; + +$lang['Annonce_sent'] = "O annoncement foi emitido"; +$lang['Annonce_Deleted'] = "O annoncement foi suprimido"; + +$lang['Welcome_msg_send'] = "The welcome message has been sent"; +$lang['Edit_Welcome_msg'] = "Edit your welcome message"; + +$lang['Url_sent'] = "The url has been sent"; +$lang['Url_Deleted'] = "The url has been deleted"; +$lang['Submit Url'] = "Submit Web Link"; + +// +// That's all Folks! +// ------------------------------------------------- + +?> \ No newline at end of file diff --git a/language/lang_punjabi/channel.html b/language/lang_punjabi/channel.html new file mode 100644 index 00000000..825f4447 --- /dev/null +++ b/language/lang_punjabi/channel.html @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/language/lang_punjabi/email/admin_send_email.tpl b/language/lang_punjabi/email/admin_send_email.tpl new file mode 100644 index 00000000..234f61df --- /dev/null +++ b/language/lang_punjabi/email/admin_send_email.tpl @@ -0,0 +1,12 @@ +Charset: iso-8859-1 + +The following is an email sent to you by an administrator of "{SITENAME}". If this message is spam, contains abusive or other comments you find offensive please contact the webmaster of the board at the following address: + +{BOARD_EMAIL} + +Include this full email (particularly the headers). + +Message sent to you follows: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} diff --git a/language/lang_punjabi/email/admin_welcome_inactive_fb4phpbb_light.txt b/language/lang_punjabi/email/admin_welcome_inactive_fb4phpbb_light.txt new file mode 100644 index 00000000..9e7e1e9e --- /dev/null +++ b/language/lang_punjabi/email/admin_welcome_inactive_fb4phpbb_light.txt @@ -0,0 +1,21 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +Please keep this e-mail for your records. Your account information is as follows: + +---------------------------- +Username: {USERNAME} + +Board URL: {U_BOARD} +---------------------------- + +Your account is currently inactive, the administrator of the board will need to activate it before you can log in. You will receive another e-mail when this has occurred. + +Please remember to log in with the Facebook Login button. + +If you close your Facebook account, you can request a new password which will be activated in the same way as this account. + +Thank you for registering. + +{EMAIL_SIG} \ No newline at end of file diff --git a/language/lang_punjabi/email/coppa_welcome_inactive_fb4phpbb_light.txt b/language/lang_punjabi/email/coppa_welcome_inactive_fb4phpbb_light.txt new file mode 100644 index 00000000..1056d3fe --- /dev/null +++ b/language/lang_punjabi/email/coppa_welcome_inactive_fb4phpbb_light.txt @@ -0,0 +1,45 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +In compliance with the COPPA your account is currently inactive. + +Please print this message out and have your parent or guardian sign and date it. Then fax it to: + +{FAX_INFO} + +OR mail it to: + +{MAIL_INFO} + +------------------------------ CUT HERE ------------------------------ +Permission to participate at "{SITENAME}" - {U_BOARD} + +Username: {USERNAME} +Password: {PASSWORD} +E-mail: {EMAIL_ADDRESS} + +I HAVE REVIEWED THE INFORMATION PROVIDED BY MY CHILD AND HEREBY GRANT PERMISSION TO "{SITENAME}" TO STORE THIS INFORMATION. +I UNDERSTAND THIS INFORMATION CAN BE CHANGED AT ANY TIME BY ENTERING A PASSWORD. +I UNDERSTAND THAT I MAY REQUEST FOR THIS INFORMATION TO BE REMOVED FROM "{SITENAME}" AT ANY TIME. + + +Parent or guardian +(print your name here): _____________________ + +(sign here): __________________ + +Date: _______________ + +------------------------------ CUT HERE ------------------------------ + + +Once the administrator has received the above form via fax or regular mail your account will be activated. + +Please login with the Facebook Login button. + +If you close your Facebook account, you can request a new password which will be activated in the same way as this account. + +Thank you for registering. + +{EMAIL_SIG} diff --git a/language/lang_punjabi/email/index.htm b/language/lang_punjabi/email/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_punjabi/email/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_punjabi/email/user_welcome_fb4phpbb_light.txt b/language/lang_punjabi/email/user_welcome_fb4phpbb_light.txt new file mode 100644 index 00000000..c1df7aa2 --- /dev/null +++ b/language/lang_punjabi/email/user_welcome_fb4phpbb_light.txt @@ -0,0 +1,17 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +Please keep this e-mail for your records. Your account information is as follows: + +---------------------------- +Username: {USERNAME} + +Board URL: {U_BOARD} +---------------------------- + +When logging in please use the Facebook Login button. + +Thank you for registering. + +{EMAIL_SIG} \ No newline at end of file diff --git a/language/lang_punjabi/email/user_welcome_inactive_fb4phpbb_light.txt b/language/lang_punjabi/email/user_welcome_inactive_fb4phpbb_light.txt new file mode 100644 index 00000000..8fe99f30 --- /dev/null +++ b/language/lang_punjabi/email/user_welcome_inactive_fb4phpbb_light.txt @@ -0,0 +1,24 @@ +Subject: Welcome to "{SITENAME}" + +{WELCOME_MSG} + +Please keep this e-mail for your records. Your account information is as follows: + +---------------------------- +Username: {USERNAME} + +Board URL: {U_BOARD} +---------------------------- + +Your account is currently inactive. You cannot use it until you visit the following link: + +{U_ACTIVATE} + + +In order to login in please use the facebook Login button. + +If you unlink your account or close your facebook account then you can request a new password. + +Thank you for registering. + +{EMAIL_SIG} \ No newline at end of file diff --git a/language/lang_punjabi/index.htm b/language/lang_punjabi/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_punjabi/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_punjabi/lang_main.php b/language/lang_punjabi/lang_main.php new file mode 100644 index 00000000..26f92338 --- /dev/null +++ b/language/lang_punjabi/lang_main.php @@ -0,0 +1,96 @@ + 'pa', + 'ENCODING' => 'UTF-8', + 'DIRECTION' => 'ltr', + 'LEFT' => 'ਖੱਬੇ', + 'RIGHT' => 'ਸੱਜੇ', + 'DATE_FORMAT' => 'd/M/Y', + 'Page_Not_Authorised' => 'ਅਫਸੋਸ ਹੈ, ਪਰ ਤà©à¨¸à©€à¨‚ ਇਹ ਪੰਨੇ ਤੇ ਅਧਿਕà©à¨°à¨¿à¨¤ ਨਹੀਂ', + 'Execution_Stats' => 'ਸਫ਼ਾ ਤਿਆਰ%s ਸਵਾਲ - ਬਣਾਉਣ ਸਮਾਂ:%s ਸਕਿੰਟ', + 'Redirect_login' => 'ਲਾਗਇਨ ਕਰਨ ਲਈ %ਇੱਥੇ% ਕਲਿੱਕ ਕਰੋ ਤੇ ਕਲਿਕ ਕਰੋ', + 'Show_admin_options' => 'ਪੰਨਾ ਵਿਵਸਥਾਂਵਾਂ ਵੇਖੋ / ਓਹਲੇ ਕਰੋ:', + 'Block_updated_date' => 'ਅੱਪਡੇਟ ਕੀਤਾ', + 'Block_updated_by' => 'ਨਾਲ', + 'Page_updated_date' => 'ਇਹ ਸਫ਼ਾ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ ਸੀ', + 'Page_updated_by' => 'ਨਾਲ', + 'Powered_by' => 'ਦà©à¨†à¨°à¨¾ ਸੰਚਾਲਿਤ', + 'mx_spacer' => 'ਸਪੈਸਰ', + 'Yes' => 'ਹਾਂ', + 'No' => 'ਨਹੀਂ', + 'Link' => 'ਲਿੰਕ', + 'Hidden_block' => 'ਓਹਲੇ ਬਲਾਕ', + 'Hidden_block_explain' => 'ਇਹ ਬਲਾਕ 27 ਲà©à¨•à¨¿à¨† ਹੋਇਆ \'%2 ਸੀ ਅਤੇ ਸਹੀ ਅਨà©à¨®à¨¤à©€à¨†à¨‚ ਸੈਟ ਕਰਦੇ ਹੋਠਸੈੱਟ ਕੀਤੇ ਹਨ.', + 'MX_home' => 'ਘਰ', + 'MX_forum' => 'ਫੋਰਮ', + 'MX_navigation' => 'ਪੰਨੇ ਨੇਵੀਗੇਸ਼ਨ%2 ਸੀ ਉਦਾਹਰਣ. ਫੋਰਮ ਨੇਵੀਗੇਸ਼ਨ%2 ਸੀ ਜਿਵੇਂ ਪਫਿਲਡ ਨੈਵੀਗੇਸ਼ਨ.', + 'Change_default_lang' => 'ਬੋਰਡ ਦੀ ਡਿਫਾਲਟ ਭਾਸ਼ਾ ਸੈੱਟ ਕਰੋ', + 'Change_user_lang' => 'ਆਪਣੀ ਭਾਸ਼ਾ ਸੈਟ ਕਰੋ', + 'Portal_lang' => 'ਭਾਸ਼ਾ ਕੰਟਰੋਲ ਪੈਨਲ', + 'Select_lang' => 'ਭਾਸ਼ਾ ਚà©à¨£à©‹:', + 'Change' => 'ਹà©à¨£à©‡ ਬਦਲੋ', + 'Change_default_style' => 'ਬੋਰਡ ਦੀ ਮੂਲ ਸ਼ੈਲੀ ਸੈਟ ਕਰੋ', + 'Change_user_style' => 'ਆਪਣੀ ਸ਼ੈਲੀ ਸੈੱਟ ਕਰੋ', + 'Theme' => 'ਥੀਮਸੀਪੀ / ਸਟੈਲੀਪ', + 'Select_theme' => 'ਥੀਮ / ਸਟਾਇਲ ਦੀ ਚੋਣ ਕਰੋ:', + 'Mx_Page' => 'ਪੰਨਾ', + 'Mx_Block' => 'ਅਨà©à¨­à¨¾à¨—', + 'Virtual_Create_new' => 'ਨਵਾਂ ਬਣਾਓ', + 'Virtual_Create_new_user' => 'ਯੂਜ਼ਰ ਪੰਨਾ', + 'Virtual_Create_new_group' => 'ਗਰà©à©±à¨ª ਪੇਜ', + 'Virtual_Create_new_project' => 'ਪà©à¨°à©‹à¨œà©ˆà¨•à¨Ÿ ਪੇਜ', + 'Virtual_Create' => 'ਹà©à¨£à©‡ ਬਣਾਉ', + 'Virtual_Edit' => 'ਸਫ਼ਾ ਦਾ ਨਾਮ ਅਪਡੇਟ ਕਰੋ', + 'Virtual_Delete' => 'ਇਸ ਪੰਨੇ ਨੂੰ ਮਿਟਾਓ', + 'Virtual_Welcome' => 'ਸà©à¨†à¨—ਤ ਹੈ', + 'Virtual_Info' => 'ਇੱਥੇ ਤà©à¨¸à©€à¨‚ ਤà©à¨¹à¨¾à¨¡à©€ ਪà©à¨°à¨¾à¨ˆà¨µà©‡à¨Ÿ ਵੈੱਬ ਪੰਨੇ ਨੂੰ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹੋ.', + 'Virtual_CP' => 'ਪੰਨਾ ਕੰਟਰੋਲ ਪੈਨਲ', + 'Virtual_Go' => 'ਜਾਣਾ', + 'Virtual_Select' => 'ਚà©à¨£à©‹:', + 'No_items_found' => 'ਕà©à¨ ਨਵਾਂ ਰਿਪੋਰਟ ਨਹੀਂ', + 'Block_Title' => 'ਟਾਈਟਲ', + 'Block_Info' => 'ਜਾਣਕਾਰੀ', + 'Block_Config_updated' => 'ਬਲਾਕ ਸੰਰਚਨਾ ਸਫਲਤਾਪੂਰਵਕ ਅਪਡੇਟ ਕੀਤੀ.', + 'Edit' => 'ਸੰਪਾਦਿਤ ਕਰੋ', + 'Block_Edit' => 'ਬਲਾਕ ਸੰਪਾਦਿਤ ਕਰੋ', + 'Block_Edit_dyn' => 'ਮਾੜੀ ਡਾਇਨੈਮਿਕ ਬਲਾਕ ਸੰਪਾਦਿਤ ਕਰੋ', + 'Block_Edit_sub' => 'ਮਾਤਾ ਸਪੀਿਟ ਬਲਾਕ ਸੰਪਾਦਿਤ ਕਰੋ', + 'General_updated_return_settings' => 'ਸੰਰਚਨਾ ਅੱਪਡੇਟ ਸਫਲਤਾਪੂਰਵਕ.

    lick %shere%s to ਜਾਰੀ.', + 'General_update_error' => 'ਅਪਡੇਟ ਨਹੀਂ ਕਰ ਸਕਿਆ ਸੰਰਚਨਾ ਨਹੀਂ ਕਰ ਸਕਿਆ.', + 'Mx_search_site' => 'ਸਾਈਟ', + 'Mx_search_forum' => 'ਫੋਰਮ', + 'Mx_search_kb' => 'ਲੇਖ', + 'Mx_search_pafiledb' => 'ਡਾਊਨਲੋਡ', + 'Mx_search_google' => 'ਗੂਗਲ', + 'Mx_new_search' => 'ਨਵੀਂ ਖੋਜ', + 'mx_about_title' => 'à¨à¨®à¨à¨•à¨¸-ਪਬਿਲਸ਼ਰ ਬਾਰੇ', + 'mx_copy_title' => 'à¨à¨®à¨à¨•à¨¸-ਪà©à¨°à¨•à¨¾à¨¸à¨¼à¨• ਜਾਣਕਾਰੀ', + 'mx_copy_modules_title' => 'ਇੰਸਟਾਲ ਕੀਤੇ à¨à¨®à¨à¨•à¨¸-ਪਬਿਲਸ਼ਰ ਮੋਡੀਊਲ', + 'mx_copy_template_title' => 'ਸ਼ੈਲੀ ਬਾਰੇ', + 'mx_copy_translation_title' => 'ਅਨà©à¨µà¨¾à¨¦ ਬਾਰੇ', + 'TRANSLATION_INFO_MXBB' => '">ਇੰਗਲਿਸ਼ ਭਾਸ਼ਾ 3 ਕੇ href="http://mxpcms.sourceforge.net/" ਟਾਰਗਿਟ="_ਬੈਂਕ"%3 ਈà¨à¨®à¨à¨•à¨¸-ਪਕਾਸ਼ਕਾਰ ਵਿਕਾਸ ਟੀਮ', + 'Please_remove_install_contrib' => 'ਕਿਰਪਾ ਕਰ ਕੇ ਯਕੀਨੀ ਬਣਾਓ ਦੋਨਾਂ ਨੂੰ ਇੰਸਟਾਲ/ ਅਤੇ contrib/ ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ.', +)); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/language/lang_romanian/lang_admin.php b/language/lang_romanian/lang_admin.php index aa982e3c..2a21eb5e 100644 --- a/language/lang_romanian/lang_admin.php +++ b/language/lang_romanian/lang_admin.php @@ -657,7 +657,29 @@ $lang['MXP_Latest_version_info'] = 'Ultima veriune disponibilă este MXP %s. '; $lang['MXP_Current_version_info'] = 'Tu ai MXP %s.'; $lang['MXP_Mailing_list_subscribe_reminder'] = 'Pentru ultimile informaÅ£ii de ÅŸtiri ÅŸi actualizări pentru MXP, de ce nu înscriete la lista de mailuri.'; - +/* lang_admin_gd_info.php - BEGIN */ +$lang['GD_Title'] = 'GD Info'; +$lang['NO_GD'] = 'No GD'; +$lang['GD_Description'] = 'Retrieve information about the currently installed GD library'; +$lang['GD_Freetype_Support'] = 'Freetype Fonts Support:'; +$lang['GD_Freetype_Linkage'] = 'Freetype Link Type:'; +$lang['GD_T1lib_Support'] = 'T1lib Support:'; +$lang['GD_Gif_Read_Support'] = 'Gif Read Support:'; +$lang['GD_Gif_Create_Support'] = 'Gif Create Support:'; +$lang['GD_Jpg_Support'] = 'Jpg/Jpeg Support:'; +$lang['GD_Png_Support'] = 'Png Support:'; +$lang['GD_Wbmp_Support'] = 'WBMP Support:'; +$lang['GD_XBM_Support'] = 'XBM Support:'; +$lang['GD_WebP_Support'] = 'WebP Support:'; +$lang['GD_Jis_Mapped_Support'] = 'Japanese Font Support:'; +$lang['GD_True'] = 'Yes'; +$lang['GD_False'] = 'No'; +$lang['GD_VERSION'] = 'GD Version:'; +$lang['GD_0'] = 'No GD'; +$lang['GD_1'] = 'GD1'; +$lang['GD_2'] = 'GD2'; +$lang['GD_show_img_no_gd'] = 'Show GIF thumbnails without using GD libraries (full images are loaded and then just shown resized).'; +/* lang_admin_gd_info.php - END */ $lang['Trans_title'] = 'Translate to your Language'; $lang['Trans_description'] = 'Use Translate Control Panel to translate portal to your language'; $lang['Trans_which_core'] = 'Which Part'; diff --git a/language/lang_romanian/lang_main.php b/language/lang_romanian/lang_main.php index e11a8313..892b9aa9 100644 --- a/language/lang_romanian/lang_main.php +++ b/language/lang_romanian/lang_main.php @@ -1,154 +1,131 @@ $lang['message'] = 'text'; -// -// You should also try to set a locale and a character encoding (plus direction). The encoding and direction -// will be sent to the template. The locale may or may not work, it's dependent on OS support and the syntax -// varies ... give it your best guess! -// - + * + * @package MX-Publisher CMS Core + * @version $Id: lang_main.php,v 1.10 2013/06/28 15:34:32 orynider Exp $ + * @copyright (c) 2002-2006 Mx-Publisher Project Team + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 + * + * Encoding: UTF-8 + * 1 tab = 4 spaces + */ + +if ( !isset($lang) ) +{ + $lang = array(); +} +/* Editor Settings: Please set Tabsize to 4 ;-) */ + +/* The format of this file is: ---> $lang['message'] = 'text'; +/* Specify your language character encoding... [optional] */ setlocale(LC_ALL, 'ro'); -$lang['USER_LANG'] = 'ro'; -$lang['ENCODING'] = 'UTF-8'; -$lang['DIRECTION'] = 'ltr'; -$lang['LEFT'] = 'left'; -$lang['RIGHT'] = 'right'; -$lang['DATE_FORMAT'] = 'd/M/Y'; // This should be changed to the default date format for your language, php date() format - - +$lang = array_merge( $lang, array( // # // // General // -$lang['Page_Not_Authorised'] = 'Ne pare rău, dar nu eÅŸti autorizat să accesezi această pagină.'; -$lang['Execution_Stats'] = 'Pagina a generat %s querie - Timpul generării: %s secunde'; -$lang['Redirect_login'] = 'Click %sAici%s să te logezi.'; -$lang['Show_admin_options'] = 'Arată/Ascunde OpÅ£iunile Admin pe Pagină: '; -$lang['Block_updated_date'] = 'Updatat '; -$lang['Block_updated_by'] = 'de '; -$lang['Page_updated_date'] = 'Pagina actualizată '; -$lang['Page_updated_by'] = 'de '; -$lang['Powered_by'] = 'Powered by '; - -$lang['mx_spacer'] = 'Spacer'; -$lang['Yes'] = 'Da'; -$lang['No'] = 'Nu'; - -$lang['Link'] = 'Legătură'; - -$lang['Hidden_block'] = 'Block ascuns...'; -$lang['Hidden_block_explain'] = 'Acest bloc este \'ascuns\', dar visibil deoarece eÅŸti un admin/moderator.'; - + 'Page_Not_Authorised' => 'Ne pare rău, dar nu eÅŸti autorizat să accesezi această pagină.', + 'Execution_Stats' => 'Pagina a generat %s querie - Timpul generării: %s secunde', + 'Redirect_login' => 'Click %sAici%s să te logezi.', + 'Show_admin_options' => 'Arată/Ascunde OpÅ£iunile Admin pe Pagină:', + 'Block_updated_date' => 'Updatat', + 'Block_updated_by' => 'de', + 'Page_updated_date' => 'Pagina actualizată', + 'Page_updated_by' => 'de', + 'Powered_by' => 'Powered by', + 'mx_spacer' => 'Spacer', + 'Yes' => 'Da', + 'No' => 'Nu', + 'Link' => 'Legătură', + 'Hidden_block' => 'Block ascuns...', + 'Hidden_block_explain' => 'Acest bloc este \'ascuns\', dar visibil deoarece eÅŸti un admin/moderator.', // // Overall Navigation Navigation -// -$lang['MX_home'] = 'Acasă'; -$lang['MX_forum'] = 'Forum'; - +// + 'MX_home' => 'Acasă', + 'MX_forum' => 'Forum', + 'MX_navigation' => 'Pages navigation, eg. forum navigation, like pafiledb navigation.', // // Core Blocks - Language -// -$lang['Change_default_lang'] = 'Setează Limba Implicită'; -$lang['Change_user_lang'] = 'Setează Limba Ta'; -$lang['Portal_lang'] = 'LimbaCP'; -$lang['Select_lang'] = 'Selectează Limba:'; - +// + 'Change_default_lang' => 'Setează Limba Implicită', + 'Change_user_lang' => 'Setează Limba Ta', + 'Portal_lang' => 'LimbaCP', + 'Select_lang' => 'Selectează Limba:', // // Core Blocks - Theme -// -$lang['Change'] = 'Schimbă Acum'; -$lang['Change_default_style'] = 'Setează Silul Implicit'; -$lang['Change_user_style'] = 'Setează Stilul Tău'; -$lang['Theme'] = 'CP Temă/Stil'; // Blocktitle -$lang['SelectTheme'] = 'Selectează Tema/Stilul:'; - +// + 'Change' => 'Schimbă Acum', + 'Change_default_style' => 'Setează Silul Implicit', + 'Change_user_style' => 'Setează Stilul Tău', + 'Theme' => 'CP Temă/Stil', + 'Select_theme' => 'Selectează Temă/Stil', // // Core Blocks - Search -// -$lang['Mx_Page'] = 'Pagină'; -$lang['Mx_Block'] = 'SecÅ£iune'; - +// + 'Mx_Page' => 'Pagină', + 'Mx_Block' => 'SecÅ£iune', +// +// Core Blocks - Virtual +// + 'Virtual_Create_new' => 'Creează Nou', + 'Virtual_Create_new_user' => 'Pagină Utilizator', + 'Virtual_Create_new_group' => 'Pagină Grup', + 'Virtual_Create_new_project' => 'Pagină Proiect', + 'Virtual_Create' => 'Creează Nou', + 'Virtual_Edit' => 'Editează Pagină Nouă', + 'Virtual_Delete' => 'Șterge Pagina Aceasta', + 'Virtual_Welcome' => 'Fii Binevenit', + 'Virtual_Info' => 'Unde PoÈ›i controla Pagina ta Virtuală', + 'Virtual_CP' => 'Panou de Control Pagină', + 'Virtual_Go' => 'Mergi', + 'Virtual_Select' => 'Selectare:', // // Core Blocks - Site Log (and many last 'item' blocks) -// -$lang['No_items_found'] = 'Nimic nou de raportat. '; - +// + 'No_items_found' => 'Nimic nou de raportat.', // // BlockCP -// -$lang['Block_Title'] = 'Titlu'; -$lang['Block_Info'] = 'InformaÅ£ii'; - -$lang['Block_Config_updated'] = 'ConfiguraÅ£ia blocului actualizată cu succes'; -$lang['Block_Edit'] = 'Editează Bloc'; -$lang['Block_Edit_dyn'] = 'Editează Blocul părinte dinamic'; -$lang['Block_Edit_sub'] = 'Editează Blocul părinte împărÅ£it'; - - -$lang['General_updated_return_settings'] = 'ConfiguraÅ£ia upgradată cu succes...

    Click %saici%s pentru a continua.'; // %s petru parametrii URI - NU IL SCOATE -$lang['General_update_error'] = 'Configuraţia nu se poate upgrada...'; - +// + 'Block_Title' => 'Titlu', + 'Block_Info' => 'Informaţii', + 'Block_Config_updated' => 'Configuraţia blocului actualizată cu succes', + 'Edit' => 'EDITARE', + 'Block_Edit' => 'Editează Bloc', + 'Block_Edit_dyn' => 'Editează Blocul părinte dinamic', + 'Block_Edit_sub' => 'Editează Blocul părinte împărţit', + 'General_updated_return_settings' => 'Configuraţia upgradată cu succes...

    Click %saici%s pentru a continua.', + 'General_update_error' => 'ConfiguraÅ£ia nu se poate upgrada...', // // Header -// -$lang['Mx_search_site'] = 'Site'; -$lang['Mx_search_forum'] = 'Forum'; -$lang['Mx_search_kb'] = 'Articole'; -$lang['Mx_search_pafiledb'] = 'Download-uri'; -$lang['Mx_search_google'] = 'Google'; -$lang['Mx_new_search'] = 'Nouă Căutare'; - - +// + 'Mx_search_site' => 'Site', + 'Mx_search_forum' => 'Forum', + 'Mx_search_kb' => 'Articole', + 'Mx_search_pafiledb' => 'Download-uri', + 'Mx_search_google' => 'Google', + 'Mx_new_search' => 'Nouă Căutare', // // Copyrights page -// -$lang['mx_about_title'] = 'Despre Mx-Publisher CMS'; -$lang['mx_copy_title'] = 'Mx-Publisher :: InformaÅ£ii'; -$lang['mx_copy_modules_title'] = 'Module MXP Instalate'; -$lang['mx_copy_template_title'] = 'Despre stil'; -$lang['mx_copy_translation_title'] = 'Despre traducere'; - +// + 'mx_about_title' => 'Despre Mx-Publisher CMS', + 'mx_copy_title' => 'Mx-Publisher :: InformaÅ£ii', + 'mx_copy_modules_title' => 'Module MXP Instalate', + 'mx_copy_template_title' => 'Despre stil', + 'mx_copy_translation_title' => 'Despre traducere', + // This is optional, if you would like a _SHORT_ message output // along with our copyright message indicating you are the translator // please add it here. -$lang['TRANSLATION_INFO_MXBB'] = 'Traducerea în Limba Română de FlorinCB'; + 'TRANSLATION_INFO_MXBB' => 'Romanian Language by MX-Publisher Development Team', // // Installation -// -$lang['Please_remove_install_contrib'] = 'Te rog asigură-te că amândouă directoarele install/ ÅŸi contrib/ sunt ÅŸterse'; - -// -// Multilangual page titles -// - To have multilangual page titles, add lang keys 'pagetitle_PAGE_TITLE' below -// - This lang key replaces the page title (PAGE_TITLE) for the page given in the adminCP -// -//$lang['pagetitle_NameOfFirstPage'] = 'Whatever one'; -//$lang['pagetitle_NameOfSecondPage'] = 'Whatever two'; +// + 'Please_remove_install_contrib' => 'Te rog asigură-te că amândouă directoarele install/ ÅŸi contrib/ sunt ÅŸterse', +)); // -// Multilangual block titles -// - To have multilangual block titles, add lang keys 'blocktitle_BLOCK_TITLE' below -// - This lang key replaces the block title (BLOCK_TITLE) for the block given in the adminCP/blockCP -// -//$lang['blocktitle_NameOfFirstPage'] = 'Whatever one'; -//$lang['blocktitle_NameOfSecondPage'] = 'Whatever two'; - -// -// Asta e tot lume! -// -// Translated from english to romanian by OryNider -// orynider@rdslink.ro // http://mx-publisher.com/ -// (diacritics) +// That's all Folks! // ------------------------------------------------- - ?> \ No newline at end of file diff --git a/language/lang_romanian_ansi/lang_main.php b/language/lang_romanian_ansi/lang_main.php index d791b14f..d504c41c 100644 --- a/language/lang_romanian_ansi/lang_main.php +++ b/language/lang_romanian_ansi/lang_main.php @@ -51,6 +51,7 @@ // $lang['MX_home'] = 'Acasã'; $lang['MX_forum'] = 'Forum'; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; // // Core Blocks - Language @@ -87,6 +88,7 @@ $lang['Block_Info'] = 'Informaþii'; $lang['Block_Config_updated'] = 'Configuraþia blocului actualizatã cu succes'; +$lang['Edit'] = 'EDITARE'; $lang['Block_Edit'] = 'Editeazã Bloc'; $lang['Block_Edit_dyn'] = 'Editeazã Blocul pãrinte dinamic'; $lang['Block_Edit_sub'] = 'Editeazã Blocul pãrinte împãrþit'; diff --git a/language/lang_romanian_no_diacritics/lang_main.php b/language/lang_romanian_no_diacritics/lang_main.php index 589c3a69..13e71fae 100644 --- a/language/lang_romanian_no_diacritics/lang_main.php +++ b/language/lang_romanian_no_diacritics/lang_main.php @@ -51,6 +51,7 @@ // $lang['MX_home'] = 'Acasa'; $lang['MX_forum'] = 'Forum'; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; // // Core Blocks - Language @@ -87,6 +88,7 @@ $lang['Block_Info'] = 'Informatii'; $lang['Block_Config_updated'] = 'Configuratia blocului actualizata cu succes'; +$lang['Edit'] = 'EDITARE'; $lang['Block_Edit'] = 'Editeaza Bloc'; $lang['Block_Edit_dyn'] = 'Editeaza Blocul parinte dinamic'; $lang['Block_Edit_sub'] = 'Editeaza Blocul parinte impartit'; diff --git a/language/lang_russian/index.htm b/language/lang_russian/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_russian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_russian/lang_main.php b/language/lang_russian/lang_main.php new file mode 100644 index 00000000..9cc8d441 --- /dev/null +++ b/language/lang_russian/lang_main.php @@ -0,0 +1,96 @@ + 'ru', + 'ENCODING' => 'UTF-8,', + 'DIRECTION' => 'л', + 'LEFT' => 'налеÌво', + 'RIGHT' => 'напраÌво', + 'DATE_FORMAT' => 'д/M/Y', + 'Page_Not_Authorised' => 'Извините, , но вы ÑвлÑÑŽÑ‚ÑÑ Ð½Ðµ авторизованным к доÑтупу Ñтой Ñтранице.', + 'Execution_Stats' => 'Сгенерированные Ñтраницы%s запроÑов - Ð’Ñ€ÐµÐ¼Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸:%s Ñекунд', + 'Redirect_login' => 'Ðажмите кнопку %shere%s до логина.', + 'Show_admin_options' => 'Показать / Ñкрыть параметры админиÑтратора Ñтраницы:', + 'Block_updated_date' => 'Обновлено', + 'Block_updated_by' => 'на', + 'Page_updated_date' => 'Эта Ñтраница была обновлена', + 'Page_updated_by' => 'на', + 'Powered_by' => 'ПитатьÑÑ Ð¾Ñ‚', + 'mx_spacer' => 'раÑпорка', + 'Yes' => 'да', + 'No' => 'нет', + 'Link' => 'СÑылка', + 'Hidden_block' => 'Скрытый блок', + 'Hidden_block_explain' => 'Это блок в \'hidden\', а видимый до Ð²Ð°Ñ , так как вы у ÑобÑтвенные Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° набор.', + 'MX_home' => 'ГлавнаÑ', + 'MX_forum' => 'Форум', + 'MX_navigation' => 'Страницы навигациÑ, например. Форум навигациÑ, как pafiledb навигациÑ.', + 'Change_default_lang' => 'ÐаÑтройка Ñзыка по умолчанию Ð´Ð»Ñ Ð¡Ð¾Ð²ÐµÑ‚Ð°', + 'Change_user_lang' => 'Задайте Ñвой Ñзык', + 'Portal_lang' => 'LanguageCP', + 'Select_lang' => 'Выберите Ñзык:', + 'Change' => 'Изменить ÑейчаÑ', + 'Change_default_style' => 'ÐаÑтройка ÑÑ‚Ð¸Ð»Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð¡Ð¾Ð²ÐµÑ‚Ð°', + 'Change_user_style' => 'УÑтановить Ñтиль', + 'Theme' => 'ThemeCP / StyleCP', + 'Select_theme' => 'Выберите тему / Ñтиль:', + 'Mx_Page' => 'Ñтраница', + 'Mx_Block' => 'Раздел', + 'Virtual_Create_new' => 'Создавать новое', + 'Virtual_Create_new_user' => 'Страница пользователÑ', + 'Virtual_Create_new_group' => 'Страница группы', + 'Virtual_Create_new_project' => 'Страница проекта', + 'Virtual_Create' => 'Создать ÑейчаÑ', + 'Virtual_Edit' => 'Обновить название Ñтраницы', + 'Virtual_Delete' => 'Удалить Ñту Ñтраницу', + 'Virtual_Welcome' => 'Добро пожаловать', + 'Virtual_Info' => 'ЗдеÑÑŒ вы может управление ваш чаÑтный Интернет Ñтраница.', + 'Virtual_CP' => 'Панель ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñтраницами', + 'Virtual_Go' => 'Идти', + 'Virtual_Select' => 'Выбор:', + 'No_items_found' => 'Ðичего новый Ñообщить.', + 'Block_Title' => 'заглавие', + 'Block_Info' => 'ИнформациÑ', + 'Block_Config_updated' => 'Блок конфигурации обновленный уÑпешно.', + 'Edit' => 'РЕДÐКТИРОВÐТЬ', + 'Block_Edit' => 'Изменить блок', + 'Block_Edit_dyn' => 'Изменить родительÑкий динамичеÑкий блок', + 'Block_Edit_sub' => 'Изменить родительÑкий блок разделениÑ', + 'General_updated_return_settings' => 'ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ‹Ð¹ уÑпешно.

    Click %shere%s до продолжить.', + 'General_update_error' => '\'Ñ‚ не мог обновление конфигурации.', + 'Mx_search_site' => 'Ñайт', + 'Mx_search_forum' => 'Форум', + 'Mx_search_kb' => 'Ñтатьи', + 'Mx_search_pafiledb' => 'Загрузки', + 'Mx_search_google' => 'Google', + 'Mx_new_search' => 'Ðовый поиÑк', + 'mx_about_title' => 'О MX-Publisher', + 'mx_copy_title' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ MX-Publisher', + 'mx_copy_modules_title' => 'УÑтановленные модули MX-Publisher', + 'mx_copy_template_title' => 'О Ñтиле', + 'mx_copy_translation_title' => 'О переводе', + 'TRANSLATION_INFO_MXBB' => 'Russian Language by MX-Publisher Development Team', + 'Please_remove_install_contrib' => 'ПожалуйÑта обеÑпечить и кнопки уÑтановите/ и вно/ каталоги будут удалены.', +)); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/language/lang_spanish/index.htm b/language/lang_spanish/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_spanish/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_spanish/lang_admin.php b/language/lang_spanish/lang_admin.php new file mode 100644 index 00000000..21717dfd --- /dev/null +++ b/language/lang_spanish/lang_admin.php @@ -0,0 +1,307 @@ + $lang["message"] = "text"; +// +// Specify your language character encoding... [optional] +// +// setlocale(LC_ALL, "en"); + +// +// Configuration +// + + $lang['Portal_admin'] = "Administración del Portal"; + $lang['Portal_admin_explain'] = "Use esta forma para modificar tu portal"; + $lang['Portal_General_Config'] = "Configuración del Portal"; + $lang['Portal_General_settings'] = "Configuraciones Generales"; + $lang['Portal_General_config_info'] = "Información General de la Configuración del Portal"; + $lang['Portal_General_config_info_explain'] = "Información generada de la instalación del archivo config.php (no editar)"; + $lang['Portal_Name'] = "Nombre del Portal:"; + $lang['Portal_PHPBB_Url'] = "URL a la instalación del PHPBB:"; + $lang['Portal_Url'] = "URL al Mx Portal:"; + $lang['Portal_Config_updated'] = "Configuración del Portal Actualizada Exitósamente"; + $lang['Click_return_portal_config'] = "Presiona %sHere%s para regresar a la Configuración del Portal"; + + // +// Menu Management +// + + $lang['Menu_admin'] = "Administración del Menú"; + $lang['Menu_admin_explain'] = "Usa esta forma para modificar tu menú"; + $lang['Menu_edit_delete_explain'] = "Usa esta forma para modificar tu menú"; + $lang['Menu_settings'] = "Información del Menú"; + $lang['Menu_delete'] = "Borrar un Menú"; + $lang['Menu_delete_explain'] = "Usa esta forma para borrar (y/o mover) una categoría y sus subelemento(s)"; + $lang['Edit_Menu'] = "Editar un Menú"; + $lang['Update'] = "Actualizar"; + $lang['Create_Menu'] = "Agregar nuevo Menú"; + $lang['Create_category'] = "Agregar nueva categoria"; + $lang['Menu_Config_updated'] = "Configuración del Menú Actualizada exitósamente"; + $lang['Menus_updated'] = "Información del Menú y Categoria Actualizada exitósamente"; + $lang['Click_return_Menuadmin'] = "Presiona %sHere%s para regresar a la Administración del Menú"; + $lang['Menu_name'] = "Nombre del Menú"; + $lang['Menu_icon'] = "Icono del Menú"; + $lang['Menu_desc'] = "Descripción "; + $lang['Edit'] = "Editar"; + $lang['Delete'] = "Borrar"; + $lang['Move_up'] = "Mover hacia arriba"; + $lang['Move_down'] = "Mover hacia abajo"; + $lang['Resync'] = "Resincronizar"; + $lang['Click_return_admin_index'] = "Presiona %sHere%s para regresar a la Administración del Indice"; + +// +// Module Management +// + + $lang['Module'] = "Módulo"; + $lang['Module_admin'] = "Administración de Módulo"; + $lang['Module_admin_explain'] = "Usa esta forma para modificar los módulos"; + $lang['Column_delete'] = "Borrar una Columna"; + $lang['Module_delete'] = "Borrar un Modulo"; + $lang['Module_delete_explain'] = "Usa esta forma para borrar un Módulo (o función)"; + $lang['Edit_module'] = "Editar un Módulo"; + $lang['Create_module'] = "Agregar un Módulo"; + $lang['Module_Config_updated'] = "Configuración del Módulo Actualizado exitósamente"; + $lang['Module_updated'] = "Información del Módulo Actualizado exitósamente"; + $lang['Click_return_module_admin'] = "Presiona %sHere%s para regresar a la Administración del Módulo"; + $lang['Column_name'] = "Nombre de Columna"; + $lang['Module_name'] = "Nombre de Módulo"; + $lang['Module_desc'] = "Descripción"; + $lang['Module_path'] = "Path"; + $lang['Create_column'] = "Agregar nueva columna"; + $lang['Column'] = "Columna"; + $lang['Edit_Column'] = "Editar una Columna"; + $lang['Edit_Column_explain'] = "Usa esta forma para modificar una columna"; + $lang['Column_Size'] = "Tamaño de la columna"; + +// +// These are displayed in the drop down boxes for advanced +// mode Module auth, try and keep them short! +// + + $lang['Menu_Navigation'] = "Menú de Navegación"; + $lang['Modules'] = "Módulos"; + $lang['Portal_index'] = "Indice del Portal"; + $lang['Poll_Display'] = "Cual Poll quieres visualizar?"; + $lang['Meta_admin'] = "Administración de Meta Tags"; + $lang['Mega_admin_explain'] = "Usa esta forma para modificar tus Meta tags"; + $lang['Meta_Title'] = "Título"; + $lang['Meta_Author'] = "Autor"; + $lang['Meta_Copyright'] = "Copyright"; + $lang['Meta_Keywords'] = "Palabras clave"; + $lang['Meta_Keywords_explain'] = "(lista separada por comas)"; + $lang['Meta_Description'] = "Descripción"; + $lang['Meta_Language'] = "Código del lenguaje"; + $lang['Meta_Rating'] = "Rating"; + $lang['Meta_Robots'] = "Robots"; + $lang['Meta_Pragma'] = "Pragma no-cache"; + $lang['Meta_Bookmark_icon'] = "Icono de Favoritos"; + $lang['Meta_Bookmark_explain'] = "(locaciones relativas)"; + $lang['Meta_HTITLE'] = "Configuraciones extras del encabezado"; + $lang['Create_block'] = "Crear nuevo Bloque"; + $lang['Block_delete'] = "Borrar un Bloque"; + $lang['Block_delete_explain'] = "Usa esta forma para borrar un Bloque (o columna)"; + $lang['Block'] = "Bloque"; + $lang['Block_title'] = "Título"; + $lang['Block_desc'] = "Descripción"; + $lang['Add_Block'] = "Agregar Bloque"; + $lang['Auth_Block'] = "Permisos"; + $lang['AUTH_ALL'] = "TODOS"; + $lang['AUTH_REG'] = "REG"; + $lang['AUTH_PRIVATE'] = "PRIVADOS"; + $lang['AUTH_MOD'] = "MOD"; + $lang['AUTH_ADMIN'] = "ADMIN"; + $lang['AUTH_ANONYMOUS'] = "ANONIMOS"; + $lang['Function'] = "Funcción"; + $lang['Settings'] = "Configuraciones"; + $lang['Save_Settings'] = "Guardar Configuraciones"; + $lang['announce_nbr_display'] = "Número de mensajes a mostrar (max)"; + $lang['announce_nbr_days'] = "Número de Días para mostrar los Mensajes"; + $lang['announce_img'] = "Imágen de Anuncios"; + $lang['announce_img_sticky'] = "Imágen de Post it"; + $lang['announce_img_normal'] = "Imágen de Mensaje Normal"; + $lang['announce_img_global'] = "Imágen de Anuncio Global"; + $lang['announce_display'] = "Muestra en este Módulo el Anuncio "; + $lang['announce_display_sticky'] = "Muestra en este Módulo el Post it "; + $lang['announce_display_normal'] = "Muestra en este Módulo el mensaje "; + $lang['announce_display_global'] = "Muestra en este Módulo el anuncio global "; + $lang['announce_forum'] = "Fuente de los Foros
    Podrías hacer múltiples selecciones
    * Si ninguno es seleccionado, todos los foros autorizados serán visibles"; + $lang['poll_forum'] = "Fuente de los Foros
    Podrías hacer múltiples selecciones
    * Si ninguno es seleccionado, todos los foros autorizados serán visibles"; + $lang['Function_admin'] = "Administración de Funciones"; + $lang['Function_admin_explain'] = "Cada módulo tiene una o más funciones. Usa esta forma para editar, agregar, o borrar una función"; + $lang['Function_name'] = "Nombre de Función"; + $lang['Function_desc'] = "Descripción"; + $lang['Function_file'] = "Archivo ( Script ) "; + $lang['Create_function'] = "Agregar nueva Función"; + $lang['Parameter_name'] = "Nombre "; + $lang['Parameter_desc'] = "Descripción"; + $lang['Parameter_type'] = "Tipo"; + $lang['Parameter_default'] = "Valor por Default"; + $lang['import_module_pack'] = "Instalar un Módulo"; + $lang['import_module_pack_explain'] = "Esto agregará un módulo al portal. Asegurese que el paquete del módulo este cargado a la carpeta /modules... y use la versión más actual de módulos!"; + $lang['upgrade_module_pack'] = "Actualizar Módulos"; + $lang['upgrade_module_pack_explain'] = "Esto actualizará tus módulos. Asegurese leer el documento module antes de proceder, o podría correr el riesgo de perder datos del módulo."; + $lang['export_module_pack'] = "Exportar Módulo"; + $lang['Export_Module'] = "Seleccionar un módulo:"; + $lang['export_module_pack_explain'] = "Esto exportará un módulo de archivo *.pak. Sólamente recomendado para escritores de módulos..."; + $lang['Not_Specified'] = "No Especificado"; + $lang['Page'] = "Página"; + $lang['Add_Page'] = "Agregar nueva página"; + $lang['Block_admin'] = "Administración de Bloques"; + $lang['Block_admin_explain'] = "Use esta forma para agregar, borrar y cambiar la configuración de cada bloque."; + $lang['Module_include_admin'] = "Incluir este módulo en Administrador del Menu de Navegación"; + $lang['Translation_Tools'] = "Herramientas de Traducción"; + $lang['Create_parameter'] = "Agregar nuevo Parámetro"; + $lang['Parameter_admin'] = "Administración de Parámetros"; + $lang['Parameter_admin_explain'] = "Listar todos los parámetros para esta función"; + $lang['Parameter_id'] = "Id"; + $lang['Parameter_function'] = "Función"; + $lang['Preview_portal'] = "Preliminar del Portal"; + $lang['Page_admin'] = "Página de Administración"; + $lang['Page_Config_updated'] = "Configuración de Pagina Actulizada Exitosamente"; + $lang['Page_updated'] = "Información de Página y Columna actualizadas exitosamente"; + $lang['Click_return_page_admin'] = "Presiona %sHere%s para regresar a la Página de Administración"; + + $lang['Module_delete_db'] = "Ahora este módulo esta borrado del portal, pero las tablas de la base de datos de este modulo siguen vigentes. Quiere eliminar definitivamente cualquier tabla relacionada del módulo. Advertencia: Eliminará todos los datos. Esto no deberá hacerse si planea actualizar o reinstalar el módulo."; + $lang['Click_module_delete_db_yes'] = "Presiona %sHere%s para eliminar todas las tablas de la base de datos permanentemente"; + + +// +// Install Process +// + + $lang['Initial_config'] = "Configuración Básica"; + $lang['DB_config'] = "Configuración Base de Datos"; + $lang['Admin_config'] = "Configuración del Administrador"; + $lang['continue_upgrade'] = "Una vez que ha bajado el archivo config a su computadora usted podría presionar el botón 'Continue Upgrade' debajo para continuar con el proceso de actualización. Por favor espere hasta que el archivo config termine el proceso de actualización."; + $lang['upgrade_submit'] = "Continuar Actualización"; + $lang['Installer_Error'] = "Un error ocurrió durante la intalacion"; + $lang['Previous_Install'] = "Una instalación anterior ha sido detectada"; + $lang['Install_db_error'] = "Un error ocurrio al tratar de acrualizar la base de datos"; + $lang['Re_install'] = "Su instalación previa sigue aún activa.

    Si desea reinstalar MX-Portal debe presionar el botón Yes debajo. Por favor tenga en cuenta que al hacerlo destruirá todos los datos existentes, ningún respaldo será hecho! El nombre de usuario y password del administrador username and password que ha utilizado para entrar a la pizarra serán re-creados después de la re-instalación, ninguna otra configuración será retenida.

    Analícelo cuidadosamente antes de proceder!"; + $lang['Start_Install'] = "Comienze Instalación de MX"; + $lang['Finish_Install'] = "Omitir Instalación de MX"; + $lang['Default_lang'] = "Lenguaje predeterminado de la pizarra"; + $lang['DB_Host'] = "Base de Datos del Sevidor Hostname/DSN"; + $lang['DB_Name'] = "Nombre de la Base de Datos"; + $lang['DB_Username'] = "Usuario de Base de Datos"; + $lang['DB_Password'] = "Password de Base de Datos"; + $lang['Database'] = "Su Base de Datos"; + $lang['Install_lang'] = "Escoja lenguaje de la Instalación"; + $lang['dbms'] = "Tipo de Base de Datos"; + $lang['Table_Prefix'] = "Prefijo de PhpBB en Base de Datos"; + $lang['MX_Table_Prefix'] = "Prefijo de MX-Portal en Base de Datos"; + $lang['Admin_Username'] = "Nombre de Usuario de Administrador en el Portal"; + $lang['Admin_Password'] = "Password de Administrador en el Portal"; + $lang['Admin_Password_confirm'] = "Password de Administrador en el Porta [Confirmar]"; + $lang['Inst_Step_2'] = "En este punto la instalación básica esta completa. Ahora será llevado a una pantalla que le perimitirá administrar su nueva instalación. Asegurese por favor de checar las configuraciones del Portal y haga los cambios requeridos. Gracias por elegir MX-Portal."; + $lang['Unwriteable_config'] = "Su archivo config (config.php) esta como no-escitura en este momento.
    Una copia del archivo config será bajada cuando presiones el botón de abajo.
    Deberá subir este archivo en el mismo directorio raíz del MX.
    Una vez relizado esto agregue las tablas manualmente en la base de datos usando el mx_db_install.php script. Necesitará agregar las rutas correctas en la tabla table mx_portal de la base de datos usando la herramienta de su preferencia para base de datos.
    Después, ingrese usando su nombre y password de administrador para entrar a su Portal/foro.
    Gracias por elegir MX Portal."; + $lang['Download_config'] = "Bajar Config"; + $lang['ftp_choose'] = "Escoja método para bajar"; + $lang['ftp_option'] = "
    Desde que las extensiones FTP estan habilitadas en ests versión de PHP deberán ser escogidas las opciones de tratar automaticamente el ftp para que sea instalado el archivo config en su lugar."; + $lang['ftp_instructs'] = "Ha escogido que ftp instale el archivo de la cuenta que contiene MX-Portal automaticamente. Por favor ingrese la informacion abajo para facilitar este proceso. Note que la ruta FTP deberá ser la ruta exacta via ftp para su instalación de phpBB2 como si lo estuviera haciendo de un cliente ftp."; + $lang['ftp_info'] = "Ingrese su información FTP"; + $lang['Attempt_ftp'] = "Tratando de hacer ftp el archivo config en su lugar"; + $lang['Send_file'] = "Sólamente envieme el archivo a mí y lo haré manualmente con mi ftp"; + $lang['ftp_path'] = "Ruta FTP a MX-Portal"; + $lang['ftp_username'] = "Su Nombre de usuario FTP"; + $lang['ftp_password'] = "Su Password FTP"; + $lang['Transfer_config'] = "Comenzar tranferencia"; + $lang['NoFTP_config'] = "El intento de el archivo config en ftp de instalarlo en su lugar ha fallado. Por favor baje el archivo config y hagalo manualmente con su FTP."; + $lang['Install'] = "Instalar"; + $lang['Upgrade'] = "Actualizar"; + $lang['Install_Method'] = "Escoja su método de instalación."; + $lang['Install_No_Ext'] = "La configuración de su php de su servidor no soporta el tipo de base de datos que escogió."; + $lang['Install_No_PCRE'] = "MX-System requiere Perl-Compatible Regular Expressions Module para php la cual la configuración php parece no ser soportada!"; + $lang['Phpbb_path'] = "Phpbb ruta relativa"; + $lang['Phpbb_path_explain'] = "Phpbb ruta relativa, ej /phpbb2/ o ../phpbb2/
    vea que las diagonales '/', son importantes"; + $lang['Phpbb_url'] = "Completa PHPBB URL"; + $lang['Phpbb_url_explain'] = "Completa PHPBB URL, por ejemplo
    http://www.midominio.com/phpbb2/"; + $lang['Portal_url'] = "Completo Portal URL"; + $lang['Portal_url_explain'] = "Completo Portal URL, por ejemplo
    http://www.midominio.com/"; + $lang['Portal_intalled'] = "Portal instalado exitosamente :-)"; + $lang['Update_Old_Version'] = "Actualiar de anteriores versiones del portal: "; + $lang['Re_install_mx'] = "Su instalación previa sigue aún activa.

    Si desea re-instalar el MX-Portal deberá presionar el botón Yes button degajo. Por favor tenga en cuenta que hacer esto destruira todos los datos - ningún respaldo será hecho! El nombre de usuario y password del administrador username and password que ha utilizado para entrar a la pizarra serán re-creados después de la re-instalación, ninguna otra configuración será retenida.

    Analícelo cuidadosamente antes de proceder!"; + $lang['Inst_Step_0'] = "Gracias por elegir MX-System Portal. Para completar esta instalación por favor llene los detalles de agajo. Tome en cuenta que el PHPBB debe estar actualmente intalado y configurado. El Portal no trabajará por sí mismo."; + $lang['Welcome_install'] = "Bienvenido a la Guía de Instalación de MX-Portal"; + $lang['Install_Instruction'] = "Gracias por elegir MX-System Portal. Para completar esta instalación por favor llene los detalles de agajo. Tome en cuenta que el PHPBB debe estar actualmente intalado y configurado. El Portal no trabajará por sí mismo."; + $lang['Language'] = "Lenguaje"; + +// +// New for v. 2.704 +// + + $lang['Page_Id'] = "ID de Página"; + $lang['Page_icon'] = "Icono de Página
    - para ser usado en la adminCP solamente, ej. icon_home.gif (predeterminado)"; + $lang['Page_header'] = "Archivo de encabezado de página
    - ej. overall_header.php (predet.), overall_noheader.php (no encabezado) o archivo de encabezado de usuario."; + $lang['Auth_Page'] = "Permisos"; + + $lang['Cache_dir_write_protect'] = "Su directorio cache esta protegido contra escritura, no se puede generar el archivo cache"; + $lang['Cache_generate'] = "Su archivo cache esta generado"; + $lang['Cache_submit'] = "generar archivo cache?"; + $lang['Cache_explain'] = "Con esta opción puede generar archivos xml (archivos cache) con la configuración del portal. Estos archivos permiten reducir el número de entradas de la base de datos y mejoran el performance del portal. Por el momento esta opción no es automática, Sin embargo deberas re-generar el archivo cache después de cada configuración del portal, de otra manera las actualizaciones no estarán activas."; + + +// +// New for v. 2.705 +// + +$lang['install_phpbbdir_notgiven'] = 'Deberá especificar una ruta relativa a tu instalación phpbb existente.'; +$lang['install_phpbbdir_missing'] = 'La ruta relativa phpbb no existe.'; +$lang['install_pathes_equal'] = 'La ruta phpbb y la ruta MX-System son iguales. Necesitas instalar MX-System en otro directorio diferente a phpbb.'; + +// +// New for v. 2.706 +// + +$lang['MX_Portal'] = 'MX-Portal'; +$lang['MX_Modules'] = 'MX-Modules'; +$lang['Phpbb'] = 'phpBB'; + +// +// New for v. 2.706 +// + +$lang['Top_phpbb_links'] = "Mostrar enlaces de encabezado phpbb
    - nuevos/temas no leídos, etc en la Página principal del Portal"; +$lang['Auth_Page_group'] = "-> Grupo PRIVADO"; + +// New for v. 2.71 +$lang['Error_no_db_install'] = "Error: El archivo db_install.php no existe. Verifique y trate de nuevo..."; +$lang['Error_no_db_uninstall'] = "Error: El archivo db_uninstall.php no existe o el desinstalador no es soportado por este módulo. Verifique y trate de nuevo..."; +$lang['Error_no_db_upgrade'] = "Error: El archivo db_upgrade.php no existe o la actualización no es soportada por este módulo. Verifique y trate de nuevo..."; +$lang['Error_module_installed'] = "Error: Este módulo ya está instalado! Por favor primero borre el módulo o actualize el módulo."; + +$lang['Menu_links'] = "Menú URL
    - Enlace a una página externa"; +$lang['Menu_page'] = "Menú Page
    - Enlace a una página interna del portal"; +$lang['Menu_block'] = "Menú Block
    - Enlace a un bloque mx especifico"; +$lang['Menu_function'] = "Menú Function
    - Enlace a una función mx especifica"; +$lang['Menu_action_title'] = "Menú action:
    (Escoja una de estas 4 opciones debajo. Las opciones de abajo ya elegidas serán ignoradas) "; +$lang['Menu_action_adv'] = "Advanced actions:
    (use carefully):"; +$lang['Menu_permissions_title'] = "VIEW/EDIT PERMISSIONS:"; +$lang['Link_target'] = "Link Target:"; +$lang['Portal_version'] = "Mx Portal version:"; + +$lang['PHPBB_info'] = "PHPBB info"; +$lang['PHPBB_version'] = "PHPBB version:"; +$lang['PHPBB_script_path'] = "PHPBB script_path:"; +$lang['PHPBB_server_name'] = "PHPBB domain (server_name):"; + + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/language/lang_spanish/lang_main.php b/language/lang_spanish/lang_main.php new file mode 100644 index 00000000..5aa6849c --- /dev/null +++ b/language/lang_spanish/lang_main.php @@ -0,0 +1,99 @@ + 'es-x-tu', + 'ENCODING' => 'UTF-8', + 'DIRECTION' => 'ltr', + 'LEFT' => 'izquierda', + 'RIGHT' => 'derecho', + + 'DATE_FORMAT' => '|d M Y| H:i', + 'Page_Not_Authorised' => 'Lo sentimos, pero usted está no autorizado para acceder esta página.', + 'Execution_Stats' => 'Página generada%s consultas - Tiempo de generación:%s segundos', + 'Redirect_login' => 'Haga clic en %hasta%s para iniciar sesión.', + 'Show_admin_options' => 'Mostrar / Ocultar las opciones de administración de la página:', + 'Block_updated_date' => 'Actualizado', + 'Block_updated_by' => 'por', + 'Page_updated_date' => 'Esta página fue actualizada', + 'Page_updated_by' => 'por', + 'Powered_by' => 'Energizado por', + 'mx_spacer' => 'Espaciador', + 'Yes' => 'Sí', + 'No' => 'No', + 'Link' => 'Enlazar', + 'Hidden_block' => 'Bloque oculto', + 'Hidden_block_explain' => 'Este bloque es \'hidden\', pero visible a you desde you have the proper permission set.', + 'MX_home' => 'Casa', + 'MX_forum' => 'Foro', + 'MX_navigation' => 'Pages navigation, eg. forum navigation, like pafiledb navigation.', + 'Change_default_lang' => 'Establecer el idioma predeterminado de la Junta', + 'Change_user_lang' => 'Establezca su idioma', + 'Portal_lang' => 'LanguageCP', + 'Select_lang' => 'Seleccione el idioma:', + 'Change' => 'Cambia ahora', + 'Change_default_style' => 'Establecer el estilo predeterminado de la placa', + 'Change_user_style' => 'Establece tu estilo', + 'Theme' => 'ThemeCP / StyleCP', + 'Select_theme' => 'Seleccionar tema / estilo:', + 'Mx_Page' => 'Página', + 'Mx_Block' => 'Sección', + 'Virtual_Create_new' => 'Crear nuevo', + 'Virtual_Create_new_user' => 'Página de usuario', + 'Virtual_Create_new_group' => 'Página de grupo', + 'Virtual_Create_new_project' => 'Página del proyecto', + 'Virtual_Create' => 'Crea ahora', + 'Virtual_Edit' => 'Actualizar el nombre de la página', + 'Virtual_Delete' => 'Borra esta página', + 'Virtual_Welcome' => 'Bienvenido', + 'Virtual_Info' => 'Aquí usted puede controlar su página privada web .', + 'Virtual_CP' => 'Panel de control de página', + 'Virtual_Go' => 'Ir', + 'Virtual_Select' => 'Seleccione:', + 'No_items_found' => 'Nada nuevo a informar.', + 'Block_Title' => 'Título', + 'Block_Info' => 'Información', + 'Block_Config_updated' => 'Bloque configuración actualizado exitosamente.', + 'Edit' => 'EDITARE', + 'Block_Edit' => 'Editar bloque', + 'Block_Edit_dyn' => 'Edite el bloque dinámico principal', + 'Block_Edit_sub' => 'Edite el bloque de división padre', + 'General_updated_return_settings' => 'Configuración actualizada con éxito.

    Click %hasta%s to continue.', + 'General_update_error' => 'Couldn\'t actualización configuración.', + 'Mx_search_site' => 'Sitio', + 'Mx_search_forum' => 'Foro', + 'Mx_search_kb' => 'Artículos', + 'Mx_search_pafiledb' => 'Descargas', + 'Mx_search_google' => 'Google', + 'Mx_new_search' => 'Nueva búsqueda', + + 'mx_about_title' => 'Acerca de MX-Publisher', + 'mx_copy_title' => 'Información de editor de MX', + 'mx_copy_modules_title' => 'Módulos MX-Publisher instalados', + 'mx_copy_template_title' => 'Sobre el estilo', + 'mx_copy_translation_title' => 'Sobre la traducción', + + 'TRANSLATION_INFO_MXBB' => 'MX-Publisher Desarrollo Equipo">MX-Publisher Desarrollo Equipo">Idioma por MX-Publisher Desarrollo Equipo">Idioma por MX-Publisher Desarrollo Equipo">MX-Publisher Desarrollo Equipo">Idioma por MX-Publisher Desarrollo Equipo', + + 'Please_remove_install_contrib' => 'Por favor asegurar ambos el instalar/ y contrib/ directorios son eliminados.', +)); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/language/lang_swedish/lang_main.php b/language/lang_swedish/lang_main.php index 2609f692..85aaead9 100644 --- a/language/lang_swedish/lang_main.php +++ b/language/lang_swedish/lang_main.php @@ -55,6 +55,7 @@ // $lang['MX_home'] = 'Hem'; $lang['MX_forum'] = 'Diskussionsforum'; +$lang['MX_navigation'] = 'Pages navigation, eg. forum navigation, like pafiledb navigation.'; // // Core Blocks - Language @@ -108,6 +109,7 @@ $lang['Block_Info'] = 'Information'; $lang['Block_Config_updated'] = 'Blockkonfigurationen uppdaterades...'; +$lang['Edit'] = 'ANDRA'; $lang['Block_Edit'] = 'Ändra block'; $lang['Block_Edit_dyn'] = 'Ändra dynamiskt block'; $lang['Block_Edit_sub'] = 'Ändra uppdelat block'; diff --git a/language/lang_urdu/index.htm b/language/lang_urdu/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/lang_urdu/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/lang_urdu/iso.txt b/language/lang_urdu/iso.txt new file mode 100644 index 00000000..18d271ce --- /dev/null +++ b/language/lang_urdu/iso.txt @@ -0,0 +1,3 @@ +Urdu +اردو +منیب \ No newline at end of file diff --git a/language/lang_urdu/lang_main.php b/language/lang_urdu/lang_main.php new file mode 100644 index 00000000..1a851be2 --- /dev/null +++ b/language/lang_urdu/lang_main.php @@ -0,0 +1,840 @@ + 'اردو ØªØ±Ø¬Ù…Û Ø§Ø²: منیب', + 'DIRECTION' => 'rtl', + 'DATE_FORMAT' => '|d M Y|', + 'USER_LANG' => 'ur', + '1_DAY' => 'دن', + '1_MONTH' => 'ماÛ', + '1_YEAR' => 'سال', + '2_WEEKS' => '2 Ú¾Ùتے', + '3_MONTHS' => '3 ماÛ', + '6_MONTHS' => '6ماÛ', + '7_DAYS' => '1 ÛÙتÛ', + 'ACCOUNT_ALREADY_ACTIVATED' => 'آپ کا اکاونٹ Ù¾ÛÙ„Û’ ÛÛŒ ایکٹو کیا جا چکا ÛÛ’.', + 'ACCOUNT_DEACTIVATED' => 'Ø§Ù†ØªØ¸Ø§Ù…ÛŒÛ Ú©ÛŒ جانب سے آپ Ú©Û’ کھاتے Ú©Ùˆ غیر Ùعال کر دیا گیا ÛÛ’ اور اب اسے کوئی منتظم ÛÛŒ Ùعال کر سکتا ÛÛ’', + 'ACCOUNT_NOT_ACTIVATED' => 'آپ کا اکاونٹ ابھی تک ان ایکٹو ÛÛ’', + 'ACP' => 'انتظامی کنٹرول پینل', + 'ACTIVE' => 'Ùعال', + 'ACTIVE_ERROR' => 'دیا گیا رکنیتی نام اور پاس ورڈ غیر Ùعال ÛÛ’. Ø¨Ø±Ø§Û Ú©Ø±Ù… اسے Ùعال کر لیجئے، اگر آپ Ú©Ùˆ اس Ø³Ù„Ø³Ù„Û Ù…ÛŒÚº کوئی مشکل درپیش ÛÛ’ تو Ùورم Ú©Û’ منتظم سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº.', + 'ADMINISTRATOR' => 'منتظم', + 'ADMINISTRATORS' => 'منتظمین', + 'AGE' => 'عمر', + 'AIM' => 'AIM', + 'ALLOWED' => 'اجازت شدÛ', + 'ALL_FILES' => 'تمام Ùائلیں', + 'ALL_FORUMS' => 'تمام Ùورم', + 'ALL_MESSAGES' => 'تمام پیغامات', + 'ALL_POSTS' => 'تمام مراسلات', + 'ALL_TIMES' => 'تمام اوقات %1$s %2$s Ú©Û’ مطابق ھیں', + 'ALL_TOPICS' => 'تمام موضوعات', + 'AND' => 'اور', + 'ARE_WATCHING_FORUM' => 'اب آپ اس Ùورم میں شراکت دار Ûیں، اس Ùورم میں نئے پیغامات آنے پر آپ Ú©Ùˆ مطلع کیا جاتا رÛÛ’ گا', + 'ARE_WATCHING_TOPIC' => 'آپ اس موضوع میں شراکت دار بن Ú†Ú©Û’ Ûیں ØŒ اس موضوع میں نئے پیغامات سے آپ Ú©Ùˆ مطلع کیا جاتا رÛÛ’ گا', + 'ASCENDING' => 'ترتیب صعودی', + 'ATTACHMENTS' => 'منسلکات', + 'ATTACHED_IMAGE_NOT_IMAGE' => 'آپ جس تصویر Ú©Ùˆ اٹیچ کرنے Ú©ÛŒ کوشس کر رÛÛ’ Ûیں ÙˆÛ Ù†Ø§Ù‚Ø§Ø¨Ù„ قبول ÛÛ’', + 'AUTHOR' => 'مصنÙ', + 'AUTH_NO_PROFILE_CREATED' => 'رکنیتی Ú©ÙˆØ§Ø¦Ù Ù†Ø§Ù…Û Ú©ÛŒ تشکیل میں ناکامی', + 'AVATAR_DISALLOWED_CONTENT' => 'وایرس Ú©Û’ اندیشے Ú©Û’ تحت اپ لوڈ Ùائل کینسل کر دی گئی ÛÛ’.', + 'AVATAR_DISALLOWED_EXTENSION' => 'اس Ùائل Ú©ÛŒ نمائش ممکن Ù†Ûیں Ú©ÛŒÙˆÙ†Ú©Û Ø§Ø³ Ú©ÛŒ اضاÙت یعنی ایکسٹینشن %s غير اجازت یاÙØªÛ ÛÛ’', + 'AVATAR_EMPTY_REMOTE_DATA' => 'دی گئی Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆØ± Ú©ÛŒ تصعید ممکن Ù†Ûیں Ú©ÛŒÙˆÙ†Ú©Û Ø±ÛŒÙ…ÙˆÙ¹ ڈیٹا نامناسب یا خراب Ø´Ø¯Û ÛÛ’.', + 'AVATAR_EMPTY_FILEUPLOAD' => 'تصعید Ø´Ø¯Û Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± خالی ÛÛ’', + 'AVATAR_INVALID_FILENAME' => '%s Ùائل کا نام درست Ù†Ûیں.', + 'AVATAR_NOT_UPLOADED' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± Ú©ÛŒ تصعید Ù†Ûیں ÛÙˆ سکتی', + 'AVATAR_NO_SIZE' => 'مربوط Ø´Ø¯Û Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± Ú©ÛŒ لمبائی اور چوڑائی کا تعین Ù†Ûیں ÛÙˆ سکتا، Ø¨Ø±Ø§Û Ú©Ø±Ù… ان کا اندراج کریں', + 'AVATAR_PARTIAL_UPLOAD' => 'Ù…Ø·Ù„ÙˆØ¨Û Ùائل Ú©ÛŒ تصعید جزوی طور پر مکمل ÛÙˆ سکی Ú¾Û’ .', + 'AVATAR_PHP_SIZE_NA' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا حجم Ø²ÛŒØ§Ø¯Û ÛÛ’.
    Ùائل کا Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û Ø§Ø¬Ø§Ø²Øª Ø´Ø¯Û Ø­Ø¬Ù… جو php.ini Ùائل میں معین ÛÛ’ تبدیل Ù†Ûیں کیا جا سکتا', + 'AVATAR_PHP_SIZE_OVERRUN' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا سائز بڑا ÛÛ’ ØŒ تصعید(اپلوڈنگ) Ú©Û’ لیے Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û Ù…Ù†Ø¸ÙˆØ± Ø´Ø¯Û Ø­Ø¬Ù…%d میگا بائت.
    یاد رÛÛ’ Ú©Û ÛŒÛ Ø³Ø§Ø¦Ø² php.ini میں Ø·Û’ Ø´Ø¯Û ÛÛ’ اور اس Ú©Ùˆ تبدیل Ù†Ûیں کیا جا سکتا', + 'AVATAR_URL_INVALID' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا یو آر ایل غلط ÛÛ’', + 'AVATAR_URL_NOT_FOUND' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا یو آر ایل دستیاب Ù†Ûیں Ûوا', + 'AVATAR_WRONG_FILESIZE' => 'Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ± کا سائز 0 Ùˆ %1d %2sÚ©Û’ درمیان Ûونا چاÛیے', + 'AVATAR_WRONG_SIZE' => 'دی گئی Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ±Ú©ÛŒ چوڑائی %1$d بكسل ØŒ اور لمبائی %2$d بكسل ÛÛ’ Ø¬Ø¨Ú©Û Ø§Ø³ Ú©ÛŒ چوڑائی %3$d بكسل اور لمبائی %4$d بكسل Ûونا چاÛیے. ', + 'BACK_TO_TOP' => 'واپس اوپر', + 'BACK_TO_PREV' => 'صÙØ­ÛØ¡ سابق پر واپسی', + 'BAN_TRIGGERED_BY_EMAIL' => 'آپ کےای میل پر پابندی عائد ÛÛ’', + 'BAN_TRIGGERED_BY_IP' => 'آپ Ú©Û’ آئی Ù¾ÛŒ ایڈریس پر پابندی عائد ÛÛ’', + 'BAN_TRIGGERED_BY_USER' => 'آپ Ú©Û’ رکنیتی نام پر پابندی عائد ÛÛ’', + 'BBCODE_GUIDE' => 'رÛنمائے BBCode', + 'BCC' => 'BCC', + 'BIRTHDAYS' => 'سالگرھیں', + 'BOARD_BAN_PERM' => 'اس Ùورم میں آپ Ú©Û’ Ø¯Ø§Ø®Ù„Û Ù¾Ø± مستقلاً پابندی عائد کر دی گئی ÛÛ’.

    Ø¨Ø±Ø§Û Ú©Ø±Ù… %2$sÙورم Ú©Û’ منتظم%3$s سے مزید معلومات Ú©Û’ لیے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº', + 'BOARD_BAN_REASON' => 'پابندی Ú©ÛŒ وجوÛ: %s', + 'BOARD_BAN_TIME' => ' اس Ùورم پر آپ Ú©Û’ Ø¯Ø§Ø®Ù„Û Ù¾Ø± %1$s.

    تک پابندی عائد کر دی گئی ÛÛ’ØŒ Ø¨Ø±Ø§Û Ú©Ø±Ù… مزید معلومات Ú©Û’ لیے %2$s Ùورم Ú©Û’ منتظم %3$s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº.', + 'BOARD_DISABLE' => 'ÛÙ… معذرت Ø®ÙˆØ§Û Ûیں، Ú©Û ÙÛŒ الحال بورڈ Ùعال Ù†Ûیں ÛÛ’', + 'BOARD_DISABLED' => 'ÙÛŒ الحال بورڈ غیر Ùعال ÛÛ’', + 'BOARD_UNAVAILABLE' => 'ÛÙ… معذرت Ø®ÙˆØ§Û Ûیں، لیکن ÙÛŒ الحال عارضی طور پر آپ Ú©ÛŒ بورڈ تک رسائی ممکن Ù†Ûیں Ø¨Ø±Ø§Û Ú©Ø±Ù… Ú©Ú†Ú¾ دیر بعد Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں', + 'BROWSING_FORUM' => ' %1$s اس Ùورم پر موجود صارÙین Ûیں', + 'BROWSING_FORUM_GUEST' => 'Ùورم پر موجود اراکین: %1$s اور %2$d Ù…Ûمان', + 'BROWSING_FORUM_GUESTS' => 'Ùورم پر موجود اراکین: %1$s اور %2$d Ù…Ûمانان', + 'BYTES' => 'بائٹ', + 'CANCEL' => 'منسوخ', + 'CHANGE' => 'تبدیل', + 'CHANGE_FONT_SIZE' => 'Ùونٹ سائز میں تبدیلی', + 'CHANGING_PREFERENCES' => 'بورڈ Ú©ÛŒ ترجیحات میں تبدیلی', + 'CHANGING_PROFILE' => 'ذاتی پروÙائل میں تبدیلی', + 'CLICK_VIEW_PRIVMSG' => '%sان بکس میں جائیں%s', + 'COLLAPSE_VIEW' => 'مختصر نمائش ', + 'CLOSE_WINDOW' => 'ونڈو بند کریں', + 'COLOUR_SWATCH' => 'رنگوں Ú©ÛŒ آمیزش', + 'COMMA_SEPARATOR' => ', ', + 'CONFIRM' => 'توثیق', + 'CONFIRM_CODE' => 'توثیقی Ú©ÙˆÚˆ', + 'CONFIRM_CODE_EXPLAIN' => 'تصویر میں ظاÛر Ûونے والے Ú©ÙˆÚˆ Ú©Ùˆ Ú¾Ùˆ Ø¨Û Ú¾Ùˆ نقل کریں، یاد رھے ! Ú©ÙˆÚˆ چھوٹے بڑے حرو٠کی Ù¾Ûچان Ú©Û’ لیے حساس ÛÛ’ Ù€ نیز Ú©ÙˆÚˆ میں کوئی صÙر موجود Ù†Ûیں ÛÛ’ Ù€', + 'CONFIRM_CODE_WRONG' => 'آپ کا درج Ú©Ø±Ø¯Û ØªÙˆØ«ÛŒÙ‚ÛŒ Ú©ÙˆÚˆ درست Ù†Ûیں ÛÛ’', + 'CONFIRM_OPERATION' => 'کیا آپ ÛŒÛ Ø¹Ù…Ù„ جاری رکھنا چاھتے ھیں ØŸ', + 'CONGRATULATIONS' => 'آپ Ú©Ùˆ مبارک ÛÙˆ', + 'CONNECTION_FAILED' => 'اتصال میں ناکامی', + 'CONNECTION_SUCCESS' => 'اتصال میں کامیابی', + 'COOKIES_DELETED' => 'بورڈ Ú©ÛŒ تمام کوکیز کامیابی سے حذ٠کر دی گئی Ûیں', + 'CURRENT_TIME' => 'Ø­Ø§Ù„ÛŒÛ ÙˆÙ‚Øª %s', + 'DAY' => 'دن', + 'DAYS' => 'ایام', + 'DELETE' => 'حذÙ', + 'DELETE_ALL' => 'تمام حذÙ', + 'DELETE_COOKIES' => 'بورڈ Ú©ÛŒ تمام کوکیز حذ٠(ڈیلیٹ) کریں', + 'DELETE_MARKED' => 'منتخب Ø´Ø¯Û Ú©Ùˆ حذ٠(ڈیلیٹ)کریں', + 'DELETE_POST' => 'حذ٠مراسلÛ', + 'DELIMITER' => 'تحدید', + 'DESCENDING' => 'ترتیب نزولی', + 'DISABLED' => 'معطل', + 'DISPLAY' => 'نمائش', + 'DISPLAY_GUESTS' => 'Ù…Ûمانوں کا مشاÛدÛ', + 'DISPLAY_MESSAGES' => 'Ø³Ø§Ø¨Ù‚Û Ù¾ÛŒØºØ§Ù…Ø§Øª کا مشاھدÛ', + 'DISPLAY_POSTS' => 'Ø³Ø§Ø¨Ù‚Û Ù…Ø±Ø§Ø³Ù„Ø§Øª کا مشاھدÛ', + 'DISPLAY_TOPICS' => 'Ø³Ø§Ø¨Ù‚Û Ù…ÙˆØ¶ÙˆØ¹Ø§Øª کا مشاھدÛ', + 'DOWNLOADED' => 'تحصیل شدÛ', + 'DOWNLOADING_FILE' => 'Ùائل کا حصول (ڈاون لوڈنگ) جاری ÛÛ’', + 'DOWNLOAD_COUNT' => '%d بار', + 'DOWNLOAD_COUNTS' => '%d بار', + 'DOWNLOAD_COUNT_NONE' => 'ابھی تک کوئی ڈاون لوڈ Ù†Ûیں Ú©ÛŒ گئی', + 'VIEWED_COUNT' => 'Ù…Ø´Ø§Ú¾Ø¯Û %d بار', + 'VIEWED_COUNTS' => 'مشاھدات %d بار', + 'VIEWED_COUNT_NONE' => 'اس سے قبل کوئی Ù…Ø´Ø§Ú¾Ø¯Û Ù†Ûیں کیا گیا', + 'EDIT_POST' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©ÛŒ تدوین', + 'EMAIL' => 'برقی خط', + 'EMAIL_ADDRESS' => 'ای میل ایڈریس', + 'EMAIL_SMTP_ERROR_RESPONSE' => 'ای میل Ú©ÛŒ ترسیل میں مشکلات سطر %1$s. جواب: %2$s', + 'EMPTY_SUBJECT' => 'موضوع کا عنوان لکھنا ضروری ÛÛ’', + 'EMPTY_MESSAGE_SUBJECT' => 'نیا Ù…Ø±Ø§Ø³Ù„Û Ù„Ú©Ú¾ØªÛ’ وقت عنوان کا اندراج لازمی ÛÛ’', + 'ENABLED' => 'Ùعال', + 'ENCLOSURE' => 'ضمیمÛ', + 'ERR_CHANGING_DIRECTORY' => 'ڈائریکٹری Ú©ÛŒ تبدیلی سے معذور', + 'ERR_CONNECTING_SERVER' => 'سرور سے اتصال میں ناکامی', + 'ERR_JAB_AUTH' => 'جیبر سرور پر اختیار Ù†Ûیں دیا جا سکا.', + 'ERR_JAB_CONNECT' => 'جیبر سرور سے Ø±Ø§Ø¨Ø·Û Ù†Ûیں کیا جاسکا.', + 'ERR_UNABLE_TO_LOGIN' => 'لاگ ان میں غلطی ! دیا گیا رکنیتی نام یا پاس ورڈ درست Ù†Ûیں.', + 'ERR_UNWATCHING' => 'شراکت ختم کرنے میں Ù…Ø³Ø¦Ù„Û Ø¢Ú¯ÛŒØ§.', + 'ERR_WATCHING' => 'شراکت حاصل کرنے میں Ù…Ø³Ø¦Ù„Û Ø¢Ú¯ÛŒØ§', + 'ERR_WRONG_PATH_TO_PHPBB' => 'دیا گیا phpBB Ø±Ø§Ø³ØªÛ Ø¯Ø±Ø³Øª Ù†Ûیں.', + 'EXPAND_VIEW' => 'وسیع نمائش', + 'EXTENSION' => 'اضاÙت', + 'EXTENSION_DISABLED_AFTER_POSTING' => 'اضاÙت﴿ایکسٹینشن﴾ %s معطل کر دی گئی ÛÛ’ اور اب اس Ú©ÛŒ نمائش Ù†Ûیں ÛÙˆ سکتی', + 'FAQ' => 'عمومی سوالات', + 'FAQ_EXPLAIN' => 'عمومی سوالات', + 'FILENAME' => 'Ùائل کا نام', + 'FILESIZE' => 'Ùائل کا حجم', + 'FILEDATE' => 'Ùائل Ú©ÛŒ تاریخ', + 'FILE_COMMENT' => 'تعلیق Ùˆ تبصرÛ', + 'FILE_NOT_FOUND' => 'Ù…Ø·Ù„ÙˆØ¨Û Ùائل دستیاب Ù†Ûیں Ûوئی', + 'FIND_USERNAME' => 'کسی رکن Ú©ÛŒ تلاش', + 'FOLDER' => 'پوشÛ', + 'FORGOT_PASS' => 'میں پاس ورڈ بھول گیا ÛÙˆÚº', + 'FORM_INVALID' => 'ارسال Ú©Ø±Ø¯Û Ú©ÙˆØ§Ø¦Ù Ø¯Ø±Ø³Øª Ù†Ûیں Ø¨Ø±Ø§Û Ú©Ø±Ù… Ø¯ÙˆØ¨Ø§Ø±Û Ø§Ø±Ø³Ø§Ù„ کریں.', + 'FORUM' => 'Ùورم', + 'FORUMS' => 'Ùورم', + 'FORUMS_MARKED' => 'تمام Ùورم بطور "خواندÛ" نشان زد ÛÙˆ گئے', + 'FORUM_CAT' => 'Ùورم کیٹگری', + 'FORUM_INDEX' => 'مرکزی صÙØ­Û', + 'FORUM_LINK' => 'Ùورم کا ربط', + 'FORUM_LOCATION' => 'Ùورم Ú©ÛŒ مکانیت ', + 'FORUM_LOCKED' => 'مقÙÙ„ Ùورم', + 'FORUM_RULES' => 'Ùورم Ú©Û’ قوانین', + 'FORUM_RULES_LINK' => 'Ø¨Ø±Ø§Û Ú©Ø±Ù… Ùورم Ú©Û’ قوانین Ù…Ù„Ø§Ø­Ø¸Û Ú©Ø±Ù†Û’ Ú©Û’ لیے ÛŒÛاں Ú©Ù„Ú© کریں', + 'FROM' => 'از', + 'FSOCK_DISABLED' => 'اس عمل Ú©ÛŒ تکمیل ممکن Ù†Ûیں کیونکÛfsockopen معطل Ûےاور سرور اس امر Ú©ÛŒ تکمیل سے معذور ÛÛ’.', + 'FTP_FSOCK_HOST' => 'FTP هوسٹ ', + 'FTP_FSOCK_HOST_EXPLAIN' => 'FTP سرور جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_FSOCK_PASSWORD' => 'FTP پاس ورڈ', + 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'آپ Ú©Û’ FTP. رکنیتی نام Ú©Û’ لیے پاس ورڈ', + 'FTP_FSOCK_PORT' => 'FTP پورٹ', + 'FTP_FSOCK_PORT_EXPLAIN' => 'پورٹ جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_FSOCK_ROOT_PATH' => ' phpBB راستÛ', + 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'شروع سے آپکے phpBB بورڈ‌تک کا راستÛ', + 'FTP_FSOCK_TIMEOUT' => 'FTP Ú©ÛŒ معطلی کا وقت', + 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'وقت Ú©ÛŒ سیکنڈ میں مقدار، سسٹم سرور سے جواب کا انتظار کرے گا.', + 'FTP_FSOCK_USERNAME' => 'FTP رکنیتی نام', + 'FTP_FSOCK_USERNAME_EXPLAIN' => 'رکنیتی نام جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_HOST' => 'FTP Ûوسٹ', + 'FTP_HOST_EXPLAIN' => 'FTP سرور جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_PASSWORD' => 'FTP پاس ورڈ', + 'FTP_PASSWORD_EXPLAIN' => 'آپ Ú©Û’ FTP. رکنیتی نام Ú©Û’ لیے پاس ورڈ', + 'FTP_PORT' => 'FTP پورٹ', + 'FTP_PORT_EXPLAIN' => 'Port جو آپ Ú©Û’ سرور سے Ø±Ø§Ø¨Ø·Û Ú©Û’ لئے درکار ÛÛ’Û”', + 'FTP_ROOT_PATH' => 'phpBB Ø±Ø§Ø³ØªÛ ', + 'FTP_ROOT_PATH_EXPLAIN' => 'شروع سے آپکے phpBB بورڈ‌تک کا راستÛ', + 'FTP_TIMEOUT' => 'FTP Ú©ÛŒ معطلی کا وقت', + 'FTP_TIMEOUT_EXPLAIN' => 'وقت Ú©ÛŒ سیکنڈ میں مقدار، سسٹم سرور سے جواب کا انتظار کرے گا.', + 'FTP_USERNAME' => 'FTP رکنیتی نام', + 'FTP_USERNAME_EXPLAIN' => 'رکنیتی نام جو آپکے سرور سے Ø±Ø§Ø¨Ø·Û Ù…ÛŒÚºâ€ŒØ§Ø³ØªØ¹Ù…Ø§Ù„ Ûوا', + 'GENERAL_ERROR' => 'عمومی غلطی', + 'GB' => ' گیگا بائٹ', + 'GIB' => ' گیگا بائٹ', + 'GO' => 'جایئے', + 'GOTO_PAGE' => 'صÙØ­Û Ù¾Ø± جایئے', + 'GROUP' => 'گروÛ', + 'GROUPS' => 'گروÛ', + 'GROUP_ERR_TYPE' => 'Ú¯Ø±ÙˆÛ Ú©ÛŒ معین Ú©Ø±Ø¯Û Ù†ÙˆØ¹ÛŒØª نامناسب ÛÛ’.', + 'GROUP_ERR_USERNAME' => 'کسی Ú¯Ø±ÙˆÛ Ú©Ø§ نام Ù†Ûیں دیا گیا.', + 'GROUP_ERR_USER_LONG' => 'Ù…Ø¬Ù…ÙˆØ¹Û Ú©Ø§ نام بÛت طویل ÛÛ’ØŒ Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û 60 حرو٠استعمال کیے جا سکتے Ûیں', + 'GUEST' => 'Ù…Ûمان', + 'GUEST_USERS_ONLINE' => ' %d Ù…Ûمان آن لائن Ûیں', + 'GUEST_USERS_TOTAL' => '%d Ù…Ûمان', + 'GUEST_USERS_ZERO_ONLINE' => ' 0 Ù…Ûمان آن لائن Ûیں', + 'GUEST_USERS_ZERO_TOTAL' => '0 Ù…Ûمان', + 'GUEST_USER_ONLINE' => ' %d Ù…Ûمان آن لائن Ûیں', + 'GUEST_USER_TOTAL' => '%d Ù…Ûمان', + 'G_ADMINISTRATORS' => 'عمومی منتظمین', + 'G_BOTS' => 'خودکار صارÙین', + 'G_GUESTS' => 'Ù…Ûمان', + 'G_REGISTERED' => 'مندرج اراکین', + 'G_REGISTERED_COPPA' => 'مندرج COPPA اراکین ', + 'G_GLOBAL_MODERATORS' => 'مدیران٠عام', + 'G_NEWLY_REGISTERED' => 'نئے رجسٹرڈ اراکین.', + 'HIDDEN_USERS_ONLINE' => '%d Ø®ÙÛŒÛ Ù…ØªØµÙ„ اراکین', + 'HIDDEN_USERS_TOTAL' => '%d Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USERS_TOTAL_AND' => ' %d Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USERS_ZERO_ONLINE' => '0 Ø®ÙÛŒÛ Ù…ØªØµÙ„ اراکین', + 'HIDDEN_USERS_ZERO_TOTAL' => '0 Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USERS_ZERO_TOTAL_AND' => '0 Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USER_ONLINE' => '%d Ø®ÙÛŒÛ Ù…ØªØµÙ„', + 'HIDDEN_USER_TOTAL' => '%d Ø®ÙÛŒÛ Ø§ÙˆØ±', + 'HIDDEN_USER_TOTAL_AND' => ' %d Ø®ÙÛŒÛ Ø§ÙˆØ± ', + 'HIDE_GUESTS' => 'Ù…Ûمانوں کا اخÙا', + 'HIDE_ME' => 'اس بار مجھے حالت اخÙا میں رکھیے', + 'HOURS' => 'گھنٹے', + 'HOME' => 'صÙØ­Û Ø¡ اول', + 'ICQ' => 'ICQ', + 'ICQ_STATUS' => 'ICQ status', + 'IF' => 'اگر', + 'IMAGE' => 'عکس', + 'IMAGE_FILETYPE_INVALID' => 'عکسی Ùائل Ú©ÛŒ قسم %d تصویر Ú©ÛŒ نوعیت %s غیر منظور Ø´Ø¯Û ÛÛ’', + 'IMAGE_FILETYPE_MISMATCH' => 'عکسی Ùائل Ú©ÛŒ نوعیت غیر مناسب: متوقع اضاÙت %1$s لیکن %2$sاضاÙت Ù…Ûیا Ú©ÛŒ گئی ÛÛ’ Ù€', + 'IN' => 'میں', + 'INDEX' => 'Ùورم کا اشاریÛ', + 'INFORMATION' => 'معلومات', + 'INTERESTS' => 'دل چسپیاں', + 'INVALID_DIGEST_CHALLENGE' => 'غلط ڈائجیسٹ چیلنج', + 'INVALID_EMAIL_LOG' => '%s ممکن Ûےای میل Ù„Ú©Ú¾Ù†Û’ میں آپ سے غلطی Ûوئی Ûو؟', + 'IP' => 'آئی Ù¾ÛŒ', + 'IP_BLACKLISTED' => 'آپ کا آئی Ù¾ÛŒ %1$s کالی ÙÛرست میں شامل کر Ú©Û’ بند کر دیا گیا ÛÛ’. تÙصیلات Ú©Û’ لیے %2$sدیکھیئے.', + 'JABBER' => 'جیبر', + 'JOINED' => 'تاریخ شمولیت:', + 'JUMP_PAGE' => 'آپ جس صÙØ­Û Ù¾Ø± جانا چاÛتے Ûیں اس کا نمبر درج کریں', + 'JUMP_TO' => 'رجوع بÛ', + 'JUMP_TO_PAGE' => 'صÙØ­Û Ù¾Ø± جانے Ú©Û’ لیے Ú©Ù„Ú© کریں', + 'KB' => 'کلو بائٹ', + 'KIB' => 'کلو بائٹ', + 'LAST_POST' => 'آخری مراسلÛ', + 'LAST_UPDATED' => 'آخری ØªØ§Ø²Û Ú©Ø§Ø±ÛŒ', + 'LAST_VISIT' => 'آخری دورÛ', + 'LDAP_NO_LDAP_EXTENSION' => 'اضاÙت LDAP موجود Ù†Ûیں', + 'LDAP_NO_SERVER_CONNECTION' => 'سرور سے Ø±Ø§Ø¨Ø·Û Ù…Ù…Ú©Ù† Ù†Ûیں LDAP', + 'LDAP_SEARCH_FAILED' => 'LDAP ڈائیریکٹری تلاش کرتے Ûوئے Ù…Ø³Ù„Û Ø¢ÛŒØ§ ÛÛ’', + 'LEGEND' => 'اراکین Ú©ÛŒ جماعتوں Ú©Û’ رنگ', + 'LOCATION' => 'مکانیت', + 'LOCK_POST' => 'مقÙÙ„ مراسلÛ', + 'LOCK_POST_EXPLAIN' => 'ترمیم Ùˆ تدوین Ú©ÛŒ ممانعت', + 'LOCK_TOPIC' => 'مقÙÙ„ موضوع', + 'LOGIN' => 'لاگن', + 'LOGIN_CHECK_PM' => 'اپنے ذاتی پیغامات دیکھنے Ú©Û’ لیے لاگ ان ÛÙˆ جایئے', + 'LOGIN_CONFIRMATION' => 'لاگ ان Ûونے Ú©ÛŒ توثیق', + 'LOGIN_CONFIRM_EXPLAIN' => 'اکائونٹس پر بروٹ‌حملوں‌کے پیش نظر، ناکام لاگن Ú©ÛŒ Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û Ú©ÙˆØ´Ø´ÙˆÚºâ€ŒÚ©Û’ بعد آپکو ایک توثیقی Ú©ÙˆÚˆ درج کرنے Ú©ÛŒ ضرورت ÛÛ’. ÛŒÛ Ú©ÙˆÚˆâ€ŒÙ†ÛŒÚ†Û’ دی گئی تصویر میں‌دیا گیا ÛÛ’. اگر آپ اسے Ù¾Ú‘Ú¾Ù†Û’ سے قاصر Ûیں‌تو %sبورڈ منتظمین%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº', + 'LOGIN_ERROR_ATTEMPTS' => 'آپ Ùورم سے لاگ ان Ûونے Ú©ÛŒ کوشش میں حد٠متعین سے تجاوز کر Ú†Ú©Û’ Ûیں Ù„Ûذا اب آپ Ú©Ùˆ اپنے رکنیتی نام اور پاس ورڈ Ú©Û’ ساتھ Ø° یل میں ظاÛر Ûونے والے عکس Ú©Û’ مطابق Ú©Ù†Ùرمیشن Ú©ÙˆÚˆ کا اندراج بھی کرنا Ûوگا۔', + 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'اپاچی Ù†Û’ آپکی تصدیق Ù†Ûیں Ú©ÛŒ.', + 'LOGIN_ERROR_PASSWORD' => 'آپ Ù†Û’ غلط پاس ورڈ کا اندراج کیا ÛÛ’ØŒØ¨Ø±Ø§Û Ú©Ø±Ù… درست پاس ورڈ Ú©Û’ ساتھ Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں اس Ú©Û’ باوجود اگر آپ Ú©Ùˆ مشکل درپیش ÛÙˆ تو %sÙورم Ú©Û’ منتظم%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº Ù€', + 'LOGIN_ERROR_PASSWORD_CONVERT' => 'اس بورڈ Ú©Û’ ساÙÙ¹ ویئر Ú©ÛŒ ØªØ§Ø²Û Ú©Ø§Ø±ÛŒ کرتے Ûوئے آپ Ú© پاس ورڈ منقلب Ù†Ûیں کیا جا سکا. Ø¨Ø±Ø§Û Ú©Ø±Ù… %نئے پاس ورڈ Ú©Û’ حصول Ú©Û’ لیے درخواست کریں %s. اگر اس Ú©Û’ باجود آپ Ú©Ùˆ مشکلات در پیش Ûیں تو Ø¨Ø±Ø§Û Ú©Ø±Ù… بورڈ Ú©Û’ %sمنتظمں%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº.', + 'LOGIN_ERROR_USERNAME' => 'آپ Ù†Û’ غلط رکنیتی نام کا اندراج کیا ÛÛ’ØŒØ¨Ø±Ø§Û Ú©Ø±Ù… درست رکنیتی نام Ú©Û’ ساتھ Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں اس Ú©Û’ باوجود اگر آپ Ú©Ùˆ مشکل درپیش ÛÙˆ تو %sÙورم Ú©Û’ منتظم%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº Ù€', + 'LOGIN_FORUM' => 'اس Ùورم Ú©Û’ مشاÛØ¯Û Ø§ÙˆØ± اس میں مراسلت کرنے Ú©Û’ لیے آپ Ú©Ùˆ Ù¾ÛÙ„Û’ معین Ø´Ø¯Û Ù¾Ø§Ø³ ورڈ کا اندراج کرنا Ûوگا Ù€', + 'LOGIN_INFO' => 'اس Ùورم سے لاگ ان Ûونے Ú©Û’ لیے لازم ÛÛ’ Ú©Û Ù¾ÛÙ„Û’ آپ اپنااکاونٹ بنائیں، اس عمل میں صر٠چند منٹ صر٠Ûوتے Ûیں لیکن سے سے آپ Ú©Ùˆ بÛت سے اختیارات مل جاتے Ûیں اور بورڈ Ú©Û’ منتظم Ú©ÛŒ جانب سے بھی آپ Ú©Ùˆ وقتاً Ùوقتاً اضاÙÛŒ اختیارات سونپے جا سکتے Ûیں،اس سے Ù¾ÛÙ„Û’ Ú©Û Ø¢Ù¾ اپنا اکاونٹ بنائیں، Ø¨Ø±Ø§Û Ú©Ø±Ù… اس بات کا یقین کر لیں Ú©Û Ø¢Ù¾ Ûمارے قواعد Ùˆ ضوابط اور دیگر پالیسیوں سے مکمل اتÙاق کرتے Ûیں، نیز Ø¨Ø±Ø§Û Ú©Ø±Ù… Ùورم پر کوئی بھی Ù…Ø±Ø§Ø³Ù„Û Ø§Ø±Ø³Ø§Ù„ کرنے سے Ù¾ÛÙ„Û’ Ùورم پر مراسلت سے متعلق قوانین کا Ù…Ø·Ø§Ù„Ø¹Û Ø¶Ø±ÙˆØ± کر لیجئے.', + 'LOGIN_VIEWFORUM' => 'اس Ùورم Ú©Û’ مشاÛØ¯Û Ú©Û’ لیے Ùورم پر Ú©Ú¾Ø§ØªÛ Ø¨Ù†Ø§ کر Ùورم سےلاگ ان Ûونا لازمی ÛÛ’.', + 'LOGIN_EXPLAIN_EDIT' => 'مراسلات Ú©ÛŒ تدوین Ú©Û’ لیے Ùورم پر Ú©Ú¾Ø§ØªÛ Ø¨Ù†Ø§ کر Ùورم سے لاگ ان Ûونا لازمی ÛÛ’.', + 'LOGIN_EXPLAIN_VIEWONLINE' => 'آن لائن ÙÛرست دیکھنے Ú©Û’ لیے آپکو رجسٹر اور لاگن Ûونا Ûوگا', + 'LOGOUT' => 'لاگ آوٹ', + 'LOGOUT_USER' => 'لاگ آوٹ [ %s ]', + 'LOG_ME_IN' => 'مجھے Ûر بار خودکار لاگ ان کریں', + 'MARK' => 'نشان Ø²Ø¯Û Ú©Ø±ÛŒÚº', + 'MARK_ALL' => 'تمام Ú©Ùˆ نشان زد کریں', + 'MARK_FORUMS_READ' => 'تمام Ùورمز Ú©Ùˆ بطور "خواندÛ" نشان زد کریں', + 'MARK_SUBFORUMS_READ' => 'ذیلی Ùورم Ú©Ùˆ Ø®ÙˆØ§Ù†Ø¯Û Ù†Ø´Ø§Ù† زد کریں', + 'MB' => 'میگا بائٹ', + 'MIB' => 'میگا بائٹ', + 'MCP' => 'ادارتی کنٹرول پینل', + 'MEMBERLIST' => 'اراکین', + 'MEMBERLIST_EXPLAIN' => 'اراکین Ú©ÛŒ مکمل ÙÛرست کا مشاھدÛ', + 'MERGE' => 'انضمام', + 'MERGE_POSTS' => 'مراسلات کا انضمام', + 'MERGE_TOPIC' => 'موضوعات کا انضمام', + 'MESSAGE' => 'پیغام', + 'MESSAGES' => 'پیغامات', + 'MESSAGE_BODY' => 'پیغام Ú©ÛŒ تجسیم', + 'MINUTES' => 'منٹ', + 'MODERATE' => 'ادارت', + 'MODERATOR' => 'مدیر', + 'MODERATORS' => 'مدیران', + 'MONTH' => 'ماÛ', + 'MOVE' => 'انتقال', + 'MSNM' => 'ایم ایس این', + 'NA' => 'غیر دستیاب', + 'NEWEST_USER' => 'ÛÙ… %s Ú©Ùˆ اپنے Ùورم Ú©ÛŒ رکنیت پر خوش آمدید Ú©Ûتے Ûیں', + 'NEW_MESSAGE' => 'نیا پیعام', + 'NEW_MESSAGES' => 'نئے پیغامات', + 'NEW_PM' => 'آپ Ú©Û’ لیے %d نیا ذاتی پیغام موجود ÛÛ’', + 'NEW_PMS' => 'آپ Ú©Û’ لیے %d نئے ذاتی پیغامات موجود Ûیں', + 'NEW_POST' => 'نیا مراسلÛ', + 'NEW_POSTS' => 'نئے مراسلے', + 'NEXT' => 'اگلا', + 'NEXT_STEP' => 'اگلا', + 'NEVER' => ' کبھی Ù†Ûیں', + 'NO' => 'Ù†Ûیں', + 'NOT_ALLOWED_MANAGE_GROUP' => 'معذرت ! آپ Ú©Ùˆ اس Ú¯Ø±ÙˆÛ Ú©ÛŒ ادارت Ú©ÛŒ اجازت Ù†Ûیں.', + 'NOT_AUTHORISED' => 'آپ اس Ø¹Ù„Ø§Ù‚Û Ù…ÛŒÚº داخل Ù†Ûیں ÛÙˆ سکتے.', + 'NOT_WATCHING_FORUM' => 'آپ Ù†Û’ اس Ùورم Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے Ùورم میں اشتراک حاصل Ù†Ûیں کیا Ûوا ÛÛ’.', + 'NOT_WATCHING_TOPIC' => 'آپ Ù†Û’ اس موضوع Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے موضوع میں اشتراک حاصل Ù†Ûیں کیا Ûوا ÛÛ’.', + 'NOTIFY_ADMIN' => 'براÛ٠کرم Ùورم Ú©Û’ منتظم یا ویب ماسٹر Ú©Ùˆ اطلاع کریں', + 'NOTIFY_ADMIN_EMAIL' => 'براÛ٠کرم Ùورم Ú©Û’ منتظم یا ویب ماسٹر Ú©Ùˆ اطلاع کریں: %1$s', + 'NO_ACCESS_ATTACHMENT' => 'آپ Ú©Ùˆ اس Ùائل تک رسائی Ú©ÛŒ اجازت Ù†Ûیں.', + 'NO_ACTION' => 'آپ Ù†Û’ کوئی عمل معین Ù†Ûیں کیا', + 'NO_ADMINISTRATORS' => 'اس Ùوم Ú©Û’ لیے کوئی مدیر معین Ù†Ûیں کیا گیا', + 'NO_AUTH_ADMIN' => 'آپ Ú©Ùˆ کوئی انتظامی اختیارات حاصل Ù†Ûیں Ù„Ûذا انتظامی کنٹرول پینل تک آپ Ú©ÛŒ رسائی ممکن Ù†Ûیں', + 'NO_AUTH_ADMIN_USER_DIFFER' => 'آپ مختل٠صار٠کی حیثیت سے تصدیق Ø´Ø¯Û Ù†Ûیں‌ÛÙˆ سکتے', + 'NO_AUTH_OPERATION' => 'معذرت ! اس عمل Ú©ÛŒ تکمیل Ú©Û’ لیے آپ Ú©Û’ پاس ضروری اجازت Ù†Ø§Ù…Û Ù…ÙˆØ¬ÙˆØ¯ Ù†Ûیں', + 'NO_CONNECT_TO_SMTP_HOST' => 'smtp ھوسٹ سے Ø±Ø§Ø¨Ø·Û Ù†Ûیں ÛÙˆ سکا: %1$s : %2$s', + 'NO_BIRTHDAYS' => 'آج کسی Ú©ÛŒ Ø³Ø§Ù„Ú¯Ø±Û Ù†Ûیں', + 'NO_EMAIL_MESSAGE' => 'ای میل خالی پایا گیا', + 'NO_EMAIL_RESPONSE_CODE' => 'جی-میل سرور Ú©Û’ جواب کا کوڈ‌حاصل Ù†Ûیں‌کیا جا سکا', + 'NO_EMAIL_SUBJECT' => 'برقی خط Ú©Û’ لیے کوئی عنوان معین Ù†Ûیں کیا گیا', + 'NO_FORUM' => 'آپ کا منتخب Ú©Ø±Ø¯Û Ùورم موجود Ù†Ûیں', + 'NO_FORUMS' => 'اس بورڈ پر کوئی Ùورم موجود Ù†Ûیں', + 'NO_GROUP' => 'Ù…Ø·Ù„ÙˆØ¨Û Ú¯Ø±ÙˆÛ٠اراکین موجود Ù†Ûیں.', + 'NO_GROUP_MEMBERS' => 'اس Ú¯Ø±ÙˆÛ Ù…ÛŒÚº ÙÛŒ الحال کوئی رکن شامل Ù†Ûیں', + 'NO_IPS_DEFINED' => 'کوئی آئی Ù¾ÛŒ Ù¾ØªÛ ÛŒØ§ Ûوسٹ کا نام متعین Ù†Ûیں کیا گیا', + 'NO_MEMBERS' => 'تلاش Ú©Û’ Ù…Ø·Ù„ÙˆØ¨Û Ù…Ø¹ÛŒØ§Ø± Ú©Û’ مطابق کوئی رکن Ù†Ûیں ملا', + 'NO_MESSAGES' => 'کوئی Ù…Ø±Ø§Ø³Ù„Û Ù†Ûیں', + 'NO_MODE' => 'کوئی موڈ معین Ù†Ûیں کیا گیا.', + 'NO_MODERATORS' => 'اس بورڈ پر مدیران کا تعین Ù†Ûیں کیا گیا', + 'NO_NEW_MESSAGES' => 'نئے مراسلے موجود Ù†Ûیں', + 'NO_NEW_PM' => '0 نئے پیغامات', + 'NO_NEW_POSTS' => 'نئے مراسلے موجود Ù†Ûیں', + 'NO_ONLINE_USERS' => 'کوئی مندرج اراکین لاگ ان Ù†Ûیں Ûیں', + 'NO_POSTS' => 'مراسلے موجود Ù†Ûیں', + 'NO_POSTS_TIME_FRAME' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø­Ø¯ÙˆØ¯Ù Ø§ÙˆÙ‚Ø§Øª Ú©Û’ مطابق اس موضوع میں میں کوئی مراسلے موجود Ù†Ûیں Ûیں', + 'NO_FEED_ENABLED' => 'اس محÙÙ„ پر Ùیڈ دستیاب Ù†Ûیں Ûیں', + 'NO_FEED' => 'Ù…Ø·Ù„ÙˆØ¨Û Ùیڈ موجود Ù†Ûیں ÛÛ’', + 'NO_SUBJECT' => 'کوئی عنوان معین Ù†Ûیں کیا گیا', + 'NO_SUCH_SEARCH_MODULE' => 'مخصوص تلاش کا کوئی پس منظر موجود Ù†Ûیں‌ÛÛ’', + 'NO_SUPPORTED_AUTH_METHODS' => 'کوئی حمائیتی تصدیقی طریقے موجود Ù†Ûیں‌Ûیں', + 'NO_TOPIC' => 'Ù…Ø·Ù„ÙˆØ¨Û Ù…ÙˆØ¶ÙˆØ¹ موجود Ù†Ûیں', + 'NO_TOPIC_FORUM' => 'آپ کا Ù…Ø·Ù„ÙˆØ¨Û Ù…ÙˆØ¶ÙˆØ¹ یا Ù…Ø±Ø§Ø³Ù„Û Ø§Ø¨ موجود Ù†Ûیں ÛÛ’Û”', + 'NO_TOPICS' => 'اس Ùورم میں کوئی موضوع اور مراسلات موجود Ù†Ûیں Ûیں.', + 'NO_TOPICS_TIME_FRAME' => 'Ù…Ø¯ØªÙ Ù…Ø¹ÛŒÙ†Û Ú©Û’ دوران اس Ùورم میں کوئی موضوعات شامل Ù†Ûیں Ûوئے', + 'NO_UNREAD_PM' => '0Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ø°Ø§ØªÛŒ پیغامات', + 'NO_UNREAD_POSTS' => 'اس موضوع کیلیے کوئی ان Ù¾Ú‘Ú¾Û’ مراسلات Ù†Ûیں Ûیں.', + 'NO_UPLOAD_FORM_FOUND' => 'اپ لوڈ‌شروع کر دیا گیا لیکن کوئی درست اپ لوڈ‌Ùارم Ù†Ûیں‌ملا', + 'NO_USER' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø±Ú©Ù† موجود Ù†Ûیں', + 'NO_USERS' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø§Ø±Ø§Ú©ÛŒÙ† موجود Ù†Ûیں', + 'NO_USER_SPECIFIED' => 'کوئی رکنیتی نام معین Ù†Ûیں کیا گیا', + + 'NUM_POSTS_IN_QUEUE' => array( + '0' => 'قطار میں کوئی Ù…Ø±Ø§Ø³Ù„Û Ù†Ûیں', + '1' => 'قطار میں 1 Ù…Ø±Ø§Ø³Ù„Û ÛÛ’', + '2' => 'قطار میں %d مراسلات Ûیں', + ), + + 'OCCUPATION' => 'شغل/ پیشÛ', + 'OFFLINE' => 'آ٠لاین', + 'ONLINE' => 'آن لاین', + 'ONLINE_BUDDIES' => 'متصل احباب', + 'ONLINE_USERS_TOTAL' => 'Ø­Ø§Ù„ÛŒÛ Ù…ØªØµÙ„ اراکین کا میزان %d :: ', + 'ONLINE_USERS_ZERO_TOTAL' => 'Ø­Ø§Ù„ÛŒÛ Ù…ØªØµÙ„(لاگ ان) اراکین کا میزان 0 :: ', + 'ONLINE_USER_TOTAL' => 'Ø­Ø§Ù„ÛŒÛ Ù„Ø§Ú¯ ان رکن %d :: ', + 'OPTIONS' => 'اختیارات', + 'PAGE_OF' => 'صÙØ­Û %1$d از %2$d', + 'PASSWORD' => ' پاس ورڈ', + 'PIXEL' => 'px', + 'PLAY_QUICKTIME_FILE' => 'تشغيل Ùائل Quicktime', + 'PM' => 'ذاتی پیغام', + 'PM_REPORTED' => 'اس ذاتی پیغام Ú©Ùˆ رپورٹ‌کیا گیا ÛÛ’.', + 'POSTING_MESSAGE' => ' %s میں پیغام بھیجتے Ûوئے.', + 'POSTING_PRIVATE_MESSAGE' => 'ذاتی پیغامات Ú©ÛŒ ترسیل', + 'POST' => 'مراسلÛ', + 'POST_ANNOUNCEMENT' => 'اعلان', + 'POST_STICKY' => 'مقبول عام', + 'POSTED' => 'ارسال شدÛ', + 'POSTED_IN_FORUM' => 'میں', + 'POSTED_ON_DATE' => 'بتاریخ:', + 'POSTS' => 'مراسلات', + 'POSTS_UNAPPROVED' => 'Ú©Ù… از Ú©Ù… اس موضوع میں ایک مراسلے Ú©Ùˆ منظوری Ù†Ûیں ملی۔', + 'POST_BY_AUTHOR' => 'از:', + 'POST_BY_FOE' => 'ÛŒÛ Ù…Ø±Ø§Ø³Ù„Û%1$s Ù†Û’ ارسال کیا ÛÛ’ Ø¬ÙˆÚ©Û Ø¢Ù¾Ú©ÛŒ طر٠سے نظرانداز Ø´Ø¯Û Ù„ÙˆÚ¯ÙˆÚº Ú©ÛŒ ÙÛرست میں شامل ÛÛ’ آپ چاÛیں تو Ù…Ø±Ø§Ø³Ù„Û Ø¯ÛŒÚ©Ú¾ سکتے Ûیں اس مقصد Ú©Û’ لیے دکھایئے پر Ú©Ù„Ú© کریں %2$sدکھایئے%3$s .', + 'POST_DAY' => '%.2f مراسلات یومیÛ', + 'POST_DETAILS' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©ÛŒ تÙصیل', + 'POST_NEW_TOPIC' => 'نئے موضوع Ú©ÛŒ ترسیل', + 'POST_PCT' => '%.2f%% Ù…Ù†Ø¬Ù…Ù„Û Ù…Ø±Ø§Ø³Ù„Ø§Øª', + 'POST_PCT_ACTIVE' => '%.2f%% Ù…Ù†Ø¬Ù…Ù„Û Ù…Ø±Ø§Ø³Ù„Ø§ØªÙ Ø§Ø±Ø§Ú©ÛŒÙ†', + 'POST_PCT_ACTIVE_OWN' => '%.2f%% Ù…Ù†Ø¬Ù…Ù„Û Ø¢Ù¾ Ú©Û’ مراسلات', + 'POST_REPLY' => 'جواب دیں', + 'POST_REPORTED' => 'رپورٹ دیکھنے Ú©Û’ لیے Ú©Ù„Ú© کریں', + 'POST_SUBJECT' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©Ø§ عنوان', + 'POST_TIME' => 'وقت٠ارسال', + 'POST_TOPIC' => 'نیا موضوع ارسال کریں', + 'POST_UNAPPROVED' => 'ÛŒÛ Ù…Ø±Ø§Ø³Ù„Û Ù…Ù†Ø¸ÙˆØ±ÛŒ کا منتظر Ú¾Û’', + 'PREVIEW' => 'پیش منظر', + 'PREVIOUS' => 'سابق', + 'PREVIOUS_STEP' => 'سابق مرحلÛ', + 'PRIVACY' => 'سند٠محرمیت', + 'PRIVATE_MESSAGE' => 'ذاتی پیغام', + 'PRIVATE_MESSAGES' => 'ذاتی پیغامات', + 'PRIVATE_MESSAGING' => 'ذاتی نوعیت Ú©ÛŒ مراسلت', + 'PROFILE' => 'پروÙایل کنٹرول پینل', + 'READING_FORUM' => '%s میں مراسلات دیکھ رÛÛ’ Ûیں', + 'READING_GLOBAL_ANNOUNCE' => 'اعلانات عام کا مطالعÛ', + 'READING_LINK' => '%s اس Ùورم کا لنک ÛÛ’', + 'READING_TOPIC' => '%s میں Ù…Ø±Ø§Ø³Ù„Û Ù¾Ú‘Ú¾ رÛÛ’ Ûیں۔', + 'READ_PROFILE' => 'کوائ٠نامÛ', + 'REASON' => 'وجÛ', + 'RECORD_ONLINE_USERS' => 'Ùورم کا Ø¯ÙˆØ±Û Ú©Ø±Ù†Û’ والے سب سے Ø²ÛŒØ§Ø¯Û Ø§Ø±Ø§Ú©ÛŒÙ† Ú©ÛŒ تعداد%1$s جو بتاریخ: %2$s متصل تھے۔', + 'REDIRECT' => 'تحويل', + 'REDIRECTS' => 'Ú©Ù„ تحویلات', + 'REGISTER' => 'شمولیت اختیار کریں۔', + 'REGISTERED_USERS' => 'مندرج اراکین:', + 'REG_USERS_ONLINE' => ' %d مندرج اراکین اور ', + 'REG_USERS_TOTAL' => '%d اراکین اور', + 'REG_USERS_TOTAL_AND' => '%d رجسٹرڈ اور ', + 'REG_USERS_ZERO_ONLINE' => '0 مندرج اراکین اور ', + 'REG_USERS_ZERO_TOTAL' => '0 اراکین ØŒ', + 'REG_USERS_ZERO_TOTAL_AND' => '0 رجسٹرڈ اور', + 'REG_USER_ONLINE' => ' %d مندرج رکن اور', + 'REG_USER_TOTAL' => '%d رکن اور ', + 'REG_USER_TOTAL_AND' => '%d رجسٹرڈ اور ', + 'REMOVE' => 'حذÙ', + 'REMOVE_INSTALL' => 'Ø¨Ø±Ø§Û Ú©ÙˆÙ… install نامی ڈائریکٹری Ú©Ùˆ حذ٠کر دیں', + 'REPLIES' => 'جوابات', + 'REPLY_WITH_QUOTE' => 'جواب مع اقتباس', + 'REPLYING_GLOBAL_ANNOUNCE' => 'اعلان عام کا جواب', + 'REPLYING_MESSAGE' => '%s میں Ù…Ø±Ø§Ø³Ù„Û Ú©Ø§ جواب دیتے ھوئے', + 'REPORT_BY' => 'رپورٹ از:', + 'REPORT_POST' => 'اس Ù…Ø±Ø§Ø³Ù„Û Ú©Û’ بارے میں شکایت کریں', + 'REPORTING_POST' => 'Ù…Ø±Ø§Ø³Ù„Û Ú©ÛŒ شکایت', + 'RESEND_ACTIVATION' => 'ایکٹویشن ای میل Ø¯ÙˆØ¨Ø§Ø±Û Ø¨Ú¾ÛŒØ¬ÛŒÚº', + 'RESET' => 'اعادÛ', + 'RESTORE_PERMISSIONS' => 'اجازت ناموں کا اعادÛ', + 'RETURN_INDEX' => '%s صÙØ­ÛØ¡ اول پر واپسی%s', + 'RETURN_FORUM' => '%sآخری زیر Ù…Ù„Ø§Ø­Ø¸Û ØµÙØ­Û Ù¾Ø± واپسی%s', + 'RETURN_PAGE' => '%sصÙØ­ÛØ¡ سابق پر واپسی%s', + 'RETURN_TOPIC' => '%sآخری زیر Ù…Ø´Ø§Ú¾Ø¯Û Ù…ÙˆØ¶ÙˆØ¹ پر واپسی%s', + 'RETURN_TO' => 'واپسی بجانب', + 'FEED' => 'Ùیڈ', + 'FEED_NEWS' => 'خبریں', + 'FEED_TOPICS_ACTIVE' => 'Ùعال موضوعات', + 'FEED_TOPICS_NEW' => 'نئے موضوعات', + 'RULES_ATTACH_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں اپنے مراسلوں Ú©Û’ ساتھ Ùائلیں منسلک کرنے Ú©ÛŒ', + 'RULES_ATTACH_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں اپنے مراسلوں Ú©Û’ ساتھ Ùائلیں منسلک کرنے Ú©ÛŒ', + 'RULES_DELETE_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں اپنے مراسلات حذ٠کرنے Ú©ÛŒ', + 'RULES_DELETE_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں اپنے مراسلات حذ٠کرنے Ú©ÛŒ', + 'RULES_DOWNLOAD_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں مسلک Ø´Ø¯Û Ùائلوں Ú©Û’ حصول (ڈائونلوڈنگ) Ú©ÛŒ', + 'RULES_DOWNLOAD_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں مسلک Ø´Ø¯Û Ùائلوں Ú©Û’ حصول (ڈائونلوڈنگ) Ú©ÛŒ', + 'RULES_EDIT_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں موجود اپنے مراسلت Ú©ÛŒ ترمیم Ùˆ تدوین Ú©ÛŒ', + 'RULES_EDIT_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں موجود اپنے مراسلت Ú©ÛŒ ترمیم Ùˆ تدوین Ú©ÛŒ', + 'RULES_LOCK_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں موجود موضوعات Ú©Ùˆ مقÙÙ„ کرنے Ú©ÛŒ', + 'RULES_LOCK_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں موجود موضوعات Ú©Ùˆ مقÙÙ„ کرنے Ú©ÛŒ', + 'RULES_POST_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں نئے موضوعات شروع کرنے Ú©ÛŒ', + 'RULES_POST_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں نئے موضوعات شروع کرنے Ú©ÛŒ', + 'RULES_REPLY_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں جوابات ارسال کرنے Ú©ÛŒ', + 'RULES_REPLY_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں جوابات ارسال کرنے Ú©ÛŒ', + 'RULES_VOTE_CAN' => 'آپ Ú©Ùˆ اجازت Ú¾Û’: اس Ùورم میں موجودرائے شمااریوں میں ووٹ ڈالنے Ú©ÛŒ', + 'RULES_VOTE_CANNOT' => 'آپ Ú©Ùˆ اجازت Ù†Ûیں Ú¾Û’: اس Ùورم میں موجودرائے شمااریوں میں ووٹ ڈالنے Ú©ÛŒ', + 'SEARCH' => 'تلاش', + 'SEARCH_MINI' => ' تلاش', + 'SEARCH_ADV' => 'Ù…Ùصل تلاش', + 'SEARCH_ADV_EXPLAIN' => 'Ù…Ùصل تلاش Ú©Û’ اختیارات Ú©ÛŒ نمائش', + 'SEARCH_KEYWORDS' => 'اصطلاحات Ú©ÛŒ تلاش', + 'SEARCHING_FORUMS' => 'Ùورم میں تلاشی', + 'SEARCH_ACTIVE_TOPICS' => 'Ùعال (ایکٹو) موضوعات دیکھیے', + 'SEARCH_FOR' => 'تلاش برائے ــــ', + 'SEARCH_FORUM' => 'Ùورم میں تلاش…', + 'SEARCH_NEW' => 'نئے مراسلے دیکھیے', + 'SEARCH_POSTS_BY' => 'کسی رکن Ú©Û’ مراسلات میں تلاش', + 'SEARCH_SELF' => 'آپکے مراسلے', + 'SEARCH_TOPIC' => 'اس موضوع Ú©Û’ اندر تلاش…', + 'SEARCH_UNANSWERED' => 'موضوعات جن Ú©Û’ جوابات Ù†Ûیں دیے گئے', + 'SEARCH_UNREAD' => 'ان Ù¾Ú‘Ú¾Û’ پیغامات', + 'SEARCH_USER_POSTS' => 'صار٠کی طر٠سے Ú©ÛŒ Ú¯ÛŒ پوسٹ Ú©ÛŒ تلاش', + 'SECONDS' => 'لمحات', + 'SELECT' => 'منتخب', + 'SELECT_ALL_CODE' => 'تمام منتخب کریں', + 'SELECT_DESTINATION_FORUM' => 'Ø¨Ø±Ø§Û Ú©Ø±Ù… کسی Ùورم کا بطور Ûد٠Ùورم انتخاب کریں', + 'SELECT_FORUM' => 'Ùورم منتخب کریں', + 'SEND_EMAIL' => 'ای میل', + 'SEND_EMAIL_USER' => 'ای میل', + 'SEND_PRIVATE_MESSAGE' => 'ذاتی پیغام ارسال کریں', + 'SETTINGS' => 'ترتیبات', + 'SIGNATURE' => 'دستخط', + 'SKIP' => 'نظر انداز کریں', + 'SMTP_NO_AUTH_SUPPORT' => 'SMTP سرور توثیق Ù†Ûیں‌کر سکتا', + 'SORRY_AUTH_READ' => 'آپ Ú©Ùˆ اس Ùورم Ú©Û’ Ù…Ø·Ø§Ù„Ø¹Û Ú©ÛŒ اجازت Ù†Ûیں', + 'SORRY_AUTH_VIEW_ATTACH' => 'آپ Ú©Ùˆ اس Ù…Ù†Ø³Ù„Ú©Û Ùائل Ú©Û’ حصول Ú©ÛŒ اجازت Ù†Ûیں', + 'SORT_BY' => 'Ø¨Û ØªØ±ØªÛŒØ¨', + 'SORT_JOINED' => 'تاریخ شمولیت', + 'SORT_LOCATION' => 'مکانیت', + 'SORT_RANK' => 'عÛدÛ', + 'SORT_POSTS' => 'مراسلات', + 'SORT_TOPIC_TITLE' => 'موضوع کا عنوان', + 'SORT_USERNAME' => 'رکنیتی نام', + 'SPLIT_TOPIC' => 'موضوعات Ú©ÛŒ تقسیم', + 'SQL_ERROR_OCCURRED' => 'اس صÙØ­Û Ú©ÛŒ تشکیل Ú©Û’ دوران ڈیٹا بیس کا ایک Ù…Ø³Ø¦Ù„Û Ø³Ø§Ù…Ù†Û’ آیا ÛÛ’Û” برائے Ù…Ûربانی اگر ÛŒÛ Ù…Ø³Ø¦Ù„Û Ø¨Ø±Ù‚Ø±Ø§Ø± رÛتا ÛÛ’ تو %sBoard Administrator%s سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚºÛ” Ø´Ú©Ø±ÛŒÛ !', + 'STATISTICS' => 'اعداد Ùˆ شمار:', + 'START_WATCHING_FORUM' => 'اس Ùورم میں اشتراک اختیار کریں', + 'START_WATCHING_TOPIC' => 'اس موضوع میں اشتراک اختیار کریں', + 'STOP_WATCHING_FORUM' => 'اس Ùورم میں اشتراک ختم کریں', + 'STOP_WATCHING_TOPIC' => 'اس موضوع میں اشتراک ختم کریں', + 'SUBFORUM' => 'ذیلی Ùورم', + 'SUBFORUMS' => 'ذیلی Ùورم', + 'SUBJECT' => 'عنوان', + 'SUBMIT' => 'ارسال', + 'TERMS_USE' => 'رکنیت Ú©ÛŒ شرائط', + 'TEST_CONNECTION' => 'آزمائش٠اتصال', + 'THE_TEAM' => 'انتظامیÛ', + 'TIME' => 'وقت', + 'TOO_LARGE' => 'آپکی داخل Ú©ÛŒ گئی قیمت بÛت لمبی ÛÛ’.', + 'TOO_LARGE_MAX_RECIPIENTS' => 'آپکی داخل Ú©ÛŒ گئی ÙÛŒ ذاتی پیغاات Ú©Û’ لیے Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û ÙˆØµÙˆÙ„ کنندگان Ú©ÛŒ تعداد Ú©ÛŒ قیمت بÛت لمبی ÛÛ’.', + 'TOO_LONG' => 'لکھا گیا مواد بÛت طویل ÛÛ’', + 'TOO_LONG_AIM' => 'درج Ú©Ø±Ø¯Û Ø³Ú©Ø±ÛŒÙ† نام بÛت طویل ÛÛ’', + 'TOO_LONG_CONFIRM_CODE' => 'درج Ú©Ø±Ø¯Û ØªÙˆØ«ÛŒÙ‚ÛŒ رمز بÛت طویل ÛÛ’', + 'TOO_LONG_DATEFORMAT' => 'تاریخ Ú©ÛŒ جو صورت آپ Ù†Û’ درج Ú©ÛŒ ÛÛ’ بÛت طویل ÛÛ’.', + 'TOO_LONG_ICQ' => 'درج Ú©Ø±Ø¯Û ICQ نمبر بÛت طویل ÛÛ’.', + 'TOO_LONG_INTERESTS' => 'درج Ú©Ø±Ø¯Û Ø¯Ù„ چسپیاں بÛت طویل Ûیں.', + 'TOO_LONG_JABBER' => 'درج Ú©Ø±Ø¯Û jabber Ú©Ú¾Ø§ØªÛ Ø¨Ûت طویل ÛÛ’.', + 'TOO_LONG_LOCATION' => 'درج Ú©Ø±Ø¯Û Ù…Ú©Ø§Ù†ÛŒØª بÛت طویل ÛÛ’.', + 'TOO_LONG_MSN' => 'درج Ú©Ø±Ø¯Û MSN پیغام رسان بÛت طویل ÛÛ’.', + 'TOO_LONG_NEW_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت طویل ÛÛ’.', + 'TOO_LONG_OCCUPATION' => 'درج Ú©Ø±Ø¯Û Ù¾ÛŒØ´Û Ø¨Ûت طویل ÛÛ’.', + 'TOO_LONG_PASSWORD_CONFIRM' => 'درج Ú©Ø±Ø¯Û " پاس ورڈ Ú©ÛŒ توثیق" بÛت طویل ÛÛ’.', + 'TOO_LONG_USER_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت طویل ÛÛ’.', + 'TOO_LONG_USERNAME' => 'درج Ú©Ø±Ø¯Û Ø±Ú©Ù†ÛŒØªÛŒ نام بÛت طویل ÛÛ’.', + 'TOO_LONG_EMAIL' => 'درج کردÛای میل بÛت طویل ÛÛ’.', + 'TOO_LONG_EMAIL_CONFIRM' => 'درج Ú©Ø±Ø¯Û "برقی Ù¾ØªÛ Ú©ÛŒ توثیق" بÛت طویل ÛÛ’.', + 'TOO_LONG_WEBSITE' => 'Ø¯Ø±Ø¬Û Ú©Ø±Ø¯Û ÙˆÛŒØ¨ سائٹ کا Ù¾ØªÛ Ø¨Ûت طویل ÛÛ’.', + 'TOO_LONG_YIM' => 'درج Ú©Ø±Ø¯Û Yahoo پیغام رسان بÛت طویل ÛÛ’.', + 'TOO_MANY_VOTE_OPTIONS' => 'آپ Ù†Û’ بÛت Ø²ÛŒØ§Ø¯Û Ø§Ø®ØªÛŒØ§Ø±Ø§Øª پر رائے دÛÛŒ Ú©ÛŒ کوشش Ú©ÛŒ ÛÛ’', + 'TOO_SHORT' => 'لکھا گیا مواد بÛت قلیل ÛÛ’', + 'TOO_SHORT_AIM' => 'درج Ú©Ø±Ø¯Û Ø³Ú©Ø±ÛŒÙ† نام بÛت مختصر ÛÛ’', + 'TOO_SHORT_CONFIRM_CODE' => 'درج Ú©Ø±Ø¯Û ØªÙˆØ«ÛŒÙ‚ÛŒ رمز بÛت مختصر ÛÛ’', + 'TOO_SHORT_DATEFORMAT' => 'تاریخ Ú©ÛŒ جو صورت آپ Ù†Û’ درج Ú©ÛŒ ÛÛ’ بÛت مختصر ÛÛ’.', + 'TOO_SHORT_ICQ' => 'درج Ú©Ø±Ø¯Û ICQ نمبر بÛت مختصر ÛÛ’.', + 'TOO_SHORT_INTERESTS' => 'درج Ú©Ø±Ø¯Û Ø¯Ù„ چسپیاں بÛت مختصر Ûیں.', + 'TOO_SHORT_JABBER' => 'درج Ú©Ø±Ø¯Û jabber Ú©Ú¾Ø§ØªÛ Ø¨Ûت مختصر ÛÛ’.', + 'TOO_SHORT_LOCATION' => 'درج Ú©Ø±Ø¯Û Ù…Ú©Ø§Ù†ÛŒØª بÛت مختصر ÛÛ’.', + 'TOO_SHORT_MSN' => 'درج Ú©Ø±Ø¯Û MSN پیغام رسان بÛت مختصر ÛÛ’.', + 'TOO_SHORT_NEW_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت مختصر ÛÛ’.', + 'TOO_SHORT_OCCUPATION' => 'درج Ú©Ø±Ø¯Û Ù¾ÛŒØ´Û Ø¨Ûت مختصر ÛÛ’.', + 'TOO_SHORT_PASSWORD_CONFIRM' => 'درج Ú©Ø±Ø¯Û " پاس ورڈ Ú©ÛŒ توثیق" بÛت مختصر ÛÛ’.', + 'TOO_SHORT_USER_PASSWORD' => 'درج Ú©Ø±Ø¯Û Ù¾Ø§Ø³ ورڈ بÛت مختصر ÛÛ’.', + 'TOO_SHORT_USERNAME' => 'درج Ú©Ø±Ø¯Û Ø±Ú©Ù†ÛŒØªÛŒ نام بÛت مختصر ÛÛ’.', + 'TOO_SHORT_EMAIL' => 'درج Ú©Ø±Ø¯Û Ø§ÛŒ میل بÛت مختصر ÛÛ’.', + 'TOO_SHORT_EMAIL_CONFIRM' => 'درج Ú©Ø±Ø¯Û "ای میل Ú©ÛŒ توثیق" بÛت مختصر ÛÛ’.', + 'TOO_SHORT_WEBSITE' => 'Ø¯Ø±Ø¬Û Ú©Ø±Ø¯Û ÙˆÛŒØ¨ سائٹ کا Ù¾ØªÛ Ø¨Ûت مختصر ÛÛ’.', + 'TOO_SHORT_YIM' => 'درج Ú©Ø±Ø¯Û Yahoo پیغام رسان بÛت مختصر ÛÛ’.', + 'TOO_SMALL' => 'آپکی داخل Ú©ÛŒ گئی قیمت بÛت چھوٹی ÛÛ’.', + 'TOO_SMALL_MAX_RECIPIENTS' => 'آپکی داخل Ú©ÛŒ گئی ÙÛŒ ذاتی پیغاات Ú©Û’ لیے Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û ÙˆØµÙˆÙ„ کنندگان Ú©ÛŒ تعداد Ú©ÛŒ قیمت بÛت چھوٹی ÛÛ’.', + 'TOPIC' => 'موضوع', + 'TOPICS' => 'موضوعات', + 'TOPICS_UNAPPROVED' => 'اس Ùورم میں Ú©Ù… سے Ú©Ù… ایک موضوع غیر اجازت یاÙØªÛ ÛÛ’', + 'TOPIC_ICON' => 'موضوعات Ú©Û’ آئکن', + 'TOPIC_LOCKED' => 'ÛŒÛ Ù…ÙˆØ¶ÙˆØ¹ مقÙÙ„ ÛÛ’ ØŒ اس Ú©ÛŒ ترمیم Ùˆ تدوین Ù†Ûیں Ú©ÛŒ جا سکتی اور اس میں موجود مراسلات Ú©Û’ جوابات Ù†Ûیں دیے جا سکتے', + 'TOPIC_LOCKED_SHORT' => 'موضوع مقÙÙ„ ÛÛ’', + 'TOPIC_MOVED' => 'منتقل Ø´Ø¯Û Ù…ÙˆØ¶ÙˆØ¹', + 'TOPIC_REVIEW' => 'موضوع Ú©ÛŒ جانب مراجعت', + 'TOPIC_TITLE' => 'موضوع کا عنوان', + 'TOPIC_UNAPPROVED' => 'ÛŒÛ Ù…ÙˆØ¶ÙˆØ¹ منظور Ù†Ûیں Ûوا', + 'TOTAL_ATTACHMENTS' => '(s) :: مسلکات', + 'TOTAL_LOG' => '1 لاگ', + 'TOTAL_LOGS' => '%d لاگز', + 'TOTAL_NO_PM' => 'کوئی ذاتی پیعام موجود Ù†Ûیں', + 'TOTAL_PM' => 'Ú©Ù„ ذاتی پیغامات:: 1 پیغام', + 'TOTAL_PMS' => 'Ú©Ù„ ذاتی پیغامات:: $d پیغامات', + 'TOTAL_POSTS' => 'مراسلات Ú©ÛŒ تعداد', + 'TOTAL_POSTS_OTHER' => 'مراسلات Ú©ÛŒ تعداد:: %d', + 'TOTAL_POSTS_ZERO' => 'مراسلات Ú©ÛŒ تعداد:: 0', + 'TOPIC_REPORTED' => 'This topic has been reported', + 'TOTAL_TOPICS_OTHER' => 'موضوعات Ú©ÛŒ تعداد %d', + 'TOTAL_TOPICS_ZERO' => 'موضوعات Ú©ÛŒ تعداد 0', + 'TOTAL_USERS_OTHER' => 'اراکین Ú©ÛŒ تعداد %d', + 'TOTAL_USERS_ZERO' => 'اراکین Ú©ÛŒ تعداد 0', + 'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s', + 'UNABLE_GET_IMAGE_SIZE' => 'تصویر Ú©ÛŒ جÛات کا تعین Ù†Ûیں ÛÙˆ سکا', + 'UNABLE_TO_DELIVER_FILE' => 'معذرت! Ùائل Ú©ÛŒ ترسیل میں ناکامی', + 'UNKNOWN_BROWSER' => 'نامعلوم براؤزر', + 'UNMARK_ALL' => 'تمام Ú©Ùˆ غیر منتخب کریں', + 'UNREAD_MESSAGES' => 'Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ù…Ø±Ø§Ø³Ù„Ø§Øª', + 'UNREAD_PM' => '%d Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ù…Ø±Ø§Ø³Ù„Û', + 'UNREAD_PMS' => '%d Ù†Ø§Ø®ÙˆØ§Ù†Ø¯Û Ù…Ø±Ø§Ø³Ù„Ø§Øª', + 'UNREAD_POST' => 'Unread Post', + 'UNREAD_POSTS' => 'Unread Posts', + 'UNWATCHED_FORUMS' => 'منتخب Ø´Ø¯Û Ùورم Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے آپ Ù†Û’ شراکت داری حاصل Ù†Ûیں Ú©ÛŒ Ûوئی.', + 'UNWATCHED_TOPICS' => 'منتخب Ø´Ø¯Û Ù…ÙˆØ¶ÙˆØ¹Ø§Øª Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے آپ Ù†Û’ شراکت داری حاصل Ù†Ûیں Ú©ÛŒ Ûوئی.', + 'UNWATCHED_FORUMS_TOPICS' => 'منتخب Ø´Ø¯Û Ù…ÙˆØ¶ÙˆØ¹Ø§Øª Ùˆ مراسلات Ú©Û’ اطلاع ناموں Ú©Û’ حصول Ú©Û’ لیے آپ Ù†Û’ شراکت داری حاصل Ù†Ûیں Ú©ÛŒ Ûوئی.', + 'UPDATE' => 'ØªØ§Ø²Û Ú©Ø§Ø±ÛŒ', + 'UPLOAD_IN_PROGRESS' => 'عمل٠تصعید(اپ لوڈنگ) جاری ÛÛ’', + 'URL_REDIRECT' => 'اگر آپ کا براؤزر آپ Ú©Ùˆ Ø¯ÙˆØ¨Ø§Ø±Û ÙˆØ§Ù¾Ø³ Ù†Û Ù„Û’ جائے تو %sÛŒÛاں Ú©Ù„Ú©%s کریں.', + 'USERGROUPS' => 'اراکیں Ú©Û’ گروÛ', + 'USERNAME' => 'رکن کا نام', + 'USERNAMES' => 'اراکین Ú©Û’ نام', + 'USER_AVATAR' => 'رکن Ú©ÛŒ Ù†Ù…Ø§Ø¦Ù†Ø¯Û ØªØµÙˆÛŒØ±', + 'USER_CANNOT_READ' => 'آپ اس Ùورم Ú©Û’ مراسلات کا Ù…Ø·Ø§Ù„Ø¹Û Ù†Ûیں کر سکتے', + 'USER_POST' => '%d مراسلÛ', + 'USER_POSTS' => '%d مراسلات', + 'USERS' => 'اراکین', + 'USE_PERMISSIONS' => 'رکن Ú©Û’ اجازت ناموں Ú©ÛŒ جانچ', + 'USER_NEW_PERMISSION_DISALLOWED' => 'ÛÙ… معذرت Ø®ÙˆØ§Û Ûیں ØŒ آپ ÛŒÛ Ø§Ø®ØªÛŒØ§Ø± استعمال Ù†Ûیں کر سکتے . اس کیلیے آپ Ú©Ùˆ رجسٹرڈ Ûونا Ù¾Ú‘Û’ گااور اس اختیار میں شراکت حاصل کرنا Ù¾Ú‘Û’ Ú¯ÛŒ', + 'VARIANT_DATE_SEPARATOR' => ' / ', + 'VIEWED' => 'Ù…Ø´Ø§Ú¾Ø¯Û Ú©ÛŒØ§ گیا', + 'VIEWING_FAQ' => 'عمومی سوالات کا مشاھدÛ', + 'VIEWING_MEMBERS' => 'ÙÛرست اراکین کا مشاھدÛ', + 'VIEWING_ONLINE' => 'Ø­Ø§Ù„ÛŒÛ Ù„Ø§Ú¯ ان اراکین کا مشاھدÛ', + 'VIEWING_MCP' => 'ادارتی کنٹرول پینل کا مشاھدÛ', + 'VIEWING_MEMBER_PROFILE' => 'کسی رکن Ú©Û’ Ú©ÙˆØ§Ø¦Ù Ù†Ø§Ù…Û Ú©Ø§ مطالعÛ', + 'VIEWING_PRIVATE_MESSAGES' => 'ذاتی پیغامات کا مشاھدÛ', + 'VIEWING_REGISTER' => 'نئے Ú©Ú¾Ø§ØªÛ Ú©Ø§ اندراج', + 'VIEWING_UCP' => 'رکنیتی کنٹرول پینل کا مشاھدÛ', + 'VIEWS' => 'مشاهدات', + 'VIEW_BOOKMARKS' => 'کتابی نشانات کا مشاھدÛ', + 'VIEW_FORUM_LOGS' => 'لاگ دیکھیں', + 'VIEW_LATEST_POST' => 'ØªØ§Ø²Û ØªØ±ÛŒÙ† Ù…Ø±Ø§Ø³Ù„Û Ø¯ÛŒÚ©Ú¾ÛŒÛ’', + 'VIEW_NEWEST_POST' => 'Ù¾Ûلا "ناخواندÛ" Ù…Ø±Ø§Ø³Ù„Û Ø¯ÛŒÚ©Ú¾ÛŒÛ’', + 'VIEW_NOTES' => 'اراکین Ú©Û’ تبصرے/یادداشتیں دیکھیے', + 'VIEW_ONLINE_TIME' => 'ÛŒÛ Ù…Ø¹Ù„ÙˆÙ…Ø§Øª ان اراکین پر مشتمل Ûیں جو %d منٹ Ù¾ÛÙ„Û’ متصل تھے', + 'VIEW_ONLINE_TIMES' => 'ÛŒÛ Ù…Ø¹Ù„ÙˆÙ…Ø§Øª ان اراکین پر مشتمل Ûیں جو %d منٹ Ù¾ÛÙ„Û’ متصل تھے', + 'VIEW_TOPIC' => 'موضوع کا مشاÛدÛ', + 'VIEW_TOPIC_ANNOUNCEMENT' => 'اعلان: ', + 'VIEW_TOPIC_GLOBAL' => 'اعلان عام: ', + 'VIEW_TOPIC_LOCKED' => 'مقÙÙ„: ', + 'VIEW_TOPIC_LOGS' => 'ØªØ§Ø±ÛŒØ®Ú†Û Ø¯ÛŒÚ©Ú¾ÛŒÚº', + 'VIEW_TOPIC_MOVED' => 'انتقال شدÛ: ', + 'VIEW_TOPIC_POLL' => 'استصواب رائے: ', + 'VIEW_TOPIC_STICKY' => 'مقبول عام: ', + 'VISIT_WEBSITE' => 'ویب سائٹ کا Ø¯ÙˆØ±Û Ú©Ø±ÛŒÚº', + 'WARNINGS' => 'تنبیÛات', + 'WARN_USER' => 'رکن Ú©Ùˆ تنبیÛ', + 'WELCOME_SUBJECT' => 'Ùورم پر خوش آمدید %s', + 'WEBSITE' => 'ویب سائٹ', + 'WHOIS' => 'کون متصل ÛÛ’ ', + 'WHO_IS_ONLINE' => 'کون متصل Ú¾Û’', + 'WRONG_PASSWORD' => 'آپ Ù†Û’ غلط پاس ورڈ ÙراÛÙ… کیا ÛÛ’', + 'WRONG_DATA_ICQ' => 'آپ Ú©ÛŒ جانب سے ÙراÛÙ… Ú©Ø±Ø¯Û Ù†Ù…Ø¨Ø± ICQ درست Ù†Ûیں ÛÛ’', + 'WRONG_DATA_JABBER' => ' jabber Ú©Ú¾Ø§ØªÛ Ú©Ø§ نام جو آپ Ù†Û’ ÙراÛÙ… کیا ÛÛ’ درست Ù†Ûیں ÛÛ’', + 'WRONG_DATA_LANG' => 'آپکی معین Ú©Ø±Ø¯Û Ù„ØºØª درست Ù†Ûیں ÛÛ’', + 'WRONG_DATA_WEBSITE' => 'دیا گیا ویب سائٹ ایڈریس غلط ÛÛ’. مثال http://www.urdudreams.com', + 'WROTE' => 'لکھا ÛÛ’', + 'YEAR' => 'سال', + 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', + 'YES' => 'جی ھاں', + 'YIM' => 'YIM', + 'YOU_LAST_VISIT' => 'آپ کا آخری Ø¯ÙˆØ±Û : %s', + 'YOU_NEW_PM' => 'ان باکس میں نئے پیغامات آپ Ú©Û’ منتظر Ûیں', + 'YOU_NEW_PMS' => 'ان باکس میں نئے پیغامات آپ Ú©Û’ منتظر Ûیں', + 'YOU_NO_NEW_PM' => 'ان بکس میں نئے ذاتی پیغامات موجود Ù†Ûیں', + + 'datetime' => array( + 'TODAY' => 'آج', + 'TOMORROW' => 'Ø¢Ø¦Ù†Ø¯Û Ø±ÙˆØ²', + 'YESTERDAY' => 'Ú¯Ø²Ø´ØªÛ Ø±ÙˆØ²', + + 'AGO' => array( + '0' => 'Ù¾Ú†Ú¾Ù„Û’ ایک منٹ Ú©Û’ دوران', + '1' => '%d منٹ گزرے Ûیں', + '2' => '%d Ù…Ø§Û Ú¯Ø²Ø±Û’ Ûیں', + '60' => 'ایک Ú¯Ú¾Ù†Ù¹Û Ú¯Ø²Ø±Ø§ ÛÛ’', + ), + + 'Sunday' => 'اتوار', + 'Monday' => 'پیر', + 'Tuesday' => 'منگل', + 'Wednesday' => 'بدھ', + 'Thursday' => 'جمعرات', + 'Friday' => 'جمعÛ', + 'Saturday' => 'Ú¾ÙتÛ', + 'Sun' => 'اتوار', + 'Mon' => 'پیر', + 'Tue' => 'منگل', + 'Wed' => 'بدھ', + 'Thu' => 'جمعرات', + 'Fri' => 'جمعÛ', + 'Sat' => 'ÛÙتÛ', + 'January' => 'جنوری', + 'February' => 'Ùروی', + 'March' => 'مارچ ', + 'April' => 'اپریل', + 'May' => 'مئی', + 'June' => 'جون', + 'July' => 'جولائی', + 'August' => 'اگست ', + 'September' => 'ستمبر', + 'October' => 'اکتوبر', + 'November' => 'نومبر', + 'December' => 'دسمبر', + 'Jan' => 'جنوری', + 'Feb' => 'Ùروری', + 'Mar' => 'مارچ', + 'Apr' => 'اپریل', + 'May_short' => 'مئی', + 'Jun' => 'جون', + 'Jul' => 'جولائی', + 'Aug' => 'اگست', + 'Sep' => 'ستمبر', + 'Oct' => 'اکتوبر', + 'Nov' => 'نومبر', + 'Dec' => 'دسمبر', + ), + + + 'tz' => array( + '-12' => 'UTC - 12 hours', + '-11' => 'UTC - 11 hours', + '-10' => 'UTC - 10 hours', + '-9.5' => 'UTC - 9:30 hours', + '-9' => 'UTC - 9 hours', + '-8' => 'UTC - 8 hours', + '-7' => 'UTC - 7 hours', + '-6' => 'UTC - 6 hours', + '-5' => 'UTC - 5 hours', + '-4.5' => 'UTC - 4:30 hours', + '-4' => 'UTC - 4 hours', + '-3.5' => 'UTC - 3:30 hours', + '-3' => 'UTC - 3 hours', + '-2' => 'UTC - 2 hours', + '-1' => 'UTC - 1 hour', + '0' => 'UTC', + '1' => 'UTC + 1 hour', + '2' => 'UTC + 2 hours', + '3' => 'UTC + 3 hours', + '3.5' => 'UTC + 3:30 hours', + '4' => 'UTC + 4 hours', + '4.5' => 'UTC + 4:30 hours', + '5' => 'UTC + 5 hours', + '5.5' => 'UTC + 5:30 hours', + '5.75' => 'UTC + 5:45 hours', + '6' => 'UTC + 6 hours', + '6.5' => 'UTC + 6:30 hours', + '7' => 'UTC + 7 hours', + '8' => 'UTC + 8 hours', + '8.75' => 'UTC + 8:45 hours', + '9' => 'UTC + 9 hours', + '9.5' => 'UTC + 9:30 hours', + '10' => 'UTC + 10 hours', + '10.5' => 'UTC + 10:30 hours', + '11' => 'UTC + 11 hours', + '11.5' => 'UTC + 11:30 hours', + '12' => 'UTC + 12 hours', + '12.75' => 'UTC + 12:45 hours', + '13' => 'UTC + 13 hours', + '14' => 'UTC + 14 hours', + 'dst' => '[ DST ]', + ), + + + 'tz_zones' => array( + '-12' => '[UTC - 12] Baker Island Time', + '-11' => '[UTC - 11] Niue Time, Samoa Standard Time', + '-10' => '[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time', + '-9.5' => '[UTC - 9:30] Marquesas Islands Time', + '-9' => '[UTC - 9] Alaska Standard Time, Gambier Island Time', + '-8' => '[UTC - 8] Pacific Standard Time', + '-7' => '[UTC - 7] Mountain Standard Time', + '-6' => '[UTC - 6] Central Standard Time', + '-5' => '[UTC - 5] Eastern Standard Time', + '-4.5' => '[UTC - 4:30] Venezuelan Standard Time', + '-4' => '[UTC - 4] Atlantic Standard Time', + '-3.5' => '[UTC - 3:30] Newfoundland Standard Time', + '-3' => '[UTC - 3] Amazon Standard Time, Central Greenland Time', + '-2' => '[UTC - 2] Fernando de Noronha Time, South Georgia & the South Sandwich Islands Time', + '-1' => '[UTC - 1] Azores Standard Time, Cape Verde Time, Eastern Greenland Time', + '0' => '[UTC] Western European Time, Greenwich Mean Time', + '1' => '[UTC + 1] Central European Time, West African Time', + '2' => '[UTC + 2] Eastern European Time, Central African Time', + '3' => '[UTC + 3] Moscow Standard Time, Eastern African Time', + '3.5' => '[UTC + 3:30] Iran Standard Time', + '4' => '[UTC + 4] Gulf Standard Time, Samara Standard Time', + '4.5' => '[UTC + 4:30] Afghanistan Time', + '5' => '[UTC + 5] پاکستان کا معیاری وقت', + '5.5' => '[UTC + 5:30] Indian Standard Time, Sri Lanka Time', + '5.75' => '[UTC + 5:45] Nepal Time', + '6' => '[UTC + 6] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time', + '6.5' => '[UTC + 6:30] Cocos Islands Time, Myanmar Time', + '7' => '[UTC + 7] Indochina Time, Krasnoyarsk Standard Time', + '8' => '[UTC + 8] Chinese Standard Time, Australian Western Standard Time, Irkutsk Standard Time', + '8.75' => '[UTC + 8:45] Southeastern Western Australia Standard Time', + '9' => '[UTC + 9] Japan Standard Time, Korea Standard Time, Chita Standard Time', + '9.5' => '[UTC + 9:30] Australian Central Standard Time', + '10' => '[UTC + 10] Australian Eastern Standard Time, Vladivostok Standard Time', + '10.5' => '[UTC + 10:30] Lord Howe Standard Time', + '11' => '[UTC + 11] Solomon Island Time, Magadan Standard Time', + '11.5' => '[UTC + 11:30] Norfolk Island Time', + '12' => '[UTC + 12] New Zealand Time, Fiji Time, Kamchatka Standard Time', + '12.75' => '[UTC + 12:45] Chatham Islands Time', + '13' => '[UTC + 13] Tonga Time, Phoenix Islands Time', + '14' => '[UTC + 14] Line Island Time', + ), + + + 'dateformats' => array( + 'd M Y, H:i' => '01 Jan 2007, 13:37', + 'd M Y H:i' => '01 Jan 2007 13:37', + 'M jS, \'y, H:i' => 'Jan 1st, \'07, 13:37', + 'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm', + 'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm', + '|d M Y|, H:i' => 'Today, 13:37 / 01 Jan 2007, 13:37', + '|F jS, Y|, g:i a' => 'Today, 1:37 pm / January 1st, 2007, 1:37 pm', + ), + + 'default_dateformat' => 'D M d, Y g:i a', +)); + +?> \ No newline at end of file diff --git a/language/ro/email/admin_send_email.tpl b/language/ro/email/admin_send_email.tpl new file mode 100644 index 00000000..ae18535b --- /dev/null +++ b/language/ro/email/admin_send_email.tpl @@ -0,0 +1,12 @@ + + +Urmãtorul mesaj v-a fost trimis de cãtre un administrator al "{SITENAME}". Dacã acest mesaj este spam, conþine comentarii abuzive sau are vreun conþinut ofensiv, vã rugam sã contactaþi webmaster-ul forumului la urmatoarea adresã: + +{BOARD_EMAIL} + +Vã rugãm sã includeþi acest email (mai ales header-ele). + +Urmeazã mesajul care vã este adresat: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +{MESSAGE} diff --git a/language/ro/email/index.htm b/language/ro/email/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/ro/email/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/ro/index.htm b/language/ro/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/language/ro/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/language/ro/lang_admin.php b/language/ro/lang_admin.php new file mode 100644 index 00000000..aa982e3c --- /dev/null +++ b/language/ro/lang_admin.php @@ -0,0 +1,680 @@ + $lang['message'] = 'text'; +/* Specify your language character encoding... [optional] */ +setlocale(LC_ALL, 'en'); + + +$lang['ENCODING'] = 'UTF-8'; +$lang['DIRECTION'] = 'ltr'; +$lang['LEFT'] = 'stânga'; +$lang['RIGHT'] = 'dreapta'; +$lang['DATE_FORMAT'] = 'd/M/Y'; // This should be changed to the default date format for your language, php date() format + +$lang['Mx-Publisher_adminCP'] = 'Mx-Publisher AdministraÅ£ie'; +$lang['Portal_Desc'] = 'A little text to describe your website.'; + +/* +* Left AdminCP Panel +*/ +$lang['1_General_admin'] = 'General'; +$lang['1_1_Management'] = 'ConfiguraÅ£ie'; +$lang['1_2_WordCensors'] = 'Cenzori de cuvinte'; + +$lang['2_CP'] = 'Management'; +$lang['2_1_Modules'] = 'Instalare Module

    '; +$lang['2_2_ModuleCP'] = 'Panou de Control Module'; +$lang['2_3_BlockCP'] = 'Panou de Control Bloc'; +$lang['2_4_PageCP'] = 'Panou de Control Pagină'; + +$lang['3_CP'] = 'Stiluri'; +$lang['2_1_new'] = 'Adaugă nou'; +$lang['2_2_manage'] = 'Configurează'; +$lang['2_3_smilies'] = 'Emoticoane'; + +$lang['4_Panel_system'] = 'Unelte Sistem'; +$lang['4_1_Cache'] = 'Regenerează Cache-ul'; +$lang['4_1_Integrity'] = 'Verificator Integritate'; +$lang['4_1_Meta'] = 'Taguri META'; +$lang['4_1_PHPinfo'] = 'phpInfo()'; +$lang['4_2_Translate'] = 'Panou de Control Traduceri'; + + +/* +* Index +*/ +$lang['Welcome_Mx-Publisher'] = 'Bine aţi venit la panoul de control al MXP CMS'; +$lang['Admin_intro_Mx-Publisher'] = 'Vă mulţumim pentru aţi ales Mx-Publisher ca soluţie pentru portalul/cms-ul dumneavoastră şi phpBB ca soluţie pentru forumul dumneavoastră. Acest ecran vă oferă o privire de ansamblu a diverselor statistici ale site-ului dumneavoastră. Puteţi reveni la această pagină folosind legătura Pagina de start a administratorului din panel-ul stâng. Pentru a reveni la pagina de start a forumului dumneavoastră, apăsaţi pe logo-ul phpBB-ului aflat, de asemenea, în panel-ul stâng. Celelalte legături din partea stângă vă permit să controlaţi orice aspect al forumului, fiecare ecran va avea instrucţiuni care dau explicaţii despre cum se folosesc uneltele.'; + +/* +* General +*/ +$lang['Yes'] = 'Da'; +$lang['No'] = 'Nu'; +$lang['No_modules'] = 'Nici un Modul instalat'; +$lang['No_functions'] = 'Acest modul nu are funcţii bloc'; +$lang['No_parameters'] = 'Această funcţie nu are parametri'; +$lang['No_blocks'] = 'Nici un bloc nu a fost creat pentru aceasta funcţie'; +$lang['No_pages'] = 'Nici o pagină nu a fost creată'; +$lang['No_settings'] = 'Nu mai există setari pentru acest bloc'; +$lang['Quick_nav'] = 'Navigare Quick-Rapidă'; +$lang['Include_all_modules'] = 'Listează toate modulele'; +$lang['Include_block_quickedit'] = 'Include Blocul Panoul Quickedit'; +$lang['Include_block_private'] = 'Include Blocul Panoul Autentificare Prv'; +$lang['Include_all_pages'] = 'Lisează toate paginile'; +$lang['View'] = 'Vizualizeză'; +$lang['Edit'] = 'Editează'; +$lang['Delete'] = 'Şterge'; +$lang['Settings'] = 'Setări'; +$lang['Move_up'] = 'Mută în sus'; +$lang['Move_down'] = 'Mută în jos'; +$lang['Resync'] = 'Resinc'; +$lang['Update'] = 'Actualizare'; +$lang['Permissions'] = 'Permisii'; +$lang['Permissions_std'] = 'Permisii Standard'; +$lang['Permissions_adv'] = 'Permisii Avansate'; +$lang['return_to_page'] = 'Înapoi la Pagina Portalului'; +$lang['Use_default'] = 'Foloseşte setări implicite'; + +$lang['AdminCP_status'] = 'Raport Progres'; +$lang['AdminCP_action'] = 'Acţiune DB'; +$lang['Invalid_action'] = 'Eroare'; +$lang['was_installed'] = 'a fost instalat'; +$lang['was_uninstalled'] = 'a fost dezinstalat'; +$lang['was_upgraded'] = 'a fost upgradat'; +$lang['was_exported'] = 'a fost exportat'; +$lang['was_deleted'] = 'a fost şters'; +$lang['was_removed'] = 'a fost scos'; +$lang['was_inserted'] = 'a fost inserat'; +$lang['was_updated'] = 'a fost actualizat'; +$lang['was_added'] = 'a fost adăugat'; +$lang['was_moved'] = 'a fost mutat'; +$lang['was_synced'] = 'a fost sincronizat'; + +$lang['error_no_field'] = 'Este un câmp lipsă. Te rog complecteză toate câmpurile necesare...'; +$lang['Cookie_settings_mxp'] = 'Configurările pentru cookie'; +$lang['Cookie_settings_explain_mxp'] = 'Aceste detalii definesc cum sunt cookie-urile trimise către browser-ele utilizatorilor. În cele mai multe cazuri valorile standard pentru setările cookie-urilor ar trebui să fie suficiente dar dacă trebuie să le schimbaţi aveţi mare grijă, setările incorecte pot împiedica utilizatorii să se autentifice'; + +/* +* Configuration +*/ +$lang['Portal_admin'] = 'Administraţia Portalului'; +$lang['Portal_admin_explain'] = 'Foloseste acest form pt. a customiza portalul tau'; +$lang['Portal_General_Config'] = 'Configuraţie Portal'; +$lang['Portal_General_Config_explain'] = 'Use this form to manage the main settings of your MX-Publisher site.'; +$lang['Portal_General_settings'] = 'Setari Generale'; +$lang['Portal_Style_settings'] = 'Setari Stiluri'; +$lang['Portal_General_config_info'] = 'Info General Configurare Portal '; +$lang['Portal_General_config_info_explain'] = 'Postată informaţii instalare din fişierul config.php (nu e nevoie de editare)'; +$lang['Portal_Name'] = 'Nume Portal:'; +$lang['Portal_Description'] = 'Descriptie Portal:'; +$lang['Portal_PHPBB_Url'] = 'URL pt. instarea ta de forum phpBB:'; +$lang['Portal_Url'] = 'URL pentru Mx-Publisher:'; +$lang['Portal_Config_updated'] = 'Configuraţia Portalului Actualizată cu Succes'; +$lang['Click_return_portal_config'] = 'Click %sAici%s pentru a te intoarce la Configurarea Portalului'; +$lang['PHPBB_info'] = 'Informatii phpBB'; +$lang['PHPBB_version'] = 'Versiunea phpBB:'; +$lang['PHPBB_script_path'] = 'phpBB Cale Script:'; +$lang['PHPBB_server_name'] = 'phpBB Domeniu (nume_server):'; +$lang['MX_Portal'] = 'Mx-Publisher'; +$lang['MX_Modules'] = 'MXP-Module'; +$lang['Phpbb'] = 'phpBB'; +$lang['Top_phpbb_links'] = 'phpBB Stats în Header (valoare impicită)
    - linkuri la postari noi/necitite etc'; +$lang['Top_phpbb_links_explain'] = '- Legaturi la noi, postari necitite'; +$lang['Portal_version'] = 'Versiune Mx-Publisher:'; +$lang['Mx_use_cache'] = 'Foloseşte MXP Bloc Cache'; +$lang['Mx_use_cache_explain'] = 'Datele din Bloc este în fişiere individuale cache/bloc_*.xml. Fişierele Bloc cache sunt create când Blocurile sunt editate.'; +$lang['Mx_mod_rewrite'] = 'Foloseste mod_rewrite'; +$lang['Mx_mod_rewrite_explain'] = 'Daca eşti pe server Apache, şi ai mod_rewrite activat, poţi rescrie url-urile ca \'page=x\' cu alternative mai intuitive. Citeşte pentru mai multe documentaţia pentru modulul mx_mod_rewrite.'; + +$lang['Portal_Overall_header'] = 'Fişier Overall Header (valoare impicită)'; +$lang['Portal_Overall_header_explain'] = '- Aceasta este valoarea implicită a fişierului overall_header, e.g. overall_header.tpl.'; + +$lang['Portal_Overall_footer'] = 'Fişier Overall Footer (valoare impicită)'; +$lang['Portal_Overall_footer_explain'] = '- Aceasta este valoarea implicită a fişierului overall_footer, e.g. overall_footer.tpl.'; + +$lang['Portal_Main_layout'] = 'Fişier Main Layout (valoare impicită)'; +$lang['Portal_Main_layout_explain'] = '- This is the default template main_layout file, e.g. mx_main_layout.tpl.'; +$lang['Portal_Navigation_block'] = 'Overall Header Navigation Block (valoare impicită)'; +$lang['Portal_Navigation_block_explain'] = '- This is the default template overall_header navigation block.'; + +$lang['Default_style'] = 'Style Pagini Portal (implicit)'; +$lang['Default_admin_style'] = 'Style AdminCP'; +$lang['Select_page_style'] = 'Selectează (ori foloseşte implicit)'; +$lang['Override_style'] = 'Supracrie stilul utilizatorului'; +$lang['Override_style_explain'] = 'Înlocuieşte stilul utilizatorului cu cel implicit (pentru pagini)'; + +$lang['Portal_status'] = 'Stare Portal'; +$lang['Portal_status_explain'] = 'Un switch, când reconstruiţi website-ul. Doar administratorul poate să vadă paginile şi să navigheze normal. Când e dezactivat mesajul de mai jos va fi afişat.'; +$lang['Disabled_message'] = 'Mesaj când portalul e dezactivat'; + +$lang['Portal_Backend'] = 'Utilizator Intern/Sesiune Backend'; +$lang['Portal_Backend_explain'] = 'Selectează intern, phpBB2 sau phpBB3 sessiuni şi utilizatori'; +$lang['Portal_Backend_path'] = 'Cale relativă pentru phpBB [non-intern]'; +$lang['Portal_Backend_path_explain'] = 'Dacă folosiţi sessiuni şi utilizatori non-interne, introduceţi calea relativă către phpbb, ex \'phpBB2/\' sau \'../phpBB2/\'. Notă: slaşurile sunt importante.'; +$lang['Portal_Backend_submit'] = 'Modifică şi validează Backendul'; +$lang['Portal_config_valid'] = 'Statut Backend Curent: '; +$lang['Portal_config_valid_true'] = 'Valid'; +$lang['Portal_config_valid_false'] = 'Instalare Invalidă. Sau calea către phpBB este greşită ori phpBB nu este instalat (baza de date phpBB nu este disponibilă). Deci, este folosit backend \'intern\'.'; + +$lang['Phpbb_path'] = 'phpBB cale relativă'; +$lang['Phpbb_path_explain'] = 'Cale relativă la phpBB, ex. phpBB/ or ../phpBB/
    Notează slaşurile "/", ele sunt importante!'; +$lang['Phpbb_url'] = 'URL phpBB Complet'; +$lang['Portal_backend'] = 'Portal Backend'; +$lang['Phpbb_url_explain'] = 'Exemplu URL phpBB Complect, ex.
    http://www.exemplu.ro/phpBB/'; +$lang['Portal_url'] = 'URL Complet CMS'; +$lang['Portal_url_explain'] = 'URL Complet CMS, ex.
    http://www.exemplu.ro/'; + +/* +* Module Management +*/ +$lang['Module_admin'] = 'Administraţie Module'; +$lang['Module_admin_explain'] = 'Foloseşte acest form pentru a administra modulele: instalare, upgradare şi dezvoltare module.
    Pentru a folosi acest panou, trebuie să ai JavaScript şi cooki-urile activate în browser!'; +$lang['Modulecp_admin'] = 'Panou de Control Module'; +$lang['Modulecp_admin_explain'] = 'Foloseşte acest form pentru a administra modulele: funcţii bloc (parametrii) şi blocuri portal.
    Pentru a folosi acest panou, trebuie să ai JavaScript şi cooki-urile activate în browser!'; +$lang['Modules'] = 'Module'; +$lang['Module'] = 'Modul'; +$lang['Module_delete'] = 'Şterge un Modul'; +$lang['Module_delete_explain'] = 'Foloseşte acest form pentru a şterge un Modul (sau funcţie bloc)'; +$lang['Edit_module'] = 'Editează un Modul'; +$lang['Create_module'] = 'Crează Modul Nou'; +$lang['Module_name'] = 'Nume Modul'; +$lang['Module_desc'] = 'Descripţie'; +$lang['Module_path'] = 'Cale, ex: \'modules/mx_textblocks/\''; +$lang['Module_include_admin'] = 'Include acest modul în panoul din stânga Navigare Admin Meniu'; + +/* +* Module Installation +*/ +$lang['Module_delete_db'] = 'Chiar vrei să dezinstalezi acest Modul? Atenţie: O să pierzi tote datele modulului. Consideră upgradare în loc...'; +$lang['Click_module_delete_yes'] = 'Click %sAici%s pt. a dezinstala modulul'; +$lang['Click_module_upgrade_yes'] = 'Click %sAici%s pt. a upgrada modulul'; +$lang['Click_module_export_yes'] = 'Click %sAici%s pt. a exporta modulul'; +$lang['Error_no_db_install'] = 'Eroare: Fişierul db_install.php nu există. Te rog verifică şi încearcă din nou...'; +$lang['Error_no_db_uninstall'] = 'Eroare: Fişierul db_uninstall.php nu există, sau funcţia de dezinstalare nu este suportată în acest modul. Te rog verifică aceasta şi încearcă din nou...'; +$lang['Error_no_db_upgrade'] = 'Eroare: Fişierul db_upgrade.php nu există, sau funţia de upgradare nu este suportată în acest modul. Te rog verifică aceasta şi încearcă din nou...'; +$lang['Error_module_installed'] = 'Eroare: Acest modul este deja instalat! Te rog înainte ori şterge modulul, ori upgradează modul.'; +$lang['Uninstall_module'] = 'Dezinstalează Modul'; +$lang['import_module_pack'] = 'Instalează Modul'; +$lang['import_module_pack_explain'] = 'Aceasta va adauga un modul la portal. Asigurate că Pachetul Modulului este uploadat în folderul /modules. Ţine minte să foloseşti unltima versiune de Modul!'; +$lang['upgrade_module_pack'] = 'Upgradare Modul'; +$lang['upgrade_module_pack_explain'] = 'Aceasta va upgrada modulul tău. Asigurăte că ai citit Documentaţia Modulului înainte de a proceda, sau poţi risca pierderi de date la modul.'; +$lang['export_module_pack'] = 'Exportare Modul'; +$lang['Export_Module'] = 'Selectează un Modul:'; +$lang['export_module_pack_explain'] = 'Aceasta va exporta fişierul *.pak al modulului. Aceasta este intentat pentru scriitori de module numai...'; +$lang['Module_Config_updated'] = 'Configuraţia Modulului Actualizată cu Succes'; +$lang['Click_return_module_admin'] = 'Click %sAici%s pt. a te întoarce la Administraţie Module'; +$lang['Module_updated'] = 'Informaţiile Modulului Actualizate cu Succes'; +$lang['list_of_queries'] = 'This is the result list of the SQL queries needed for the install/upgrade'; +$lang['already_added'] = 'Error or Already added'; +$lang['added_upgraded'] = 'Added/Updated'; +$lang['upgrading_mods'] = 'If you get some Errors, Already Added or Updated messages, relax, this is normal when updating mods'; +$lang['module_upgrade'] = 'This is a upgrade'; +$lang['fresh_install'] = 'This is a fresh install'; +$lang['module_install_info'] = 'Mod Installation/Upgrading/Uninstalling Information - mod specific db tables'; + +/* +* Functions & Parameters Administration +*/ +$lang['Function_admin'] = 'Administraţie Funcţiune Bloc'; +$lang['Function_admin_explain'] = 'Modulele au una sau mai multe Funcţiuni Bloc. Foloseşte acest form pt. a edita, şi, sau şterge Funcţiunea unui Bloc'; +$lang['Function'] = 'Funcţiune Bloc'; +$lang['Function_name'] = 'Nume Funcţiune Bloc'; +$lang['Function_desc'] = 'Descripţie'; +$lang['Function_file'] = 'Fişier '; +$lang['Function_admin_file'] = 'Fişier (Script Editare Bloc)
    Parametrii extra pentru acest panou editare bloc. Lasă blank (gol) pentru a folosi panoul de editare implicit.'; +$lang['Create_function'] = 'Funcţiune Editare Bloc Nou'; +$lang['Delete_function'] = 'Funcţiune Ştergere Block'; +$lang['Delete_function_explain'] = 'Acesta va şterge funcţiunea şi toate blocurile portalului asociate. Atenţie, această operaţie nu este reversibilă!'; +$lang['Click_function_delete_yes'] = 'Click %sAici%s pt. a şterge Funcţiunea'; + +$lang['Parameter_admin'] = 'Administrare Parametru Funcţiune'; +$lang['Parameter_admin_explain'] = 'Listează toţi Parametrii pt. această Funcţiune'; +$lang['Parameter'] = 'Parametru'; +$lang['Parameter_name'] = 'Nume Parametru
    - pt. a fi folosit pt. a accesa parametru'; +$lang['Parameter_type'] = 'Tip Parametru'; +$lang['Parameter_desc'] = "Decriere Parametru"; +$lang['Parameter_default'] = 'Valoare Implicită'; +$lang['Parameter_function'] = 'Funcţiune/Opţiuni'; +$lang['Parameter_function_explain'] = 'Funcţiune (când foloseşti tipul \'Funcţiune\')
    - Poţi pasa data parametrului la o funcţiune externă
    pt. a genera câmpul form al parametrului.
    - De exemplu:
    get_list_formatted(\"block_list\",\"{parameter_value}\",\"{parameter_id}[]\")'; +$lang['Parameter_function_explain'] .= '

    Opţiune(s) (când foloseşti \'Selecţie\' tipuri parametri)
    - Pentru toţi parametri selecţiei (butoane radio, boxe verificare şi meniuri) toate opţiunile sunt listate aici, o opţiune per linie.'; +$lang['Parameter_auth'] = 'Admin/Bloc şi Moderatori numai'; + +$lang['Parameters'] = 'Parametrii'; +$lang['Parameter_id'] = 'ID'; +$lang['Create_parameter'] = 'Adaugă Parametru Nou'; +$lang['Delete_parameter'] = 'Şterge Funcţiune Parametru'; +$lang['Delete_parameter_explain'] = 'Acesta va şterge parametru şi va actualiza toate blocurile portalului asociate. Atenţie, această operaţie nu este reversibilă!'; +$lang['Click_parameter_delete_yes'] = 'Click %sAici%s pentru a şterge Parametru'; + +/* +* Parameter Types +*/ +$lang['ParType_BBText'] = 'Simplu BBText BlocText'; +$lang['ParType_BBText_info'] = 'Acesta este un simplu bloctext, permite bbcod-uri'; +$lang['ParType_Html'] = 'Simplu Html BlocText'; +$lang['ParType_Html_info'] = 'Acesta este un simplu bloctext, permite html'; +$lang['ParType_Text'] = 'Text Obişnuit (singur-rând)'; +$lang['ParType_Text_info'] = 'Acesta este un simplu câmp de text'; +$lang['ParType_TextArea'] = 'Zona Text Obişnuit (multiple-rânduri)'; +$lang['ParType_TextArea_info'] = 'Acesta este o simplă zonă câmp de text'; +$lang['ParType_Boolean'] = 'Boolean'; +$lang['ParType_Boolean_info'] = 'Acesta este un \'da\' sau \'nu\' comutator radio.'; +$lang['ParType_Number'] = 'Număr Obişnuit'; +$lang['ParType_Number_info'] = 'Acesta este un simplu câmp de numar'; +$lang['ParType_Function'] = 'Funcţie Parametru'; +$lang['ParType_Values'] = 'Valori'; + +$lang['ParType_Radio_single_select'] = 'Singur-Selecţie Buton Radio'; +$lang['ParType_Radio_single_select_info'] = ''; +$lang['ParType_Menu_single_select'] = 'Singur-Selecţie Meniu'; +$lang['ParType_Menu_single_select_info'] = ''; +$lang['ParType_Menu_multiple_select'] = 'Multiplu-Selecţie Meniu'; +$lang['ParType_Menu_multiple_select_info'] = ''; +$lang['ParType_Checkbox_multiple_select'] = 'Multiplu-Selecţie Boxă Verificare'; +$lang['ParType_Checkbox_multiple_select_info'] = ''; + +/* +* Blocks Administration +*/ +$lang['Block_admin'] = 'Panou de Contol Bloc'; +$lang['Block_admin_explain'] = 'Foloseşte acest form pentru a administra Blocurile Portalului.
    Pentru a folosi acest panou, trebuie să ai JavaScript şi cooki-urile activate în browser!'; +$lang['Block'] = 'Bloc'; +$lang['Show_title'] = 'Arata Titlu Bloc?'; +$lang['Show_title_explain'] = 'Dacă ori nu se arată titlul blocului'; +$lang['Show_block'] = 'Arată Bloc?'; +$lang['Show_block_explain'] = '- Daca \'nu\', Blocul este ascuns pt. toţi utilizatorii, exceptând administratorii'; +$lang['Show_stats'] = 'Arată Statistice?'; +$lang['Show_stats_explain'] = '- Daca \'da\', \'editat de...\' va fi afişat langă bloc'; +$lang['Show_blocks'] = 'Vizualizeză Funcţia Blocurilor'; +$lang['Block_delete'] = 'Şterge un Bloc'; +$lang['Block_delete_explain'] = 'Foloseşte acest form pt. a şterge un Bloc (ori coloană)'; +$lang['Block_title'] = 'Titlu'; +$lang['Block_desc'] = 'Descripţie'; +$lang['Add_Block'] = 'Adaugă Bloc Nou'; +$lang['Auth_Block'] = 'Permisii'; +$lang['Auth_Block_explain'] = 'TOŢI: Toţi utilizatorii
    REG: utilizatori Înregistraţi
    PRIVAT: Memberi Grup (vezi permisiile avansate)
    MOD: bloc moderatori (vezi permisiile avansate)
    ADMIN: Admin
    ANONYMOUS: NUMAI utilizatori vizitatori'; +$lang['Block_quick_stats'] = 'Statistice Rapid'; +$lang['Block_quick_edit'] = 'Editare Rapidă'; +$lang['Create_block'] = 'Creare Bloc Nou'; +$lang['Delete_block'] = 'Şterge Bloc din Portal'; +$lang['Delete_block_explain'] = 'Acesta va şterge blocul şi va actualiza toate paginile portalului asociate. Atenţie, această operaţie nu este reversibilă!'; +$lang['Click_block_delete_yes'] = 'Click %sAici%s pt. a şterge Blocul'; + +/* +* BlockCP Administration +*/ +$lang['Block_cp'] = 'BlockCP'; +$lang['Click_return_blockCP_admin'] = 'Click %sAici%s pt. întoarcere la Panoul de Control Bloc'; +$lang['Click_return_portalpage_admin'] = 'Click %sAici%s pt. întoarcere la Pagina Portalului'; +$lang['BlockCP_Config_updated'] = 'Blocul a fost Actualizat...'; + + +/* +* Pages Administration +*/ +$lang['Page_admin'] = 'Page Administration'; +$lang['Page_admin_explain'] = 'Use this form to add, delete and change the settings for Portal Pages and Page Templates.
    To use this panel, you need to have JavaScript and cookies enabled in your browser!'; +$lang['Page_admin_edit'] = 'Page Edit'; +$lang['Page_admin_private'] = 'Advanced Page (PRIVATE) Permissions'; +$lang['Page_admin_settings'] = 'Page Settings'; +$lang['Page_admin_new_page'] = 'New Page Administration'; +$lang['Page'] = 'Page'; +$lang['Page_Id'] = 'Page ID'; +$lang['Page_icon'] = 'Page Icon
    - to be used in the adminCP only, eg. icon_home.gif (default)'; +$lang['Page_alt_icon'] = 'Alternative Page Icon
    - Full url (http://...) to custom page icon.'; +$lang['Default_page_style'] = 'Portal Style (default)
    To use the default setting, leave this unset.'; +$lang['Override_page_style'] = 'Override user style'; +$lang['Override_page_style_explain'] = ' '; +$lang['Page_header'] = 'Page header file
    - i.e. overall_header.tpl (default), overall_noheader.tpl (no header) or user custom header file.
    To use the default setting, leave this blank.'; +$lang['Page_footer'] = 'Page footer file
    - i.e. overall_footer.tpl (default) or user custom footer file.
    To use the default setting, leave this blank.'; +$lang['Page_main_layout'] = 'Page main layout file
    - i.e. mx_main_layout.tpl (default) or user custom header file.
    To use the default setting, leave this blank.'; +$lang['Page_Navigation_block'] = 'Page header navigation block'; +$lang['Page_Navigation_block_explain'] = '- This is the page header navigation block, provided you\'ve chosen a overall header file which supports page navigation.
    To use the default setting, leave this unset.'; +$lang['Auth_Page'] = 'Permissions'; +$lang['Select_sort_method'] = 'Select Sort Method'; +$lang['Order'] = 'Order'; +$lang['Sort'] = 'Sort'; +$lang['Width'] = 'Width'; +$lang['Height'] = 'Height'; +$lang['Page_sort_title'] = 'Page title'; +$lang['Page_sort_desc'] = 'Page description'; +$lang['Page_sort_created'] = 'Page created'; +$lang['Sort_Ascending'] = 'ASC'; +$lang['Sort_Descending'] = 'DESC'; +$lang['Return_to_page'] = 'Return to Portal Page'; +$lang['Auth_Page_group'] = '-> PRIVATE Group'; +$lang['Page_desc'] = 'Description'; +$lang['Page_parent'] = 'Parent Page'; +$lang['Add_Page'] = 'Add New Page'; +$lang['Page_Config_updated'] = 'Page Configuration Updated Successfully'; +$lang['Click_return_page_admin'] = 'Click %sHere%s to return to Page Administration'; +$lang['Remove_block'] = 'Remove Portal Block'; +$lang['Remove_block_explain'] = 'This will remove the block from this page. Beware: this operation cannot be undone!'; +$lang['Click_block_remove_yes'] = 'Click %sHere%s to remove the Block'; +$lang['Delete_page'] = 'Delete Page'; +$lang['Delete_page_explain'] = 'This will delete the Page. Beware: this operation cannot be undone!'; +$lang['Click_page_delete_yes'] = 'Click %sHere%s to delete the Page'; + +$lang['Mx_IP_filter'] = 'IP Filter'; +$lang['Mx_IP_filter_explain'] = 'To restrict access to this page by IP, enter the valid IP adresses, with one IP address per line.
    Example: 127.0.0.1 or 127.1.*.*'; +$lang['Mx_phpBB_stats'] = 'phpBB Statistics in Header'; +$lang['Mx_phpBB_stats_explain'] = '- Links to new, unread posts, etc.'; +$lang['Column_admin'] = 'Page Column Administration'; +$lang['Column_admin_explain'] = 'Administrate Page Columns'; +$lang['Column'] = 'Page Column'; +$lang['Columns'] = 'Page Columns'; +$lang['Column_block'] = 'Page Column Block'; +$lang['Column_blocks'] = 'Page Column Blocks'; +$lang['Edit_Column'] = 'Edit a Column'; +$lang['Edit_Column_explain'] = 'Use this form to modify a column'; +$lang['Column_Size'] = 'Size of the column'; +$lang['Column_name'] = 'Column Name'; +$lang['Column_delete'] = 'Delete a Column'; +$lang['Page_updated'] = 'Page and Column information updated successfully'; +$lang['Create_column'] = 'Add New Column'; +$lang['Delete_page_column'] = 'Delete Page Column'; +$lang['Delete_page_column_explain'] = 'This will delete the Page Column. Beware: this operation cannot be undone!'; +$lang['Click_page_column_delete_yes'] = 'Click %sHere%s to delete the Page Column'; + +$lang['Add_Split_Block'] = 'Add Split Column Block'; +$lang['Add_Split_Block_explain'] = 'This block splits the column'; +$lang['Add_Dynamic_Block'] = 'Add Dynamic (Sub) Block'; +$lang['Add_Dynamic_Block_explain'] = 'This dynamic block defines subpages, set from the navigation menu'; +$lang['Add_Virtual_Block'] = 'Add Virtual (Page Blog) Block'; +$lang['Add_Virtual_Block_explain'] = 'This block turns the page into a virtual (blog) page'; + +/* +* Page templates +*/ +$lang['Page_templates_admin'] = 'Page Templates Administration'; +$lang['Page_templates_admin_explain'] = 'Use this page to create, edit or delete Page Templates'; +$lang['Page_template'] = 'Page Template'; +$lang['Page_templates'] = 'Page Templates'; +$lang['Page_template_column'] = 'Page Template Column'; +$lang['Page_template_columns'] = 'Page Template Columns'; +$lang['Choose_page_template'] = 'Choose Page Template'; +$lang['Template_Config_updated'] = 'Template Configuration Updated'; +$lang['Add_Template'] = 'Add New Template'; +$lang['Template'] = 'Template'; +$lang['Template_name'] = 'Template Name'; +$lang['Page_template_delete'] = 'Delete Template'; +$lang['Delete_page_template'] = 'Delete Page Template'; +$lang['Delete_page_template_explain'] = 'This will delete the Page Template. Beware: this operation cannot be undone!'; +$lang['Click_page_template_delete_yes'] = 'Click %sHere%s to delete the Page Template'; +$lang['Delete_page_template_column'] = 'Delete Page Template'; +$lang['Delete_page_template_column_explain'] = 'This will delete the Page Template. Beware: this operation cannot be undone!'; +$lang['Click_page_template_column_delete_yes'] = 'Click %sHere%s to delete the Page Template'; + +/* +* Pages Administration +*/ +$lang['Page_admin'] = 'Administraţia Paginii'; +$lang['Page_admin_explain'] = 'Foloseşte acest form pt. a adăuga, şterge şi schimba setarile pentru Paginile Portalului şi Paginile Templaturi.
    Pentru a folosi acest panou, trebuie să ai JavaScript şi cooki-urile activate în browser!'; +$lang['Page_admin_edit'] = 'Editare Pagina'; +$lang['Page_admin_private'] = 'Pagina Avansată (PRIVAT) Permisii'; +$lang['Page_admin_settings'] = 'Setari Pagină'; +$lang['Page_admin_new_page'] = 'Administraţie Pagina Noua'; +$lang['Page'] = 'Pagină'; +$lang['Page_Id'] = 'ID Pagină'; +$lang['Page_icon'] = 'Iconiţa Paginii
    - pt. a fi folosită numai în AdminCP, ex. icon_home.gif (implicit)'; +$lang['Page_header'] = 'Fişier Header Pagina
    - de ex. overall_header.tpl (implicit), overall_noheader.tpl (fară header) ori fişier header custom a utilizatorului.'; +$lang['Auth_Page'] = 'Permisii'; +$lang['Select_sort_method'] = 'Selectează Metoda de Sortare'; +$lang['Order'] = 'Ordine'; +$lang['Sort'] = 'Sortare'; +$lang['Width'] = 'Lăţime'; +$lang['Height'] = 'Înălţime'; +$lang['Page_sort_title'] = 'Titlu pagină'; +$lang['Page_sort_desc'] = 'Descripţie pagină'; +$lang['Page_sort_created'] = 'Pagina creată'; +$lang['Sort_Ascending'] = 'ASC'; +$lang['Sort_Descending'] = 'DESC'; +$lang['Return_to_page'] = 'Întoarcere la Pagina Portalului'; +$lang['Auth_Page_group'] = '-> Grup PRIVAT'; +$lang['Page_desc'] = 'Descripţie'; +$lang['Page_graph_border'] = 'Grafică bordura paginii - fişier prefix'; +$lang['Page_graph_border_explain'] = 'Pentru a folosi grafica bordurii în jurul Blocurilor, specifică prefixul pentru fişierele grafice aici. De exemplu, introdu \'border_\' pt. a folosi fişierele: border_1-1.gif, border_1-2.gif,..., border_3-3.gif pentru matricea de 3x3 cu imagini-gif. Lasă blank (gol) pt. a dezactiva grafica bordurii (implicit).'; +$lang['Add_Page'] = 'Adaugă Pagina Noua'; +$lang['Page_Config_updated'] = 'Configuraţia Paginii Actualizată cu Succes'; +$lang['Click_return_page_admin'] = 'Click %sAici%s pt. întoarcere la Administratia Paginii'; +$lang['Remove_block'] = 'Scoate Bloc al Portalului'; +$lang['Remove_block_explain'] = 'Acesta va scoate blocul din acestă pagina. Atenţie, acestă operaţie nu este reversibilă!'; +$lang['Click_block_remove_yes'] = 'Click %sAici%s pt. a scoate Blocul'; +$lang['Delete_page'] = 'Şterge Pagina'; +$lang['Delete_page_explain'] = 'Acesta va şterge Pagina. Atenţie, acestă operaţie nu este reversibilă!'; +$lang['Click_page_delete_yes'] = 'Click %sAici%s pt. a şterge Pagina'; + +$lang['Mx_IP_filter'] = 'Filtru IP'; +$lang['Mx_IP_filter_explain'] = 'Pentru a restrictiona accesul la acestă pagina după IP, introdu adresele IP valide - o adresă IP per linie.
    Ex. 127.0.0.1 ori 127.1.*.*'; +$lang['Mx_phpBB_stats'] = 'phpBB Statistice în Header'; +$lang['Mx_phpBB_stats_explain'] = '- linkuri la postari noi/necitite etc'; +$lang['Column_admin'] = 'Administraţie Coloane Pagină'; +$lang['Column_admin_explain'] = 'Administrează Coloanele Paginii'; +$lang['Column'] = 'Coloana Paginii'; +$lang['Columns'] = 'Coloanele Paginii'; +$lang['Column_block'] = 'Bloc Coloană Pagină'; +$lang['Column_blocks'] = 'Blocuri Coloana Paginii'; +$lang['Edit_Column'] = 'Editează o Coloană'; +$lang['Edit_Column_explain'] = 'Foloseşte acest form pt. a modifica o coloană'; +$lang['Column_Size'] = 'Mărimea coloanei'; +$lang['Column_name'] = 'Nume Coloană'; +$lang['Column_delete'] = 'Şterge o Coloană'; +$lang['Page_updated'] = 'Informaţia Paginii şi Coloanei Actualizată cu Succes'; +$lang['Create_column'] = 'Adaugă Coloană Nouă'; +$lang['Delete_page_column'] = 'Şterge Coloana Paginii'; +$lang['Delete_page_column_explain'] = 'Acesta va şterge Coloana Paginii. Atenţie, acestă operaţie nu este reversibilă!'; +$lang['Click_page_column_delete_yes'] = 'Click %sAici%s pt. a şterge Colana Paginii'; + + +$lang['Add_Split_Block'] = 'Add Split Column Block'; +$lang['Add_Split_Block_explain'] = 'This block splits the column'; +$lang['Add_Dynamic_Block'] = 'Add Dynamic (Sub) Block'; +$lang['Add_Dynamic_Block_explain'] = 'This dynamic block defines subpages, set from the navigation menu'; +$lang['Add_Virtual_Block'] = 'Add Virtual (Page Blog) Block'; +$lang['Add_Virtual_Block_explain'] = 'This block turns the page into a virtual (blog) page'; + +/* +* Page templates +*/ +$lang['Page_templates_admin'] = 'Administartie Templaturi Pagină'; +$lang['Page_templates_admin_explain'] = 'Foloseşte acesta pt. a crea, edita ori şterge Templaturi'; +$lang['Page_template'] = 'Template Pagină'; +$lang['Page_templates'] = 'Templaturi Pagină'; +$lang['Page_template_column'] = 'Coloană Template Pagină'; +$lang['Page_template_columns'] = 'Coloane Template Pagină'; +$lang['Choose_page_template'] = 'Alege Templatul Paginii'; +$lang['Template_Config_updated'] = 'Configuraţia Templetului a fost Actualizată'; +$lang['Add_Template'] = 'Adaugă Template Nou'; +$lang['Template'] = 'Template'; +$lang['Template_name'] = 'Nume Template'; +$lang['Page_template_delete'] = 'Şterge Template'; +$lang['Delete_page_template'] = 'Şterge Pagină Template'; +$lang['Delete_page_template_explain'] = 'Acesta va şterge Templatul Paginii. Atenţie, acestă operaţie nu este reversibilă!'; +$lang['Click_page_template_delete_yes'] = 'Click %sAici%s pt. a şterge Templatul Paginii'; +$lang['Delete_page_template_column'] = 'Şterge Pagina Template'; +$lang['Delete_page_template_column_explain'] = 'Acesta va şterge Templatul Paginii. Atenţie, acestă operaţie nu este reversibilă!'; +$lang['Click_page_template_column_delete_yes'] = 'Click %sAici%s pt. a şterge Templatul Paginii'; + +/* +* Cache +*/ +$lang['Cache_dir_write_protect'] = 'Directorul tau cache este protejat la scriere. Nu s-a putut genera fişierul cache'; +$lang['Cache_generate'] = 'Fişierele cache au fost generate.'; +$lang['Cache_submit'] = 'Să generez fişierul cache?'; +$lang['Cache_explain'] = 'Cu acestă opţiune poţi să generezi toate fişierele XML (fişiere cache) odată pentru toate blocurile portalului. Aceste fişiere permit reducerea numărului de cereri ale bazei de date necesare şi îmbunătăţesc performanţa portalului.
    Notează: MXP cache trebuie activat (în Portal General Admin CP) petru ca aceste fişiere să fie folosite de sistem.
    Mai Notează: fişierele cache sunt create on the fly când sunt şi blocurile de editare la fel.'; +$lang['Generate_mx_cache'] = 'Generează Bloc Cache'; + +/* +* These are displayed in the drop down boxes for advanced +* mode Module auth, try and keep them short! +*/ +$lang['Menu_Navigation'] = 'Meniu Navigare'; +$lang['Portal_index'] = 'Index Portal'; +$lang['Save_Settings'] = 'Salvare Setări'; +$lang['Translation_Tools'] = 'Unelte de Traducere'; +$lang['Preview_portal'] = 'Previzualizare Portal'; + +/* +* META +*/ +$lang['Meta_admin'] = 'Administratie Meta Taguri'; +$lang['Mega_admin_explain'] = 'Foloseste acest form să customizezi meta tagurile tale'; +$lang['Meta_Title'] = 'Titlu'; +$lang['Meta_Author'] = 'Autor'; +$lang['Meta_Copyright'] = 'Copyright'; +$lang['Meta_ImageToolBar'] = 'Image ToolBar'; +$lang['Meta_Distribution'] = 'Distribution'; +$lang['Meta_Keywords'] = 'Cuvinte Cheie'; +$lang['Meta_Keywords_explain'] = '(lista separată de virgulă)'; +$lang['Meta_Description'] = 'Descripţie'; +$lang['Meta_Language'] = 'Cod Limbă'; +$lang['Meta_Rating'] = 'Clasare'; +$lang['Meta_Robots'] = 'Robots'; +$lang['Meta_Pragma'] = 'Pragma no-cache'; +$lang['Meta_Bookmark_icon'] = 'Bookmark Iconiţă'; +$lang['Meta_Bookmark_explain'] = '(locaţie relativă)'; +$lang['Meta_HTITLE'] = 'Setări Extra Header'; +$lang['Meta_data_updated'] = 'Fişierul de date meta (mx_meta.inc) a fost actualizat!
    Click %sAICI%s pt. intoarcere la Administraţie Meta Taguri.'; +$lang['Meta_data_ioerror'] = 'Nu se poate deschide mx_meta.inc. Asigurăte că fişierul e writabil (chmod 777).'; + +/* +* Portal permissons +*/ +$lang['Mx_Block_Auth_Title'] = 'Permisii Bloc Privat'; +$lang['Mx_Block_Auth_Explain'] = 'Aici poti să configurezi Permisiile Blocului Privat'; +$lang['Mx_Page_Auth_Title'] = 'Permisii Pagina Privată'; +$lang['Mx_Page_Auth_Explain'] = 'Aici poţi să configurezi Permisiile Paginii Private'; +$lang['Block_Auth_successfully'] = 'Permisiunile Blocului Actualizate cu Succes'; +$lang['Click_return_block_auth'] = 'Click %sAici%s pt. întoarcere la Permisii Bloc Privat'; +$lang['Page_Auth_successfully'] = 'Permisiunile Paginii Actualizate cu Succes'; +$lang['Click_return_page_auth'] = 'Click %sAici%s pt. întoarcere la Permisii Pagina Privata'; +$lang['AUTH_ALL'] = 'TOŢI'; +$lang['AUTH_REG'] = 'REG'; +$lang['AUTH_PRIVATE'] = 'PRIVAT'; +$lang['AUTH_MOD'] = 'MOD'; +$lang['AUTH_ADMIN'] = 'ADMIN'; +$lang['AUTH_ANONYMOUS'] = 'ANONYMOUS'; + +/* -----------------------------------/ +* BlockCP - Block Parameter Specific/ +* ----------------------------------- */ + +/* +* General +*/ +$lang['target_block'] = 'Bloc Ţinta'; +$lang['target_block_explain'] = '- linkuri, date etc sunt referite cu acest bloc'; + +/* +* Split column +*/ +$lang['block_ids'] = 'Blocuri Sursă'; +$lang['block_ids_explain'] = '- să fie poziţionate stânga spre dreapta'; +$lang['block_sizes'] = 'Marimi Bloc (separate de virgulă)'; +$lang['block_sizes_explain'] = '- Poţi specifica mărimile folosind numere (pixeli), procente (mărimi relative, de ex. "40%") ori "*" pentru remainder.'; +$lang['space_between'] = 'Spaţiu între blocuri'; + +/* +* Sitelog +*/ +$lang['log_filter_date'] = 'Filtru după timp'; +$lang['log_filter_date_explain'] = '- Arată loguri din săptămâna trecută, luna, anul...'; +$lang['numOfEvents'] = 'Număr'; +$lang['numOfEvents_explain'] = '- Număr evenimente de arătat'; + +/* +* IncludeX +*/ +$lang['x_listen'] = 'Ascultă (GET)'; +$lang['x_iframe'] = 'IFrame'; +$lang['x_textfile'] = 'Fişier Text'; +$lang['x_multimedia'] = 'WMP Multimedia'; +$lang['x_pic'] = 'Pictură'; +$lang['x_format'] = 'Fişier text formatat'; +$lang['x_mode'] = 'IncludeX mode:'; +$lang['x_mode_explain'] = '- Blocul IncludeX operează în unul din urmatoarele moduri. Dacă modul \'Ascultă (GET)\' este selectat, modul pote fi setat de un url \'x_mode=mode\' şi parametrul asociat cu \'x_1=, x_2=, etc\'.
    Exemplu: Pentru a trimite un url la iframe foloseÅŸte \'domain/index.php?page=x&x_mode=iframe&x_1=http://domain\' '; +$lang['x_1'] = 'Variabila 1:'; +$lang['x_1_explain'] = '- IFrame: url
    FişierText: cale relativă din radacină (ex în \'/include_file/my_file.xxx\')
    Multimedia: cale relativă din radacină (ex în \'/include_file/my_file.xxx\')
    Pic: cale relativă din radacină (ex în \'/include_file/my_file.xxx\')
    Fişier Text Formatat: indisponibil'; +$lang['x_2'] = 'Variabila 2:'; +$lang['x_2_explain'] = '- IFrame: înaltime frame (pixeli)
    Multimedia: lăţime (pixeli)'; +$lang['x_3'] = 'Variabila 3:'; +$lang['x_3_explain'] = '- Multimedia: înaltime (pixeli)'; + +/* +* Announcement +*/ +$lang['announce_nbr_display'] = 'Număr Maxim de Mesaje care să fie Afişate'; +$lang['announce_nbr_days'] = 'Număr de Zile în care se Afişeaza Mesaje'; +$lang['announce_img'] = 'Imagine Anunţuri'; +$lang['announce_img_sticky'] = 'Imagine Lipicioasă'; +$lang['announce_img_normal'] = 'Imagine Mesaj Normal'; +$lang['announce_img_global'] = 'Imagine Anunţuri Globale'; +$lang['announce_display'] = 'Afişează Mesaje Anunţ(uri) în acest Bloc'; +$lang['announce_display_sticky'] = 'Afisează Lipicios(asă) în acest Bloc'; +$lang['announce_display_normal'] = 'Afisează Mesaj(e) Normale în acest Bloc'; +$lang['announce_display_global'] = 'Afisează Anunţurile Globale în acest Bloc'; +$lang['announce_forum'] = 'Forumuri Sursă'; +$lang['announce_forum_explain'] = '- Poţi face selecţii multiple
    * Dacă nu este selectat nimic, toate forumurile autorizate vor fi vizibile'; + +/* +* Polls +*/ +$lang['Poll_Display'] = 'Care urnă vrei să o afişezi?'; +$lang['poll_forum'] = 'Forumuri Sursă'; +$lang['poll_forum_explain'] = '- Poţi face selecţii mutiple
    * Dacă nimic nu este selectat, toate forumurile autorizate vor fi vizibile'; +$lang['Not_Specified'] = 'Ne Specificat'; + +/* +* Dynamic Block +*/ +$lang['default_block_id'] = 'Bloc Implicit'; +$lang['default_block_id_explain'] = '- Acesta este blocul implicit de afişat, exceptând dacă un bloc dinamic este selectat'; + +/* +* Menu Navigation +*/ +$lang['menu_display_mode'] = 'Mod Plan'; +$lang['menu_display_mode_explain '] = 'Mod plan Orizonal ori Vertical'; +$lang['menu_page_sync'] = 'Lumineză cel curent?'; +$lang['menu_page_sync_explain'] = 'Lumineză intrare la Meniul de Nav. curent...'; + +/* +* Version Checker +*/ +$lang['MXP_Version_up_to_date'] = 'Instalarea MXP este la zi. Nu există actualizări pentru versiunea ta de MXP.'; +$lang['MXP_Version_outdated'] = 'Se pare ca instalarea ta MXP nu este la zi. Actualizări există pentru versiunea ta de MXP. Te rog viziteză downloadare pachetul MXP Core pt. a obţine ultima versiune.'; +$lang['MXP_Latest_version_info'] = 'Ultima veriune disponibilă este MXP %s. '; +$lang['MXP_Current_version_info'] = 'Tu ai MXP %s.'; +$lang['MXP_Mailing_list_subscribe_reminder'] = 'Pentru ultimile informaţii de ştiri şi actualizări pentru MXP, de ce nu înscriete la lista de mailuri.'; + +$lang['Trans_title'] = 'Translate to your Language'; +$lang['Trans_description'] = 'Use Translate Control Panel to translate portal to your language'; +$lang['Trans_which_core'] = 'Which Part'; +$lang['Trans_select_file'] = 'Select file to translate'; +$lang['Trans_from_desc'] = 'Default language to translate from'; +$lang['Trans_leave_orig'] = 'If not translated leave original text'; +$lang['Trans_selected_file'] = 'Selected File'; +$lang['Trans_lang_source'] = 'Source Language'; +$lang['Trans_lang_dest'] = 'Destination Language'; +$lang['Trans_lang_block'] = 'Language block'; +$lang['Trans_save_file'] = 'Save language file'; + +/* +* Asta e tot lume! +* +* Translated from english to romanian by OryNider +* orynider@rdslink.ro // http://pubory.uv.ro/ +* +* ------------------------------------------------- */ +?> \ No newline at end of file diff --git a/language/ro/lang_main.php b/language/ro/lang_main.php new file mode 100644 index 00000000..54b2da1c --- /dev/null +++ b/language/ro/lang_main.php @@ -0,0 +1,131 @@ + $lang['message'] = 'text'; +/* Specify your language character encoding... [optional] */ +setlocale(LC_ALL, 'ro'); + +$lang = array_merge( $lang, array( // # +// +// General +// + 'Page_Not_Authorised' => 'Ne pare rău, dar nu eşti autorizat să accesezi această pagină.', + 'Execution_Stats' => 'Pagina a generat %s querie - Timpul generării: %s secunde', + 'Redirect_login' => 'Click %sAici%s să te logezi.', + 'Show_admin_options' => 'Arată/Ascunde Opţiunile Admin pe Pagină:', + 'Block_updated_date' => 'Updatat', + 'Block_updated_by' => 'de', + 'Page_updated_date' => 'Pagina actualizată', + 'Page_updated_by' => 'de', + 'Powered_by' => 'Powered by', + 'mx_spacer' => 'Spacer', + 'Yes' => 'Da', + 'No' => 'Nu', + 'Link' => 'Legătură', + 'Hidden_block' => 'Block ascuns...', + 'Hidden_block_explain' => 'Acest bloc este \'ascuns\', dar visibil deoarece eşti un admin/moderator.', +// +// Overall Navigation Navigation +// + 'MX_home' => 'Acasă', + 'MX_forum' => 'Forum', + 'MX_navigation' => 'Pages navigation, eg. forum navigation, like pafiledb navigation.', +// +// Core Blocks - Language +// + 'Change_default_lang' => 'Setează Limba Implicită', + 'Change_user_lang' => 'Setează Limba Ta', + 'Portal_lang' => 'LimbaCP', + 'Select_lang' => 'Selectează Limba:', +// +// Core Blocks - Theme +// + 'Change' => 'Schimbă Acum', + 'Change_default_style' => 'Setează Silul Implicit', + 'Change_user_style' => 'Setează Stilul Tău', + 'Theme' => 'CP Temă/Stil', + 'Select_theme' => 'Selectează Temă/Stil', +// +// Core Blocks - Search +// + 'Mx_Page' => 'Pagină', + 'Mx_Block' => 'Secţiune', +// +// Core Blocks - Virtual +// + 'Virtual_Create_new' => 'Creează Nou', + 'Virtual_Create_new_user' => 'Pagină Utilizator', + 'Virtual_Create_new_group' => 'Pagină Grup', + 'Virtual_Create_new_project' => 'Pagină Proiect', + 'Virtual_Create' => 'Creează Nou', + 'Virtual_Edit' => 'Editează Pagină Nouă', + 'Virtual_Delete' => 'Șterge Pagina Aceasta', + 'Virtual_Welcome' => 'Fii Binevenit', + 'Virtual_Info' => 'Unde Poți controla Pagina ta Virtuală', + 'Virtual_CP' => 'Panou de Control Pagină', + 'Virtual_Go' => 'Mergi', + 'Virtual_Select' => 'Selectare:', +// +// Core Blocks - Site Log (and many last 'item' blocks) +// + 'No_items_found' => 'Nimic nou de raportat.', +// +// BlockCP +// + 'Block_Title' => 'Titlu', + 'Block_Info' => 'Informaţii', + 'Block_Config_updated' => 'Configuraţia blocului actualizată cu succes', + 'Edit' => 'EDITARE', + 'Block_Edit' => 'Editează Bloc', + 'Block_Edit_dyn' => 'Editează Blocul părinte dinamic', + 'Block_Edit_sub' => 'Editează Blocul părinte împărţit', + 'General_updated_return_settings' => 'Configuraţia upgradată cu succes...

    Click %saici%s pentru a continua.', + 'General_update_error' => 'Configuraţia nu se poate upgrada...', +// +// Header +// + 'Mx_search_site' => 'Site', + 'Mx_search_forum' => 'Forum', + 'Mx_search_kb' => 'Articole', + 'Mx_search_pafiledb' => 'Download-uri', + 'Mx_search_google' => 'Google', + 'Mx_new_search' => 'Nouă Căutare', +// +// Copyrights page +// + 'mx_about_title' => 'Despre Mx-Publisher CMS', + 'mx_copy_title' => 'Mx-Publisher :: Informaţii', + 'mx_copy_modules_title' => 'Module MXP Instalate', + 'mx_copy_template_title' => 'Despre stil', + 'mx_copy_translation_title' => 'Despre traducere', + +// This is optional, if you would like a _SHORT_ message output +// along with our copyright message indicating you are the translator +// please add it here. + 'TRANSLATION_INFO_MXBB' => 'Romanian Language by MX-Publisher Development Team', + +// +// Installation +// + 'Please_remove_install_contrib' => 'Te rog asigură-te că amândouă directoarele install/ şi contrib/ sunt şterse', +)); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/language/ro/lang_meta.php b/language/ro/lang_meta.php new file mode 100644 index 00000000..fc4e8449 --- /dev/null +++ b/language/ro/lang_meta.php @@ -0,0 +1,287 @@ + \ No newline at end of file diff --git a/modcp/admin_disallow.php b/modcp/admin_disallow.php new file mode 100644 index 00000000..ca4f6a31 --- /dev/null +++ b/modcp/admin_disallow.php @@ -0,0 +1,147 @@ +sql_query( $sql ); + if ( !$result ) + { + mx_message_die(GENERAL_ERROR, "Could not add disallowed user.", "",__LINE__, __FILE__, $sql); + } + $message = $lang['Disallow_successful']; + } + + $message .= "

    " . sprintf($lang['Click_return_disallowadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); +} +else if( isset($HTTP_POST_VARS['delete_name']) ) +{ + $disallowed_id = ( isset($HTTP_POST_VARS['disallowed_id']) ) ? intval( $HTTP_POST_VARS['disallowed_id'] ) : intval( $HTTP_GET_VARS['disallowed_id'] ); + + $sql = "DELETE FROM " . DISALLOW_TABLE . " + WHERE disallow_id = $disallowed_id"; + $result = $db->sql_query($sql); + if( !$result ) + { + mx_message_die(GENERAL_ERROR, "Couldn't removed disallowed user.", "",__LINE__, __FILE__, $sql); + } + + $message .= $lang['Disallowed_deleted'] . "

    " . sprintf($lang['Click_return_disallowadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + +} + +// +// Grab the current list of disallowed usernames... +// +$sql = "SELECT * + FROM " . DISALLOW_TABLE; +$result = $db->sql_query($sql); +if( !$result ) +{ + mx_message_die(GENERAL_ERROR, "Couldn't get disallowed users.", "", __LINE__, __FILE__, $sql ); +} + +$disallowed = $db->sql_fetchrowset($result); + +// +// Ok now generate the info for the template, which will be put out no matter +// what mode we are in. +// +$disallow_select = ''; + +$template->set_filenames(array( + "body" => "modcp/disallow_body.tpl") +); + +$template->assign_vars(array( + "S_DISALLOW_SELECT" => $disallow_select, + "S_FORM_ACTION" => append_sid("admin_disallow.$phpEx"), + + "L_INFO" => $output_info, + "L_DISALLOW_TITLE" => $lang['Disallow_control'], + "L_DISALLOW_EXPLAIN" => $lang['Disallow_explain'], + "L_DELETE" => $lang['Delete_disallow'], + "L_DELETE_DISALLOW" => $lang['Delete_disallow_title'], + "L_DELETE_EXPLAIN" => $lang['Delete_disallow_explain'], + "L_ADD" => $lang['Add_disallow'], + "L_ADD_DISALLOW" => $lang['Add_disallow_title'], + "L_ADD_EXPLAIN" => $lang['Add_disallow_explain'], + "L_USERNAME" => $lang['Username']) +); + +$template->pparse("body"); + +include('./page_footer_mod.'.$phpEx); + +?> \ No newline at end of file diff --git a/modcp/admin_megamail.php b/modcp/admin_megamail.php new file mode 100644 index 00000000..29e4e273 --- /dev/null +++ b/modcp/admin_megamail.php @@ -0,0 +1,377 @@ + Modified by R. U. Serious to 'Megmail'. :D <------------- +* +****************************************************************************/ + +/*************************************************************************** + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + ***************************************************************************/ +$def_wait = 10; +$def_size = 100; + +define('IN_PHPBB', 1); +define('IN_PORTAL', 1); + +if( !empty($setmodules) ) +{ + $filename = basename(__FILE__); + $module['General']['Mega Mail'] = $filename; + + return; +} + +// +// Load default header +// +$no_page_header = TRUE; +//$phpbb_root_path = './../forum/'; +$mx_root_path = './../'; +$phpEx = substr(strrchr(__FILE__, '.'), 1); +require('./pagestart.' . $phpEx); + +// ********************************************************************** +// Read language definition +// ********************************************************************** + +if ( !file_exists($mx_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_megamail.' . $phpEx) ) +{ + include($mx_root_path . 'language/lang_english/lang_megamail.' . $phpEx ); +} +else +{ + include($mx_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_megamail.' . $phpEx); +} + +define('MEGAMAIL_TABLE', $table_prefix.'megamail'); + +// +// Increase maximum execution time in case of a lot of users, but don't complain about it if it isn't +// allowed. +// +@set_time_limit(1200); + +$message = ''; +$subject = ''; + +if ( isset($HTTP_GET_VARS['mode'])) +{ + $sql = "CREATE TABLE ".MEGAMAIL_TABLE ."( + mail_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + mailsession_id VARCHAR(32) NOT NULL, + group_id MEDIUMINT(8) NOT NULL, + email_subject VARCHAR(60) NOT NULL, + email_body TEXT NOT NULL, + batch_start MEDIUMINT(8) NOT NULL, + batch_size SMALLINT UNSIGNED NOT NULL, + batch_wait SMALLINT NOT NULL, + status SMALLINT NOT NULL, + user_id MEDIUMINT(8) NOT NULL + )"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not create tables. Are you sure you are using mySQL? Are you sure the table does not already exist?', '', __LINE__, __FILE__, $sql); + } +} + +// +// Do the job ... +// +if ( isset($HTTP_POST_VARS['message']) || isset($HTTP_POST_VARS['subject']) ) +{ + $batchsize = (is_numeric($HTTP_POST_VARS['batchsize'])) ? intval($HTTP_POST_VARS['batchsize']) : $def_size; + $batchwait = (is_numeric($HTTP_POST_VARS['batchwait'])) ? intval($HTTP_POST_VARS['batchwait']) : $def_wait; + + $mail_session_id = md5(uniqid('')); + $sql = "INSERT INTO ".MEGAMAIL_TABLE ." ( + mailsession_id, group_id, + email_subject, email_body, + batch_start, batch_size,batch_wait, status, user_id) + VALUES ('".$mail_session_id."',".intval($HTTP_POST_VARS[POST_GROUPS_URL]) + ." ,'".str_replace("\'","''",trim($HTTP_POST_VARS['subject'])) + ."','".str_replace("\'","''",trim($HTTP_POST_VARS['message'])) + ."', 0, ".$batchsize.",".$batchwait.", 0,".$userdata['user_id'].")"; + + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not insert the data into '. MEGAMAIL_TABLE, '', __LINE__, __FILE__, $sql); + } + $mail_id = $db->sql_nextid(); + $url= append_sid("admin_megamail.$phpEx?mail_id=".$mail_id."&mail_session_id=".$mail_session_id); + $template->assign_vars(array( + "META" => '') + ); + $message = sprintf($lang['megamail_created_message'], '', ''); + mx_message_die(GENERAL_MESSAGE, $message); +} + +if ( isset($HTTP_GET_VARS['mail_id']) && isset($HTTP_GET_VARS['mail_session_id']) ) +{ + @ignore_user_abort(true); + $mail_id = intval($HTTP_GET_VARS['mail_id']); + $mail_session_id = stripslashes(trim($HTTP_GET_VARS['mail_session_id'])); + // Let's see if that session exists + $sql = "SELECT * + FROM ".MEGAMAIL_TABLE." + WHERE mail_id = $mail_id AND mailsession_id LIKE '$mail_session_id'"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not query '. MEGAMAIL_TABLE , '', __LINE__, __FILE__, $sql); + } + $mail_data = $db->sql_fetchrow($result); + + if ( !($mail_data) ) + { + mx_message_die(GENERAL_MESSAGE, 'Mail ID and Mail Session ID do not match.', '', __LINE__, __FILE__, $sql); + } + //Ok, the session exists + + $subject = $mail_data['email_subject']; + $message = $mail_data['email_body']; + $group_id = $mail_data['group_id']; + + //Now, let's see if we reached the upperlimit, if yes adjust the batch_size + $sql = ( $group_id != -1 ) ? "SELECT COUNT(u.user_email) FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id" : "SELECT COUNT(u.user_email) FROM " . USERS_TABLE. " u"; + + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not select group members', '', __LINE__, __FILE__, $sql); + } + $totalrecipients = $db->sql_fetchrow($result); + $totalrecipients = $totalrecipients['COUNT(u.user_email)']; + + $is_done =''; + if (($mail_data['batch_start']+$mail_data['batch_size']) > $totalrecipients) + { + $mail_data['batch_size'] = $totalrecipients-$mail_data['batch_start']; + $is_done = ', status = 1'; + } + + // Create new mail session + $mail_session_id = md5(uniqid('')); + $sql = "UPDATE ".MEGAMAIL_TABLE ." SET + mailsession_id = '".$mail_session_id."', batch_start= ".($mail_data['batch_start']+$mail_data['batch_size']) + .$is_done." WHERE mail_id = $mail_id"; + + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not insert the data into '. MEGAMAIL_TABLE, '', __LINE__, __FILE__, $sql); + } + + // OK, now let's start sending + + $error = FALSE; + $error_msg = ''; + + $sql = ( $group_id != -1 ) ? "SELECT u.user_email FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> " . TRUE . " AND u.user_id = ug.user_id" : "SELECT user_email FROM " . USERS_TABLE; + $sql .= " LIMIT ".$mail_data['batch_start'].", ".$mail_data['batch_size']; + + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not select group members', '', __LINE__, __FILE__, $sql); + } + + if ( $row = $db->sql_fetchrow($result) ) + { + $bcc_list = ''; + do + { + $bcc_list .= ( ( $bcc_list != '' ) ? ', ' : '' ) . $row['user_email']; + } + while ( $row = $db->sql_fetchrow($result) ); + $db->sql_freeresult($result); + } + else + { + $message = ( $group_id != -1 ) ? $lang['Group_not_exist'] : $lang['No_such_user']; + + $error = true; + $error_msg .= ( !empty($error_msg) ) ? '
    ' . $message : $message; + } + + if ( !$error ) + { + include($phpbb_root_path . 'includes/emailer.'.$phpEx); + + // + // Let's do some checking to make sure that mass mail functions + // are working in win32 versions of php. + // + if ( preg_match('/[c-z]:\\\.*/i', getenv('PATH')) && !$board_config['smtp_delivery']) + { + $ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var'; + + // We are running on windows, force delivery to use our smtp functions + // since php's are broken by default + $board_config['smtp_delivery'] = 1; + $board_config['smtp_host'] = @$ini_val('SMTP'); + } + + + $emailer = new emailer($board_config['smtp_delivery']); + + $email_headers = 'Return-Path: ' . $userdata['board_email'] . "\nFrom: " . $board_config['board_email'] . "\n"; + $email_headers .= 'X-AntiAbuse: Board servername - ' . $board_config['server_name'] . "\n"; + $email_headers .= 'X-AntiAbuse: User_id - ' . $userdata['user_id'] . "\n"; + $email_headers .= 'X-AntiAbuse: Username - ' . $userdata['username'] . "\n"; + $email_headers .= 'X-AntiAbuse: User IP - ' . decode_ip($user_ip) . "\n"; + $email_headers .= "Bcc: $bcc_list\n"; + + $emailer->use_template('admin_send_email'); + $emailer->email_address($board_config['board_email']); + $emailer->set_subject($subject); + $emailer->extra_headers($email_headers); + + $emailer->assign_vars(array( + 'SITENAME' => $board_config['sitename'], + 'BOARD_EMAIL' => $board_config['board_email'], + 'MESSAGE' => $message) + ); + + $emailer->send(); + $emailer->reset(); + + if ($is_done =='') + { + $url= append_sid("admin_megamail.$phpEx?mail_id=".$mail_id."&mail_session_id=".$mail_session_id); + $template->assign_vars(array( + "META" => '') + ); + $message = sprintf($lang['megamail_send_message'] ,$mail_data['batch_start'], ($mail_data['batch_start']+$mail_data['batch_size']), '', ''); + } + else + { + $url= append_sid("admin_megamail.$phpEx"); + $template->assign_vars(array( + "META" => '') + ); + $message = $lang['megamail_done']. '
    ' . sprintf($lang['megamail_proceed'], '', ''); + } + mx_message_die(GENERAL_MESSAGE, $message); + +// mx_message_die(GENERAL_MESSAGE, $lang['Email_sent'] . '

    ' . sprintf($lang['Click_return_admin_index'], '', '')); + } +} + +if ( $error ) +{ + $template->set_filenames(array( + 'reg_header' => 'error_body.tpl') + ); + $template->assign_vars(array( + 'ERROR_MESSAGE' => $error_msg) + ); + $template->assign_var_from_handle('ERROR_BOX', 'reg_header'); +} + +// +// Initial selection +// + +$sql = "SELECT m.*, u.username, g.group_name + FROM ".MEGAMAIL_TABLE." m + LEFT JOIN ". USERS_TABLE." u ON (m.user_id=u.user_id) + LEFT JOIN ". GROUPS_TABLE." g ON (m.group_id=g.group_id)"; +if ( !($result = $db->sql_query($sql)) ) +{ + mx_message_die(GENERAL_MESSAGE, sprintf('Could not obtain list of email-sessions. If you want to create the table, click here to install', append_sid('admin_megamail.php?mode=install')), '', __LINE__, __FILE__, $sql); +} +$row_class=0; +if ( $mail_data = $db->sql_fetchrow($result) ) + do + { + $url= append_sid("admin_megamail.$phpEx?mail_id=".$mail_data['mail_id']."&mail_session_id=".$mail_data['mailsession_id']); + $template->assign_block_vars('mail_sessions',array( + 'ROW' => ($row_class % 2) ? 'row2' : 'row1', + 'ID' => $mail_data['mail_id'], + 'GROUP' => ($mail_data['group_id'] != -1) ? $mail_data['group_name'] : $lang['All_users'], + 'SUBJECT' => $mail_data['email_subject'], + 'BATCHSTART' => $mail_data['batch_start'], + 'BATCHSIZE' => $mail_data['batch_size'], + 'BATCHWAIT' => $mail_data['batch_wait'].' s.', + 'SENDER' => $mail_data['username'], + 'STATUS' => ($mail_data['status']==0) ? sprintf($lang['megamail_proceed'], '', '') : 'Done', + )); + } + while( $mail_data = $db->sql_fetchrow($result) ); +else + $template->assign_block_vars('switch_no_sessions',array( + 'EMPTY' => $lang['megamail_none'], + )); + + + +$sql = "SELECT group_id, group_name + FROM ".GROUPS_TABLE . " + WHERE group_single_user <> 1"; +if ( !($result = $db->sql_query($sql)) ) +{ + mx_message_die(GENERAL_ERROR, 'Could not obtain list of groups', '', __LINE__, __FILE__, $sql); +} + +$select_list = ''; + +// +// Generate page +// +include('./page_header_mod.'.$phpEx); + +$template->set_filenames(array( + 'body' => 'modcp/megamail.tpl') +); + +$template->assign_vars(array( + 'MESSAGE' => $message, + 'SUBJECT' => $subject, + + 'L_EMAIL_TITLE' => $lang['Email'], + 'L_EMAIL_EXPLAIN' => $lang['Megamail_Explain'], + 'L_COMPOSE' => $lang['Compose'], + 'L_RECIPIENTS' => $lang['Recipients'], + 'L_EMAIL_SUBJECT' => $lang['Subject'], + 'L_EMAIL_MSG' => $lang['Message'], + 'L_EMAIL' => $lang['Email'], + 'L_NOTICE' => $notice, + + 'S_USER_ACTION' => append_sid('admin_megamail.'.$phpEx), + 'S_GROUP_SELECT' => $select_list, + + 'L_MAIL_SESSION_HEADER' => $lang['megamail_header'], + 'L_ID' => 'Id', + 'L_GROUP' => $lang['group_name'], + 'L_BATCH_START' => $lang['megamail_batchstart'], + 'L_BATCH_SIZE' => $lang['megamail_batchsize'], + 'L_BATCH_WAIT' => $lang['megamail_batchwait'], + 'L_SENDER' => $lang['Auth_Admin'], + 'L_STATUS' => $lang['megamail_status'], + 'DEFAULT_SIZE' => $def_size, + 'DEFAULT_WAIT' => $def_wait, +)); + +$template->pparse('body'); + +include('./page_footer_mod.'.$phpEx); + + +?> \ No newline at end of file diff --git a/modcp/admin_ranks.php b/modcp/admin_ranks.php new file mode 100644 index 00000000..ef183709 --- /dev/null +++ b/modcp/admin_ranks.php @@ -0,0 +1,378 @@ +sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain rank data", "", __LINE__, __FILE__, $sql); + } + + $rank_info = $db->sql_fetchrow($result); + $s_hidden_fields .= ''; + + } + else + { + $rank_info['rank_special'] = 0; + } + + $s_hidden_fields .= ''; + + $rank_is_special = ( $rank_info['rank_special'] ) ? "checked=\"checked\"" : ""; + $rank_is_not_special = ( !$rank_info['rank_special'] ) ? "checked=\"checked\"" : ""; + + $template->set_filenames(array( + "body" => "modcp/ranks_edit_body.tpl") + ); + + $template->assign_vars(array( + "RANK" => $rank_info['rank_title'], + "SPECIAL_RANK" => $rank_is_special, + "NOT_SPECIAL_RANK" => $rank_is_not_special, + "MINIMUM" => ( $rank_is_special ) ? "" : $rank_info['rank_min'], + "IMAGE" => ( $rank_info['rank_image'] != "" ) ? $rank_info['rank_image'] : "", + "IMAGE_DISPLAY" => ( $rank_info['rank_image'] != "" ) ? '' : "", + + "L_RANKS_TITLE" => $lang['Ranks_title'], + "L_RANKS_TEXT" => $lang['Ranks_explain'], + "L_RANK_TITLE" => $lang['Rank_title'], + "L_RANK_SPECIAL" => $lang['Rank_special'], + "L_RANK_MINIMUM" => $lang['Rank_minimum'], + "L_RANK_IMAGE" => $lang['Rank_image'], + "L_RANK_IMAGE_EXPLAIN" => $lang['Rank_image_explain'], + "L_SUBMIT" => $lang['Submit'], + "L_RESET" => $lang['Reset'], + "L_YES" => $lang['Yes'], + "L_NO" => $lang['No'], + + "S_RANK_ACTION" => append_sid("admin_ranks.$phpEx"), + "S_HIDDEN_FIELDS" => $s_hidden_fields) + ); + + } + else if( $mode == "save" ) + { + // + // Ok, they sent us our info, let's update it. + // + + $rank_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0; + $rank_title = ( isset($HTTP_POST_VARS['title']) ) ? trim($HTTP_POST_VARS['title']) : ""; + $special_rank = ( $HTTP_POST_VARS['special_rank'] == 1 ) ? TRUE : 0; + $min_posts = ( isset($HTTP_POST_VARS['min_posts']) ) ? intval($HTTP_POST_VARS['min_posts']) : -1; + $rank_image = ( (isset($HTTP_POST_VARS['rank_image'])) ) ? trim($HTTP_POST_VARS['rank_image']) : ""; + + if( $rank_title == "" ) + { + mx_message_die(GENERAL_MESSAGE, $lang['Must_select_rank']); + } + + if( $special_rank == 1 ) + { + $max_posts = -1; + $min_posts = -1; + } + + // + // The rank image has to be a jpg, gif or png + // + if($rank_image != "") + { + if ( !preg_match("/(\.gif|\.png|\.jpg)$/is", $rank_image)) + { + $rank_image = ""; + } + } + + if ($rank_id) + { + if (!$special_rank) + { + $sql = "UPDATE " . USERS_TABLE . " + SET user_rank = 0 + WHERE user_rank = $rank_id"; + + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, $lang['No_update_ranks'], "", __LINE__, __FILE__, $sql); + } + } + $sql = "UPDATE " . RANKS_TABLE . " + SET rank_title = '" . str_replace("\'", "''", $rank_title) . "', rank_special = $special_rank, rank_min = $min_posts, rank_image = '" . str_replace("\'", "''", $rank_image) . "' + WHERE rank_id = $rank_id"; + + $message = $lang['Rank_updated']; + } + else + { + $sql = "INSERT INTO " . RANKS_TABLE . " (rank_title, rank_special, rank_min, rank_image) + VALUES ('" . str_replace("\'", "''", $rank_title) . "', $special_rank, $min_posts, '" . str_replace("\'", "''", $rank_image) . "')"; + + $message = $lang['Rank_added']; + } + + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't update/insert into ranks table", "", __LINE__, __FILE__, $sql); + } + + $message .= "

    " . sprintf($lang['Click_return_rankadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + + } + else if( $mode == "delete" ) + { + // + // Ok, they want to delete their rank + // + + if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) ) + { + $rank_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : intval($HTTP_GET_VARS['id']); + } + else + { + $rank_id = 0; + } + + if( $rank_id ) + { + $sql = "DELETE FROM " . RANKS_TABLE . " + WHERE rank_id = $rank_id"; + + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't delete rank data", "", __LINE__, __FILE__, $sql); + } + + $sql = "UPDATE " . USERS_TABLE . " + SET user_rank = 0 + WHERE user_rank = $rank_id"; + + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, $lang['No_update_ranks'], "", __LINE__, __FILE__, $sql); + } + + $message = $lang['Rank_removed'] . "

    " . sprintf($lang['Click_return_rankadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + + } + else + { + mx_message_die(GENERAL_MESSAGE, $lang['Must_select_rank']); + } + } + else + { + // + // They didn't feel like giving us any information. Oh, too bad, we'll just display the + // list then... + // + $template->set_filenames(array( + "body" => "modcp/ranks_list_body.tpl") + ); + + $sql = "SELECT * FROM " . RANKS_TABLE . " + ORDER BY rank_min, rank_title"; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql); + } + + $rank_rows = $db->sql_fetchrowset($result); + $rank_count = count($rank_rows); + + $template->assign_vars(array( + "L_RANKS_TITLE" => $lang['Ranks_title'], + "L_RANKS_TEXT" => $lang['Ranks_explain'], + "L_RANK" => $lang['Rank_title'], + "L_RANK_MINIMUM" => $lang['Rank_minimum'], + "L_SPECIAL_RANK" => $lang['Special_rank'], + "L_EDIT" => $lang['Edit'], + "L_DELETE" => $lang['Delete'], + "L_ADD_RANK" => $lang['Add_new_rank'], + "L_ACTION" => $lang['Action'], + + "S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx")) + ); + + for( $i = 0; $i < $rank_count; $i++) + { + $rank = $rank_rows[$i]['rank_title']; + $special_rank = $rank_rows[$i]['rank_special']; + $rank_id = $rank_rows[$i]['rank_id']; + $rank_min = $rank_rows[$i]['rank_min']; + + if($special_rank) + { + $rank_min = $rank_max = "-"; + } + + $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $template->assign_block_vars("ranks", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "RANK" => $rank, + "RANK_MIN" => $rank_min, + + "SPECIAL_RANK" => ( $special_rank == 1 ) ? $lang['Yes'] : $lang['No'], + + "U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=edit&id=$rank_id"), + "U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete&id=$rank_id")) + ); + } + } +} +else +{ + // + // Show the default page + // + $template->set_filenames(array( + "body" => "modcp/ranks_list_body.tpl") + ); + + $sql = "SELECT * FROM " . RANKS_TABLE . " + ORDER BY rank_min ASC, rank_special ASC"; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql); + } + $rank_count = $db->sql_numrows($result); + + $rank_rows = $db->sql_fetchrowset($result); + + $template->assign_vars(array( + "L_RANKS_TITLE" => $lang['Ranks_title'], + "L_RANKS_TEXT" => $lang['Ranks_explain'], + "L_RANK" => $lang['Rank_title'], + "L_RANK_MINIMUM" => $lang['Rank_minimum'], + "L_SPECIAL_RANK" => $lang['Rank_special'], + "L_EDIT" => $lang['Edit'], + "L_DELETE" => $lang['Delete'], + "L_ADD_RANK" => $lang['Add_new_rank'], + "L_ACTION" => $lang['Action'], + + "S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx")) + ); + + for($i = 0; $i < $rank_count; $i++) + { + $rank = $rank_rows[$i]['rank_title']; + $special_rank = $rank_rows[$i]['rank_special']; + $rank_id = $rank_rows[$i]['rank_id']; + $rank_min = $rank_rows[$i]['rank_min']; + + if( $special_rank == 1 ) + { + $rank_min = $rank_max = "-"; + } + + $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $rank_is_special = ( $special_rank ) ? $lang['Yes'] : $lang['No']; + + $template->assign_block_vars("ranks", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "RANK" => $rank, + "SPECIAL_RANK" => $rank_is_special, + "RANK_MIN" => $rank_min, + + "U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=edit&id=$rank_id"), + "U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete&id=$rank_id")) + ); + } +} + +$template->pparse("body"); + +include('./page_footer_mod.'.$phpEx); + +?> diff --git a/modcp/admin_smilies.php b/modcp/admin_smilies.php new file mode 100644 index 00000000..0966c108 --- /dev/null +++ b/modcp/admin_smilies.php @@ -0,0 +1,558 @@ +sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't delete current smilies", "", __LINE__, __FILE__, $sql); + } + } + else + { + $sql = "SELECT code + FROM ". SMILIES_TABLE; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't get current smilies", "", __LINE__, __FILE__, $sql); + } + + $cur_smilies = $db->sql_fetchrowset($result); + + for( $i = 0; $i < count($cur_smilies); $i++ ) + { + $k = $cur_smilies[$i]['code']; + $smiles[$k] = 1; + } + } + + $fcontents = @file($phpbb_root_path . $board_config['smilies_path'] . '/'. $smile_pak); + + if( empty($fcontents) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't read smiley pak file", "", __LINE__, __FILE__, $sql); + } + + for( $i = 0; $i < count($fcontents); $i++ ) + { + $smile_data = explode($delimeter, trim(addslashes($fcontents[$i]))); + + for( $j = 2; $j < count($smile_data); $j++) + { + // + // Replace > and < with the proper html_entities for matching. + // + $smile_data[$j] = str_replace("<", "<", $smile_data[$j]); + $smile_data[$j] = str_replace(">", ">", $smile_data[$j]); + $k = $smile_data[$j]; + + if( $smiles[$k] == 1 ) + { + if( !empty($replace_existing) ) + { + $sql = "UPDATE " . SMILIES_TABLE . " + SET smile_url = '" . str_replace("\'", "''", $smile_data[0]) . "', emoticon = '" . str_replace("\'", "''", $smile_data[1]) . "' + WHERE code = '" . str_replace("\'", "''", $smile_data[$j]) . "'"; + } + else + { + $sql = ''; + } + } + else + { + $sql = "INSERT INTO " . SMILIES_TABLE . " (code, smile_url, emoticon) + VALUES('" . str_replace("\'", "''", $smile_data[$j]) . "', '" . str_replace("\'", "''", $smile_data[0]) . "', '" . str_replace("\'", "''", $smile_data[1]) . "')"; + } + + if( $sql != '' ) + { + $result = $db->sql_query($sql); + if( !$result ) + { + mx_message_die(GENERAL_ERROR, "Couldn't update smilies!", "", __LINE__, __FILE__, $sql); + } + } + } + } + + $message = $lang['smiley_import_success'] . "

    " . sprintf($lang['Click_return_smileadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + + } + else + { + // + // Display the script to get the smile_pak cfg file... + // + $smile_paks_select = ""; + + $hidden_vars = ""; + + $template->set_filenames(array( + "body" => "modcp/smile_import_body.tpl") + ); + + $template->assign_vars(array( + "L_SMILEY_TITLE" => $lang['smiley_title'], + "L_SMILEY_EXPLAIN" => $lang['smiley_import_inst'], + "L_SMILEY_IMPORT" => $lang['smiley_import'], + "L_SELECT_LBL" => $lang['choose_smile_pak'], + "L_IMPORT" => $lang['import'], + "L_CONFLICTS" => $lang['smile_conflicts'], + "L_DEL_EXISTING" => $lang['del_existing_smileys'], + "L_REPLACE_EXISTING" => $lang['replace_existing'], + "L_KEEP_EXISTING" => $lang['keep_existing'], + + "S_SMILEY_ACTION" => append_sid("admin_smilies.$phpEx"), + "S_SMILE_SELECT" => $smile_paks_select, + "S_HIDDEN_FIELDS" => $hidden_vars) + ); + + $template->pparse("body"); + } +} +else if( isset($HTTP_POST_VARS['export_pack']) || isset($HTTP_GET_VARS['export_pack']) ) +{ + // + // Export our smiley config as a smiley pak... + // + if ( $HTTP_GET_VARS['export_pack'] == "send" ) + { + $sql = "SELECT * + FROM " . SMILIES_TABLE; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Could not get smiley list", "", __LINE__, __FILE__, $sql); + } + + $resultset = $db->sql_fetchrowset($result); + + $smile_pak = ""; + for($i = 0; $i < count($resultset); $i++ ) + { + $smile_pak .= $resultset[$i]['smile_url'] . $delimeter; + $smile_pak .= $resultset[$i]['emoticon'] . $delimeter; + $smile_pak .= $resultset[$i]['code'] . "\n"; + } + + header("Content-Type: text/x-delimtext; name=\"smiles.pak\""); + header("Content-disposition: attachment; filename=smiles.pak"); + + echo $smile_pak; + + exit; + } + + $message = sprintf($lang['export_smiles'], "", "") . "

    " . sprintf($lang['Click_return_smileadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + +} +else if( isset($HTTP_POST_VARS['add']) || isset($HTTP_GET_VARS['add']) ) +{ + // + // Mod has selected to add a smiley. + // + + $template->set_filenames(array( + "body" => "modcp/smile_edit_body.tpl") + ); + + $filename_list = ""; + for( $i = 0; $i < count($smiley_images); $i++ ) + { + $filename_list .= ''; + } + + $s_hidden_fields = ''; + + $template->assign_vars(array( + "L_SMILEY_TITLE" => $lang['smiley_title'], + "L_SMILEY_CONFIG" => $lang['smiley_config'], + "L_SMILEY_EXPLAIN" => $lang['smile_desc'], + "L_SMILEY_CODE" => $lang['smiley_code'], + "L_SMILEY_URL" => $lang['smiley_url'], + "L_SMILEY_EMOTION" => $lang['smiley_emot'], + "L_SUBMIT" => $lang['Submit'], + "L_RESET" => $lang['Reset'], + + "SMILEY_IMG" => $phpbb_root_path . $board_config['smilies_path'] . '/' . $smiley_images[0], + + "S_SMILEY_ACTION" => append_sid("admin_smilies.$phpEx"), + "S_HIDDEN_FIELDS" => $s_hidden_fields, + "S_FILENAME_OPTIONS" => $filename_list, + "S_SMILEY_BASEDIR" => $phpbb_root_path . $board_config['smilies_path']) + ); + + $template->pparse("body"); +} +else if ( $mode != "" ) +{ + switch( $mode ) + { + case 'delete': + // + // Mod has selected to delete a smiley. + // + + $smiley_id = ( !empty($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id']; + $smiley_id = intval($smiley_id); + + $sql = "DELETE FROM " . SMILIES_TABLE . " + WHERE smilies_id = " . $smiley_id; + $result = $db->sql_query($sql); + if( !$result ) + { + mx_message_die(GENERAL_ERROR, "Couldn't delete smiley", "", __LINE__, __FILE__, $sql); + } + + $message = $lang['smiley_del_success'] . "

    " . sprintf($lang['Click_return_smileadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + break; + + case 'edit': + // + // Mod has selected to edit a smiley. + // + + $smiley_id = ( !empty($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id']; + $smiley_id = intval($smiley_id); + + $sql = "SELECT * + FROM " . SMILIES_TABLE . " + WHERE smilies_id = " . $smiley_id; + $result = $db->sql_query($sql); + if( !$result ) + { + mx_message_die(GENERAL_ERROR, 'Could not obtain emoticon information', "", __LINE__, __FILE__, $sql); + } + $smile_data = $db->sql_fetchrow($result); + + $filename_list = ""; + for( $i = 0; $i < count($smiley_images); $i++ ) + { + if( $smiley_images[$i] == $smile_data['smile_url'] ) + { + $smiley_selected = "selected=\"selected\""; + $smiley_edit_img = $smiley_images[$i]; + } + else + { + $smiley_selected = ""; + } + + $filename_list .= ''; + } + + $template->set_filenames(array( + "body" => "modcp/smile_edit_body.tpl") + ); + + $s_hidden_fields = ''; + + $template->assign_vars(array( + "SMILEY_CODE" => $smile_data['code'], + "SMILEY_EMOTICON" => $smile_data['emoticon'], + + "L_SMILEY_TITLE" => $lang['smiley_title'], + "L_SMILEY_CONFIG" => $lang['smiley_config'], + "L_SMILEY_EXPLAIN" => $lang['smile_desc'], + "L_SMILEY_CODE" => $lang['smiley_code'], + "L_SMILEY_URL" => $lang['smiley_url'], + "L_SMILEY_EMOTION" => $lang['smiley_emot'], + "L_SUBMIT" => $lang['Submit'], + "L_RESET" => $lang['Reset'], + + "SMILEY_IMG" => $phpbb_root_path . $board_config['smilies_path'] . '/' . $smiley_edit_img, + + "S_SMILEY_ACTION" => append_sid("admin_smilies.$phpEx"), + "S_HIDDEN_FIELDS" => $s_hidden_fields, + "S_FILENAME_OPTIONS" => $filename_list, + "S_SMILEY_BASEDIR" => $phpbb_root_path . $board_config['smilies_path']) + ); + + $template->pparse("body"); + break; + + case "save": + // + // Mod has submitted changes while editing a smiley. + // + + // + // Get the submitted data, being careful to ensure that we only + // accept the data we are looking for. + // + $smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? trim($HTTP_POST_VARS['smile_code']) : trim($HTTP_GET_VARS['smile_code']); + $smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? trim($HTTP_POST_VARS['smile_url']) : trim($HTTP_GET_VARS['smile_url']); + $smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? trim($HTTP_POST_VARS['smile_emotion']) : trim($HTTP_GET_VARS['smile_emotion']); + $smile_id = ( isset($HTTP_POST_VARS['smile_id']) ) ? intval($HTTP_POST_VARS['smile_id']) : intval($HTTP_GET_VARS['smile_id']); + + // If no code was entered complain ... + if ($smile_code == '' || $smile_url == '') + { + mx_message_die(MESSAGE, $lang['Fields_empty']); + } + + // + // Convert < and > to proper htmlentities for parsing. + // + $smile_code = str_replace('<', '<', $smile_code); + $smile_code = str_replace('>', '>', $smile_code); + + // + // Proceed with updating the smiley table. + // + $sql = "UPDATE " . SMILIES_TABLE . " + SET code = '" . str_replace("\'", "''", $smile_code) . "', smile_url = '" . str_replace("\'", "''", $smile_url) . "', emoticon = '" . str_replace("\'", "''", $smile_emotion) . "' + WHERE smilies_id = $smile_id"; + if( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't update smilies info", "", __LINE__, __FILE__, $sql); + } + + $message = $lang['smiley_edit_success'] . "

    " . sprintf($lang['Click_return_smileadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + break; + + case "savenew": + // + // Mod has submitted changes while adding a new smiley. + // + + // + // Get the submitted data being careful to ensure the the data + // we recieve and process is only the data we are looking for. + // + $smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? $HTTP_POST_VARS['smile_code'] : $HTTP_GET_VARS['smile_code']; + $smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? $HTTP_POST_VARS['smile_url'] : $HTTP_GET_VARS['smile_url']; + $smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? $HTTP_POST_VARS['smile_emotion'] : $HTTP_GET_VARS['smile_emotion']; + + // If no code was entered complain ... + if ($smile_code == '' || $smile_url == '') + { + mx_message_die(MESSAGE, $lang['Fields_empty']); + } + + // + // Convert < and > to proper htmlentities for parsing. + // + $smile_code = str_replace('<', '<', $smile_code); + $smile_code = str_replace('>', '>', $smile_code); + + // + // Save the data to the smiley table. + // + $sql = "INSERT INTO " . SMILIES_TABLE . " (code, smile_url, emoticon) + VALUES ('" . str_replace("\'", "''", $smile_code) . "', '" . str_replace("\'", "''", $smile_url) . "', '" . str_replace("\'", "''", $smile_emotion) . "')"; + $result = $db->sql_query($sql); + if( !$result ) + { + mx_message_die(GENERAL_ERROR, "Couldn't insert new smiley", "", __LINE__, __FILE__, $sql); + } + + $message = $lang['smiley_add_success'] . "

    " . sprintf($lang['Click_return_smileadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + break; + } +} +else +{ + + // + // This is the main display of the page before the mod has selected + // any options. + // + $sql = "SELECT * + FROM " . SMILIES_TABLE; + $result = $db->sql_query($sql); + if( !$result ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain smileys from database", "", __LINE__, __FILE__, $sql); + } + + $smilies = $db->sql_fetchrowset($result); + + $template->set_filenames(array( + "body" => "modcp/smile_list_body.tpl") + ); + + $template->assign_vars(array( + "L_ACTION" => $lang['Action'], + "L_SMILEY_TITLE" => $lang['smiley_title'], + "L_SMILEY_TEXT" => $lang['smile_desc'], + "L_DELETE" => $lang['Delete'], + "L_EDIT" => $lang['Edit'], + "L_SMILEY_ADD" => $lang['smile_add'], + "L_CODE" => $lang['Code'], + "L_EMOT" => $lang['Emotion'], + "L_SMILE" => $lang['Smile'], + "L_IMPORT_PACK" => $lang['import_smile_pack'], + "L_EXPORT_PACK" => $lang['export_smile_pack'], + + "S_HIDDEN_FIELDS" => $s_hidden_fields, + "S_SMILEY_ACTION" => append_sid("admin_smilies.$phpEx")) + ); + + // + // Loop throuh the rows of smilies setting block vars for the template. + // + for($i = 0; $i < count($smilies); $i++) + { + // + // Replace htmlentites for < and > with actual character. + // + $smilies[$i]['code'] = str_replace('<', '<', $smilies[$i]['code']); + $smilies[$i]['code'] = str_replace('>', '>', $smilies[$i]['code']); + + $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $template->assign_block_vars("smiles", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + + "SMILEY_IMG" => $phpbb_root_path . $board_config['smilies_path'] . '/' . $smilies[$i]['smile_url'], + "CODE" => $smilies[$i]['code'], + "EMOT" => $smilies[$i]['emoticon'], + + "U_SMILEY_EDIT" => append_sid("admin_smilies.$phpEx?mode=edit&id=" . $smilies[$i]['smilies_id']), + "U_SMILEY_DELETE" => append_sid("admin_smilies.$phpEx?mode=delete&id=" . $smilies[$i]['smilies_id'])) + ); + } + + // + // Spit out the page. + // + $template->pparse("body"); +} + +// +// Page Footer +// +include('./page_footer_mod.'.$phpEx); + +?> diff --git a/modcp/admin_user_ban.php b/modcp/admin_user_ban.php new file mode 100644 index 00000000..effeb2ba --- /dev/null +++ b/modcp/admin_user_ban.php @@ -0,0 +1,453 @@ +
    ' . sprintf($lang['Click_return_banadmin'], '', '') . '

    ' . sprintf($lang['Click_return_admin_index'], '', ''); + mx_message_die(GENERAL_MESSAGE, $message); + } + $user_list[] = $this_userdata['user_id']; + } + + $ip_list = array(); + if ( isset($HTTP_POST_VARS['ban_ip']) ) + { + $ip_list_temp = explode(',', $HTTP_POST_VARS['ban_ip']); + + for($i = 0; $i < count($ip_list_temp); $i++) + { + if ( preg_match('/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})[ ]*\-[ ]*([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/', trim($ip_list_temp[$i]), $ip_range_explode) ) + { + // + // Don't ask about all this, just don't ask ... ! + // + $ip_1_counter = $ip_range_explode[1]; + $ip_1_end = $ip_range_explode[5]; + + while ( $ip_1_counter <= $ip_1_end ) + { + $ip_2_counter = ( $ip_1_counter == $ip_range_explode[1] ) ? $ip_range_explode[2] : 0; + $ip_2_end = ( $ip_1_counter < $ip_1_end ) ? 254 : $ip_range_explode[6]; + + if ( $ip_2_counter == 0 && $ip_2_end == 254 ) + { + $ip_2_counter = 255; + $ip_2_fragment = 255; + + $ip_list[] = encode_ip("$ip_1_counter.255.255.255"); + } + + while ( $ip_2_counter <= $ip_2_end ) + { + $ip_3_counter = ( $ip_2_counter == $ip_range_explode[2] && $ip_1_counter == $ip_range_explode[1] ) ? $ip_range_explode[3] : 0; + $ip_3_end = ( $ip_2_counter < $ip_2_end || $ip_1_counter < $ip_1_end ) ? 254 : $ip_range_explode[7]; + + if ( $ip_3_counter == 0 && $ip_3_end == 254 ) + { + $ip_3_counter = 255; + $ip_3_fragment = 255; + + $ip_list[] = encode_ip("$ip_1_counter.$ip_2_counter.255.255"); + } + + while ( $ip_3_counter <= $ip_3_end ) + { + $ip_4_counter = ( $ip_3_counter == $ip_range_explode[3] && $ip_2_counter == $ip_range_explode[2] && $ip_1_counter == $ip_range_explode[1] ) ? $ip_range_explode[4] : 0; + $ip_4_end = ( $ip_3_counter < $ip_3_end || $ip_2_counter < $ip_2_end ) ? 254 : $ip_range_explode[8]; + + if ( $ip_4_counter == 0 && $ip_4_end == 254 ) + { + $ip_4_counter = 255; + $ip_4_fragment = 255; + + $ip_list[] = encode_ip("$ip_1_counter.$ip_2_counter.$ip_3_counter.255"); + } + + while ( $ip_4_counter <= $ip_4_end ) + { + $ip_list[] = encode_ip("$ip_1_counter.$ip_2_counter.$ip_3_counter.$ip_4_counter"); + $ip_4_counter++; + } + $ip_3_counter++; + } + $ip_2_counter++; + } + $ip_1_counter++; + } + } + else if ( preg_match('/^([\w\-_]\.?){2,}$/is', trim($ip_list_temp[$i])) ) + { + $ip = gethostbynamel(trim($ip_list_temp[$i])); + + for($j = 0; $j < count($ip); $j++) + { + if ( !empty($ip[$j]) ) + { + $ip_list[] = encode_ip($ip[$j]); + } + } + } + else if ( preg_match('/^([0-9]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})$/', trim($ip_list_temp[$i])) ) + { + $ip_list[] = encode_ip(str_replace('*', '255', trim($ip_list_temp[$i]))); + } + } + } + + $email_list = array(); + if ( isset($HTTP_POST_VARS['ban_email']) ) + { + $email_list_temp = explode(',', $HTTP_POST_VARS['ban_email']); + + for($i = 0; $i < count($email_list_temp); $i++) + { + // + // This ereg match is based on one by php@unreelpro.com + // contained in the annotated php manual at php.com (ereg + // section) + // + if (preg_match('#^(([a-z0-9&.-_+])|(\*))+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$#is', trim($email_list_temp[$i]))) + { + $email_list[] = trim($email_list_temp[$i]); + } + } + } + + $sql = "SELECT * + FROM " . BANLIST_TABLE; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql); + } + + $current_banlist = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + $kill_session_sql = ''; + for($i = 0; $i < count($user_list); $i++) + { + $in_banlist = false; + for($j = 0; $j < count($current_banlist); $j++) + { + if ( $user_list[$i] == $current_banlist[$j]['ban_userid'] ) + { + $in_banlist = true; + } + } + + if ( !$in_banlist ) + { + $kill_session_sql .= ( ( $kill_session_sql != '' ) ? ' OR ' : '' ) . "session_user_id = " . $user_list[$i]; + + $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_userid) + VALUES (" . $user_list[$i] . ")"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't insert ban_userid info into database", "", __LINE__, __FILE__, $sql); + } + } + } + + for($i = 0; $i < count($ip_list); $i++) + { + $in_banlist = false; + for($j = 0; $j < count($current_banlist); $j++) + { + if ( $ip_list[$i] == $current_banlist[$j]['ban_ip'] ) + { + $in_banlist = true; + } + } + + if ( !$in_banlist ) + { + if ( preg_match('/(ff\.)|(\.ff)/is', chunk_split($ip_list[$i], 2, '.')) ) + { + $kill_ip_sql = "session_ip LIKE '" . str_replace('.', '', preg_replace('/(ff\.)|(\.ff)/is', '%', chunk_split($ip_list[$i], 2, "."))) . "'"; + } + else + { + $kill_ip_sql = "session_ip = '" . $ip_list[$i] . "'"; + } + + $kill_session_sql .= ( ( $kill_session_sql != '' ) ? ' OR ' : '' ) . $kill_ip_sql; + + $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_ip) + VALUES ('" . $ip_list[$i] . "')"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't insert ban_ip info into database", "", __LINE__, __FILE__, $sql); + } + } + } + + // + // Now we'll delete all entries from the session table with any of the banned + // user or IP info just entered into the ban table ... this will force a session + // initialisation resulting in an instant ban + // + if ( $kill_session_sql != '' ) + { + $sql = "DELETE FROM " . SESSIONS_TABLE . " + WHERE $kill_session_sql"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't delete banned sessions from database", "", __LINE__, __FILE__, $sql); + } + } + + for($i = 0; $i < count($email_list); $i++) + { + $in_banlist = false; + for($j = 0; $j < count($current_banlist); $j++) + { + if ( $email_list[$i] == $current_banlist[$j]['ban_email'] ) + { + $in_banlist = true; + } + } + + if ( !$in_banlist ) + { + $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_email) + VALUES ('" . str_replace("\'", "''", $email_list[$i]) . "')"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't insert ban_email info into database", "", __LINE__, __FILE__, $sql); + } + } + } + + $where_sql = ''; + + if ( isset($HTTP_POST_VARS['unban_user']) ) + { + $user_list = $HTTP_POST_VARS['unban_user']; + + for($i = 0; $i < count($user_list); $i++) + { + if ( $user_list[$i] != -1 ) + { + $where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . intval($user_list[$i]); + } + } + } + + if ( isset($HTTP_POST_VARS['unban_ip']) ) + { + $ip_list = $HTTP_POST_VARS['unban_ip']; + + for($i = 0; $i < count($ip_list); $i++) + { + if ( $ip_list[$i] != -1 ) + { + $where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . str_replace("\'", "''", $ip_list[$i]); + } + } + } + + if ( isset($HTTP_POST_VARS['unban_email']) ) + { + $email_list = $HTTP_POST_VARS['unban_email']; + + for($i = 0; $i < count($email_list); $i++) + { + if ( $email_list[$i] != -1 ) + { + $where_sql .= ( ( $where_sql != '' ) ? ', ' : '' ) . str_replace("\'", "''", $email_list[$i]); + } + } + } + + if ( $where_sql != '' ) + { + $sql = "DELETE FROM " . BANLIST_TABLE . " + WHERE ban_id IN ($where_sql)"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't delete ban info from database", "", __LINE__, __FILE__, $sql); + } + } + + $message = $lang['Ban_update_sucessful'] . '

    ' . sprintf($lang['Click_return_banadmin'], '', '') . '

    ' . sprintf($lang['Click_return_admin_index'], '', ''); + + mx_message_die(GENERAL_MESSAGE, $message); + +} +else +{ + $template->set_filenames(array( + 'body' => 'modcp/user_ban_body.tpl') + ); + + $template->assign_vars(array( + 'L_BAN_TITLE' => $lang['Ban_control'], + 'L_BAN_EXPLAIN' => $lang['Ban_explain'], + 'L_BAN_EXPLAIN_WARN' => $lang['Ban_explain_warn'], + 'L_IP_OR_HOSTNAME' => $lang['IP_hostname'], + 'L_EMAIL_ADDRESS' => $lang['Email_address'], + 'L_SUBMIT' => $lang['Submit'], + 'L_RESET' => $lang['Reset'], + + 'S_BANLIST_ACTION' => append_sid("admin_user_ban.$phpEx")) + ); + + $template->assign_vars(array( + 'L_BAN_USER' => $lang['Ban_username'], + 'L_BAN_USER_EXPLAIN' => $lang['Ban_username_explain'], + 'L_BAN_IP' => $lang['Ban_IP'], + 'L_BAN_IP_EXPLAIN' => $lang['Ban_IP_explain'], + 'L_BAN_EMAIL' => $lang['Ban_email'], + 'L_BAN_EMAIL_EXPLAIN' => $lang['Ban_email_explain']) + ); + + $userban_count = 0; + $ipban_count = 0; + $emailban_count = 0; + + $sql = "SELECT b.ban_id, u.user_id, u.username + FROM " . BANLIST_TABLE . " b, " . USERS_TABLE . " u + WHERE u.user_id = b.ban_userid + AND b.ban_userid <> 0 + AND u.user_id <> " . ANONYMOUS . " + ORDER BY u.user_id ASC"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not select current user_id ban list', '', __LINE__, __FILE__, $sql); + } + + $user_list = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + $select_userlist = ''; + for($i = 0; $i < count($user_list); $i++) + { + $select_userlist .= ''; + $userban_count++; + } + + if( $select_userlist == '' ) + { + $select_userlist = ''; + } + + $select_userlist = ''; + + $sql = "SELECT ban_id, ban_ip, ban_email + FROM " . BANLIST_TABLE; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not select current ip ban list', '', __LINE__, __FILE__, $sql); + } + + $banlist = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + $select_iplist = ''; + $select_emaillist = ''; + + for($i = 0; $i < count($banlist); $i++) + { + $ban_id = $banlist[$i]['ban_id']; + + if ( !empty($banlist[$i]['ban_ip']) ) + { + $ban_ip = str_replace('255', '*', decode_ip($banlist[$i]['ban_ip'])); + $select_iplist .= ''; + $ipban_count++; + } + else if ( !empty($banlist[$i]['ban_email']) ) + { + $ban_email = $banlist[$i]['ban_email']; + $select_emaillist .= ''; + $emailban_count++; + } + } + + if ( $select_iplist == '' ) + { + $select_iplist = ''; + } + + if ( $select_emaillist == '' ) + { + $select_emaillist = ''; + } + + $select_iplist = ''; + $select_emaillist = ''; + + $template->assign_vars(array( + 'L_UNBAN_USER' => $lang['Unban_username'], + 'L_UNBAN_USER_EXPLAIN' => $lang['Unban_username_explain'], + 'L_UNBAN_IP' => $lang['Unban_IP'], + 'L_UNBAN_IP_EXPLAIN' => $lang['Unban_IP_explain'], + 'L_UNBAN_EMAIL' => $lang['Unban_email'], + 'L_UNBAN_EMAIL_EXPLAIN' => $lang['Unban_email_explain'], + 'L_USERNAME' => $lang['Username'], + 'L_LOOK_UP' => $lang['Look_up_User'], + 'L_FIND_USERNAME' => $lang['Find_username'], + + 'U_SEARCH_USER' => append_sid("./../search.$phpEx?mode=searchuser"), + 'S_UNBAN_USERLIST_SELECT' => $select_userlist, + 'S_UNBAN_IPLIST_SELECT' => $select_iplist, + 'S_UNBAN_EMAILLIST_SELECT' => $select_emaillist, + 'S_BAN_ACTION' => append_sid("admin_user_ban.$phpEx")) + ); +} + +$template->pparse('body'); + +include('./page_footer_mod.'.$phpEx); + +?> \ No newline at end of file diff --git a/modcp/admin_users.php b/modcp/admin_users.php new file mode 100644 index 00000000..9e2c1257 --- /dev/null +++ b/modcp/admin_users.php @@ -0,0 +1,1185 @@ +#'); +$html_entities_replace = array('<', '>'); + +// +// Set mode +// +if( isset( $HTTP_POST_VARS['mode'] ) || isset( $HTTP_GET_VARS['mode'] ) ) +{ + $mode = ( isset( $HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode']; + $mode = htmlspecialchars($mode); +} +else +{ + $mode = ''; +} + +// +// Begin program +// +if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username']) || isset($HTTP_GET_VARS[POST_USERS_URL]) || isset( $HTTP_POST_VARS[POST_USERS_URL]) ) ) +{ + // + // Ok, the profile has been modified and submitted, let's update + // + if ( ( $mode == 'save' && isset( $HTTP_POST_VARS['submit'] ) ) || isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) ) + { + $user_id = intval($HTTP_POST_VARS['id']); + + if (!($this_userdata = get_userdata($user_id))) + { + mx_message_die(GENERAL_MESSAGE, $lang['No_user_id_specified'] ); + } + + if( $HTTP_POST_VARS['deleteuser'] ) + { + $sql = "SELECT g.group_id + FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g + WHERE ug.user_id = $user_id + AND g.group_id = ug.group_id + AND g.group_single_user = 1"; + if( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not obtain group information for this user', '', __LINE__, __FILE__, $sql); + } + + $row = $db->sql_fetchrow($result); + + $sql = "UPDATE " . POSTS_TABLE . " + SET poster_id = " . DELETED . ", post_username = '$username' + WHERE poster_id = $user_id"; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql); + } + + $sql = "UPDATE " . TOPICS_TABLE . " + SET topic_poster = " . DELETED . " + WHERE topic_poster = $user_id"; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not update topics for this user', '', __LINE__, __FILE__, $sql); + } + + $sql = "UPDATE " . VOTE_USERS_TABLE . " + SET vote_user_id = " . DELETED . " + WHERE vote_user_id = $user_id"; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql); + } + + $sql = "SELECT group_id + FROM " . GROUPS_TABLE . " + WHERE group_moderator = $user_id"; + if( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not select groups where user was moderator', '', __LINE__, __FILE__, $sql); + } + + while ( $row_group = $db->sql_fetchrow($result) ) + { + $group_moderator[] = $row_group['group_id']; + } + + if ( count($group_moderator) ) + { + $update_moderator_id = implode(', ', $group_moderator); + + $sql = "UPDATE " . GROUPS_TABLE . " + SET group_moderator = " . $userdata['user_id'] . " + WHERE group_moderator IN ($update_moderator_id)"; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql); + } + } + + $sql = "DELETE FROM " . USERS_TABLE . " + WHERE user_id = $user_id"; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $sql); + } + + $sql = "DELETE FROM " . USER_GROUP_TABLE . " + WHERE user_id = $user_id"; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete user from user_group table', '', __LINE__, __FILE__, $sql); + } + + $sql = "DELETE FROM " . GROUPS_TABLE . " + WHERE group_id = " . $row['group_id']; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql); + } + + $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . " + WHERE group_id = " . $row['group_id']; + if( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql); + } + + $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " + WHERE user_id = $user_id"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete user from topic watch table', '', __LINE__, __FILE__, $sql); + } + + $sql = "DELETE FROM " . BANLIST_TABLE . " + WHERE ban_userid = $user_id"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql); + } + + $sql = "SELECT privmsgs_id + FROM " . PRIVMSGS_TABLE . " + WHERE privmsgs_from_userid = $user_id + OR privmsgs_to_userid = $user_id"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not select all users private messages', '', __LINE__, __FILE__, $sql); + } + + // This little bit of code directly from the private messaging section. + while ( $row_privmsgs = $db->sql_fetchrow($result) ) + { + $mark_list[] = $row_privmsgs['privmsgs_id']; + } + + if ( count($mark_list) ) + { + $delete_sql_id = implode(', ', $mark_list); + + $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . " + WHERE privmsgs_text_id IN ($delete_sql_id)"; + $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . " + WHERE privmsgs_id IN ($delete_sql_id)"; + + if ( !$db->sql_query($delete_sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete private message info', '', __LINE__, __FILE__, $delete_sql); + } + + if ( !$db->sql_query($delete_text_sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not delete private message text', '', __LINE__, __FILE__, $delete_text_sql); + } + } + + $message = $lang['User_deleted'] . '

    ' . sprintf($lang['Click_return_useradmin'], '', '') . '

    ' . sprintf($lang['Click_return_admin_index'], '', ''); + + mx_message_die(GENERAL_MESSAGE, $message); + } + + $username = ( !empty($HTTP_POST_VARS['username']) ) ? trim(strip_tags(htmlspecialchars($HTTP_POST_VARS['username']))) : ''; + $email = ( !empty($HTTP_POST_VARS['email']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['email'] ) )) : ''; + + $password = ( !empty($HTTP_POST_VARS['password']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['password'] ) )) : ''; + $password_confirm = ( !empty($HTTP_POST_VARS['password_confirm']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['password_confirm'] ) )) : ''; + + $icq = ( !empty($HTTP_POST_VARS['icq']) ) ? trim(strip_tags( $HTTP_POST_VARS['icq'] ) ) : ''; + $aim = ( !empty($HTTP_POST_VARS['aim']) ) ? trim(strip_tags( $HTTP_POST_VARS['aim'] ) ) : ''; + $msn = ( !empty($HTTP_POST_VARS['msn']) ) ? trim(strip_tags( $HTTP_POST_VARS['msn'] ) ) : ''; + $yim = ( !empty($HTTP_POST_VARS['yim']) ) ? trim(strip_tags( $HTTP_POST_VARS['yim'] ) ) : ''; + + $website = ( !empty($HTTP_POST_VARS['website']) ) ? trim(strip_tags( $HTTP_POST_VARS['website'] ) ) : ''; + $location = ( !empty($HTTP_POST_VARS['location']) ) ? trim(strip_tags( $HTTP_POST_VARS['location'] ) ) : ''; + $occupation = ( !empty($HTTP_POST_VARS['occupation']) ) ? trim(strip_tags( $HTTP_POST_VARS['occupation'] ) ) : ''; + $interests = ( !empty($HTTP_POST_VARS['interests']) ) ? trim(strip_tags( $HTTP_POST_VARS['interests'] ) ) : ''; + $signature = ( !empty($HTTP_POST_VARS['signature']) ) ? trim(str_replace('
    ', "\n", $HTTP_POST_VARS['signature'] ) ) : ''; + + validate_optional_fields($icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature); + + $viewemail = ( isset( $HTTP_POST_VARS['viewemail']) ) ? ( ( $HTTP_POST_VARS['viewemail'] ) ? TRUE : 0 ) : 0; + $allowviewonline = ( isset( $HTTP_POST_VARS['hideonline']) ) ? ( ( $HTTP_POST_VARS['hideonline'] ) ? 0 : TRUE ) : TRUE; + $notifyreply = ( isset( $HTTP_POST_VARS['notifyreply']) ) ? ( ( $HTTP_POST_VARS['notifyreply'] ) ? TRUE : 0 ) : 0; + $notifypm = ( isset( $HTTP_POST_VARS['notifypm']) ) ? ( ( $HTTP_POST_VARS['notifypm'] ) ? TRUE : 0 ) : TRUE; + $popuppm = ( isset( $HTTP_POST_VARS['popup_pm']) ) ? ( ( $HTTP_POST_VARS['popup_pm'] ) ? TRUE : 0 ) : TRUE; + $attachsig = ( isset( $HTTP_POST_VARS['attachsig']) ) ? ( ( $HTTP_POST_VARS['attachsig'] ) ? TRUE : 0 ) : 0; + + $allowhtml = ( isset( $HTTP_POST_VARS['allowhtml']) ) ? intval( $HTTP_POST_VARS['allowhtml'] ) : $board_config['allow_html']; + $allowbbcode = ( isset( $HTTP_POST_VARS['allowbbcode']) ) ? intval( $HTTP_POST_VARS['allowbbcode'] ) : $board_config['allow_bbcode']; + $allowsmilies = ( isset( $HTTP_POST_VARS['allowsmilies']) ) ? intval( $HTTP_POST_VARS['allowsmilies'] ) : $board_config['allow_smilies']; + + $user_style = ( $HTTP_POST_VARS['style'] ) ? intval( $HTTP_POST_VARS['style'] ) : $board_config['default_style']; + $user_lang = ( $HTTP_POST_VARS['language'] ) ? $HTTP_POST_VARS['language'] : $board_config['default_lang']; + $user_timezone = ( isset( $HTTP_POST_VARS['timezone']) ) ? doubleval( $HTTP_POST_VARS['timezone'] ) : $board_config['board_timezone']; + $user_template = ( $HTTP_POST_VARS['template'] ) ? $HTTP_POST_VARS['template'] : $board_config['board_template']; + $user_dateformat = ( $HTTP_POST_VARS['dateformat'] ) ? trim( $HTTP_POST_VARS['dateformat'] ) : $board_config['default_dateformat']; + + $user_avatar_local = ( isset( $HTTP_POST_VARS['avatarselect'] ) && !empty($HTTP_POST_VARS['submitavatar'] ) && $board_config['allow_avatar_local'] ) ? $HTTP_POST_VARS['avatarselect'] : ( ( isset( $HTTP_POST_VARS['avatarlocal'] ) ) ? $HTTP_POST_VARS['avatarlocal'] : '' ); + + $user_avatar_remoteurl = ( !empty($HTTP_POST_VARS['avatarremoteurl']) ) ? trim( $HTTP_POST_VARS['avatarremoteurl'] ) : ''; + $user_avatar_url = ( !empty($HTTP_POST_VARS['avatarurl']) ) ? trim( $HTTP_POST_VARS['avatarurl'] ) : ''; + $user_avatar_loc = ( $HTTP_POST_FILES['avatar']['tmp_name'] != "none") ? $HTTP_POST_FILES['avatar']['tmp_name'] : ''; + $user_avatar_name = ( !empty($HTTP_POST_FILES['avatar']['name']) ) ? $HTTP_POST_FILES['avatar']['name'] : ''; + $user_avatar_size = ( !empty($HTTP_POST_FILES['avatar']['size']) ) ? $HTTP_POST_FILES['avatar']['size'] : 0; + $user_avatar_filetype = ( !empty($HTTP_POST_FILES['avatar']['type']) ) ? $HTTP_POST_FILES['avatar']['type'] : ''; + + $user_avatar = ( empty($user_avatar_loc) ) ? $this_userdata['user_avatar'] : ''; + $user_avatar_type = ( empty($user_avatar_loc) ) ? $this_userdata['user_avatar_type'] : ''; + + $user_status = ( !empty($HTTP_POST_VARS['user_status']) ) ? intval( $HTTP_POST_VARS['user_status'] ) : 0; + $user_allowpm = ( !empty($HTTP_POST_VARS['user_allowpm']) ) ? intval( $HTTP_POST_VARS['user_allowpm'] ) : 0; + $user_rank = ( !empty($HTTP_POST_VARS['user_rank']) ) ? intval( $HTTP_POST_VARS['user_rank'] ) : 0; + $user_allowavatar = ( !empty($HTTP_POST_VARS['user_allowavatar']) ) ? intval( $HTTP_POST_VARS['user_allowavatar'] ) : 0; + + if( isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) ) + { + $username = stripslashes($username); + $email = stripslashes($email); + $password = ''; + $password_confirm = ''; + + $icq = stripslashes($icq); + $aim = htmlspecialchars(stripslashes($aim)); + $msn = htmlspecialchars(stripslashes($msn)); + $yim = htmlspecialchars(stripslashes($yim)); + + $website = htmlspecialchars(stripslashes($website)); + $location = htmlspecialchars(stripslashes($location)); + $occupation = htmlspecialchars(stripslashes($occupation)); + $interests = htmlspecialchars(stripslashes($interests)); + $signature = htmlspecialchars(stripslashes($signature)); + + $user_lang = stripslashes($user_lang); + $user_dateformat = htmlspecialchars(stripslashes($user_dateformat)); + + if ( !isset($HTTP_POST_VARS['cancelavatar'])) + { + $user_avatar = $user_avatar_local; + $user_avatar_type = USER_AVATAR_GALLERY; + } + } + } + + if( isset( $HTTP_POST_VARS['submit'] ) ) + { + include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx); + + $error = FALSE; + + if (stripslashes($username) != $this_userdata['username']) + { + unset($rename_user); + + if ( stripslashes(strtolower($username)) != strtolower($this_userdata['username']) ) + { + $result = validate_username($username); + if ( $result['error'] ) + { + $error = TRUE; + $error_msg .= ( ( isset($error_msg) ) ? '
    ' : '' ) . $result['error_msg']; + } + else if ( strtolower(str_replace("\\'", "''", $username)) == strtolower($userdata['username']) ) + { + $error = TRUE; + $error_msg .= ( ( isset($error_msg) ) ? '
    ' : '' ) . $lang['Username_taken']; + } + } + + if (!$error) + { + $username_sql = "username = '" . str_replace("\\'", "''", $username) . "', "; + $rename_user = $username; // Used for renaming usergroup + } + } + + $passwd_sql = ''; + if( !empty($password) && !empty($password_confirm) ) + { + // + // Awww, the user wants to change their password, isn't that cute.. + // + if($password != $password_confirm) + { + $error = TRUE; + $error_msg .= ( ( isset($error_msg) ) ? '
    ' : '' ) . $lang['Password_mismatch']; + } + else + { + $password = md5($password); + $passwd_sql = "user_password = '$password', "; + } + } + else if( $password && !$password_confirm ) + { + $error = TRUE; + $error_msg .= ( ( isset($error_msg) ) ? '
    ' : '' ) . $lang['Password_mismatch']; + } + else if( !$password && $password_confirm ) + { + $error = TRUE; + $error_msg .= ( ( isset($error_msg) ) ? '
    ' : '' ) . $lang['Password_mismatch']; + } + + if ($signature != '') + { + $sig_length_check = preg_replace('/(\[.*?)(=.*?)\]/is', '\\1]', stripslashes($signature)); + if ( $allowhtml ) + { + $sig_length_check = preg_replace('/(\<.*?)(=.*?)( .*?=.*?)?([ \/]?\>)/is', '\\1\\3\\4', $sig_length_check); + } + + // Only create a new bbcode_uid when there was no uid yet. + if ( $signature_bbcode_uid == '' ) + { + $signature_bbcode_uid = ( $allowbbcode ) ? make_bbcode_uid() : ''; + } + $signature = prepare_message($signature, $allowhtml, $allowbbcode, $allowsmilies, $signature_bbcode_uid); + + if ( strlen($sig_length_check) > $board_config['max_sig_chars'] ) + { + $error = TRUE; + $error_msg .= ( ( isset($error_msg) ) ? '
    ' : '' ) . $lang['Signature_too_long']; + } + } + + // + // Avatar stuff + // + $avatar_sql = ""; + if( isset($HTTP_POST_VARS['avatardel']) ) + { + if( $this_userdata['user_avatar_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_avatar'] != "" ) + { + if( @file_exists(@phpbb_realpath("./" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) ) + { + @unlink("./" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar']); + } + } + $avatar_sql = ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE; + } + else if( ( $user_avatar_loc != "" || !empty($user_avatar_url) ) && !$error ) + { + // + // Only allow one type of upload, either a + // filename or a URL + // + if( !empty($user_avatar_loc) && !empty($user_avatar_url) ) + { + $error = TRUE; + if( isset($error_msg) ) + { + $error_msg .= "
    "; + } + $error_msg .= $lang['Only_one_avatar']; + } + + if( $user_avatar_loc != "" ) + { + if( file_exists(@phpbb_realpath($user_avatar_loc)) && ereg(".jpg$|.gif$|.png$", $user_avatar_name) ) + { + if( $user_avatar_size <= $board_config['avatar_filesize'] && $user_avatar_size > 0) + { + $error_type = false; + + // + // Opera appends the image name after the type, not big, not clever! + // + preg_match("'image\/[x\-]*([a-z]+)'", $user_avatar_filetype, $user_avatar_filetype); + $user_avatar_filetype = $user_avatar_filetype[1]; + + switch( $user_avatar_filetype ) + { + case "jpeg": + case "pjpeg": + case "jpg": + $imgtype = '.jpg'; + break; + case "gif": + $imgtype = '.gif'; + break; + case "png": + $imgtype = '.png'; + break; + default: + $error = true; + $error_msg = (!empty($error_msg)) ? $error_msg . "
    " . $lang['Avatar_filetype'] : $lang['Avatar_filetype']; + break; + } + + if( !$error ) + { + list($width, $height) = @getimagesize($user_avatar_loc); + + if( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] ) + { + $user_id = $this_userdata['user_id']; + + $avatar_filename = $user_id . $imgtype; + + if( $this_userdata['user_avatar_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_avatar'] != "" ) + { + if( @file_exists(@phpbb_realpath("./../" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) ) + { + @unlink("./../" . $board_config['avatar_path'] . "/". $this_userdata['user_avatar']); + } + } + @copy($user_avatar_loc, "./../" . $board_config['avatar_path'] . "/$avatar_filename"); + + $avatar_sql = ", user_avatar = '$avatar_filename', user_avatar_type = " . USER_AVATAR_UPLOAD; + } + else + { + $l_avatar_size = sprintf($lang['Avatar_imagesize'], $board_config['avatar_max_width'], $board_config['avatar_max_height']); + + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $l_avatar_size : $l_avatar_size; + } + } + } + else + { + $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024)); + + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $l_avatar_size : $l_avatar_size; + } + } + else + { + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $lang['Avatar_filetype'] : $lang['Avatar_filetype']; + } + } + else if( !empty($user_avatar_url) ) + { + // + // First check what port we should connect + // to, look for a :[xxxx]/ or, if that doesn't + // exist assume port 80 (http) + // + preg_match("/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/", $user_avatar_url, $url_ary); + + if( !empty($url_ary[4]) ) + { + $port = (!empty($url_ary[3])) ? $url_ary[3] : 80; + + $fsock = @fsockopen($url_ary[2], $port, $errno, $errstr); + if( $fsock ) + { + $base_get = "/" . $url_ary[4]; + + // + // Uses HTTP 1.1, could use HTTP 1.0 ... + // + @fputs($fsock, "GET $base_get HTTP/1.1\r\n"); + @fputs($fsock, "HOST: " . $url_ary[2] . "\r\n"); + @fputs($fsock, "Connection: close\r\n\r\n"); + + unset($avatar_data); + while( !@feof($fsock) ) + { + $avatar_data .= @fread($fsock, $board_config['avatar_filesize']); + } + @fclose($fsock); + + if( preg_match("/Content-Length\: ([0-9]+)[^\/ ][\s]+/i", $avatar_data, $file_data1) && preg_match("/Content-Type\: image\/[x\-]*([a-z]+)[\s]+/i", $avatar_data, $file_data2) ) + { + $file_size = $file_data1[1]; + $file_type = $file_data2[1]; + + switch( $file_type ) + { + case "jpeg": + case "pjpeg": + case "jpg": + $imgtype = '.jpg'; + break; + case "gif": + $imgtype = '.gif'; + break; + case "png": + $imgtype = '.png'; + break; + default: + $error = true; + $error_msg = (!empty($error_msg)) ? $error_msg . "
    " . $lang['Avatar_filetype'] : $lang['Avatar_filetype']; + break; + } + + if( !$error && $file_size > 0 && $file_size < $board_config['avatar_filesize'] ) + { + $avatar_data = substr($avatar_data, strlen($avatar_data) - $file_size, $file_size); + + $tmp_filename = tempnam ("/tmp", $this_userdata['user_id'] . "-"); + $fptr = @fopen($tmp_filename, "wb"); + $bytes_written = @fwrite($fptr, $avatar_data, $file_size); + @fclose($fptr); + + if( $bytes_written == $file_size ) + { + list($width, $height) = @getimagesize($tmp_filename); + + if( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] ) + { + $user_id = $this_userdata['user_id']; + + $avatar_filename = $user_id . $imgtype; + + if( $this_userdata['user_avatar_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_avatar'] != "") + { + if( file_exists(@phpbb_realpath("./../" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) ) + { + @unlink("./../" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar']); + } + } + @copy($tmp_filename, "./../" . $board_config['avatar_path'] . "/$avatar_filename"); + @unlink($tmp_filename); + + $avatar_sql = ", user_avatar = '$avatar_filename', user_avatar_type = " . USER_AVATAR_UPLOAD; + } + else + { + $l_avatar_size = sprintf($lang['Avatar_imagesize'], $board_config['avatar_max_width'], $board_config['avatar_max_height']); + + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $l_avatar_size : $l_avatar_size; + } + } + else + { + // + // Error writing file + // + @unlink($tmp_filename); + mx_message_die(GENERAL_ERROR, "Could not write avatar file to local storage. Please contact the board administrator with this message", "", __LINE__, __FILE__); + } + } + } + else + { + // + // No data + // + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $lang['File_no_data'] : $lang['File_no_data']; + } + } + else + { + // + // No connection + // + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $lang['No_connection_URL'] : $lang['No_connection_URL']; + } + } + else + { + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $lang['Incomplete_URL'] : $lang['Incomplete_URL']; + } + } + else if( !empty($user_avatar_name) ) + { + $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024)); + + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $l_avatar_size : $l_avatar_size; + } + } + else if( $user_avatar_remoteurl != "" && $avatar_sql == "" && !$error ) + { + if( !preg_match("#^http:\/\/#i", $user_avatar_remoteurl) ) + { + $user_avatar_remoteurl = "http://" . $user_avatar_remoteurl; + } + + if( preg_match("#^(http:\/\/[a-z0-9\-]+?\.([a-z0-9\-]+\.)*[a-z]+\/.*?\.(gif|jpg|png)$)#is", $user_avatar_remoteurl) ) + { + $avatar_sql = ", user_avatar = '" . str_replace("\'", "''", $user_avatar_remoteurl) . "', user_avatar_type = " . USER_AVATAR_REMOTE; + } + else + { + $error = true; + $error_msg = ( !empty($error_msg) ) ? $error_msg . "
    " . $lang['Wrong_remote_avatar_format'] : $lang['Wrong_remote_avatar_format']; + } + } + else if( $user_avatar_local != "" && $avatar_sql == "" && !$error ) + { + $avatar_sql = ", user_avatar = '" . str_replace("\'", "''", $user_avatar_local) . "', user_avatar_type = " . USER_AVATAR_GALLERY; + } + + // + // Update entry in DB + // + if( !$error ) + { + $sql = "UPDATE " . USERS_TABLE . " + SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) . "', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", $aim) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_sig_bbcode_uid = '$signature_bbcode_uid', user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowavatar = $user_allowavatar, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_allow_pm = $user_allowpm, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_active = $user_status, user_rank = $user_rank" . $avatar_sql . " + WHERE user_id = $user_id"; + + if( $result = $db->sql_query($sql) ) + { + if( isset($rename_user) ) + { + $sql = "UPDATE " . GROUPS_TABLE . " + SET group_name = '".str_replace("\'", "''", $rename_user)."' + WHERE group_name = '".str_replace("'", "''", $this_userdata['username'] )."'"; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Could not rename users group', '', __LINE__, __FILE__, $sql); + } + } + + // Delete user session, to prevent the user navigating the forum (if logged in) when disabled + if (!$user_status) + { + $sql = "DELETE FROM " . SESSIONS_TABLE . " + WHERE session_user_id = " . $user_id; + + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, 'Error removing user session', '', __LINE__, __FILE__, $sql); + } + } + + $message .= $lang['Admin_user_updated']; + } + else + { + $error = TRUE; + $error_msg .= ( ( isset($error_msg) ) ? '
    ' : '' ) . $lang['Admin_user_fail']; + } + + $message .= '

    ' . sprintf($lang['Click_return_useradmin'], '', '') . '

    ' . sprintf($lang['Click_return_admin_index'], '', ''); + + mx_message_die(GENERAL_MESSAGE, $message); + } + else + { + $template->set_filenames(array( + 'reg_header' => 'error_body.tpl') + ); + + $template->assign_vars(array( + 'ERROR_MESSAGE' => $error_msg) + ); + + $template->assign_var_from_handle('ERROR_BOX', 'reg_header'); + + $username = htmlspecialchars(stripslashes($username)); + $email = stripslashes($email); + $password = ''; + $password_confirm = ''; + + $icq = stripslashes($icq); + $aim = htmlspecialchars(str_replace('+', ' ', stripslashes($aim))); + $msn = htmlspecialchars(stripslashes($msn)); + $yim = htmlspecialchars(stripslashes($yim)); + + $website = htmlspecialchars(stripslashes($website)); + $location = htmlspecialchars(stripslashes($location)); + $occupation = htmlspecialchars(stripslashes($occupation)); + $interests = htmlspecialchars(stripslashes($interests)); + $signature = htmlspecialchars(stripslashes($signature)); + + $user_lang = stripslashes($user_lang); + $user_dateformat = htmlspecialchars(stripslashes($user_dateformat)); + } + } + else if( !isset( $HTTP_POST_VARS['submit'] ) && $mode != 'save' && !isset( $HTTP_POST_VARS['avatargallery'] ) && !isset( $HTTP_POST_VARS['submitavatar'] ) && !isset( $HTTP_POST_VARS['cancelavatar'] ) ) + { + if( isset( $HTTP_GET_VARS[POST_USERS_URL]) || isset( $HTTP_POST_VARS[POST_USERS_URL]) ) + { + $user_id = ( isset( $HTTP_POST_VARS[POST_USERS_URL]) ) ? intval( $HTTP_POST_VARS[POST_USERS_URL]) : intval( $HTTP_GET_VARS[POST_USERS_URL]); + $this_userdata = get_userdata($user_id); + if( !$this_userdata ) + { + mx_message_die(GENERAL_MESSAGE, $lang['No_user_id_specified'] ); + } + } + else + { + $this_userdata = get_userdata($HTTP_POST_VARS['username'], true); + if( !$this_userdata ) + { + mx_message_die(GENERAL_MESSAGE, $lang['No_user_id_specified'] ); + } + } + + // + // Now parse and display it as a template + // + $user_id = $this_userdata['user_id']; + $username = $this_userdata['username']; + $email = $this_userdata['user_email']; + $password = ''; + $password_confirm = ''; + + $icq = $this_userdata['user_icq']; + $aim = htmlspecialchars(str_replace('+', ' ', $this_userdata['user_aim'] )); + $msn = htmlspecialchars($this_userdata['user_msnm']); + $yim = htmlspecialchars($this_userdata['user_yim']); + + $website = htmlspecialchars($this_userdata['user_website']); + $location = htmlspecialchars($this_userdata['user_from']); + $occupation = htmlspecialchars($this_userdata['user_occ']); + $interests = htmlspecialchars($this_userdata['user_interests']); + + $signature = ($this_userdata['user_sig_bbcode_uid'] != '') ? preg_replace('#:' . $this_userdata['user_sig_bbcode_uid'] . '#si', '', $this_userdata['user_sig']) : $this_userdata['user_sig']; + $signature = preg_replace($html_entities_match, $html_entities_replace, $signature); + + $viewemail = $this_userdata['user_viewemail']; + $notifypm = $this_userdata['user_notify_pm']; + $popuppm = $this_userdata['user_popup_pm']; + $notifyreply = $this_userdata['user_notify']; + $attachsig = $this_userdata['user_attachsig']; + $allowhtml = $this_userdata['user_allowhtml']; + $allowbbcode = $this_userdata['user_allowbbcode']; + $allowsmilies = $this_userdata['user_allowsmile']; + $allowviewonline = $this_userdata['user_allow_viewonline']; + + $user_avatar = $this_userdata['user_avatar']; + $user_avatar_type = $this_userdata['user_avatar_type']; + $user_style = $this_userdata['user_style']; + $user_lang = $this_userdata['user_lang']; + $user_timezone = $this_userdata['user_timezone']; + $user_dateformat = htmlspecialchars($this_userdata['user_dateformat']); + + $user_status = $this_userdata['user_active']; + $user_allowavatar = $this_userdata['user_allowavatar']; + $user_allowpm = $this_userdata['user_allow_pm']; + + $COPPA = false; + + $html_status = ($this_userdata['user_allowhtml'] ) ? $lang['HTML_is_ON'] : $lang['HTML_is_OFF']; + $bbcode_status = ($this_userdata['user_allowbbcode'] ) ? $lang['BBCode_is_ON'] : $lang['BBCode_is_OFF']; + $smilies_status = ($this_userdata['user_allowsmile'] ) ? $lang['Smilies_are_ON'] : $lang['Smilies_are_OFF']; + } + + if( isset($HTTP_POST_VARS['avatargallery']) && !$error ) + { + if( !$error ) + { + $user_id = intval($HTTP_POST_VARS['id']); + + $template->set_filenames(array( + "body" => "modcp/user_avatar_gallery.tpl") + ); + + $dir = @opendir("../" . $board_config['avatar_gallery_path']); + + $avatar_images = array(); + while( $file = @readdir($dir) ) + { + if( $file != "." && $file != ".." && !is_file(phpbb_realpath("./../" . $board_config['avatar_gallery_path'] . "/" . $file)) && !is_link(phpbb_realpath("./../" . $board_config['avatar_gallery_path'] . "/" . $file)) ) + { + $sub_dir = @opendir("../" . $board_config['avatar_gallery_path'] . "/" . $file); + + $avatar_row_count = 0; + $avatar_col_count = 0; + + while( $sub_file = @readdir($sub_dir) ) + { + if( preg_match("/(\.gif$|\.png$|\.jpg)$/is", $sub_file) ) + { + $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . "/" . $sub_file; + + $avatar_col_count++; + if( $avatar_col_count == 5 ) + { + $avatar_row_count++; + $avatar_col_count = 0; + } + } + } + } + } + + @closedir($dir); + + if( isset($HTTP_POST_VARS['avatarcategory']) ) + { + $category = htmlspecialchars($HTTP_POST_VARS['avatarcategory']); + } + else + { + list($category, ) = each($avatar_images); + } + @reset($avatar_images); + + $s_categories = ""; + while( list($key) = each($avatar_images) ) + { + $selected = ( $key == $category ) ? "selected=\"selected\"" : ""; + if( count($avatar_images[$key]) ) + { + $s_categories .= ''; + } + } + + $s_colspan = 0; + for($i = 0; $i < count($avatar_images[$category]); $i++) + { + $template->assign_block_vars("avatar_row", array()); + + $s_colspan = max($s_colspan, count($avatar_images[$category][$i])); + + for($j = 0; $j < count($avatar_images[$category][$i]); $j++) + { + $template->assign_block_vars("avatar_row.avatar_column", array( + "AVATAR_IMAGE" => "../" . $board_config['avatar_gallery_path'] . "/" . $avatar_images[$category][$i][$j]) + ); + + $template->assign_block_vars("avatar_row.avatar_option_column", array( + "S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j]) + ); + } + } + + $coppa = ( ( !$HTTP_POST_VARS['coppa'] && !$HTTP_GET_VARS['coppa'] ) || $mode == "register") ? 0 : TRUE; + + $s_hidden_fields = ''; + $s_hidden_fields .= ''; + + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + $s_hidden_fields .= ''; + + $template->assign_vars(array( + "L_USER_TITLE" => $lang['User_admin'], + "L_USER_EXPLAIN" => $lang['User_admin_explain'], + "L_AVATAR_GALLERY" => $lang['Avatar_gallery'], + "L_SELECT_AVATAR" => $lang['Select_avatar'], + "L_RETURN_PROFILE" => $lang['Return_profile'], + "L_CATEGORY" => $lang['Select_category'], + "L_GO" => $lang['Go'], + + "S_OPTIONS_CATEGORIES" => $s_categories, + "S_COLSPAN" => $s_colspan, + "S_PROFILE_ACTION" => append_sid("admin_users.$phpEx?mode=$mode"), + "S_HIDDEN_FIELDS" => $s_hidden_fields) + ); + } + } + else + { + $s_hidden_fields = ''; + $s_hidden_fields .= ''; + + if( !empty($user_avatar_local) ) + { + $s_hidden_fields .= ''; + } + + if( $user_avatar_type ) + { + switch( $user_avatar_type ) + { + case USER_AVATAR_UPLOAD: + $avatar = ''; + break; + case USER_AVATAR_REMOTE: + $avatar = ''; + break; + case USER_AVATAR_GALLERY: + $avatar = ''; + break; + } + } + else + { + $avatar = ""; + } + + $sql = "SELECT * FROM " . RANKS_TABLE . " + WHERE rank_special = 1 + ORDER BY rank_title"; + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not obtain ranks data', '', __LINE__, __FILE__, $sql); + } + + $rank_select_box = ''; + while( $row = $db->sql_fetchrow($result) ) + { + $rank = $row['rank_title']; + $rank_id = $row['rank_id']; + + $selected = ( $this_userdata['user_rank'] == $rank_id ) ? ' selected="selected"' : ''; + $rank_select_box .= ''; + } + + $template->set_filenames(array( + "body" => "modcp/user_edit_body.tpl") + ); + + if ( ( $this_userdata['user_level'] == ADMIN ) || ( ( $this_userdata['user_level'] == MOD ) && ( $userdata['user_id'] != $this_userdata['user_id'] ) ) ) + { + $template->assign_block_vars('switch_change_disallowed', array()); + } + else + { + $template->assign_block_vars('switch_change_allowed', array()); + } + + // + // Let's do an overall check for settings/versions which would prevent + // us from doing file uploads.... + // + $ini_val = ( phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var'; + $form_enctype = ( !@$ini_val('file_uploads') || phpversion() == '4.0.4pl1' || !$board_config['allow_avatar_upload'] || ( phpversion() < '4.0.3' && @$ini_val('open_basedir') != '' ) ) ? '' : 'enctype="multipart/form-data"'; + + $template->assign_vars(array( + 'DISABLE_CHANGE' => ( ( $this_userdata['user_level'] == ADMIN ) || ( ( $this_userdata['user_level'] == MOD )&& ( $userdata['user_id'] != $this_userdata['user_id'] ) ) ) ? ' disabled="disabled"' : '', + 'USERNAME' => $username, + 'EMAIL' => $email, + 'YIM' => $yim, + 'ICQ' => $icq, + 'MSN' => $msn, + 'AIM' => $aim, + 'OCCUPATION' => $occupation, + 'INTERESTS' => $interests, + 'LOCATION' => $location, + 'WEBSITE' => $website, + 'SIGNATURE' => str_replace('
    ', "\n", $signature), + 'VIEW_EMAIL_YES' => ($viewemail) ? ' checked="checked"' : '', + 'VIEW_EMAIL_NO' => (!$viewemail) ? ' checked="checked"' : '', + 'HIDE_USER_YES' => (!$allowviewonline) ? ' checked="checked"' : '', + 'HIDE_USER_NO' => ($allowviewonline) ? ' checked="checked"' : '', + 'NOTIFY_PM_YES' => ($notifypm) ? ' checked="checked"' : '', + 'NOTIFY_PM_NO' => (!$notifypm) ? ' checked="checked"' : '', + 'POPUP_PM_YES' => ($popuppm) ? ' checked="checked"' : '', + 'POPUP_PM_NO' => (!$popuppm) ? ' checked="checked"' : '', + 'ALWAYS_ADD_SIGNATURE_YES' => ($attachsig) ? ' checked="checked"' : '', + 'ALWAYS_ADD_SIGNATURE_NO' => (!$attachsig) ? ' checked="checked"' : '', + 'NOTIFY_REPLY_YES' => ( $notifyreply ) ? ' checked="checked"' : '', + 'NOTIFY_REPLY_NO' => ( !$notifyreply ) ? ' checked="checked"' : '', + 'ALWAYS_ALLOW_BBCODE_YES' => ($allowbbcode) ? ' checked="checked"' : '', + 'ALWAYS_ALLOW_BBCODE_NO' => (!$allowbbcode) ? ' checked="checked"' : '', + 'ALWAYS_ALLOW_HTML_YES' => ($allowhtml) ? ' checked="checked"' : '', + 'ALWAYS_ALLOW_HTML_NO' => (!$allowhtml) ? ' checked="checked"' : '', + 'ALWAYS_ALLOW_SMILIES_YES' => ($allowsmilies) ? ' checked="checked"' : '', + 'ALWAYS_ALLOW_SMILIES_NO' => (!$allowsmilies) ? ' checked="checked"' : '', + 'AVATAR' => $avatar, + 'LANGUAGE_SELECT' => language_select($user_lang), + 'TIMEZONE_SELECT' => tz_select($user_timezone), + 'STYLE_SELECT' => style_select($user_style, 'style'), + 'DATE_FORMAT' => $user_dateformat, + 'ALLOW_PM_YES' => ($user_allowpm) ? ' checked="checked"' : '', + 'ALLOW_PM_NO' => (!$user_allowpm) ? ' checked="checked"' : '', + 'ALLOW_AVATAR_YES' => ($user_allowavatar) ? ' checked="checked"' : '', + 'ALLOW_AVATAR_NO' => (!$user_allowavatar) ? ' checked="checked"' : '', + 'USER_ACTIVE_YES' => ($user_status) ? ' checked="checked"' : '', + 'USER_ACTIVE_NO' => (!$user_status) ? ' checked="checked"' : '', + 'RANK_SELECT_BOX' => $rank_select_box, + + 'L_USERNAME' => $lang['Username'], + 'L_USER_TITLE' => $lang['User_admin'], + 'L_USER_EXPLAIN' => $lang['User_admin_explain'], + 'L_NEW_PASSWORD' => $lang['New_password'], + 'L_PASSWORD_IF_CHANGED' => $lang['password_if_changed'], + 'L_CONFIRM_PASSWORD' => $lang['Confirm_password'], + 'L_PASSWORD_CONFIRM_IF_CHANGED' => $lang['password_confirm_if_changed'], + 'L_SUBMIT' => $lang['Submit'], + 'L_RESET' => $lang['Reset'], + 'L_ICQ_NUMBER' => $lang['ICQ'], + 'L_MESSENGER' => $lang['MSNM'], + 'L_YAHOO' => $lang['YIM'], + 'L_WEBSITE' => $lang['Website'], + 'L_AIM' => $lang['AIM'], + 'L_LOCATION' => $lang['Location'], + 'L_OCCUPATION' => $lang['Occupation'], + 'L_BOARD_LANGUAGE' => $lang['Board_lang'], + 'L_BOARD_STYLE' => $lang['Board_style'], + 'L_TIMEZONE' => $lang['Timezone'], + 'L_DATE_FORMAT' => $lang['Date_format'], + 'L_DATE_FORMAT_EXPLAIN' => $lang['Date_format_explain'], + 'L_YES' => $lang['Yes'], + 'L_NO' => $lang['No'], + 'L_INTERESTS' => $lang['Interests'], + 'L_ALWAYS_ALLOW_SMILIES' => $lang['Always_smile'], + 'L_ALWAYS_ALLOW_BBCODE' => $lang['Always_bbcode'], + 'L_ALWAYS_ALLOW_HTML' => $lang['Always_html'], + 'L_HIDE_USER' => $lang['Hide_user'], + 'L_ALWAYS_ADD_SIGNATURE' => $lang['Always_add_sig'], + + 'L_SPECIAL' => $lang['User_special'], + 'L_SPECIAL_EXPLAIN' => $lang['User_special_explain'], + 'L_USER_ACTIVE' => $lang['User_status'], + 'L_ALLOW_PM' => $lang['User_allowpm'], + 'L_ALLOW_AVATAR' => $lang['User_allowavatar'], + + 'L_AVATAR_PANEL' => $lang['Avatar_panel'], + 'L_AVATAR_EXPLAIN' => $lang['Admin_avatar_explain'], + 'L_DELETE_AVATAR' => $lang['Delete_Image'], + 'L_CURRENT_IMAGE' => $lang['Current_Image'], + 'L_UPLOAD_AVATAR_FILE' => $lang['Upload_Avatar_file'], + 'L_UPLOAD_AVATAR_URL' => $lang['Upload_Avatar_URL'], + 'L_AVATAR_GALLERY' => $lang['Select_from_gallery'], + 'L_SHOW_GALLERY' => $lang['View_avatar_gallery'], + 'L_LINK_REMOTE_AVATAR' => $lang['Link_remote_Avatar'], + + 'L_SIGNATURE' => $lang['Signature'], + 'L_SIGNATURE_EXPLAIN' => sprintf($lang['Signature_explain'], $board_config['max_sig_chars'] ), + 'L_NOTIFY_ON_PRIVMSG' => $lang['Notify_on_privmsg'], + 'L_NOTIFY_ON_REPLY' => $lang['Always_notify'], + 'L_POPUP_ON_PRIVMSG' => $lang['Popup_on_privmsg'], + 'L_PREFERENCES' => $lang['Preferences'], + 'L_PUBLIC_VIEW_EMAIL' => $lang['Public_view_email'], + 'L_ITEMS_REQUIRED' => $lang['Items_required'], + 'L_REGISTRATION_INFO' => $lang['Registration_info'], + 'L_PROFILE_INFO' => $lang['Profile_info'], + 'L_PROFILE_INFO_NOTICE' => $lang['Profile_info_warn'], + 'L_EMAIL_ADDRESS' => $lang['Email_address'], + 'S_FORM_ENCTYPE' => $form_enctype, + + 'HTML_STATUS' => $html_status, + 'BBCODE_STATUS' => sprintf($bbcode_status, '', ''), + 'SMILIES_STATUS' => $smilies_status, + + 'L_DELETE_USER' => $lang['User_delete'], + 'L_DELETE_USER_EXPLAIN' => $lang['User_delete_explain'], + 'L_SELECT_RANK' => $lang['Rank_title'], + + 'S_HIDDEN_FIELDS' => $s_hidden_fields, + 'S_PROFILE_ACTION' => append_sid("admin_users.$phpEx")) + ); + + if( file_exists(@phpbb_realpath($phpbb_root_path . $board_config['avatar_path'])) && ($board_config['allow_avatar_upload'] == TRUE) ) + { + if ( $form_enctype != '' ) + { + $template->assign_block_vars('avatar_local_upload', array() ); + } + $template->assign_block_vars('avatar_remote_upload', array() ); + } + + if( file_exists(@phpbb_realpath($phpbb_root_path . $board_config['avatar_gallery_path'])) && ($board_config['allow_avatar_local'] == TRUE) ) + { + $template->assign_block_vars('avatar_local_gallery', array() ); + } + + if( $board_config['allow_avatar_remote'] == TRUE ) + { + $template->assign_block_vars('avatar_remote_link', array() ); + } + } + + $template->pparse('body'); +} +else +{ + // Start add - Selection Box Mod + $sql = "SELECT user_id, username + FROM " . USERS_TABLE . " + WHERE user_id <> " . ANONYMOUS . " + ORDER BY username"; + + if ( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not obtain user list', '', __LINE__, __FILE__, $sql); + } + + $select_list = ''; + if ( $row = $db->sql_fetchrow($result) ) + { + $select_list .= ''; + do + { + $select_list .= ''; + } + while ( $row = $db->sql_fetchrow($result) ); + } + // End add - Selection Box Mod + // + // Default user selection box + // + $template->set_filenames(array( + 'body' => 'modcp/user_select_body.tpl') + ); + + $template->assign_vars(array( + 'L_USER_TITLE' => $lang['User_admin'], + 'L_USER_EXPLAIN' => $lang['User_admin_explain'], + 'L_USER_SELECT' => $lang['Select_a_User'], + 'L_LOOK_UP' => $lang['Look_up_user'], + 'L_FIND_USERNAME' => $lang['Find_username'], + + 'U_SEARCH_USER' => append_sid($phpbb_root_path . "search.$phpEx?mode=searchuser"), + + 'S_USER_ACTION' => append_sid("admin_users.$phpEx"), + 'S_USER_SELECT' => $select_list) + ); + $template->pparse('body'); + +} + +include('./page_footer_mod.'.$phpEx); + +?> \ No newline at end of file diff --git a/modcp/admin_words.php b/modcp/admin_words.php new file mode 100644 index 00000000..dfca9968 --- /dev/null +++ b/modcp/admin_words.php @@ -0,0 +1,238 @@ +set_filenames(array( + "body" => "modcp/words_edit_body.tpl") + ); + + $s_hidden_fields = ''; + + if( $mode == "edit" ) + { + if( $word_id ) + { + $sql = "SELECT * + FROM " . WORDS_TABLE . " + WHERE word_id = $word_id"; + if(!$result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Could not query words table", "Error", __LINE__, __FILE__, $sql); + } + + $word_info = $db->sql_fetchrow($result); + $s_hidden_fields .= ''; + } + else + { + mx_message_die(GENERAL_MESSAGE, $lang['No_word_selected']); + } + } + + $template->assign_vars(array( + "WORD" => $word_info['word'], + "REPLACEMENT" => $word_info['replacement'], + + "L_WORDS_TITLE" => $lang['Words_title'], + "L_WORDS_TEXT" => $lang['Words_explain'], + "L_WORD_CENSOR" => $lang['Edit_word_censor'], + "L_WORD" => $lang['Word'], + "L_REPLACEMENT" => $lang['Replacement'], + "L_SUBMIT" => $lang['Submit'], + + "S_WORDS_ACTION" => append_sid("admin_words.$phpEx"), + "S_HIDDEN_FIELDS" => $s_hidden_fields) + ); + + $template->pparse("body"); + + include('./page_footer_mod.'.$phpEx); + } + else if( $mode == "save" ) + { + $word_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0; + $word = ( isset($HTTP_POST_VARS['word']) ) ? trim($HTTP_POST_VARS['word']) : ""; + $replacement = ( isset($HTTP_POST_VARS['replacement']) ) ? trim($HTTP_POST_VARS['replacement']) : ""; + + if($word == "" || $replacement == "") + { + mx_message_die(GENERAL_MESSAGE, $lang['Must_enter_word']); + } + + if( $word_id ) + { + $sql = "UPDATE " . WORDS_TABLE . " + SET word = '" . str_replace("\'", "''", $word) . "', replacement = '" . str_replace("\'", "''", $replacement) . "' + WHERE word_id = $word_id"; + $message = $lang['Word_updated']; + } + else + { + $sql = "INSERT INTO " . WORDS_TABLE . " (word, replacement) + VALUES ('" . str_replace("\'", "''", $word) . "', '" . str_replace("\'", "''", $replacement) . "')"; + $message = $lang['Word_added']; + } + + if(!$result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Could not insert data into words table", $lang['Error'], __LINE__, __FILE__, $sql); + } + + $message .= "

    " . sprintf($lang['Click_return_wordadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + } + else if( $mode == "delete" ) + { + if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) ) + { + $word_id = ( isset($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id']; + $word_id = intval($word_id); + } + else + { + $word_id = 0; + } + + if( $word_id ) + { + $sql = "DELETE FROM " . WORDS_TABLE . " + WHERE word_id = $word_id"; + + if(!$result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Could not remove data from words table", $lang['Error'], __LINE__, __FILE__, $sql); + } + + $message = $lang['Word_removed'] . "

    " . sprintf($lang['Click_return_wordadmin'], "", "") . "

    " . sprintf($lang['Click_return_admin_index'], "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + } + else + { + mx_message_die(GENERAL_MESSAGE, $lang['No_word_selected']); + } + } +} +else +{ + $template->set_filenames(array( + "body" => "modcp/words_list_body.tpl") + ); + + $sql = "SELECT * + FROM " . WORDS_TABLE . " + ORDER BY word"; + if( !$result = $db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Could not query words table", $lang['Error'], __LINE__, __FILE__, $sql); + } + + $word_rows = $db->sql_fetchrowset($result); + $word_count = count($word_rows); + + $template->assign_vars(array( + "L_WORDS_TITLE" => $lang['Words_title'], + "L_WORDS_TEXT" => $lang['Words_explain'], + "L_WORD" => $lang['Word'], + "L_REPLACEMENT" => $lang['Replacement'], + "L_EDIT" => $lang['Edit'], + "L_DELETE" => $lang['Delete'], + "L_ADD_WORD" => $lang['Add_new_word'], + "L_ACTION" => $lang['Action'], + + "S_WORDS_ACTION" => append_sid("admin_words.$phpEx"), + "S_HIDDEN_FIELDS" => '') + ); + + for($i = 0; $i < $word_count; $i++) + { + $word = $word_rows[$i]['word']; + $replacement = $word_rows[$i]['replacement']; + $word_id = $word_rows[$i]['word_id']; + + $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $template->assign_block_vars("words", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "WORD" => $word, + "REPLACEMENT" => $replacement, + + "U_WORD_EDIT" => append_sid("admin_words.$phpEx?mode=edit&id=$word_id"), + "U_WORD_DELETE" => append_sid("admin_words.$phpEx?mode=delete&id=$word_id")) + ); + } +} + +$template->pparse("body"); + +include('./page_footer_mod.'.$phpEx); + +?> \ No newline at end of file diff --git a/modcp/index.php b/modcp/index.php new file mode 100644 index 00000000..9d74b587 --- /dev/null +++ b/modcp/index.php @@ -0,0 +1,983 @@ +set_filenames(array( + 'body' => 'modcp/index_navigate.tpl') + ); + + $admincp_nav_icon_url = PORTAL_URL . $images['mx_graphics']['admin_icons']; + + $template->assign_vars(array( + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + 'TEMPLATE_ROOT_PATH' => '../' . TEMPLATE_ROOT_PATH, + "U_PORTAL_INDEX" => append_sid(PORTAL_URL . "index.$phpEx"), + "L_PORTAL_INDEX" => $lang['Portal_index'], + "L_PREVIEW_PORTAL" => $lang['Preview_portal'], + + "U_FORUM_INDEX" => append_sid(PHPBB_URL . "index.$phpEx"), + "U_ADMIN_INDEX" => append_sid("index.$phpEx?pane=right"), + //+MOD: DHTML Menu for ACP + 'COOKIE_NAME' => $board_config['cookie_name'], + 'COOKIE_PATH' => $board_config['cookie_path'], + 'COOKIE_DOMAIN' => $board_config['cookie_domain'], + 'COOKIE_SECURE' => $board_config['cookie_secure'], + 'IMG_URL_CONTRACT' => $admincp_nav_icon_url . '/contract.gif', + 'IMG_URL_EXPAND' => $admincp_nav_icon_url . '/expand.gif', + //-MOD: DHTML Menu for ACP + "L_FORUM_INDEX" => $lang['Main_index'], + "L_ADMIN_INDEX" => $lang['Admin_Index'], + "L_PREVIEW_FORUM" => $lang['Preview_forum']) + ); + + /* + // + // Read Portal configuration + // + + // MX Addon ------------------------------------ + $module_portal = read_admin('../admin/'); + $template->assign_block_vars('module_portal', array( + 'L_MX_PORTAL' => $lang['MX_Portal'] + )); + // END ------------------------------------------ + + ksort($module_portal); + + //+MOD: DHTML Menu for ACP + $menu_cat_id = 0; + //-MOD: DHTML Menu for ACP + + while( list($cat, $action_array) = each($module_portal) ) + { + $cat = ( !empty($lang[$cat]) ) ? $lang[$cat] : preg_replace("/_/", " ", $cat); + + $template->assign_block_vars('module_portal.catrow', array( + //+MOD: DHTML Menu for ACP + 'MENU_CAT_ID' => $menu_cat_id, + 'MENU_CAT_ROWS' => count($action_array), + //-MOD: DHTML Menu for ACP + 'ADMIN_CATEGORY' => $cat) + ); + + ksort($action_array); + + $row_count = 0; + while( list($action, $file) = each($action_array) ) + { + $row_color = ( !($row_count%2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($row_count%2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $action = ( !empty($lang[$action]) ) ? $lang[$action] : preg_replace("/_/", " ", $action); + + $template->assign_block_vars('module_portal.catrow.modulerow', array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + //+MOD: DHTML Menu for ACP + 'ROW_COUNT' => $row_count, + //-MOD: DHTML Menu for ACP + "ADMIN_MODULE" => $action, + "U_ADMIN_MODULE" => append_sid(PORTAL_URL . $file) + )); + $row_count++; + } + //+MOD: DHTML Menu for ACP + $menu_cat_id++; + //-MOD: DHTML Menu for ACP + } + */ + + // MX ADDON + // Include PHPBB Administration + // ------------------------------------------------------------------------------- + $module_phpbb = read_admin('.'); + $template->assign_block_vars('module_phpbb', array( + 'L_PHPBB' => $lang['Phpbb'] + )); + + ksort($module_phpbb); + + //+MOD: DHTML Menu for ACP + $menu_cat_id = 0; + //-MOD: DHTML Menu for ACP + + while( list($cat, $action_array) = each($module_phpbb) ) + { + $cat = ( !empty($lang[$cat]) ) ? $lang[$cat] : preg_replace("/_/", " ", $cat); + + $template->assign_block_vars('module_phpbb.catrow', array( + //+MOD: DHTML Menu for ACP + 'MENU_CAT_ID' => $menu_cat_id, + 'MENU_CAT_ROWS' => count($action_array), + //-MOD: DHTML Menu for ACP + 'ADMIN_CATEGORY' => $cat) + ); + + ksort($action_array); + + $row_count = 0; + while( list($action, $file) = each($action_array) ) + { + $row_color = ( !($row_count%2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($row_count%2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $action = ( !empty($lang[$action]) ) ? $lang[$action] : preg_replace("/_/", " ", $action); + + $template->assign_block_vars('module_phpbb.catrow.modulerow', array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + //+MOD: DHTML Menu for ACP + 'ROW_COUNT' => $row_count, + //-MOD: DHTML Menu for ACP + "ADMIN_MODULE" => $action, + "U_ADMIN_MODULE" => append_sid($mx_root_path . 'modcp/' . $file)) + ); + $row_count++; + } + //+MOD: DHTML Menu for ACP + $menu_cat_id++; + //-MOD: DHTML Menu for ACP + } + + + /* + // + // Read Portal Module Configuration + // + $sql = "SELECT * + FROM " . MODULE_TABLE . " + WHERE module_include_admin = 1 + ORDER BY module_name"; + + if( !($q_modules = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Could not query modules information", '', __LINE__, __FILE__, $sql); + } + + if( $total_modules = $db->sql_numrows($q_modules) ) + { + $module_rows = $db->sql_fetchrowset($q_modules); + } + $db->sql_freeresult($result); + + $module_mx = array(); + for( $module_cnt = 0; $module_cnt < $total_modules; $module_cnt++ ) + { + $module_path_admin = $mx_root_path . $module_rows[$module_cnt]['module_path'] . "admin/"; + $module_path_root = $mx_root_path . $module_rows[$module_cnt]['module_path']; + + // ********************************************************************** + // Read language definition + // ********************************************************************** + if ( file_exists( $module_path_root . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ) ) + { + include( $module_path_root . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx ); + } + else if ( file_exists( $module_path_root . 'language/lang_english/lang_admin.' . $phpEx ) ) + { + include( $module_path_root . 'language/lang_english/lang_admin.' . $phpEx ); + } + + $module_mx = array_merge_recursive($module_mx, read_admin($module_path_admin)); + } + + $template->assign_block_vars('module_mx', array( + 'L_MX_MODULES' => $lang['MX_Modules']) + ); + + ksort($module_mx); + + //+MOD: DHTML Menu for ACP + $menu_cat_id = 0; + //-MOD: DHTML Menu for ACP + + while( list($cat, $action_array) = each($module_mx) ) + { + $cat = ( !empty($lang[$cat]) ) ? $lang[$cat] : preg_replace("/_/", " ", $cat); + + $template->assign_block_vars('module_mx.catrow', array( + //+MOD: DHTML Menu for ACP + 'MENU_CAT_ID' => $menu_cat_id, + 'MENU_CAT_ROWS' => count($action_array), + //-MOD: DHTML Menu for ACP + 'ADMIN_CATEGORY' => $cat) + ); + + ksort($action_array); + + $row_count = 0; + while( list($action, $file) = each($action_array) ) + { + $row_color = ( !($row_count%2) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !($row_count%2) ) ? $theme['td_class1'] : $theme['td_class2']; + + $action = ( !empty($lang[$action]) ) ? $lang[$action] : preg_replace("/_/", " ", $action); + + $template->assign_block_vars('module_mx.catrow.modulerow', array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + //+MOD: DHTML Menu for ACP + 'ROW_COUNT' => $row_count, + //-MOD: DHTML Menu for ACP + + "ADMIN_MODULE" => $action, + "U_ADMIN_MODULE" => append_sid(PORTAL_URL . $file)) + ); + $row_count++; + } + //+MOD: DHTML Menu for ACP + $menu_cat_id++; + //-MOD: DHTML Menu for ACP + } + */ + + // ----------------------------------------------------------------------------------- + // END MX ADDON + // ----------------------------------------------------------------------------------- + $template->pparse('body'); + + include('./page_footer_mod.'.$phpEx); +} +elseif( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'right' ) +{ + + include('./page_header_mod.'.$phpEx); + + $template->set_filenames(array( + "body" => "modcp/index_body.tpl") + ); + + $template->assign_vars(array( + // MX Addon + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + 'TEMPLATE_ROOT_PATH' => '../' . TEMPLATE_ROOT_PATH, + // END + "L_WELCOME" => $lang['Welcome_mxBB'], + "L_ADMIN_INTRO" => $lang['Admin_intro_mxBB'], + "L_FORUM_STATS" => $lang['Forum_stats'], + "L_WHO_IS_ONLINE" => $lang['Who_is_Online'], + "L_USERNAME" => $lang['Username'], + "L_LOCATION" => $lang['Location'], + "L_LAST_UPDATE" => $lang['Last_updated'], + "L_IP_ADDRESS" => $lang['IP_Address'], + "L_STATISTIC" => $lang['Statistic'], + "L_VALUE" => $lang['Value'], + "L_NUMBER_POSTS" => $lang['Number_posts'], + "L_POSTS_PER_DAY" => $lang['Posts_per_day'], + "L_NUMBER_TOPICS" => $lang['Number_topics'], + "L_TOPICS_PER_DAY" => $lang['Topics_per_day'], + "L_NUMBER_USERS" => $lang['Number_users'], + "L_USERS_PER_DAY" => $lang['Users_per_day'], + "L_BOARD_STARTED" => $lang['Board_started'], + "L_AVATAR_DIR_SIZE" => $lang['Avatar_dir_size'], + "L_DB_SIZE" => $lang['Database_size'], + "L_FORUM_LOCATION" => $lang['Forum_Location'], + "L_STARTED" => $lang['Login'], + "L_GZIP_COMPRESSION" => $lang['Gzip_compression']) + ); + + // + // Get forum statistics + // + $total_posts = mx_get_db_stat('postcount'); + $total_users = mx_get_db_stat('usercount'); + $total_topics = mx_get_db_stat('topiccount'); + + $start_date = create_date($board_config['default_dateformat'], $board_config['board_startdate'], $board_config['board_timezone']); + + $boarddays = ( time() - $board_config['board_startdate'] ) / 86400; + + $posts_per_day = sprintf("%.2f", $total_posts / $boarddays); + $topics_per_day = sprintf("%.2f", $total_topics / $boarddays); + $users_per_day = sprintf("%.2f", $total_users / $boarddays); + + $avatar_dir_size = 0; + + if ($avatar_dir = @opendir($phpbb_root_path . $board_config['avatar_path']) ) + { + while( $file = @readdir($avatar_dir) ) + { + if( $file != "." && $file != ".." ) + { + $avatar_dir_size += @filesize($phpbb_root_path . $board_config['avatar_path'] . "/" . $file); + } + } + @closedir($avatar_dir); + + // + // This bit of code translates the avatar directory size into human readable format + // Borrowed the code from the PHP.net annoted manual, origanally written by: + // Jesse (jesse@jess.on.ca) + // + if($avatar_dir_size >= 1048576) + { + $avatar_dir_size = round($avatar_dir_size / 1048576 * 100) / 100 . " MB"; + } + else if($avatar_dir_size >= 1024) + { + $avatar_dir_size = round($avatar_dir_size / 1024 * 100) / 100 . " KB"; + } + else + { + $avatar_dir_size = $avatar_dir_size . " Bytes"; + } + } + else + { + // Couldn't open Avatar dir. + $avatar_dir_size = $lang['Not_available']; + } + + if($posts_per_day > $total_posts) + { + $posts_per_day = $total_posts; + } + + if($topics_per_day > $total_topics) + { + $topics_per_day = $total_topics; + } + + if($users_per_day > $total_users) + { + $users_per_day = $total_users; + } + + // + // DB size ... MySQL only + // + // This code is heavily influenced by a similar routine + // in phpMyAdmin 2.2.0 + // + if( preg_match("/^mysql/", SQL_LAYER) ) + { + $sql = "SELECT VERSION() AS mysql_version"; + if($result = $db->sql_query($sql)) + { + $row = $db->sql_fetchrow($result); + $version = $row['mysql_version']; + + if( preg_match("/^(3\.23|4\.|5\.)/", $version) ) + { + $db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)|(5\.)/", $version) ) ? "`$dbname`" : $dbname; + + $sql = "SHOW TABLE STATUS + FROM " . $db_name; + if($result = $db->sql_query($sql)) + { + $tabledata_ary = $db->sql_fetchrowset($result); + + $dbsize = 0; + for($i = 0; $i < count($tabledata_ary); $i++) + { + if( $tabledata_ary[$i]['Type'] != "MRG_MyISAM" ) + { + if( $table_prefix != "" ) + { + if( strstr($tabledata_ary[$i]['Name'], $table_prefix) ) + { + $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; + } + } + else + { + $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; + } + } + } + } // Else we couldn't get the table status. + } + else + { + $dbsize = $lang['Not_available']; + } + } + else + { + $dbsize = $lang['Not_available']; + } + $db->sql_freeresult($result); + } + else if( preg_match("/^mssql/", SQL_LAYER) ) + { + $sql = "SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize + FROM sysfiles"; + if( $result = $db->sql_query($sql) ) + { + $dbsize = ( $row = $db->sql_fetchrow($result) ) ? intval($row['dbsize']) : $lang['Not_available']; + } + else + { + $dbsize = $lang['Not_available']; + } + $db->sql_freeresult($result); + } + else + { + $dbsize = $lang['Not_available']; + } + + if ( is_integer($dbsize) ) + { + if( $dbsize >= 1048576 ) + { + $dbsize = sprintf("%.2f MB", ( $dbsize / 1048576 )); + } + else if( $dbsize >= 1024 ) + { + $dbsize = sprintf("%.2f KB", ( $dbsize / 1024 )); + } + else + { + $dbsize = sprintf("%.2f Bytes", $dbsize); + } + } + + $template->assign_vars(array( + "NUMBER_OF_POSTS" => $total_posts, + "NUMBER_OF_TOPICS" => $total_topics, + "NUMBER_OF_USERS" => $total_users, + "START_DATE" => $start_date, + "POSTS_PER_DAY" => $posts_per_day, + "TOPICS_PER_DAY" => $topics_per_day, + "USERS_PER_DAY" => $users_per_day, + "AVATAR_DIR_SIZE" => $avatar_dir_size, + "DB_SIZE" => $dbsize, + "GZIP_COMPRESSION" => ( $board_config['gzip_compress'] ) ? $lang['ON'] : $lang['OFF']) + ); + // + // End forum statistics + // + + // + // Get users online information. + // + if ( !defined( 'IN_PHPBB3' ) ) + { + $sql = "SELECT u.*, s.* + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE s.session_logged_in = " . TRUE . " + AND u.user_id = s.session_user_id + AND u.user_id <> " . ANONYMOUS . " + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY u.user_session_time DESC"; + } + else + { + $sql = "SELECT u.*, s.* + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE u.user_id <> " . ANONYMOUS . " + AND u.user_id = s.session_user_id + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY s.session_time DESC"; + } + if(!$result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain regd user/online information.", "", __LINE__, __FILE__, $sql); + } + $onlinerow_reg = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + + if ( !defined( 'IN_PHPBB3' ) ) + { + $sql = "SELECT session_page, session_logged_in, session_time, session_ip, session_start + FROM " . SESSIONS_TABLE . " + WHERE session_logged_in = 0 + AND session_time >= " . ( time() - 300 ) . " + ORDER BY session_time DESC"; + } + else + { + $sql = "SELECT u.*, s.* + FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s + WHERE u.user_id = " . ANONYMOUS . " + AND u.user_id = s.session_user_id + AND s.session_time >= " . ( time() - 300 ) . " + ORDER BY s.session_time DESC"; + } + if(!$result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain guest user/online information.", "", __LINE__, __FILE__, $sql); + } + $onlinerow_guest = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + $sql = "SELECT forum_name, forum_id + FROM " . FORUMS_TABLE; + + if($forums_result = $db->sql_query($sql)) + { + while($forumsrow = $db->sql_fetchrow($forums_result)) + { + $forum_data[$forumsrow['forum_id']] = $forumsrow['forum_name']; + } + } + else + { + mx_message_die(GENERAL_ERROR, "Couldn't obtain user/online forums information.", "", __LINE__, __FILE__, $sql); + } + + $db->sql_freeresult($result); + + $reg_userid_ary = array(); + + if( count($onlinerow_reg) ) + { + $registered_users = 0; + + for($i = 0; $i < count($onlinerow_reg); $i++) + { + if( !inarray($onlinerow_reg[$i]['user_id'], $reg_userid_ary) ) + { + $reg_userid_ary[] = $onlinerow_reg[$i]['user_id']; + + $username = $onlinerow_reg[$i]['username']; + + if( $onlinerow_reg[$i]['user_allow_viewonline'] || $userdata['user_level'] == ADMIN ) + { + $registered_users++; + $hidden = FALSE; + } + else + { + $hidden_users++; + $hidden = TRUE; + } + + if( $onlinerow_reg[$i]['user_session_page'] < 1 ) + { + switch($onlinerow_reg[$i]['user_session_page']) + { + case PAGE_INDEX: + $location = $lang['Forum_index']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_POSTING: + $location = $lang['Posting_message']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_LOGIN: + $location = $lang['Logging_on']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_SEARCH: + $location = $lang['Searching_forums']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_PROFILE: + $location = $lang['Viewing_profile']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_VIEWONLINE: + $location = $lang['Viewing_online']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_VIEWMEMBERS: + $location = $lang['Viewing_member_list']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_PRIVMSGS: + $location = $lang['Viewing_priv_msgs']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_FAQ: + $location = $lang['Viewing_FAQ']; + $location_url = "index.$phpEx?pane=right"; + break; + default: + //+MOD: ViewOnline extension for mxBB Portal Pages + $mx_viewonline_info = mx_get_viewonline_info($onlinerow_reg[$i]['user_session_page']); + if( $mx_viewonline_info !== false ) + { + list($location, $location_url) = $mx_viewonline_info; + break; + } + //-MOD: ViewOnline extension for mxBB Portal Pages + $location = $lang['Forum_index']; + $location_url = "index.$phpEx?pane=right"; + } + } + else + { + //+MOD: ViewOnline extension for mxBB Portal Pages + $mx_viewonline_info = mx_get_viewonline_info($onlinerow_reg[$i]['user_session_page']); + if( $mx_viewonline_info !== false ) + { + list($location, $location_url) = $mx_viewonline_info; + break; + } + //-MOD: ViewOnline extension for mxBB Portal Pages + $location_url = append_sid(PHPBB_URL . "admin_forums.$phpEx?mode=editforum&" . POST_FORUM_URL . "=" . $onlinerow_reg[$i]['user_session_page']); + $location = $forum_data[$onlinerow_reg[$i]['user_session_page']]; + } + + $row_color = ( $registered_users % 2 ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( $registered_users % 2 ) ? $theme['td_class1'] : $theme['td_class2']; + + $reg_ip = decode_ip($onlinerow_reg[$i]['session_ip']); + + $template->assign_block_vars("reg_user_row", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "USERNAME" => $username, + "STARTED" => create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['session_start'], $board_config['board_timezone']), + "LASTUPDATE" => create_date($board_config['default_dateformat'], $onlinerow_reg[$i]['user_session_time'], $board_config['board_timezone']), + "FORUM_LOCATION" => $location, + "IP_ADDRESS" => $reg_ip, + + "U_WHOIS_IP" => "http://whois.domaintools.com/$reg_ip", + "U_USER_PROFILE" => append_sid(PHPBB_URL . "admin_users.$phpEx?mode=edit&" . POST_USERS_URL . "=" . $onlinerow_reg[$i]['user_id']), + "U_FORUM_LOCATION" => append_sid($location_url)) + ); + } + } + } + else + { + $template->assign_vars(array( + "L_NO_REGISTERED_USERS_BROWSING" => $lang['No_users_browsing']) + ); + } + + // + // Guest users + // + if( count($onlinerow_guest) ) + { + $guest_users = 0; + + for($i = 0; $i < count($onlinerow_guest); $i++) + { + $guest_userip_ary[] = $onlinerow_guest[$i]['session_ip']; + $guest_users++; + + if( $onlinerow_guest[$i]['session_page'] < 1 ) + { + switch( $onlinerow_guest[$i]['session_page'] ) + { + case PAGE_INDEX: + $location = $lang['Forum_index']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_POSTING: + $location = $lang['Posting_message']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_LOGIN: + $location = $lang['Logging_on']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_SEARCH: + $location = $lang['Searching_forums']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_PROFILE: + $location = $lang['Viewing_profile']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_VIEWONLINE: + $location = $lang['Viewing_online']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_VIEWMEMBERS: + $location = $lang['Viewing_member_list']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_PRIVMSGS: + $location = $lang['Viewing_priv_msgs']; + $location_url = "index.$phpEx?pane=right"; + break; + case PAGE_FAQ: + $location = $lang['Viewing_FAQ']; + $location_url = "index.$phpEx?pane=right"; + break; + default: + //+MOD: ViewOnline extension for mxBB Portal Pages + $mx_viewonline_info = mx_get_viewonline_info($onlinerow_guest[$i]['session_page']); + if( $mx_viewonline_info !== false ) + { + list($location, $location_url) = $mx_viewonline_info; + break; + } + //-MOD: ViewOnline extension for mxBB Portal Pages + $location = $lang['Forum_index']; + $location_url = "index.$phpEx?pane=right"; + } + } + else + { + $location_url = append_sid(PHPBB_URL . "admin_forums.$phpEx?mode=editforum&" . POST_FORUM_URL . "=" . $onlinerow_guest[$i]['session_page']); + $location = $forum_data[$onlinerow_guest[$i]['session_page']]; + } + + $row_color = ( $guest_users % 2 ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( $guest_users % 2 ) ? $theme['td_class1'] : $theme['td_class2']; + + $guest_ip = decode_ip($onlinerow_guest[$i]['session_ip']); + + $template->assign_block_vars("guest_user_row", array( + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "USERNAME" => $lang['Guest'], + "STARTED" => create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_start'], $board_config['board_timezone']), + "LASTUPDATE" => create_date($board_config['default_dateformat'], $onlinerow_guest[$i]['session_time'], $board_config['board_timezone']), + "FORUM_LOCATION" => $location, + "IP_ADDRESS" => $guest_ip, + + "U_WHOIS_IP" => "http://whois.domaintools.com/$guest_ip", + "U_FORUM_LOCATION" => append_sid($location_url)) + ); + } + } + else + { + $template->assign_vars(array( + "L_NO_GUESTS_BROWSING" => $lang['No_users_browsing']) + ); + } + + /* Begin phpBB version check code block */ + $current_phpbb_version = explode('.', '2' . $board_config['version']); + $minor_phpbb_revision = (int) $current_phpbb_version[2]; + + $errno = 0; + $errstr = $phpbb_version_info = ''; + + if ($fsock = @fsockopen('www.phpbb.com', 80, $errno, $errstr, 10)) + { + @fputs($fsock, "GET /updatecheck/20x.txt HTTP/1.1\r\n"); + @fputs($fsock, "HOST: www.phpbb.com\r\n"); + @fputs($fsock, "Connection: close\r\n\r\n"); + + $get_info = false; + while (!@feof($fsock)) + { + if ($get_info) + { + $phpbb_version_info .= @fread($fsock, 1024); + } + else + { + if (@fgets($fsock, 1024) == "\r\n") + { + $get_info = true; + } + } + } + @fclose($fsock); + + $phpbb_version_info = explode("\n", $phpbb_version_info); + $latest_phpbb_head_revision = (int) $phpbb_version_info[0]; + $latest_phpbb_minor_revision = (int) $phpbb_version_info[2]; + $latest_phpbb_version = (int) $phpbb_version_info[0] . '.' . (int) $phpbb_version_info[1] . '.' . (int) $phpbb_version_info[2]; + + if ($latest_phpbb_head_revision == 2 && $minor_phpbb_revision == $latest_phpbb_minor_revision) + { + $phpbb_version_info = '

    ' . $lang['Version_up_to_date'] . '

    '; + } + else + { + $phpbb_version_info = '

    ' . $lang['Version_not_up_to_date']; + $phpbb_version_info .= '
    ' . sprintf($lang['Latest_version_info'], $latest_phpbb_version) . sprintf($lang['Current_version_info'], '2' . $board_config['version']) . '

    '; + } + } + else + { + if ($errstr) + { + $phpbb_version_info = '

    ' . sprintf($lang['Connect_socket_error'], $errstr) . '

    '; + } + else + { + $phpbb_version_info = '

    ' . $lang['Socket_functions_disabled'] . '

    '; + } + } + + $phpbb_version_info .= '

    ' . $lang['Mailing_list_subscribe_reminder'] . '

    '; + + /* End phpBB version check code block */ + + /* Begin mxBB version check code block */ + $current_mxbb_version = explode('.', $portal_config['portal_version']); + $minor_mxbb_revision = (int) $current_mxbb_version[2]; + + $errno = 0; + $errstr = $mxbb_version_info = ''; + + if ($fsock = @fsockopen('www.mx-system.com', 80, $errno, $errstr)) + { + @fputs($fsock, "GET /updatecheck/28x.txt HTTP/1.1\r\n"); + @fputs($fsock, "HOST: www.mx-system.com\r\n"); + @fputs($fsock, "Connection: close\r\n\r\n"); + + $get_info = false; + while (!@feof($fsock)) + { + if ($get_info) + { + $mxbb_version_info .= @fread($fsock, 1024); + } + else + { + if (@fgets($fsock, 1024) == "\r\n") + { + $get_info = true; + } + } + } + @fclose($fsock); + + $mxbb_version_info = explode("\n", $mxbb_version_info); + $latest_mxbb_head_revision = (int) $mxbb_version_info[0]; + $latest_mxbb_minor_revision = (int) $mxbb_version_info[2]; + $latest_mxbb_version = (int) $mxbb_version_info[0] . '.' . (int) $mxbb_version_info[1] . '.' . (int) $mxbb_version_info[2]; + + if ($minor_mxbb_revision == $latest_mxbb_minor_revision) + { + $mxbb_version_info = '

    ' . $lang['mxBB_Version_up_to_date'] . '

    '; + } + else + { + $mxbb_version_info = '

    ' . $lang['mxBB_Version_outdated']; + $mxbb_version_info .= '
    ' . sprintf($lang['mxBB_Latest_version_info'], $latest_mxbb_version) . sprintf($lang['mxBB_Current_version_info'], $portal_config['portal_version']) . '

    '; + } + } + else + { + if ($errstr) + { + $mxbb_version_info = '

    ' . sprintf($lang['Connect_socket_error'], $errstr) . '

    '; + } + else + { + $mxbb_version_info = '

    ' . $lang['Socket_functions_disabled'] . '

    '; + } + } + + $mxbb_version_info .= '

    ' . $lang['mxBB_Mailing_list_subscribe_reminder'] . '

    '; + +/* End mxBB version check code block */ + + $template->assign_vars(array( + 'MXBB_VERSION_INFO' => $mxbb_version_info, + 'PHPBB_VERSION_INFO' => $phpbb_version_info, + 'L_VERSION_INFORMATION' => $lang['Version_information']) + ); + + $template->pparse("body"); + + include('./page_footer_mod.'.$phpEx); +} +else +{ + // + // Generate frameset + // + $template->set_filenames(array( + "body" => "modcp/index_frameset.tpl") + ); + + $template->assign_vars(array( + 'ADMIN_TITLE' => $lang['mxBB_adminCP'], + "S_FRAME_NAV" => append_sid("index.$phpEx?pane=left"), + "S_FRAME_MAIN" => append_sid("index.$phpEx?pane=right")) + ); + + header ("Expires: " . gmdate("D, d M Y H:i:s", time()) . " GMT"); + header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + + $template->pparse("body"); + + $db->sql_close(); + exit; +} +?> \ No newline at end of file diff --git a/modcp/page_footer_mod.php b/modcp/page_footer_mod.php new file mode 100644 index 00000000..e06faeae --- /dev/null +++ b/modcp/page_footer_mod.php @@ -0,0 +1,72 @@ +set_filenames(array( + 'page_footer' => 'modcp/page_footer.tpl') +); + +$template->assign_vars(array( + 'PHPBB_VERSION' => '2' . $board_config['version'], + 'TRANSLATION_INFO' => $lang['TRANSLATION_INFO']) +); + +$template->pparse('page_footer'); + +// +// Close our DB connection. +// +$db->sql_close(); + +// +// Compress buffered output if required +// and send to browser +// +if( $do_gzip_compress ) +{ + // + // Borrowed from php.net! + // + $gzip_contents = ob_get_contents(); + ob_end_clean(); + + $gzip_size = strlen($gzip_contents); + $gzip_crc = crc32($gzip_contents); + + $gzip_contents = gzcompress($gzip_contents, 9); + $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); + + echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; + echo $gzip_contents; + echo pack('V', $gzip_crc); + echo pack('V', $gzip_size); +} + +exit; + +?> \ No newline at end of file diff --git a/modcp/page_header_mod.php b/modcp/page_header_mod.php new file mode 100644 index 00000000..216d6ba1 --- /dev/null +++ b/modcp/page_header_mod.php @@ -0,0 +1,156 @@ += '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) ) + { + if ( extension_loaded('zlib') ) + { + @ob_end_clean(); + ob_start('ob_gzhandler'); + } + } + else if ( $phpver > '4.0' ) + { + if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') ) + { + if ( extension_loaded('zlib') ) + { + $do_gzip_compress = TRUE; + ob_start(); + ob_implicit_flush(0); + + header('Content-Encoding: gzip'); + } + } + } +} +**********/ + +$template->set_filenames(array( 'header' => 'modcp/page_header.tpl') ); + +// +// Format Timezone. We are unable to use array_pop here, because of PHP3 compatibility +// +$l_timezone = explode('.', $board_config['board_timezone']); +$l_timezone = (count($l_timezone) > 1 && $l_timezone[count($l_timezone)-1] != 0) ? $lang[sprintf('%.1f', $board_config['board_timezone'])] : $lang[number_format($board_config['board_timezone'])]; + +$template->assign_vars(array( + 'SITENAME' => $board_config['sitename'], + // 'PAGE_TITLE' => $page_title, + + 'L_ADMIN' => $lang['Admin'], + 'L_INDEX' => sprintf($lang['Forum_Index'], $board_config['sitename']), + 'L_FAQ' => $lang['FAQ'], + 'U_INDEX' => append_sid('../index.'.$phpEx), + + 'S_TIMEZONE' => sprintf($lang['All_times'], $l_timezone), + 'S_LOGIN_ACTION' => append_sid('../login.'.$phpEx), + 'S_JUMPBOX_ACTION' => append_sid('../viewforum.'.$phpEx), + 'S_CURRENT_TIME' => sprintf($lang['Current_time'], create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])), + 'S_CONTENT_DIRECTION' => $lang['DIRECTION'], + 'S_CONTENT_ENCODING' => $lang['ENCODING'], + 'S_CONTENT_DIR_LEFT' => $lang['LEFT'], + 'S_CONTENT_DIR_RIGHT' => $lang['RIGHT'], + + // + // These theme variables are not used for mxBB, since mxBB require a theme.css file + // + 'T_HEAD_STYLESHEET' => $theme['head_stylesheet'], + 'T_BODY_BACKGROUND' => $theme['body_background'], + 'T_BODY_BGCOLOR' => '#'.$theme['body_bgcolor'], + 'T_BODY_TEXT' => '#'.$theme['body_text'], + 'T_BODY_LINK' => '#'.$theme['body_link'], + 'T_BODY_VLINK' => '#'.$theme['body_vlink'], + 'T_BODY_ALINK' => '#'.$theme['body_alink'], + 'T_BODY_HLINK' => '#'.$theme['body_hlink'], + 'T_TR_COLOR1' => '#'.$theme['tr_color1'], + 'T_TR_COLOR2' => '#'.$theme['tr_color2'], + 'T_TR_COLOR3' => '#'.$theme['tr_color3'], + 'T_TR_CLASS1' => $theme['tr_class1'], + 'T_TR_CLASS2' => $theme['tr_class2'], + 'T_TR_CLASS3' => $theme['tr_class3'], + 'T_TH_COLOR1' => '#'.$theme['th_color1'], + 'T_TH_COLOR2' => '#'.$theme['th_color2'], + 'T_TH_COLOR3' => '#'.$theme['th_color3'], + 'T_TH_CLASS1' => $theme['th_class1'], + 'T_TH_CLASS2' => $theme['th_class2'], + 'T_TH_CLASS3' => $theme['th_class3'], + 'T_TD_COLOR1' => '#'.$theme['td_color1'], + 'T_TD_COLOR2' => '#'.$theme['td_color2'], + 'T_TD_COLOR3' => '#'.$theme['td_color3'], + 'T_TD_CLASS1' => $theme['td_class1'], + 'T_TD_CLASS2' => $theme['td_class2'], + 'T_TD_CLASS3' => $theme['td_class3'], + 'T_FONTFACE1' => $theme['fontface1'], + 'T_FONTFACE2' => $theme['fontface2'], + 'T_FONTFACE3' => $theme['fontface3'], + 'T_FONTSIZE1' => $theme['fontsize1'], + 'T_FONTSIZE2' => $theme['fontsize2'], + 'T_FONTSIZE3' => $theme['fontsize3'], + 'T_FONTCOLOR1' => '#'.$theme['fontcolor1'], + 'T_FONTCOLOR2' => '#'.$theme['fontcolor2'], + 'T_FONTCOLOR3' => '#'.$theme['fontcolor3'], + 'T_SPAN_CLASS1' => $theme['span_class1'], + 'T_SPAN_CLASS2' => $theme['span_class2'], + 'T_SPAN_CLASS3' => $theme['span_class3'], + + //+ mxBB + 'L_MX_ADMIN' => $lang['mxBB_adminCP'], + 'U_PHPBB_ROOT_PATH' => PHPBB_URL, + 'U_PORTAL_ROOT_PATH' => PORTAL_URL, + 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, + + 'T_PHPBB_STYLESHEET' => $theme['head_stylesheet'], + 'T_MXBB_STYLESHEET' => $theme['head_stylesheet'], + 'T_GECKO_STYLESHEET' => 'gecko.css', + + 'MX_ICON_CSS' => $images['mx_graphics']['icon_style'] + //- mxBB +)); + +// Work around for "current" Apache 2 + PHP module which seems to not +// cope with private cache control setting +if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2')) +{ + header ('Cache-Control: no-cache, pre-check=0, post-check=0'); +} +else +{ + header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0'); +} +header ('Expires: 0'); +header ('Pragma: no-cache'); + +$template->pparse('header'); +?> \ No newline at end of file diff --git a/modcp/pagestart.php b/modcp/pagestart.php new file mode 100644 index 00000000..ca73a424 --- /dev/null +++ b/modcp/pagestart.php @@ -0,0 +1,78 @@ +init($user_ip, PAGE_INDEX); +// +// +// + +if ( !$userdata['session_logged_in'] ) +{ + mx_redirect(append_sid("login.php?redirect=modcp/", true)); +} + +if ( $userdata['user_level'] != MOD && $userdata['user_level'] != ADMIN ) +{ + mx_message_die(GENERAL_MESSAGE, $lang['Not_admin']); +} + +if( $HTTP_GET_VARS['sid'] != $userdata['session_id'] ) +{ + $url = str_replace(preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name'])), '', $HTTP_SERVER_VARS['REQUEST_URI']); + $url = str_replace(preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path'])), '', $url); + $url = str_replace('//', '/', $url); + $url = preg_replace('/sid=([^&]*)(&?)/i', '', $url); + $url = preg_replace('/\?$/', '', $url); + $url .= ((strpos($url, '?')) ? '&' : '?') . 'sid=' . $userdata['session_id']; + + mx_redirect("modcp/?sid=" . $userdata['session_id']); +} + + +if (empty($no_page_header)) +{ + // Not including the pageheader can be neccesarry if META tags are + // needed in the calling script. + include('./page_header_mod.'.$phpEx); +} + +?> \ No newline at end of file diff --git a/modcp/readme.html b/modcp/readme.html new file mode 100644 index 00000000..2a6ec9d8 --- /dev/null +++ b/modcp/readme.html @@ -0,0 +1,135 @@ + + + +mxBB - phpBB Moderator CP + + + + + + + +
    +

    Release Readme +Notes:

    +
    [Release]: mxBB - phpBB +Moderator CP

    [Authors]: Kooky, +Niels Chr., OryNider +

    [Credit]: R. U. Serious for 'Megmail'

    + [Version]: 1.0.0 RC3

    Designed for mxBB Version: +2.8.0

    [Support]: +Here

    +[Install]:

    +copy mxBB/root/modcp/*.* to +mx_root_path/modcp/*.*
    +copy mxBB/root/templates/subSilver/modcp/*.* to mx_root_path/templates/subSilver/modcp/*.*
    +copy mxBB/root/language/lang_english/*.* to mx_root_path/language/lang_english/*.*
    +
    + OPEN:

    includes/page_tail.php

    + FIND:

    +

    +
    Code:
    +
    $admin_link = ( $userdata['user_level'] == ADMIN ) ? '<a href="' . + PORTAL_URL . 'admin/index.' . $phpEx . '?sid=' . $userdata['session_id'] . + '">' . $lang['Admin_panel'] . '</a><br />' : '';


    + REPLACE WITH:

    +
    Code:
    +
    $admin_link = ( $userdata['user_level'] == ADMIN ) ? '<a href="' . + PORTAL_URL . 'admin/index.' . $phpEx . '?sid=' . $userdata['session_id'] . + '">' . $lang['Admin_panel'] . '</a><br />' : ( ( $userdata['user_level'] == MOD ) ? '<a href="' . PORTAL_URL . 'modcp/index.' . $phpEx . '?sid=' . $userdata['session_id'] . '">' . $lang['Mod_CP'] . '</a><br /><br />' : '' );


    [Description]:
    This addon will add a +Moderator Control Panel for all moderators.
    They can disallow usernames, edit +smilies, manage users accounts, ...
    Moderators have not allowed to edit +Admin's accounts.
    Admin is protected against mess made by +moderators.

    Features:

    +This Addon try to enhance the Moderator Control Panel.
    +

      +
    • - Added user_ban control for Mods (they couldn't ban ADMIN)
      +
    • - Mods cannot edit ADMIN or others MODs profile
      +
    • - Mods cannot delete users account (only disable account)
      +
    • - Fixed online status for a more real online status (modcp/index.php)
      +
    • - Added Username Color by default (modcp/index.php)
      +
    • - Disable Database size stat for Mods (modcp/index.php)
      +
    • - MODs (by default) can:
      o Disallow username
      o Mass email
      o Edit + ranks
      o Edit smilies
      o Ban users (unabled to ban ADMIN)
      o Edit users + profile (unabled to edit ADMIN or others MODs)
      o Words +censor

    If for any reason you want to remove or add others +options, just delete/add the file in the modcp +directory.
    diff --git a/modules/mx_coreblocks/mx_dynamic.php b/modules/mx_coreblocks/mx_dynamic.php new file mode 100644 index 00000000..16f9471d --- /dev/null +++ b/modules/mx_coreblocks/mx_dynamic.php @@ -0,0 +1,91 @@ +sql_query( $sql ) ) +{ + mx_message_die( GENERAL_ERROR, "Could not query modules information", "", __LINE__, __FILE__, $sql ); +} + +if ( $total_block = $db->sql_numrows( $q_modules ) ) +{ + $block_rows_dynamic = $db->sql_fetchrow($q_modules); +} + +$block_config_dynamic = read_block_config($dynamic_block_id); + +// check visibility (code from index.php) +$is_auth_ary = array(); +$is_auth_ary = $mx_block->block_auth( AUTH_VIEW, $dynamic_block_id, $userdata, $block_config_dynamic[$dynamic_block_id]['auth_view'], $block_config_dynamic[$dynamic_block_id]['auth_view_group'] ); + +$module_root_path = $block_rows_dynamic['module_path']; +$dynamic_admin_file = !empty( $block_rows_dynamic['function_admin'] ) ? $block_rows_dynamic['function_admin'] : 'admin/admin_mx_block.php'; +$block_file = $block_rows_dynamic['function_file']; + +// Overwrite with block info +$dynamic_main_block_id = $mx_block_id; // Main block id +$mx_block_id = $dynamic_block_id; // Dynamic block id +$block_rows[$block] = $block_rows_dynamic; + +$mx_block_config = $block_config = $block_config_dynamic; + +//if ( $is_auth_ary[auth_view] && $block_rows_dynamic['show_block'] == 1 || $is_auth_ary[auth_mod] ) +//{ + include($module_root_path . $block_file); +//} + +?> \ No newline at end of file diff --git a/modules/mx_coreblocks/mx_multiple_blocks.php b/modules/mx_coreblocks/mx_multiple_blocks.php index 2f1d2ee5..a8e61b8a 100644 --- a/modules/mx_coreblocks/mx_multiple_blocks.php +++ b/modules/mx_coreblocks/mx_multiple_blocks.php @@ -58,7 +58,7 @@ // output a placement table for each single block and the optional space echo '
    '; - /* + /**/ // get the necessary info about this block $sql = "SELECT blk.block_id, module_path, function_file, auth_view FROM " . BLOCK_TABLE . " blk, @@ -72,10 +72,10 @@ mx_message_die(GENERAL_ERROR, "Could not query modules information", "", __LINE__, __FILE__, $sql); } $block_row = $db->sql_fetchrow($block_result); - */ - // $module_root_path=$block_row['module_path']; - // $block_file=$block_row['function_file']; - // $auth_view=$row['auth_view']; + /**/ + $module_root_path=$block_row['module_path']; + $block_file=$block_row['function_file']; + $auth_view=$row['auth_view']; $block_id = $inner_block_id; $mx_split_block->init( $inner_block_id ); @@ -91,34 +91,36 @@ include( $module_root_path . $block_file ); // output additional space between blocks if it is not the last block - if ($cell<$nested_block_count-1) { + if ($cell < $nested_block_count - 1) + { echo ''; echo ''; } } - /* - // check visibility (code from index.php) + /**/ + //check visibility (code from index.php) $is_auth_ary = array(); - $is_auth_ary = block_auth(AUTH_VIEW, $inner_block_id , $userdata, $block_row, $block_row[auth_view] ); + $is_auth_ary = $mx_block->block_auth(AUTH_VIEW, $inner_block_id , $userdata, $block_row, $block_row[auth_view] ); // output the block - if ( $is_auth_ary[auth_view] ) { - + if ( $is_auth_ary[auth_view] ) + { // set block id and block size as this must be correctly set for the inclusion to work - $block_id=$inner_block_id; + $block_id = $inner_block_id; $block_size='100%'; $template = new mx_Template( $template->root, $board_config, $db); include($module_root_path . $block_file ); // output additional space between blocks if it is not the last block - if ($cell<$nested_block_count-1) { + if ($cell < $nested_block_count - 1) + { echo ''; echo ''; } } - */ + /**/ // finish the inner placement table for a single block echo '
    '; } diff --git a/modules/mx_coreblocks/mx_online.php b/modules/mx_coreblocks/mx_online.php index 49e64392..52b4638c 100644 --- a/modules/mx_coreblocks/mx_online.php +++ b/modules/mx_coreblocks/mx_online.php @@ -62,6 +62,7 @@ ORDER BY u.username ASC, s.session_ip ASC"; break; case 'phpbb3': + default: $sql = "SELECT u.user_id, u.username, u.user_regdate, u.user_birthday, u.user_allow_viewonline, u.user_type, u.user_colour, s.session_autologin, s.session_ip FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s WHERE u.user_id = s.session_user_id @@ -110,7 +111,7 @@ case 'phpbb3': case 'olympus': - case 'ascraeus': + default: $style_color = ($row['user_colour']) ? ' style="color:#' . $row['user_colour'] . '" class="username-coloured"' : ''; break; } @@ -129,7 +130,7 @@ case 'phpbb3': case 'olympus': - case 'ascraeus': + default: if ($row['user_allow_viewonline']) { $user_online_link = $mx_backend->get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']); @@ -194,14 +195,14 @@ case 'phpbb2': case 'phpbb3': + default: $sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '$total_online_users' WHERE config_name = 'record_online_users'"; if (!$db->sql_query($sql)) { mx_message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql); - } - + } $sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '" . $board_config['record_online_date'] . "' WHERE config_name = 'record_online_date'"; @@ -301,7 +302,7 @@ case 'phpbb3': case 'olympus': - case 'ascraeus': + default: $newest_username = $board_config['newest_username']; $newest_uid = $board_config['newest_user_id']; break; @@ -337,7 +338,7 @@ case 'phpbb3': case 'olympus': - case 'ascraeus': + default: $newest_color = $board_config['newest_user_colour']; $newest_style_color = ($newest_color) ? ' style="color:#' . $newest_color . '" class="username-coloured"' : ''; $newest_user = sprintf($mx_user->lang['NEWEST_USER'], $mx_backend->get_username_string('full', $newest_uid, $newest_username, $newest_color)); @@ -378,6 +379,7 @@ break; case 'phpbb3': + default: // Grab group details for legend display if ($phpbb_auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) { @@ -416,7 +418,7 @@ case 'phpbb3': case 'olympus': - case 'ascraeus': + default: while ($row = $db->sql_fetchrow($result)) { $colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : ''; @@ -446,7 +448,7 @@ case 'phpbb3': case 'olympus': - case 'ascraeus': + default: if ($board_config['load_birthdays'] && $board_config['allow_birthdays']) { $now = getdate(time() + $mx_user->timezone + $mx_user->dst - date('Z')); diff --git a/modules/mx_coreblocks/mx_theme.php b/modules/mx_coreblocks/mx_theme.php index da8d5953..82257fe5 100644 --- a/modules/mx_coreblocks/mx_theme.php +++ b/modules/mx_coreblocks/mx_theme.php @@ -14,42 +14,46 @@ die("Hacking attempt"); } -if ($mx_request_vars->is_post('default_style') && $userdata['user_level'] == ADMIN ) +if ($mx_request_vars->is_post('default_style') && $mx_user->data['user_level'] == ADMIN ) { $mx_default_style = $mx_request_vars->post('default_style', MX_TYPE_INT); $board_config['default_style'] = $mx_default_style; - - $sql = "UPDATE " . CONFIG_TABLE . " SET - config_value = '$mx_default_style' - WHERE config_name = 'default_style'"; - + + /* + $sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '$mx_default_style' WHERE config_name = 'default_style'"; + if ( !$db->sql_query($sql) ) { mx_message_die(GENERAL_ERROR, "Failed to update default style configuration", '', __LINE__, __FILE__, $sql); } - setcookie('default_style', $mx_default_style, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + */ + + $mx_backend->set_forum_config('default_style', $mx_default_style, false); + setcookie('default_style', $mx_default_style, (time() + 21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); } if ($mx_request_vars->is_post('user_style') && $userdata['session_logged_in'] ) { $mx_user_style = $mx_request_vars->post('user_style', MX_TYPE_INT); - $userdata['user_style'] = $mx_user_style; - + $mx_user->data['user_style'] = $mx_user_style; + /* $sql = "UPDATE " . USERS_TABLE . " SET user_style = '$mx_user_style' - WHERE user_id = '" . $userdata['user_id'] . "'"; + WHERE user_id = '" . $mx_user->data['user_id'] . "'"; if ( !$db->sql_query( $sql ) ) { mx_message_die(GENERAL_ERROR, "Failed to update user style configuration", '', __LINE__, __FILE__, $sql); } + */ + $mx_backend->set_userdata('user_style', $mx_user_style); } $template->set_filenames(array( 'body_theme' => 'mx_theme.tpl') ); -if ( $userdata['user_level'] == ADMIN ) +if ( $mx_user->data['user_level'] == ADMIN ) { $template->assign_block_vars('switch_is_admin', array( 'L_CHANGE_NOW' => $lang['Change_default_style'], diff --git a/modules/mx_coreblocks/mx_virtual.php b/modules/mx_coreblocks/mx_virtual.php index 613eb3c3..f70610cc 100644 --- a/modules/mx_coreblocks/mx_virtual.php +++ b/modules/mx_coreblocks/mx_virtual.php @@ -42,17 +42,17 @@ $create_id = $userdata['user_id']; $opt_data = ''; $current_id = $mx_request_vars->post('id', MX_TYPE_INT); - break; + break; case 'group': $create_id = $mx_request_vars->post('group_id', MX_TYPE_INT); $opt_data = ''; $current_id = $mx_request_vars->post('id', MX_TYPE_INT); - break; + break; case 'project': $create_id = -1; $opt_data = $mx_request_vars->post('project_name', MX_TYPE_NO_TAGS | MX_TYPE_SQL_QUOTED);; $current_id = $mx_request_vars->get('id', MX_TYPE_INT); - break; + break; } if ($mx_request_vars->is_post('create')) @@ -95,7 +95,7 @@ AND sys.sub_id <> 0 AND sys.sub_id = usr.user_id"; $sql .= " ORDER BY usr.username"; - break; + break; case 'group': switch (PORTAL_BACKEND) @@ -111,8 +111,9 @@ AND sys.sub_id = grp.group_id AND grp.group_single_user <> " . TRUE; $sql .= " ORDER BY grp.group_name"; - break; + break; case 'phpbb3': + default: $sql = "SELECT sys.sub_id, grp.group_name as name FROM " . BLOCK_SYSTEM_PARAMETER_TABLE . " sys, @@ -122,16 +123,16 @@ AND sys.sub_id = grp.group_id AND grp.group_name NOT IN ('BOTS', 'GUESTS')"; $sql .= " ORDER BY grp.group_name"; - break; + break; } - break; + break; case 'project': $sql = "SELECT sub_id,parameter_opt as name FROM " . BLOCK_SYSTEM_PARAMETER_TABLE . " WHERE block_id = '" . $mx_block->block_id . "' AND sub_id <> 0"; $sql .= " ORDER BY parameter_opt"; - break; + break; } if( !($result = $db->sql_query($sql)) ) @@ -227,23 +228,22 @@ $my_page = $mx_request_vars->get('virtual', MX_TYPE_INT) == $userdata['user_id'] || $mx_block->auth_mod; $l_name = $userdata['username']; $mx_page->page_title .= ' - ' . $globname; - break; - + break; + case 'group': $is_created = $mx_block->virtual_init($mx_request_vars->get('virtual', MX_TYPE_INT)); $my_page = mx_is_group_member($mx_request_vars->get('virtual', MX_TYPE_INT)) || $mx_block->auth_mod; $l_name = $userdata['username']; $mx_page->page_title .= ' - ' . $globname; - break; - + break; + case 'project': $is_created = $mx_block->virtual_init($mx_request_vars->get('virtual', MX_TYPE_INT)); $my_page = $mx_block->auth_mod; $l_name = $userdata['username']; $mx_page->page_title .= ' - ' . $globname; - break; + break; } - } else // @@ -258,15 +258,15 @@ { case 'user': $l_create = $lang['Virtual_Create_new_user']; - break; - + break; + case 'group': $l_create = $lang['Virtual_Create_new_group']; - break; - + break; + case 'project': $l_create = $lang['Virtual_Create_new_project']; - break; + break; } // @@ -284,17 +284,18 @@ { case 'internal': case 'phpbb2': - $sql = "SELECT group_id, group_name - FROM " . GROUPS_TABLE . " - WHERE group_single_user <> " . TRUE . $not_in_groups; - $sql .= " ORDER BY group_id"; - break; + $sql = "SELECT group_id, group_name + FROM " . GROUPS_TABLE . " + WHERE group_single_user <> " . TRUE . $not_in_groups; + $sql .= " ORDER BY group_id"; + break; case 'phpbb3': - $sql = "SELECT group_id, group_name - FROM " . GROUPS_TABLE . " - WHERE group_name NOT IN ('BOTS', 'GUESTS')".$not_in_groups; - $sql .= " ORDER BY group_id"; - break; + default: + $sql = "SELECT group_id, group_name + FROM " . GROUPS_TABLE . " + WHERE group_name NOT IN ('BOTS', 'GUESTS')".$not_in_groups; + $sql .= " ORDER BY group_id"; + break; } if( !($result = $db->sql_query($sql)) ) @@ -316,11 +317,11 @@ $create_new = false; } $db->sql_freeresult($result); - break; + break; case 'project': - - break; + + break; } } @@ -353,5 +354,5 @@ )); } -$template->pparse( "body" ); +$template->pparse("body"); ?> \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/_core/mx_language.tpl b/modules/mx_coreblocks/templates/_core/mx_language.tpl index e250f268..c248b710 100644 --- a/modules/mx_coreblocks/templates/_core/mx_language.tpl +++ b/modules/mx_coreblocks/templates/_core/mx_language.tpl @@ -5,10 +5,12 @@ +
    - {switch_is_admin.LANG_SELECT}  
    + {switch_is_admin.LANG_SELECT}  
    +
    @@ -18,10 +20,12 @@ +
    - {switch_is_user.LANG_SELECT}  
    + {switch_is_user.LANG_SELECT}  
    +
    diff --git a/modules/mx_coreblocks/templates/prosilver/mx_login.html b/modules/mx_coreblocks/templates/prosilver/mx_login.html index 9461c72f..befeba71 100644 --- a/modules/mx_coreblocks/templates/prosilver/mx_login.html +++ b/modules/mx_coreblocks/templates/prosilver/mx_login.html @@ -1,29 +1,46 @@
    -
    -
    + +
    +
    + +
    + +
    -
    -
    -
     
    -
    -
    -
    -
    -
     
    -
    -
    +
    +
    +
    +
    +
    +
    +
    + +
    {L_FORGOT_PASS}
    +
    {L_RESEND_ACTIVATION}
    + +
    -
    -
    -
    {L_AUTO_LOGIN}
    -
    +
    + +
    + +
    + +
    +
    {S_HIDDEN_FIELDS}
    -
    -  + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver/mx_online.html b/modules/mx_coreblocks/templates/prosilver/mx_online.html index 0b3dd519..152137f5 100644 --- a/modules/mx_coreblocks/templates/prosilver/mx_online.html +++ b/modules/mx_coreblocks/templates/prosilver/mx_online.html @@ -1,30 +1,36 @@
    -
    -
    - {L_WHO_IS_ONLINE} - -
    - {TOTAL_POSTS}
    {TOTAL_USERS}
    {NEWEST_USER} -
    - -
    +
    +
    +
    + {L_WHO_IS_ONLINE} + +
    + {TOTAL_POSTS} +
    + {TOTAL_USERS} +
    + {NEWEST_USER} +
    + +
    + +
    + + {last_online.ONLINE_TIME} + +

    +
    + {TOTAL_USERS_ONLINE}   +
    + {RECORD_USERS} +
    + {LOGGED_IN_USER_LIST} +
    + {L_ONLINE_LEGEND}: {ONLINE_LEGEND} +
    - - -
    -
    -
    - - {last_online.ONLINE_TIME} - -
    -
    -
    - {TOTAL_USERS_ONLINE}  
    {RECORD_USERS}
    {LOGGED_IN_USER_LIST}
    - {L_ONLINE_LEGEND}: {ONLINE_LEGEND} -
    {LAST_ONLINE_DEBUG}
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/index.htm b/modules/mx_coreblocks/templates/prosilver2/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_google.html b/modules/mx_coreblocks/templates/prosilver2/mx_google.html new file mode 100644 index 00000000..375f9d34 --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_google.html @@ -0,0 +1,16 @@ +
    +
    +
    +
    + Google +
    +
    + + +
    +
    +
    +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_includex.html b/modules/mx_coreblocks/templates/prosilver2/mx_includex.html new file mode 100644 index 00000000..0e7fa1f0 --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_includex.html @@ -0,0 +1,55 @@ +
    +
    + +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    + {textfile_mode.FILE_CONTENTS} +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + +
    +
    +
    +
    + + + +
    +
    +
    + {pic_mode.FILE_CONTENTS} +
    +
    +
    + + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_language.html b/modules/mx_coreblocks/templates/prosilver2/mx_language.html new file mode 100644 index 00000000..ce4add46 --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_language.html @@ -0,0 +1,38 @@ +
    +
    + + + +
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_login.html b/modules/mx_coreblocks/templates/prosilver2/mx_login.html new file mode 100644 index 00000000..9461c72f --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_login.html @@ -0,0 +1,29 @@ +
    +
    +
    +
    +
    +
    +
    +
     
    +
    +
    +
    +
    +
     
    +
    +
    + +
    +
    +
    {L_AUTO_LOGIN}
    +
    + +
    +
    {S_HIDDEN_FIELDS}
    +
    +
    +
    +
    +  +
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_online.html b/modules/mx_coreblocks/templates/prosilver2/mx_online.html new file mode 100644 index 00000000..0b3dd519 --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_online.html @@ -0,0 +1,30 @@ +
    +
    + +
    +
    + {L_WHO_IS_ONLINE} + +
    + {TOTAL_POSTS}
    {TOTAL_USERS}
    {NEWEST_USER} +
    + +
    +
    + + +
    +
    +
    + + {last_online.ONLINE_TIME} + +
    +
    +
    + {TOTAL_USERS_ONLINE}  
    {RECORD_USERS}
    {LOGGED_IN_USER_LIST}
    + {L_ONLINE_LEGEND}: {ONLINE_LEGEND} +
    + +
    +
    {LAST_ONLINE_DEBUG}
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_search_body.html b/modules/mx_coreblocks/templates/prosilver2/mx_search_body.html new file mode 100644 index 00000000..f69312fc --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_search_body.html @@ -0,0 +1,30 @@ +
    +
    + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_search_results.html b/modules/mx_coreblocks/templates/prosilver2/mx_search_results.html new file mode 100644 index 00000000..648d52cd --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_search_results.html @@ -0,0 +1,50 @@ +
    +
    + +
    +
    + {SEARCH_MATCHES} +
    +
    + +

    {L_NEW_SEARCH}

    + +
    +
      + +
    +
    + +
    + +
    + +
    +  +
    \ No newline at end of file diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_site_log.html b/modules/mx_coreblocks/templates/prosilver2/mx_site_log.html new file mode 100644 index 00000000..5ce4c19b --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_site_log.html @@ -0,0 +1,20 @@ +
    + +
    + {no_row.L_NO_ITEMS} +
    + + +
    +
    +
    {msg_row.L_TOPIC_FOLDER_ALT}
    +
    + {msg_row.LAST_PAGE}
    + » {msg_row.LAST_BLOCK}
    + {msg_row.EXTRA}{msg_row.L_BLOCK_UPDATED}{msg_row.EDITOR} ({msg_row.EDIT_TIME}) +
    +
    +
    + + +
    diff --git a/modules/mx_coreblocks/templates/prosilver2/mx_theme.html b/modules/mx_coreblocks/templates/prosilver2/mx_theme.html new file mode 100644 index 00000000..3da5d7d8 --- /dev/null +++ b/modules/mx_coreblocks/templates/prosilver2/mx_theme.html @@ -0,0 +1,39 @@ +
    +
    + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/CoreBlocks3.pak b/modules/mx_coreblocks3/CoreBlocks3.pak new file mode 100644 index 00000000..b9dbf678 --- /dev/null +++ b/modules/mx_coreblocks3/CoreBlocks3.pak @@ -0,0 +1,52 @@ +module=+:10=+:Core Blocks=+:modules/mx_coreblocks3/=+:MX-Publisher Core Blocks v3=+: +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:3=+:DynamicBlock=+:SubBlocks on the same page=+:mx_dynamic.php=+: +parameter=+:3=+:80=+:default_block_id=+:Function=+:0=+:get_list_formatted("block_list","{parameter_value}","{parameter_id}[]")=+:1=+:0 +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:DynamicBlock=+:Demo block=+:3=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:4=+:Google Search=+:Simple Google Search Block=+:mx_google.php=+: +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Google Search=+:Demo block=+:4=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:5=+:IncludeX=+:Include Whatever=+:mx_includex.php=+: +parameter=+:5=+:70=+:x_mode=+:Menu_single_select=+:x_iframe=+:a:6:{i:0;s:8:"x_listen";i:1;s:8:"x_iframe";i:2;s:10:"x_textfile";i:3;s:12:"x_multimedia";i:4;s:5:"x_pic";i:5;s:8:"x_format";}=+:0=+:0 +parameter=+:5=+:71=+:x_1=+:Text=+:/docs=+:=+:0=+:0 +parameter=+:5=+:72=+:x_2=+:Text=+:325=+:=+:0=+:0 +parameter=+:5=+:73=+:x_3=+:Text=+:=+:=+:0=+:0 +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:IncludeX=+:Demo block=+:5=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:6=+:Language Select=+:Quick Language Select Block=+:mx_language.php=+: +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Language Select=+:Demo block=+:6=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:7=+:Login=+:Login Block=+:mx_login.php=+: +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Login=+:Demo block=+:7=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:11=+:Split Block=+:Split columns, put blocks side by side=+:mx_multiple_blocks.php=+: +parameter=+:11=+:60=+:block_ids=+:Function=+:1,2,3=+:get_list_multiple( "{parameter_id}[]", BLOCK_TABLE, 'block_id', 'block_title', "{parameter_value}", TRUE, 'block_desc')=+:0=+:0 +parameter=+:11=+:61=+:block_sizes=+:Text=+:20%,30%,*=+:=+:1=+:0 +parameter=+:11=+:62=+:space_between=+:Number=+:4=+:=+:1=+:0 +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Split Block=+:Demo block=+:11=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:13=+:Who is Online=+:Who is Online Block=+:mx_online.php=+: +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Who is Online=+:Demo block=+:13=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:15=+:Site Search=+:Textblock Search Block=+:mx_search.php=+: +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Site Search=+:Demo block=+:15=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:10=+:Site Log=+:Admin Site Log monitor=+:mx_site_log.php=+: +parameter=+:10=+:91=+:log_filter_date=+:Menu_single_select=+:1 month=+:a:12:{i:0;s:8:"no limit";i:1;s:5:"1 day";i:2;s:6:"2 days";i:3;s:6:"3 days";i:4;s:6:"1 week";i:5;s:7:"2 weeks";i:6;s:7:"3 weeks";i:7;s:7:"1 month";i:8;s:8:"2 months";i:9;s:8:"3 months";i:10;s:8:"6 months";i:11;s:6:"1 year";}=+:1=+:0 +parameter=+:10=+:92=+:numOfEvents=+:Number=+:5=+:=+:1=+:0 +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Site Log=+:Demo block=+:10=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +New_function=+:---------------------------=+:0=+:0=+:0=+:0=+:0 +function=+:10=+:12=+:Style Select=+:Quick Style Select Block=+:mx_theme.php=+: +parameter=+:0=+:0=+:0=+:endoflist=+:0=+:0 +block=+:=+:Style Select=+:Demo block=+:12=+:0=+:5=+:0=+:0=+:0=+:0=+:1=+:1 +function=+:0=+:0=+:0=+:endoflist=+:0=+:0 diff --git a/modules/mx_coreblocks3/db_install.php b/modules/mx_coreblocks3/db_install.php new file mode 100644 index 00000000..ab4d52b6 --- /dev/null +++ b/modules/mx_coreblocks3/db_install.php @@ -0,0 +1,54 @@ +init($user_ip, PAGE_INDEX); + + if ( !$userdata['session_logged_in'] ) + { + die( "Hacking attempt(1)" ); + } + + if ( $userdata['user_level'] != ADMIN ) + { + die( "Hacking attempt(2)" ); + } + // End session management +} + +$mx_module_version = 'MX-Publisher Core Module'; +$mx_module_copy = 'Original MX-Publisher Core Blocks module by The MX-Publisher Development Team'; + +$message = "" . $lang['fresh_install'] . "!

    "; + +$sql = array(); + +$sql[] = "UPDATE " . $mx_table_prefix . "module" . " + SET module_version = '" . $mx_module_version . "', + module_copy = '" . $mx_module_copy . "' + WHERE module_id = '" . $mx_module_id . "'"; + +$message .= mx_do_install_upgrade( $sql ); + +echo "

    "; +echo ""; +echo ""; +echo ""; +echo "
    " . $lang['module_install_info'] . "
    " . $message . "

    "; + +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/db_upgrade.php b/modules/mx_coreblocks3/db_upgrade.php new file mode 100644 index 00000000..c0119e78 --- /dev/null +++ b/modules/mx_coreblocks3/db_upgrade.php @@ -0,0 +1,55 @@ +init($user_ip, PAGE_INDEX); + + if ( !$userdata['session_logged_in'] ) + { + die( "Hacking attempt(1)" ); + } + + if ( $userdata['user_level'] != ADMIN ) + { + die( "Hacking attempt(2)" ); + } + // End session management +} + +$mx_module_version = 'MX-Publisher Core Module'; +$mx_module_copy = 'Original mx-Publisher Core Blocks module by The MX-Publisher Development Team'; + +$message = "" . $lang['upgrading'] . "!

    "; + +$sql = array(); + +$sql[] = "UPDATE " . $mx_table_prefix . "module" . " + SET module_version = '" . $mx_module_version . "', + module_copy = '" . $mx_module_copy . "' + WHERE module_id = '" . $mx_module_id . "'"; + +$message .= mx_do_install_upgrade( $sql ); +$message .= "...Now upgraded to v. $mx_module_version :-)

    "; + +echo "

    "; +echo ""; +echo ""; +echo ""; +echo "
    " . $lang['module_install_info'] . "
    " . $message . "

    "; + +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/index.htm b/modules/mx_coreblocks3/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_coreblocks3/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_coreblocks3/mx_blockcp.php b/modules/mx_coreblocks3/mx_blockcp.php new file mode 100644 index 00000000..d1378fcb --- /dev/null +++ b/modules/mx_coreblocks3/mx_blockcp.php @@ -0,0 +1,300 @@ +request('portalpage', MX_TYPE_INT, 1); + +// +// Start session management +// +$mx_user->init($user_ip, $page_id, false); +// +// End session management +// + +// +// Load and instatiate CORE (page) and block classes +// +$mx_page->init( $page_id ); + +// +// Initiate user style (template + theme) management +// - populate $theme, $images and initiate $template. +// +$mx_user->init_style(); + +// +// Initialize page layout template +// +$layouttemplate = new mx_Template( $mx_root_path . 'templates/'. $theme['template_name'] ); + +// +// ********************************************************************** +// Read language definition +// ********************************************************************** +// +// phpBB +// +if( file_exists($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx) ) +{ + include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx); +} +else if( file_exists($phpbb_root_path . 'language/lang_english/lang_admin.' . $phpEx) ) +{ + include($phpbb_root_path . 'language/lang_english/lang_admin.' . $phpEx); +} + +// +// MX-Publisher +// +if( file_exists($mx_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx) ) +{ + include($mx_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx); +} +else if( file_exists($mx_root_path . 'language/lang_english/lang_admin.' . $phpEx) ) +{ + include($mx_root_path . 'language/lang_english/lang_admin.' . $phpEx); +} + +// +// Instatiate the mx_admin class +// +$mx_admin = new mx_admin(); + +// +// Initialize template +// +$blockcptemplate = new mx_Template( $mx_root_path . 'templates/'. $theme['template_name'] ); + +// +// Load BlockCp +// +$mx_blockcp = new mx_blockcp(); + +// +// Mode setting +// +$mode = $mx_request_vars->request('mode', MX_TYPE_NO_TAGS, ''); +$action = $mx_request_vars->request('action', MX_TYPE_NO_TAGS, ''); +$sid = $mx_request_vars->request('sid', MX_TYPE_NO_TAGS, ''); + +// +// Initial vars +// +$block_id = $mx_request_vars->is_request('block_id') ? $mx_request_vars->request('block_id', MX_TYPE_INT, '') : $mx_request_vars->request('id', MX_TYPE_INT, ''); +$portalpage = $mx_request_vars->request('portalpage', MX_TYPE_INT, ''); +$virtual_id = $mx_request_vars->request('virtual', MX_TYPE_INT, ''); +$sub_id = $mx_request_vars->request('sub_id', MX_TYPE_INT, 0); + +$is_admin = ( $userdata['user_level'] == ADMIN && $userdata['session_logged_in'] ) ? TRUE : 0; + +// +// Parameters +// +$submit = $mx_request_vars->is_post('submit'); +$submit_pars = $mx_request_vars->is_post('submit_pars'); +$cancel = $mx_request_vars->is_post('cancel'); +$preview = $mx_request_vars->is_post('preview'); +$refresh = $preview || isset($submit_search); + +// +// Cancel +// +if( $cancel ) +{ + $header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' : 'Location: '; + header($header_location . mx_append_sid(PORTAL_URL . "index.$phpEx?page=" . $portalpage, true)); + exit; +} + +// +// Intitialize with cookie stored block id +// +if ( empty($block_id) && !$mx_request_vars->is_request('function_id') ) +{ + $cookie_tmp = $board_config['cookie_name'].'_adminBlockCP_block_id'; + $block_id = !empty($_COOKIE[$cookie_tmp]) ? $_COOKIE[$cookie_tmp] : 1; +} +else if ( empty($block_id) && $mx_request_vars->is_request('function_id') ) +{ + $block_id = 'noBlock'; // blockCP, functions with no blocks // This should NEVER happen when in blockCP (not adminCP) mode +} +else +{ + setcookie($board_config['cookie_name'] . '_adminBlockCP_block_id', $block_id, time() + 10000000, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); +} + +// +// Init the User BlockCP +// +if (is_numeric($block_id)) +{ + $mx_blockcp->init($block_id, true); +} + +// +// Define blockcp mode: 'mx_blockcp' or 'admin_mx_block_cp' +// +$mx_blockcp->blockcp_mode = 'mx_blockcp'; + +// +// Auth +// +if ( !($mx_blockcp->auth_edit || $mx_blockcp->auth_mod || $is_admin) || $sid != $userdata['session_id'] ) +{ + mx_message_die(GENERAL_MESSAGE, 'You are not authorized to edit this block :('); +} + +// +// SUBMIT? +// +if( !empty($mode) && !empty($action) && !$preview) +{ + // + // Get vars + // + $dynamic_block_id = $mx_request_vars->request('dynamic_block', MX_TYPE_INT, ''); + + if( !$submit_pars ) + { + $module_id = $mx_request_vars->request('module_id', MX_TYPE_INT, ''); + $function_id = $mx_request_vars->request('function_id', MX_TYPE_INT, ''); + + // + // Send to adminCP + // + $result_message = $mx_admin->do_it($mode, $action, $block_id); + + // + // If new block, load new block settings panel + // + if (is_array($result_message)) + { + $block_id = $result_message['new_id']; + $result_message = $result_message['text']; + } + + if ($action == MX_DO_DELETE) + { + $block_id = ''; + } + } + + if( $submit_pars ) + { + // + // Send to BlockCP + // + $result_message = $mx_blockcp->submit_parameters($block_id); + } + $block_info = mx_get_info(BLOCK_TABLE, 'block_id', $block_id); + $module_id = !empty($module_id) ? $module_id : ''; + $function_id = !empty($function_id) ? $function_id : $block_info['function_id']; + + $has_dyn_block_id = $dynamic_block_id > 0 ? '&dynamic_block='.$dynamic_block_id : ''; + $message = $lang['BlockCP_Config_updated'] . '

    ' . sprintf($lang['Click_return_blockCP_admin'], '', '') . '

    ' . sprintf($lang['Click_return_portalpage_admin'], '', ''); + mx_message_die(GENERAL_MESSAGE, $message); + +} // if .. !empty($mode) +$blog_u = isset($blog_u) ? $blog_u : "/"; +$s_hidden_fields = ''; +$s_hidden_fields .= ''; +$s_hidden_fields .= ''; +$s_hidden_fields .= ''; +$s_hidden_fields .= ''; +$s_hidden_fields .= ''; +$s_hidden_fields .= ''; + +// ********************************************************************** +// Read language definition +// ********************************************************************** +// +// Module specific +// +if( file_exists($mx_root_path . $mx_blockcp->module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx) ) +{ + include($mx_root_path . $mx_blockcp->module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx); +} +else if( file_exists($mx_root_path . $mx_blockcp->module_root_path . 'language/lang_english/lang_admin.' . $phpEx) ) +{ + include($mx_root_path . $mx_blockcp->module_root_path . 'language/lang_english/lang_admin.' . $phpEx); +} + +// +// Load Dynamic Block Navigation +// +if ($is_admin) +{ + // + // Removed from here atm + // + $mx_dynamic_select = new mx_dynamic_select(); + $mx_dynamic_select->generate($block_id); + $blockcptemplate->assign_block_vars('dynamic_select', array()); +} + +// +// Setup config parameters +// +$block_config = $mode == 'editblog' ? read_block_config($block_id, false, $sub_id) : read_block_config($block_id, false); + +// +// Blog mode: +// +$blog_validate = ( $mode == 'group' ) ? mx_auth_group($sub_id, true) : $sub_id == $userdata['user_id']; + +/* +if( !($blog_validate || $is_auth_ary['auth_edit']) ) +{ + $header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' : 'Location: '; + header($header_location . mx_append_sid(PORTAL_URL . "index.$phpEx", true)); + exit; +} +*/ + +// +// Start output +// +$blockcptemplate->set_filenames(array( + 'body' => 'admin/mx_blockcp_admin_body.tpl' +)); + +// +// Variables +// +$blockcptemplate->assign_vars(array( + 'CANCEL' => ' ', + 'RESULT_MESSAGE' => !empty($result_message) ? '
    -::-
    ' . $result_message . '
    -::-
    ': '', + 'S_ACTION' => mx_append_sid($mx_root_path . "modules/mx_coreblocks/mx_blockcp.$phpEx") +)); + +$module_root_path = $mx_root_path . $mx_blockcp->module_root_path; +$mx_blockcp->blockcp_mode = 'mx_blockcp'; +$mx_blockcp->generate_cp($block_id); + +$mx_page->page_title = $lang['Block_admin']; +include( $mx_root_path . 'includes/page_header.' . $phpEx ); + +$blockcptemplate->pparse('body'); + +include($mx_root_path . 'includes/page_tail.' . $phpEx); + +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_dynamic.php b/modules/mx_coreblocks3/mx_dynamic.php new file mode 100644 index 00000000..16f9471d --- /dev/null +++ b/modules/mx_coreblocks3/mx_dynamic.php @@ -0,0 +1,91 @@ +sql_query( $sql ) ) +{ + mx_message_die( GENERAL_ERROR, "Could not query modules information", "", __LINE__, __FILE__, $sql ); +} + +if ( $total_block = $db->sql_numrows( $q_modules ) ) +{ + $block_rows_dynamic = $db->sql_fetchrow($q_modules); +} + +$block_config_dynamic = read_block_config($dynamic_block_id); + +// check visibility (code from index.php) +$is_auth_ary = array(); +$is_auth_ary = $mx_block->block_auth( AUTH_VIEW, $dynamic_block_id, $userdata, $block_config_dynamic[$dynamic_block_id]['auth_view'], $block_config_dynamic[$dynamic_block_id]['auth_view_group'] ); + +$module_root_path = $block_rows_dynamic['module_path']; +$dynamic_admin_file = !empty( $block_rows_dynamic['function_admin'] ) ? $block_rows_dynamic['function_admin'] : 'admin/admin_mx_block.php'; +$block_file = $block_rows_dynamic['function_file']; + +// Overwrite with block info +$dynamic_main_block_id = $mx_block_id; // Main block id +$mx_block_id = $dynamic_block_id; // Dynamic block id +$block_rows[$block] = $block_rows_dynamic; + +$mx_block_config = $block_config = $block_config_dynamic; + +//if ( $is_auth_ary[auth_view] && $block_rows_dynamic['show_block'] == 1 || $is_auth_ary[auth_mod] ) +//{ + include($module_root_path . $block_file); +//} + +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_google.php b/modules/mx_coreblocks3/mx_google.php new file mode 100644 index 00000000..ed29e36d --- /dev/null +++ b/modules/mx_coreblocks3/mx_google.php @@ -0,0 +1,28 @@ +set_filenames(array( + 'body_google' => 'mx_google.tpl') +); + +$template->assign_vars(array( + 'BLOCK_SIZE' => $block_size, + 'L_SEARCH' => $lang['Search'], + 'L_TITLE' => 'Google' +)); + +$template->pparse('body_google'); +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_includex.php b/modules/mx_coreblocks3/mx_includex.php new file mode 100644 index 00000000..c3a4b236 --- /dev/null +++ b/modules/mx_coreblocks3/mx_includex.php @@ -0,0 +1,99 @@ +block_info['block_title']; + +$iframe_mode = $mx_block->get_parameters( 'x_mode' ); + +$x_mode = ( ($iframe_mode == 'x_listen') ? $mx_request_vars->get('x_mode', MX_TYPE_NO_TAGS, $iframe_mode) : $iframe_mode ); + +$x_1 = ( $iframe_mode == 'x_listen' ? $mx_request_vars->get('x_1', MX_TYPE_NO_TAGS, $mx_block->get_parameters('x_1')) : $mx_block->get_parameters( 'x_1' )); +$x_2 = ( $iframe_mode == 'x_listen' ? $mx_request_vars->get('x_2', MX_TYPE_NO_TAGS, $mx_block->get_parameters('x_2')) : $mx_block->get_parameters( 'x_2' )); +$x_3 = ( $iframe_mode == 'x_listen' ? $mx_request_vars->get('x_3', MX_TYPE_NO_TAGS, $mx_block->get_parameters('x_3')) : $mx_block->get_parameters( 'x_3' )); + +// +// Start output of page +// +$template->set_filenames(array( + 'includex_block' => 'mx_includex.tpl') +); + +$template->assign_vars(array( + 'BLOCK_SIZE' => ( !empty($block_size) ? $block_size : '100%' ), + 'L_TITLE' => ( !empty($lang[$title]) ? $lang[$title] : $title ) +)); + +switch( $x_mode ) +{ + case 'x_listen': // Listen + break; + + case 'x_iframe': // Iframe + $file_url = $x_1; + + if ( substr_count($file_url, 'http://') == 0 ) + { + $file_url = PORTAL_URL . $file_url; + } + + $template->assign_block_vars('iframe_mode', array( + 'FILE_URL' => $file_url, + 'IFRAME_HEIGHT' => $x_2 + )); + break; + + case 'x_textfile': // Textfile + $file = $x_1; + ob_start(); + @readfile($mx_root_path . $file); + $file_contents = ob_get_contents(); + ob_clean(); + + $template->assign_block_vars('textfile_mode', array( + 'FILE_CONTENTS' => $file_contents + )); + break; + + case 'x_multimedia': // Multimedia + $template->assign_block_vars('multimedia_mode', array( + 'MEDIA_URL' => PORTAL_URL . $x_1, + 'WIDTH' => !empty($x_2) ? 'width="'.$x_2.'"' : '', + 'HEIGHT' => !empty($x_3) ? 'height="'.$x_3.'"' : '' + )); + break; + + case 'x_pic': // Pic + $file_contents = 'x_pic'; + $template->assign_block_vars('pic_mode', array( + 'FILE_CONTENTS' => $file_contents + )); + break; + + case 'x_format': // Formatted file + // not ready ;) do nothing + break; + + default: // Hidden + $mx_block->show_title = false; + $mx_block->show_block = false; + return; +} + +$template->pparse('includex_block'); +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_language.php b/modules/mx_coreblocks3/mx_language.php new file mode 100644 index 00000000..e4a9ff04 --- /dev/null +++ b/modules/mx_coreblocks3/mx_language.php @@ -0,0 +1,89 @@ +is_post('default_lang') && preg_match('#^[a-z_]+$#', $mx_request_vars->post('default_lang', MX_TYPE_NO_TAGS)) && $userdata['user_level'] == ADMIN ) +{ + $mx_language = $mx_request_vars->post('default_lang', MX_TYPE_NO_TAGS); + $board_config['default_lang'] = $mx_language; + + $sql = "UPDATE " . CONFIG_TABLE . " SET + config_value = '$mx_language' + WHERE config_name = 'default_lang'"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update default language configuration", '', __LINE__, __FILE__, $sql); + } + setcookie('default_lang', $mx_language, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); +} + +if ($mx_request_vars->is_post('user_lang') && preg_match('#^[a-z_]+$#', $mx_request_vars->post('user_lang', MX_TYPE_NO_TAGS)) && $userdata['session_logged_in'] ) +{ + $mx_language = $mx_request_vars->post('user_lang', MX_TYPE_NO_TAGS); + $userdata['user_lang'] = $mx_language; + + $sql = "UPDATE " . USERS_TABLE . " SET + user_lang = '$mx_language' + WHERE user_id = '" . $userdata['user_id'] . "'"; + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update user lang configuration", '', __LINE__, __FILE__, $sql); + } +} + +$template->set_filenames(array( + 'body_language' => 'mx_language.tpl') +); + +if ( $userdata['user_level'] == ADMIN ) +{ + $template->assign_block_vars('switch_is_admin', array( + 'L_CHANGE_NOW' => $lang['Change_default_lang'], + 'LANG_SELECT' => mx_language_select($board_config['default_lang'], 'default_lang') + )); +} +if ( $userdata['session_logged_in'] ) +{ + $template->assign_block_vars('switch_is_user', array( + 'L_CHANGE_NOW' => $lang['Change_user_lang'], + 'LANG_SELECT' => mx_language_select($userdata['user_lang'], 'user_lang') + )); +} + +$template->assign_vars(array( + 'ACTION_URL' => mx_append_sid(PORTAL_URL . "index.$phpEx?page=$page_id"), + 'BLOCK_SIZE' => ( !empty($block_size) ? $block_size : '100%' ), + 'L_SELECT_LANG' => $lang['Board_lang'], + 'L_CHANGE_NOW' => $lang['Change'], + 'L_TITLE' => $lang['Portal_lang'], + 'L_SUBTITLE' => $lang['Select_lang'] +)); + +// +// Display only when the user is logged in +// +if ( $userdata['session_logged_in'] ) +{ + $template->pparse('body_language'); +} +else +{ + $mx_block->show_title = false; + $mx_block->show_block = false; +} +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_login.php b/modules/mx_coreblocks3/mx_login.php new file mode 100644 index 00000000..67777e61 --- /dev/null +++ b/modules/mx_coreblocks3/mx_login.php @@ -0,0 +1,50 @@ +set_filenames(array( + 'body_login' => 'mx_login.html') +); + +$template->assign_vars(array( + 'BLOCK_SIZE' => $block_size, + 'S_LOGIN_ACTION' => mx_append_sid(PORTAL_URL . "login.$phpEx"), + 'L_USERNAME' => $lang['Username'], + 'L_PASSWORD' => $lang['Password'], + 'L_LOGIN' => $lang['Login'], + 'L_TITLE' => $lang['Login'], + 'L_LOG_ME_IN' => $lang['Log_me_in'], + 'L_AUTO_LOGIN' => $lang['Log_me_in'], + 'L_LOGIN_LOGOUT' => $lang['Login'] +)); + +// Login box? +if (!$userdata['session_logged_in']) +{ + $template->assign_block_vars('switch_user_logged_out', array()); + + // Allow autologin? + if (!isset($board_config['allow_autologin']) || $board_config['allow_autologin']) + { + $template->assign_block_vars('switch_allow_autologin', array()); + } +} +else +{ + $template->assign_block_vars('switch_user_logged_in', array()); +} + +$template->pparse('body_login'); +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_multiple_blocks.php b/modules/mx_coreblocks3/mx_multiple_blocks.php new file mode 100644 index 00000000..a8e61b8a --- /dev/null +++ b/modules/mx_coreblocks3/mx_multiple_blocks.php @@ -0,0 +1,130 @@ +block_info['block_title']; +$b_description = $mx_block->block_info['block_desc']; +$block_size = (isset( $block_size ) && !empty( $block_size ) ? $block_size : '100%'); + +// check parameter for block count +$block_ids = $mx_block->get_parameters('block_ids'); +$block_ids = explode(',',$block_ids); +$nested_block_count = sizeof($block_ids); +// settype($nested_block_count,'integer'); +if ($nested_block_count < 2) + mx_message_die(GENERAL_ERROR, "Nested block count must be >=2.", "", __LINE__, __FILE__, ''); + +// check parameter block ids & check parameter for block count +// if (sizeof($block_ids)!=$nested_block_count) +// mx_message_die(GENERAL_ERROR, "Number of block ids must be equal to block count.", "", __LINE__, __FILE__, ''); + +// check parameter block sizes +$block_sizes = $mx_block->get_parameters('block_sizes'); +$block_sizes = explode(',',$block_sizes); +if (sizeof($block_sizes)!= $nested_block_count) + mx_message_die(GENERAL_ERROR, "Number of block sizes must be equal to block count.", "", __LINE__, __FILE__, ''); + +// check parameter space +$block_space = $mx_block->get_parameters('space_between'); +if ($block_space == '') + mx_message_die(GENERAL_ERROR, "Space between nested blocks not set.", "", __LINE__, __FILE__, ''); + +// start the placement table +echo ''; + +$mx_split_block = new mx_block(); + +for ($cell = 0; $cell < $nested_block_count; $cell++) +{ + $inner_block_id=$block_ids[$cell]; + $inner_block_size=$block_sizes[$cell]; + settype($inner_block_id,'integer'); + + // output a placement table for each single block and the optional space + echo ''; +} + +// finish the outer placement table +echo '
    '; + + /**/ + // get the necessary info about this block + $sql = "SELECT blk.block_id, module_path, function_file, auth_view + FROM " . BLOCK_TABLE . " blk, + " . FUNCTION_TABLE . " fnc, + " . MODULE_TABLE . " modu + WHERE blk.function_id = fnc.function_id + AND fnc.module_id = modu.module_id + AND blk.block_id = ".$inner_block_id; + if(!$block_result = $db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, "Could not query modules information", "", __LINE__, __FILE__, $sql); + } + $block_row = $db->sql_fetchrow($block_result); + /**/ + $module_root_path=$block_row['module_path']; + $block_file=$block_row['function_file']; + $auth_view=$row['auth_view']; + + $block_id = $inner_block_id; + $mx_split_block->init( $inner_block_id ); + $block_size='100%'; + + if ( $mx_split_block->auth_view ) + { + $template = new mx_Template($template->root, $board_config, $db); + + $module_root_path = $mx_split_block->module_root_path; + $block_file = $mx_split_block->block_file; + + include( $module_root_path . $block_file ); + + // output additional space between blocks if it is not the last block + if ($cell < $nested_block_count - 1) + { + echo ''; + echo ''; + } + } + + /**/ + //check visibility (code from index.php) + $is_auth_ary = array(); + $is_auth_ary = $mx_block->block_auth(AUTH_VIEW, $inner_block_id , $userdata, $block_row, $block_row[auth_view] ); + + // output the block + if ( $is_auth_ary[auth_view] ) + { + // set block id and block size as this must be correctly set for the inclusion to work + $block_id = $inner_block_id; + $block_size='100%'; + + $template = new mx_Template( $template->root, $board_config, $db); + include($module_root_path . $block_file ); + + // output additional space between blocks if it is not the last block + if ($cell < $nested_block_count - 1) + { + echo ''; + echo ''; + } + } + /**/ + // finish the inner placement table for a single block + echo '
    '; +?> diff --git a/modules/mx_coreblocks3/mx_online.php b/modules/mx_coreblocks3/mx_online.php new file mode 100644 index 00000000..52b4638c --- /dev/null +++ b/modules/mx_coreblocks3/mx_online.php @@ -0,0 +1,528 @@ +setup(); +} + +// ================================================================================ +// The following code is backported from includes/page_header.php (phpBB 2.0.13) +// ================================================================================ + +// +// Get basic (usernames + totals) online +// situation +// +$logged_visible_online = 0; +$logged_hidden_online = 0; +$guests_online = 0; +$online_userlist = ''; +$l_online_users = ''; + +if (defined('SHOW_ONLINE')) +{ + switch (PORTAL_BACKEND) + { + case 'internal': + $sql = "SELECT u.username, u.user_id, u.user_level, s.session_logged_in, s.session_ip + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.user_id = s.session_user_id + AND s.session_time >= ".(time() - 300) . " + ORDER BY u.username ASC, s.session_ip ASC"; + break; + case 'smf2': + //To do: + /** a query or we can use a session method + $sql = "SELECT u.id_member as u.user_id, u.member_name as u.username, u.id_group as u.user_level, s.session_id, s.data, + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.id_member > -1 + AND s.last_update >= ".(time() - 300) . " + ORDER BY u.member_name ASC, s.session_id ASC"; + **/ + break; + case 'phpbb2': + $sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.user_id = s.session_user_id + AND s.session_time >= ".(time() - 300) . " + ORDER BY u.username ASC, s.session_ip ASC"; + break; + case 'phpbb3': + default: + $sql = "SELECT u.user_id, u.username, u.user_regdate, u.user_birthday, u.user_allow_viewonline, u.user_type, u.user_colour, s.session_autologin, s.session_ip + FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s + WHERE u.user_id = s.session_user_id + AND s.session_time >= ".(time() - 300) . " + ORDER BY u.username ASC, s.session_ip ASC"; + break; + } + + if( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, 'Could not obtain user/online information', '', __LINE__, __FILE__, $sql); + } + + $userlist_ary = array(); + $userlist_visible = array(); + + $prev_user_id = 0; + $prev_user_ip = $prev_session_ip = ''; + + while($row = $db->sql_fetchrow($result)) + { + // User is logged in and therefor not a guest + if ($userdata['user_id'] != ANONYMOUS) + { + // Skip multiple sessions for one user + if ( $row['user_id'] != $prev_user_id ) + { + $style_color = ''; + //switch only supported phpBB backends here + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + case 'phpbb2': + if ( $row['user_level'] == ADMIN ) + { + $row['username'] = '' . $row['username'] . ''; + $style_color = 'style="color:#' . $theme['fontcolor3'] . '"'; + } + else if ( $row['user_level'] == MOD ) + { + $row['username'] = '' . $row['username'] . ''; + $style_color = 'style="color:#' . $theme['fontcolor2'] . '"'; + } + break; + + case 'phpbb3': + case 'olympus': + default: + $style_color = ($row['user_colour']) ? ' style="color:#' . $row['user_colour'] . '" class="username-coloured"' : ''; + break; + } + + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + $user_online_link = '' . $row['username'] . ''; + $logged_hidden_online++; + break; + case 'phpbb2': + $user_online_link = '' . $row['username'] . ''; + $logged_hidden_online++; + break; + + case 'phpbb3': + case 'olympus': + default: + if ($row['user_allow_viewonline']) + { + $user_online_link = $mx_backend->get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']); + $logged_visible_online++; + } + else + { + $user_online_link = ($row['user_type'] != USER_IGNORE) ? mx_get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']) : '' . $row['username'] . ''; + $logged_hidden_online++; + } + break; + } + + if ( $row['user_allow_viewonline'] || $mx_user->data['user_level'] == ADMIN ) + { + $online_userlist .= ( $online_userlist != '' ) ? ', ' . $user_online_link : $user_online_link; + } + } + $prev_user_id = $row['user_id']; + } + else + { + // Skip multiple sessions for one user + if ( $row['session_ip'] != $prev_session_ip ) + { + $guests_online++; + } + } + $prev_session_ip = $row['session_ip']; + } + $db->sql_freeresult($result); + + if ( empty($online_userlist) ) + { + $online_userlist = $lang['None']; + } + + $online_userlist = ((isset($forum_id)) ? $lang['Browsing_forum'] : $lang['Registered_users']) . ' ' . $online_userlist; + $total_online_users = $logged_visible_online + $logged_hidden_online + $guests_online; + + if ($total_online_users > $board_config['record_online_users']) + { + $board_config['record_online_users'] = $total_online_users; + $board_config['record_online_date'] = time(); + + switch (PORTAL_BACKEND) + { + case 'internal': + $sql = "UPDATE " . PORTAL_TABLE . " + SET record_online_users = '$total_online_users', + record_online_date = '" . $board_config['record_online_date'] . "' + WHERE portal_id = 1"; + if (!$db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql); + } + + $portal_config['record_online_users'] = $total_online_users; + $portal_config['record_online_date'] = $board_config['record_online_date']; + $mx_cache->put('mxbb_config', $portal_config); + break; + + case 'phpbb2': + case 'phpbb3': + default: + $sql = "UPDATE " . CONFIG_TABLE . " + SET config_value = '$total_online_users' + WHERE config_name = 'record_online_users'"; + if (!$db->sql_query($sql)) + { + mx_message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql); + } + $sql = "UPDATE " . CONFIG_TABLE . " + SET config_value = '" . $board_config['record_online_date'] . "' + WHERE config_name = 'record_online_date'"; + + if (!$db->sql_query($sql, 300)) + { + mx_message_die(GENERAL_ERROR, 'Could not update online user record (date)', '', __LINE__, __FILE__, $sql); + } + $board_config['record_online_users'] = $total_online_users; + $board_config['record_online_date'] = $board_config['record_online_date']; + $mx_cache->put('phpbb_config', $board_config); + break; + } + } + + if ( $total_online_users == 0 ) + { + $l_t_user_s = $lang['Online_users_zero_total']; + } + else if ( $total_online_users == 1 ) + { + $l_t_user_s = $lang['Online_user_total']; + } + else + { + $l_t_user_s = $lang['Online_users_total']; + } + + if ( $logged_visible_online == 0 ) + { + $l_r_user_s = $lang['Reg_users_zero_total']; + } + else if ( $logged_visible_online == 1 ) + { + $l_r_user_s = $lang['Reg_user_total']; + } + else + { + $l_r_user_s = $lang['Reg_users_total']; + } + + if ( $logged_hidden_online == 0 ) + { + $l_h_user_s = $lang['Hidden_users_zero_total']; + } + else if ( $logged_hidden_online == 1 ) + { + $l_h_user_s = $lang['Hidden_user_total']; + } + else + { + $l_h_user_s = $lang['Hidden_users_total']; + } + + if ( $guests_online == 0 ) + { + $l_g_user_s = $lang['Guest_users_zero_total']; + } + else if ( $guests_online == 1 ) + { + $l_g_user_s = $lang['Guest_user_total']; + } + else + { + $l_g_user_s = $lang['Guest_users_total']; + } + + $l_online_users = sprintf($l_t_user_s, $total_online_users); + $l_online_users .= sprintf($l_r_user_s, $logged_visible_online); + $l_online_users .= sprintf($l_h_user_s, $logged_hidden_online); + $l_online_users .= sprintf($l_g_user_s, $guests_online); +} + +// ================================================================================ +// The following code is backported from index.php (phpBB 2.0.13) +// ================================================================================ + +// +// If you don't use these stats on your index you may want to consider +// removing them +// +$total_posts = phpBB2::get_db_stat('postcount'); +$total_users = phpBB2::get_db_stat('usercount'); +$newest_userdata = phpBB2::get_db_stat('newestuser'); +switch (PORTAL_BACKEND) +{ + case 'internal': + case 'phpbb2': + $newest_username = $newest_userdata['username']; + $newest_uid = $newest_userdata['user_id']; + break; + + case 'smf2': + $newest_username = $board_config['latestRealName']; + $newest_uid = $board_config['latestMember']; + break; + + case 'phpbb3': + case 'olympus': + default: + $newest_username = $board_config['newest_username']; + $newest_uid = $board_config['newest_user_id']; + break; +} + + +switch (PORTAL_BACKEND) +{ + case 'internal': + case 'phpbb2': + if ($newest_userdata['user_level'] == ADMIN) + { + $newest_color = $theme['fontcolor3']; + $newest_username = '' . $newest_username . ''; + } + else if ($newest_userdata['user_level'] == MOD) + { + $newest_color = $theme['fontcolor2']; + $newest_username = '' . $newest_username . ''; + } + $newest_style_color = 'style="color:#' . $newest_color . '"'; + //This is not used in internal mode template, but here only added + $newest_user = "The newest registered user is " . $mx_backend->get_username_string('full', $newest_uid, $newest_username, $newest_color); + break; + + case 'smf2': + $newest_color = $theme['fontcolor3']; + $newest_username = '' . $newest_username . ''; + $newest_style_color = 'style="color:#' . $newest_color . '"'; + //This is not used in internal mode template, but here only added + $newest_user = sprintf("tr()The newest registered user is ", $mx_backend->get_username_string('full', $newest_uid, $newest_username, $newest_color)); + break; + + case 'phpbb3': + case 'olympus': + default: + $newest_color = $board_config['newest_user_colour']; + $newest_style_color = ($newest_color) ? ' style="color:#' . $newest_color . '" class="username-coloured"' : ''; + $newest_user = sprintf($mx_user->lang['NEWEST_USER'], $mx_backend->get_username_string('full', $newest_uid, $newest_username, $newest_color)); + break; +} + +if( $total_posts == 0 ) +{ + $l_total_post_s = $lang['Posted_articles_zero_total']; +} +else if( $total_posts == 1 ) +{ + $l_total_post_s = $lang['Posted_article_total']; +} +else +{ + $l_total_post_s = $lang['Posted_articles_total']; +} + +if( $total_users == 0 ) +{ + $l_total_user_s = $lang['Registered_users_zero_total']; +} +else if( $total_users == 1 ) +{ + $l_total_user_s = $lang['Registered_user_total']; +} +else +{ + $l_total_user_s = $lang['Registered_users_total']; +} + +switch (PORTAL_BACKEND) +{ + case 'internal': + case 'phpbb2': + case 'smf2': + break; + + case 'phpbb3': + default: + // Grab group details for legend display + if ($phpbb_auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) + { + $sql = 'SELECT group_id, group_name, group_colour, group_type + FROM ' . GROUPS_TABLE . ' + WHERE group_legend = 1 + ORDER BY group_name ASC'; + } + else + { + $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type + FROM ' . GROUPS_TABLE . ' g + LEFT JOIN ' . USER_GROUP_TABLE . ' ug + ON ( + g.group_id = ug.group_id + AND ug.user_id = ' . $mx_user->data['user_id'] . ' + AND ug.user_pending = 0 + ) + WHERE g.group_legend = 1 + AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $mx_user->data['user_id'] . ') + ORDER BY g.group_name ASC'; + } + $result = $db->sql_query($sql); + break; +} + +$legend = ''; + +switch (PORTAL_BACKEND) +{ + case 'internal': + case 'phpbb2': + case 'smf2': + $legend .= (($legend != '') ? ', ' : '') . '[' . sprintf($lang['Admin_online_color'], '', '') . '] [' . sprintf($lang['Mod_online_color'], '', '') . ']'; + break; + + case 'phpbb3': + case 'olympus': + default: + while ($row = $db->sql_fetchrow($result)) + { + $colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : ''; + + if ($row['group_name'] == 'BOTS') + { + $legend .= (($legend != '') ? ', ' : '') . '' . $mx_user->lang['G_BOTS'] . ''; + } + else + { + $legend .= (($legend != '') ? ', ' : '') . '' . (($row['group_type'] == GROUP_SPECIAL) ? $mx_user->lang['G_' . $row['group_name']] : $row['group_name']) . ''; + } + } + $db->sql_freeresult($result); + break; +} + +// Generate birthday list if required ... +$birthday_list = ''; + +switch (PORTAL_BACKEND) +{ + case 'internal': + case 'phpbb2': + case 'smf2': + break; + + case 'phpbb3': + case 'olympus': + default: + if ($board_config['load_birthdays'] && $board_config['allow_birthdays']) + { + $now = getdate(time() + $mx_user->timezone + $mx_user->dst - date('Z')); + $sql = 'SELECT user_id, username, user_colour, user_birthday + FROM ' . USERS_TABLE . " + WHERE user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%' + AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $birthday_list .= (($birthday_list != '') ? ', ' : '') . $mx_backend->get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']); + if ($age = (int) substr($row['user_birthday'], -4)) + { + $birthday_list .= ' (' . ($now['year'] - $age) . ')'; + } + } + $db->sql_freeresult($result); + } + break; +} + +// ================================================================================ +// Send our Who's Online block to the browser +// ================================================================================ + +$template->set_filenames(array( + 'body_online' => 'mx_online.tpl') +); + +$template->assign_vars(array( + // + // Template variables particular to the MX-Publisher Online Block. + // + 'BLOCK_SIZE' => $block_size, + + // + // Template variables part of phpBB includes/page_header.php + // + 'TOTAL_USERS_ONLINE' => $l_online_users, + 'LOGGED_IN_USER_LIST' => $online_userlist, + 'RECORD_USERS' => sprintf($lang['Record_online_users'], $board_config['record_online_users'], phpBB2::create_date($board_config['default_dateformat'], $board_config['record_online_date'], $board_config['board_timezone'])), + 'L_WHO_IS_ONLINE' => $lang['Who_is_Online'], + 'ONLINE_LEGEND' => $legend, + 'L_ONLINE_LEGEND' => !empty($mx_user->lang['LEGEND']) ? $mx_user->lang['LEGEND'] : 'Legend', + 'ONLINE_BIRTHDAY_LIST' => $birthday_list, + + //For comp. with phpBB2 backend + 'L_WHOSONLINE_ADMIN' => isset($theme['fontcolor3']) ? sprintf($lang['Admin_online_color'], '', '') : '', + 'L_WHOSONLINE_MOD' => isset($theme['fontcolor2']) ? sprintf($lang['Mod_online_color'], '', '') : '', + 'L_ONLINE_EXPLAIN' => $lang['Online_explain'], + + 'ONLINE_IMG' => $images['mx_who_is_online'], + 'U_VIEWONLINE' => mx_append_sid(PHPBB_URL.'viewonline.'.$phpEx), + + // + // Template variables part of phpBB index.php + // + 'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts), + 'TOTAL_USERS' => sprintf($l_total_user_s, $total_users), + 'NEWEST_USER' => $newest_user, + +)); + + switch (PORTAL_BACKEND) + { + case 'internal': + case 'smf2': + + break; + + default: + $template->assign_block_vars("switch_phpbb", array()); + } + +$template->pparse('body_online'); +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_search.php b/modules/mx_coreblocks3/mx_search.php new file mode 100644 index 00000000..a56d97ad --- /dev/null +++ b/modules/mx_coreblocks3/mx_search.php @@ -0,0 +1,515 @@ +block_info['block_title']; + +if( !function_exists('add_search_words') ) +{ + mx_cache::load_file('functions_search', 'phpbb2'); +} + +// +// Define initial vars +// +$mode = $mx_request_vars->request('mode', MX_TYPE_NO_TAGS, ''); + +if ($mx_request_vars->is_request('search_keywords')) +{ + $search_keywords = $mx_request_vars->request('search_keywords', MX_TYPE_NO_TAGS); +} +else +{ + $search_keywords = ''; +} + +if ( !$search_keywords || $search_keywords == '' ) +{ + $mode = ''; +} + +$search_id = $mx_request_vars->get('search_id', MX_TYPE_INT, ''); + +if ( $search_id ) +{ + $mode = 'results'; +} + +$show_results = $mx_request_vars->post('show_results', MX_TYPE_NO_TAGS, 'posts'); + +if ($mx_request_vars->is_post('search_terms')) +{ + $search_terms = ( $mx_request_vars->post('search_terms',MX_TYPE_NO_TAGS) == 'all' ) ? 1 : 0; +} +else +{ + $search_terms = 0; +} + +if ( $mx_request_vars->is_post('search_fields')) +{ + $search_fields = ($mx_request_vars->post('search_fields', MX_TYPE_NO_TAGS) == 'all' ) ? 1 : 0; +} +else +{ + $search_fields = 0; +} + +$sort_by = $mx_request_vars->post('sort_by', MX_TYPE_INT, 0); + +if ($mx_request_vars->is_post('sort_dir')) +{ + $sort_dir = ($mx_request_vars->post('sort_dir', MX_TYPE_NO_TAGS) == 'DESC' ) ? 'DESC' : 'ASC'; +} +else +{ + $sort_dir = 'DESC'; +} + +$start = $mx_request_vars->get('start', MX_TYPE_INT, 0); + +$per_page = isset($board_config['topics_per_page']) ? $board_config['topics_per_page'] : 15; + +switch ( $mode ) +{ + case "results": + + $store_vars = array('search_results', 'total_match_count', 'split_search', 'sort_by', 'sort_dir', 'show_results', 'return_chars'); + + if ( $search_id == '' || $search_keywords != '' ) + { + $stopword_array = @file( $phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/search_stopwords.txt' ); + $synonym_array = @file( $phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/search_synonyms.txt' ); + + $split_search = array(); + $split_search = ( !strstr( $multibyte_charset, $lang['ENCODING'] ) ) ? split_words( clean_words( 'search', stripslashes( $search_keywords ), $stopword_array, $synonym_array ), 'search' ) : split( ' ', $search_keywords ); + + $search_msg_only = ( !$search_fields ) ? "AND m.title_match = 0" : ( ( strstr( $multibyte_charset, $lang['ENCODING'] ) ) ? '' : '' ); + + $word_count = 0; + $current_match_type = 'or'; + + $word_match = array(); + $result_list = array(); + + for( $i = 0; $i < count( $split_search ); $i++ ) + { + //if (preg_match('#^[\*%]+$#', trim($split_search[$i])) || preg_match('#^[^\*]{1,2}$#', str_replace(array('*', '%'), '', trim($split_search[$i])))) // < phpBB 2.0.21 + if ( strlen(str_replace(array('*', '%'), '', trim($split_search[$i]))) < $board_config['search_min_chars'] ) + { + $split_search[$i] = ''; + continue; + } + + switch ( $split_search[$i] ) + { + case 'and': + $current_match_type = 'and'; + break; + + case 'or': + $current_match_type = 'or'; + break; + + case 'not': + $current_match_type = 'not'; + break; + + default: + if ( !empty( $search_terms ) ) + { + $current_match_type = 'and'; + } + + if ( !strstr( $multibyte_charset, $lang['ENCODING'] ) ) + { + $match_word = str_replace( '*', '%', $split_search[$i] ); + $sql = "SELECT m.block_id + FROM " . MX_WORD_TABLE . " w, " . MX_MATCH_TABLE . " m + WHERE w.word_text LIKE '$match_word' + AND m.word_id = w.word_id + AND w.word_common <> 1 + $search_msg_only"; + } + else + { + die('wrong charset'); +// $match_word = addslashes( '%' . str_replace( '*', '', $split_search[$i] ) . '%' ); +// $search_msg_only = ( $search_fields ) ? "OR article_title LIKE '$match_word'" : ''; +// $sql = "SELECT article_id +// FROM " . KB_ARTICLE_TABLE . " +// WHERE article_body LIKE '$match_word' +// $search_msg_only"; + } + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, 'Could not obtain matched articles list', '', __LINE__, __FILE__, $sql ); + } + + $row = array(); + while ( $temp_row = $db->sql_fetchrow( $result ) ) + { + $row[$temp_row['post_id']] = 1; + + if ( !$word_count ) + { + $result_list[$temp_row['block_id']] = 1; + } + else if ( $current_match_type == 'or' ) + { + $result_list[$temp_row['block_id']] = 1; + } + else if ( $current_match_type == 'not' ) + { + $result_list[$temp_row['block_id']] = 0; + } + } + + if ( $current_match_type == 'and' && $word_count ) + { + @reset( $result_list ); + while ( list( $block_id, $match_count ) = @each( $result_list ) ) + { + if ( !$row[$post_id] ) + { + $result_list[$post_id] = 0; + } + } + } + + $word_count++; + + $db->sql_freeresult( $result ); + } + } + + @reset( $result_list ); + + $search_ids = array(); + while ( list( $block_id, $matches ) = each( $result_list ) ) + { + if ( $matches ) + { + $search_ids[] = $block_id; + } + } + + unset( $result_list ); + // $total_match_count = count( $search_ids ); // Added below after mx query + // Store new result data + + $search_results = implode( ',', $search_ids ); + + + // Combine both results and search data (apart from original query) + // so we can serialize it and place it in the DB + + $store_search_data = array(); + + // Limit the character length (and with this the results displayed at all following pages) to prevent + // truncated result arrays. Normally, search results above 12000 are affected. + // - to include or not to include + /* + $max_result_length = 60000; + if (strlen($search_results) > $max_result_length) + { + $search_results = substr($search_results, 0, $max_result_length); + $search_results = substr($search_results, 0, strrpos($search_results, ',')); + $total_match_count = count(explode(', ', $search_results)); + } + */ + + for( $i = 0; $i < count( $store_vars ); $i++ ) + { + $store_search_data[$store_vars[$i]] = $$store_vars[$i]; + } + + $result_array = serialize( $store_search_data ); + unset( $store_search_data ); + + mt_srand ( ( double ) microtime() * 1000000 ); + $search_id = mt_rand(); + + $sql = "UPDATE " . MX_SEARCH_TABLE . " + SET search_id = $search_id, search_array = '" . str_replace( "\'", "''", $result_array ) . "' + WHERE session_id = '" . $userdata['session_id'] . "'"; + + if ( !( $result = $db->sql_query( $sql ) ) || !$db->sql_affectedrows() ) + { + $sql = "INSERT INTO " . MX_SEARCH_TABLE . " (search_id, session_id, search_array) + VALUES($search_id, '" . $userdata['session_id'] . "', '" . str_replace( "\'", "''", $result_array ) . "')"; + + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, 'Could not insert search results', '', __LINE__, __FILE__, $sql ); + } + } + } + else + { + $search_id = intval($search_id); + if ( $search_id ) + { + $sql = "SELECT search_array + FROM " . MX_SEARCH_TABLE . " + WHERE search_id = $search_id + AND session_id = '" . $userdata['session_id'] . "'"; + + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql ); + } + + if ( $row = $db->sql_fetchrow( $result ) ) + { + $search_data = unserialize( $row['search_array'] ); + for( $i = 0; $i < count( $store_vars ); $i++ ) + { + $$store_vars[$i] = $search_data[$store_vars[$i]]; + } + } + + $db->sql_freeresult($result); + } + + $search_ids = explode(',', $search_results); + } + + // + // Look up data ... + // + if ( count($search_ids) > 0 ) + { + /* + // + // Get all pages with view access + // + $sql = "SELECT * FROM " . PAGE_TABLE; + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, "Couldn't get list of page", "", __LINE__, __FILE__, $sql ); + } + + $valid_page_ids_array = array(); + while ( $page_row = $db->sql_fetchrow( $result )) + { + // + // Page auth + // + $mx_page_temp = new mx_page(); + $mx_page_temp->init($page_row['page_id']); + + if ( $mx_page_temp->auth_view ) + { + $valid_page_ids_array[] = $page_row['page_id']; + } + } + + $db->sql_freeresult($result); + */ + + $valid_page_ids_array = array(); + foreach( $mx_page->page_rowset as $temp_key => $page_row ) + { + $_auth_ary = $mx_page->auth($page_row['auth_view'], $page_row['auth_view_group'], $page_row['auth_moderator_group']); + if ($_auth_ary['auth_view']) + { + $valid_page_ids_array[] = $page_row['page_id']; + } + } + + // + // Now find the associated pages + // + $page_ids = array(); + $block_ids = array(); + $valid_page_ids = ''; + foreach($search_ids as $key => $block_id) + { + $page_id_array = get_page_id($block_id, false, true); + + if (in_array($page_id_array['page_id'], $valid_page_ids_array)) + { + $page_ids[$block_id] = $page_id_array; + $block_ids[] = $block_id; + } + } + + $valid_block_ids = implode( ', ', $block_ids ); + + // + // Generate page_blocks data + // + $sql = "SELECT block_id, block_desc, block_title, block_time, block_editor_id + FROM " . BLOCK_TABLE . " + WHERE block_id IN (" . $valid_block_ids . ") + ORDER BY block_time DESC + LIMIT ".$start.", ".$per_page; + + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql ); + } + + $db->sql_freeresult($result); + + } + + // + // Output header + // + $template->set_filenames( array( 'body' => 'mx_search_results.tpl' ) ); + + $total_match_count = count($block_ids); + + $l_search_matches = ( $total_match_count == 1 ) ? sprintf( $lang['Found_search_match'], $total_match_count ) : sprintf( $lang['Found_search_matches'], $total_match_count ); + + $template->assign_vars( array( + 'L_SEARCH_MATCHES' => $l_search_matches, + 'L_ARTICLE' => $lang['Mx_Page'] ) + ); + + $highlight_active = ''; + $highlight_match = array(); + for( $j = 0; $j < count( $split_search ); $j++ ) + { + $split_word = $split_search[$j]; + + if ( $split_word != 'and' && $split_word != 'or' && $split_word != 'not' ) + { + $highlight_match[] = '#\b(' . str_replace( "*", "([\w]+)?", $split_word ) . ')\b#is'; + $highlight_active .= " " . $split_word; + + for ( $k = 0; $k < count( $synonym_array ); $k++ ) + { + list( $replace_synonym, $match_synonym ) = split( ' ', trim( strtolower( $synonym_array[$k] ) ) ); + + if ( $replace_synonym == $split_word ) + { + $highlight_match[] = '#\b(' . str_replace( "*", "([\w]+)?", $replace_synonym ) . ')\b#is'; + $highlight_active .= ' ' . $match_synonym; + } + } + } + } + + $highlight_active = urlencode( trim( $highlight_active ) ); + + // + // Dump out the results + // + $editor_name_tmp = array(); + while( $searchdata = $db->sql_fetchrow($result) ) + { + $search_block_id = $searchdata['block_id']; + + if (is_array($page_ids[$search_block_id]) && !empty($page_ids[$search_block_id]['block_id'])) + { + $dynamic_block_id = $page_ids[$search_block_id]['block_id']; + $pageid = $page_ids[$search_block_id]['page_id']; + } + else if (is_array($page_ids[$search_block_id])) + { + $dynamic_block_id = ''; + $pageid = $page_ids[$search_block_id]['page_id']; + } + else + { + $dynamic_block_id = ''; + $pageid = $page_ids[$search_block_id]; + } + + $page_title = $page_ids[$search_block_id]['page_name']; + $page_desc = $page_ids[$search_block_id]['page_desc']; + + $temp_url = !empty($dynamic_block_id) ? mx_append_sid( PORTAL_URL . 'index.php?page=' . $pageid . '&dynamic_block=' . $dynamic_block_id ) : mx_append_sid( PORTAL_URL . 'index.php?page=' . $pageid ); + + if (empty($editor_name_tmp[$searchdata['block_editor_id']])) + { + $editor_name_tmp[$searchdata['block_editor_id']] = mx_get_userdata( $searchdata['block_editor_id'] ); + $editor_name = $editor_name_tmp[$searchdata['block_editor_id']]['username']; + } + + $edit_time = !empty($searchdata['block_time']) ? '(' . phpBB2::create_date($board_config['default_dateformat'], $searchdata['block_time'], $board_config['board_timezone'] ) . ')' : ''; + + $block_editor = ''; + $block_editor .= $editor_name; + $block_editor .= ''; + + $block_title = $searchdata['block_title']; + $block_desc = $searchdata['block_desc']; + + $block_title_url = '' . $block_title . ''; + $page_title_url = '' .$page_title . ''; + + $template->assign_block_vars( 'searchresults', array( + 'BLOCK_ID' => $block_id, + + 'L_BLOCK_UPDATED' => !empty($edit_time) ? '
    ' . $lang['Block_updated_by'] : '', + 'BLOCK_EDITOR' => !empty($edit_time) ? $block_editor : '', + "EDIT_TIME" => !empty($edit_time) ? $edit_time : '', + + 'BLOCK_TITLE_URL' => $block_title_url, + 'BLOCK_DESC' => !empty($block_desc) ? '
    ' . $block_desc : '', + + 'PAGE_TITLE_URL' => $page_title_url, + 'PAGE_DESC' => !empty($page_desc) ? '
    ' . $page_desc : '', + )); + } + + $base_url = mx_this_url( "search_id=$search_id" ); + $new_search_url = mx_append_sid( PORTAL_URL . 'index.php?page=' . $page_id ); + + $template->assign_vars( array( + 'PAGINATION' => phpBB2::generate_pagination( $base_url, $total_match_count, $per_page, $start ), + 'PAGE_NUMBER' => sprintf( $lang['Page_of'], ( floor( $start / $per_page ) + 1 ), ceil( $total_match_count / $per_page ) ), + + 'L_AUTHOR' => $lang['Author'], + 'L_PAGE' => $lang['Mx_Page'], + 'L_BLOCK' => $lang['Mx_Block'], + 'L_NEW_SEARCH' => $lang['Mx_new_search'], + + 'U_NEW_SEARCH' => $new_search_url + )); + + break; + + default: + + // + // Output the basic page + // + $template->set_filenames( array( 'body' => 'mx_search_body.tpl' ) ); + + $template->assign_vars( array( + 'L_SEARCH_QUERY' => $lang['Search_query'], + 'L_SEARCH_KEYWORDS' => $lang['Search_keywords'], + 'L_SEARCH_KEYWORDS_EXPLAIN' => $lang['Search_keywords_explain'], + 'L_SEARCH_ANY_TERMS' => $lang['Search_for_any'], + 'L_SEARCH_ALL_TERMS' => $lang['Search_for_all'], + + 'S_SEARCH_ACTION' => mx_append_sid( mx_this_url( "mode=results" ) ), + 'S_HIDDEN_FIELDS' => '', + 'S_SEARCH' => $lang['Search'] + )); + + break; +} + +$template->pparse( 'body' ); +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_site_log.php b/modules/mx_coreblocks3/mx_site_log.php new file mode 100644 index 00000000..061de58a --- /dev/null +++ b/modules/mx_coreblocks3/mx_site_log.php @@ -0,0 +1,290 @@ +block_info['block_title']; +$message = $mx_block->get_parameters( 'Text' ); + +$block_size = ( !empty( $block_size ) ? $block_size : '100%' ); + +$template->set_filenames( array( "sitelog" => "mx_site_log.tpl" ) ); + +// +// Read block Configuration +// +$log_numberOfEvents = $mx_block->get_parameters( 'numOfEvents' ) > 0 ? intval( $mx_block->get_parameters( 'numOfEvents' ) ) : '5'; +$log_filter_time = $mx_block->get_parameters( 'log_filter_date' ); // no limit, last day, 2 days, 3 days, week, 2 weeks, 3 weeks, month, 2 months, 3 months, 6 months, i year, + +$log_start = $mx_request_vars->get('log_start', MX_TYPE_INT, 0); + +$start_prev = ( $log_start == 0 ) ? 0 : $log_start - $log_numberOfEvents; +$start_next = $log_start + $log_numberOfEvents; + +$url_next = mx_append_sid( mx_this_url( 'log_start=' . $start_next ) ); +$url_prev = mx_append_sid( mx_this_url( 'log_start=' . $start_prev ) ); + +$log_today = date('mdY'); + +switch ( $log_filter_time ) +{ + case 'no limit': + $log_time_filter_lo = "no"; + break; + case '1 day': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2)), intval(substr($log_today, 2, 2) - 1), intval(substr($log_today, 4, 4)) ); + break; + case '2 days': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2)), intval(substr($log_today, 2, 2) - 1), intval(substr($log_today, 4, 4)) ); + break; + case '3 days': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2)), intval(substr($log_today, 2, 2) - 1), intval(substr($log_today, 4, 4)) ); + break; + case '1 week': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2)), intval(substr($log_today, 2, 2) - 7), intval(substr($log_today, 4, 4)) ); + break; + case '2 weeks': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2)), intval(substr($log_today, 2, 2) - 14), intval(substr($log_today, 4, 4)) ); + break; + case '3 weeks': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2)), intval(substr($log_today, 2, 2) - 21), intval(substr($log_today, 4, 4)) ); + break; + case '1 month': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2) - 1), intval(substr($log_today, 2, 2)), intval(substr($log_today, 4, 4)) ); + break; + case '2 months': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2) - 2), intval(substr($log_today, 2, 2)), intval(substr($log_today, 4, 4)) ); + break; + case '3 months': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2) - 3), intval(substr($log_today, 2, 2)), intval(substr($log_today, 4, 4)) ); + break; + case '6 months': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2) - 6), intval(substr($log_today, 2, 2)), intval(substr($log_today, 4, 4)) ); + break; + case '1 year': + $log_time_filter_lo = mktime ( 0, 0, 0 , intval(substr($log_today, 0, 2)), intval(substr($log_today, 2, 2)), intval(substr($log_today, 4, 4) - 1) ); + break; + default: + $log_time_filter_lo = "no"; + break; +} + +// +// Generate page_blocks data +// Find all blocks, sorted by edited_time +// +/* +$sql = "SELECT blk.block_id + FROM " . BLOCK_TABLE . " blk + WHERE blk.show_stats = '1' + AND blk.block_time <> '' + AND blk.block_editor_id > 0"; +*/ + +$sql = "SELECT blk.block_id + FROM " . BLOCK_TABLE . " blk + WHERE blk.block_time <> '' + AND blk.block_editor_id > 0"; + +if ( $log_time_filter_lo != 'no' && !empty($log_time_filter_lo) ) +{ + $sql .= " AND blk.block_time > " . $log_time_filter_lo ; +} + +$sql .= " ORDER BY block_time"; + +if ( !$result = $db->sql_query( $sql ) ) +{ + mx_message_die( GENERAL_ERROR, 'Could not obtain block results', '', __LINE__, __FILE__, $sql ); +} + +$block_rowset = $db->sql_fetchrowset( $result ); +$db->sql_freeresult($result); + +// +// Get all pages with view access +// +/* +$sql = "SELECT * FROM " . PAGE_TABLE; +if ( !( $result = $db->sql_query( $sql ) ) ) +{ + mx_message_die( GENERAL_ERROR, "Couldn't get list of page", "", __LINE__, __FILE__, $sql ); +} + +$valid_page_ids_array = array(); +while ( $page_row = $db->sql_fetchrow( $result )) +{ + // + // Page auth + // + $mx_page_temp = new mx_page(); + $mx_page_temp->init($page_row['page_id']); + + if ( $mx_page_temp->auth_view ) + { + $valid_page_ids_array[] = $page_row['page_id']; + } + +} +$db->sql_freeresult($result); +*/ + +$valid_page_ids_array = array(); +foreach( $mx_page->page_rowset as $temp_key => $page_row ) +{ + $_auth_ary = $mx_page->auth($page_row['auth_view'], $page_row['auth_view_group'], $page_row['auth_moderator_group']); + if ($_auth_ary['auth_view']) + { + $valid_page_ids_array[] = $page_row['page_id']; + } +} + +// +// Now find the associated pages +// +$page_ids = array(); +$block_ids = array(); +$valid_page_ids = ''; +foreach($block_rowset as $key => $block_row) +{ + $page_id_array = get_page_id($block_row['block_id'], false, true); + + if (in_array($page_id_array['page_id'], $valid_page_ids_array)) + { + $page_ids[$block_row['block_id']] = $page_id_array; + $block_ids[] = $block_row['block_id']; + } +} + +$valid_block_ids = implode( ', ', $block_ids ); +$log_total_match_count = count( $block_ids ); + +if ( $log_total_match_count == 0 || $log_total_match_count == '') +{ + $template->assign_block_vars("no_row", array( + 'L_NO_ITEMS' => $lang['No_items_found'] + )); +} +else +{ + // + // Generate page_blocks data + // + $sql = "SELECT block_id, block_desc, block_title, block_time, block_editor_id + FROM " . BLOCK_TABLE . " + WHERE block_id IN (" . $valid_block_ids . ") + ORDER BY block_time DESC + LIMIT ".$log_start.", ".$log_numberOfEvents; + + if ( !( $result = $db->sql_query( $sql ) ) ) + { + mx_message_die( GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql ); + } + + $folder_image = $images['mx_dot']; + + // + // Dump out the results + // + $row_count = 0; + $editor_name_tmp = array(); + while( $searchdata = $db->sql_fetchrow($result) ) + { + $row_count++; + $search_block_id = $searchdata['block_id']; + + if (is_array($page_ids[$search_block_id]) && !empty($page_ids[$search_block_id]['block_id'])) + { + $dynamic_block_id = $page_ids[$search_block_id]['block_id']; + $pageid = $page_ids[$search_block_id]['page_id']; + } + else if (is_array($page_ids[$search_block_id])) + { + $dynamic_block_id = ''; + $pageid = $page_ids[$search_block_id]['page_id']; + } + else + { + $dynamic_block_id = ''; + $pageid = $page_ids[$search_block_id]; + } + + $row_color = ( !( $row_count % 2 ) ) ? $theme['td_color1'] : $theme['td_color2']; + $row_class = ( !( $row_count % 2 ) ) ? $theme['td_class1'] : $theme['td_class2']; + + $page_title = $page_ids[$search_block_id]['page_name']; + $page_desc = $page_ids[$search_block_id]['page_desc']; + + $temp_url = !empty($dynamic_block_id) ? mx_append_sid( PORTAL_URL . 'index.php?page=' . $pageid . '&dynamic_block=' . $dynamic_block_id ) : mx_append_sid( PORTAL_URL . 'index.php?page=' . $pageid ); + + if (empty($editor_name_tmp[$searchdata['block_editor_id']])) + { + $editor_name_tmp[$searchdata['block_editor_id']] = mx_get_userdata( $searchdata['block_editor_id'] ); + $editor_name = $editor_name_tmp[$searchdata['block_editor_id']]['username']; + } + + $edit_time = !empty($searchdata['block_time']) ? phpBB2::create_date($board_config['default_dateformat'], $searchdata['block_time'], $board_config['board_timezone'] ) : ''; + + $block_editor = ''; + $block_editor .= $editor_name; + $block_editor .= ''; + + $block_title = $searchdata['block_title']; + $block_desc = $searchdata['block_desc']; + + $block_title_url = $temp_url; + $page_title_url = $temp_url; + + $template->assign_block_vars("msg_row", array( + 'L_BLOCK_UPDATED' => $lang['Block_updated_by'], + "ROW_COLOR" => "#" . $row_color, + "ROW_CLASS" => $row_class, + "EDIT_TIME" => $edit_time, + "LAST_PAGE" => $page_title, + "LAST_BLOCK" => $block_title, + "U_PAGE" => $page_title_url, + "U_BLOCK" => $block_title_url , + 'FOLDER_IMG' => $folder_image, + 'EDITOR' => $editor_name + )); + } + + $db->sql_freeresult($result); + + $base_url = mx_this_url('modrewrite=no'); + + $template->assign_vars( array( + 'L_TITLE' => ( !empty( $title ) ? $title : 'Last Message' ), + 'BLOCK_SIZE' => $block_size, + 'U_URL_NEXT' => $url_next, + 'U_URL_PREV' => $url_prev, + 'L_MSG_PREV' => $lang['Previous'], + 'L_MSG_NEXT' => $lang['Next'], + 'PAGINATION' => mx_generate_pagination( $base_url, $log_total_match_count, $log_numberOfEvents, $log_start, true, true, true, false, 'log_start' ), + 'PAGE_NUMBER' => sprintf( $lang['Page_of'], ( floor( $log_start / $log_numberOfEvents ) + 1 ), ceil( $log_total_match_count / $log_numberOfEvents ) ) + )); +} + +$template->pparse( "sitelog" ); +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_theme.php b/modules/mx_coreblocks3/mx_theme.php new file mode 100644 index 00000000..82257fe5 --- /dev/null +++ b/modules/mx_coreblocks3/mx_theme.php @@ -0,0 +1,92 @@ +is_post('default_style') && $mx_user->data['user_level'] == ADMIN ) +{ + $mx_default_style = $mx_request_vars->post('default_style', MX_TYPE_INT); + $board_config['default_style'] = $mx_default_style; + + /* + $sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '$mx_default_style' WHERE config_name = 'default_style'"; + + if ( !$db->sql_query($sql) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update default style configuration", '', __LINE__, __FILE__, $sql); + } + */ + + $mx_backend->set_forum_config('default_style', $mx_default_style, false); + setcookie('default_style', $mx_default_style, (time() + 21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); +} + +if ($mx_request_vars->is_post('user_style') && $userdata['session_logged_in'] ) +{ + $mx_user_style = $mx_request_vars->post('user_style', MX_TYPE_INT); + $mx_user->data['user_style'] = $mx_user_style; + /* + $sql = "UPDATE " . USERS_TABLE . " SET + user_style = '$mx_user_style' + WHERE user_id = '" . $mx_user->data['user_id'] . "'"; + + if ( !$db->sql_query( $sql ) ) + { + mx_message_die(GENERAL_ERROR, "Failed to update user style configuration", '', __LINE__, __FILE__, $sql); + } + */ + $mx_backend->set_userdata('user_style', $mx_user_style); +} + +$template->set_filenames(array( + 'body_theme' => 'mx_theme.tpl') +); + +if ( $mx_user->data['user_level'] == ADMIN ) +{ + $template->assign_block_vars('switch_is_admin', array( + 'L_CHANGE_NOW' => $lang['Change_default_style'], + 'STYLE_SELECT' => mx_style_select($board_config['default_style'], 'default_style') + )); +} +if ( $userdata['session_logged_in'] ) +{ + $template->assign_block_vars('switch_is_user', array( + 'L_CHANGE_NOW' => $lang['Change_user_style'], + 'STYLE_SELECT' => mx_style_select($userdata['user_style'], 'user_style') + )); +} + +$template->assign_vars(array( + 'ACTION_URL' => mx_append_sid(PORTAL_URL . "index.$phpEx?page=$page_id"), + 'BLOCK_SIZE' => ( !empty($block_size) ? $block_size : '100%' ), + 'L_BOARD_STYLE' => $board_config['default_style'], + 'L_CHANGE_NOW' => $lang['Change'], + 'L_TITLE' => $lang['Theme'], + 'L_SUBTITLE' => $lang['Select_theme'] +)); + +// +// Display only when the user is logged in +// +if ( $userdata['session_logged_in'] ) +{ + $template->pparse('body_theme'); +} +else +{ + $mx_block->show_title = false; + $mx_block->show_block = false; +} +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/mx_virtual.php b/modules/mx_coreblocks3/mx_virtual.php new file mode 100644 index 00000000..f70610cc --- /dev/null +++ b/modules/mx_coreblocks3/mx_virtual.php @@ -0,0 +1,358 @@ +block_info['block_title']; +$message = $mx_block->get_parameters( 'Text' ); + +$block_size = ( !empty( $block_size ) ? $block_size : '100%' ); + +// +// Read block Configuration +// +$virtualMode = $mx_block->get_parameters( 'Virtual_mode' ); + +$template->set_filenames( array( "body" => "mx_virtual.tpl" ) ); + +// +// VirtualCP - DO +// +if (($mx_block->auth_edit || $mx_block->auth_mod)) +{ + if ($mx_request_vars->is_get('virtual_action')) + { + switch ($virtualMode) + { + case 'user': + $create_id = $userdata['user_id']; + $opt_data = ''; + $current_id = $mx_request_vars->post('id', MX_TYPE_INT); + break; + case 'group': + $create_id = $mx_request_vars->post('group_id', MX_TYPE_INT); + $opt_data = ''; + $current_id = $mx_request_vars->post('id', MX_TYPE_INT); + break; + case 'project': + $create_id = -1; + $opt_data = $mx_request_vars->post('project_name', MX_TYPE_NO_TAGS | MX_TYPE_SQL_QUOTED);; + $current_id = $mx_request_vars->get('id', MX_TYPE_INT); + break; + } + + if ($mx_request_vars->is_post('create')) + { + // + // Insert the parameters + // + $mx_block->virtual_create($create_id, $opt_data); + } + else if ($mx_request_vars->is_post('rename')) + { + // + // Update the parameters + // + $mx_block->virtual_update($current_id, $opt_data); + } + else if ($mx_request_vars->is_get('delete')) + { + // + // Delete the parameters + // + $mx_block->virtual_delete($current_id); + } + } +} + +// +// Navigation +// +if (($mx_block->auth_view || $mx_block->auth_mod)) +{ + switch ($virtualMode) + { + case 'user': + $sql = "SELECT sys.sub_id, + usr.username as name + FROM " . BLOCK_SYSTEM_PARAMETER_TABLE . " sys, + " . USERS_TABLE . " usr + WHERE sys.block_id = '" . $mx_block->block_id . "' + AND sys.sub_id <> 0 + AND sys.sub_id = usr.user_id"; + $sql .= " ORDER BY usr.username"; + break; + case 'group': + + switch (PORTAL_BACKEND) + { + case 'internal': + case 'phpbb2': + $sql = "SELECT sys.sub_id, + grp.group_name as name + FROM " . BLOCK_SYSTEM_PARAMETER_TABLE . " sys, + " . GROUPS_TABLE . " grp + WHERE sys.block_id = '" . $mx_block->block_id . "' + AND sys.sub_id <> 0 + AND sys.sub_id = grp.group_id + AND grp.group_single_user <> " . TRUE; + $sql .= " ORDER BY grp.group_name"; + break; + case 'phpbb3': + default: + $sql = "SELECT sys.sub_id, + grp.group_name as name + FROM " . BLOCK_SYSTEM_PARAMETER_TABLE . " sys, + " . GROUPS_TABLE . " grp + WHERE sys.block_id = '" . $mx_block->block_id . "' + AND sys.sub_id <> 0 + AND sys.sub_id = grp.group_id + AND grp.group_name NOT IN ('BOTS', 'GUESTS')"; + $sql .= " ORDER BY grp.group_name"; + break; + } + break; + case 'project': + $sql = "SELECT sub_id,parameter_opt as name + FROM " . BLOCK_SYSTEM_PARAMETER_TABLE . " + WHERE block_id = '" . $mx_block->block_id . "' + AND sub_id <> 0"; + $sql .= " ORDER BY parameter_opt"; + break; + } + + if( !($result = $db->sql_query($sql)) ) + { + mx_message_die(GENERAL_ERROR, "Couldn't delete block data information", "", __LINE__, __FILE__, $sql); + } + + $group_ids = ''; + $virtual_navigation = false; + + $virtual_select = ''; + $db->sql_freeresult($result); + + $template->assign_vars(array( + 'VIRTUAL_NAVIGATION' => $virtual_navigation, + 'VIRTUAL_SELECT' => $virtual_select, + 'L_VIRTUAL_SELECT' => $lang['Virtual_Go'], + + 'S_ACTION_NAVIGATE' => mx_append_sid( mx_this_url( 'page='.$page_id ) ), + 'VIRTUAL_PAGE_ID' => $page_id, + )); +} + +// +// Mode +// +if (($mx_block->auth_edit || $mx_block->auth_mod)) +{ + // + // We are visiting a virtual page + // + if ($mx_request_vars->is_get('virtual')) + { + // + // My Page? + // + switch ($virtualMode) + { + case 'user': + $is_created = $mx_block->virtual_init($userdata['user_id']); + $my_page = $mx_request_vars->get('virtual', MX_TYPE_INT) == $userdata['user_id'] || $mx_block->auth_mod; + $l_name = $userdata['username']; + $mx_page->page_title .= ' - ' . $globname; + break; + + case 'group': + $is_created = $mx_block->virtual_init($mx_request_vars->get('virtual', MX_TYPE_INT)); + $my_page = mx_is_group_member($mx_request_vars->get('virtual', MX_TYPE_INT)) || $mx_block->auth_mod; + $l_name = $userdata['username']; + $mx_page->page_title .= ' - ' . $globname; + break; + + case 'project': + $is_created = $mx_block->virtual_init($mx_request_vars->get('virtual', MX_TYPE_INT)); + $my_page = $mx_block->auth_mod; + $l_name = $userdata['username']; + $mx_page->page_title .= ' - ' . $globname; + break; + } + } + else + // + // Main page + // + { + $create_new = true; + // + // Create Langs + // + switch ($virtualMode) + { + case 'user': + $l_create = $lang['Virtual_Create_new_user']; + break; + + case 'group': + $l_create = $lang['Virtual_Create_new_group']; + break; + + case 'project': + $l_create = $lang['Virtual_Create_new_project']; + break; + } + + // + // Create New? + // + switch ($virtualMode) + { + case 'user': + break; + + case 'group': + + $not_in_groups = !empty($group_ids) ? ' AND group_id NOT IN ('.$group_ids.')' : ''; + switch (PORTAL_BACKEND) + { + case 'internal': + case 'phpbb2': + $sql = "SELECT group_id, group_name + FROM " . GROUPS_TABLE . " + WHERE group_single_user <> " . TRUE . $not_in_groups; + $sql .= " ORDER BY group_id"; + break; + case 'phpbb3': + default: + $sql = "SELECT group_id, group_name + FROM " . GROUPS_TABLE . " + WHERE group_name NOT IN ('BOTS', 'GUESTS')".$not_in_groups; + $sql .= " ORDER BY group_id"; + break; + } + + if( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't get list of groups", '', __LINE__, __FILE__, $sql); + } + + if( $total_groups = $db->sql_numrows($result) ) + { + $group_select = ''; + } + else + { + $create_new = false; + } + $db->sql_freeresult($result); + break; + + case 'project': + + break; + } + } + + $template->assign_vars(array( + 'MY_PAGE' => $is_created && $my_page, + 'CREATE_NEW' => $create_new, + + 'VIRTUAL_USER' => $virtualMode == 'user', + 'VIRTUAL_GROUP' => $virtualMode == 'group', + 'VIRTUAL_PROJECT' => $virtualMode == 'project', + + 'L_VIRTUAL_CREATE_INFO' => $lang['Virtual_Create_new'] . $l_create, + 'L_VIRTUAL_CREATE' => $lang['Virtual_Create'], + 'L_VIRTUAL_EDIT' => $lang['Virtual_Edit'], + 'L_VIRTUAL_DELETE' => $lang['Virtual_Delete'], + + 'L_VIRTUAL_INFO' => $lang['Virtual_Info'], + 'L_VIRTUAL_WELCOME' => $lang['Virtual_Welcome'], + 'L_VIRTUAL_CP' => $lang['Virtual_CP'], + + 'VIRTUAL_NAME' => $l_name, + 'VIRTUAL_ID' => $mx_request_vars->get('virtual', MX_TYPE_INT), + + 'GROUP_SELECT' => $group_select, + 'S_ACTION_GROUP' => mx_append_sid( mx_this_url( 'page='.$page_id ) ), + + 'S_ACTION_MANAGE' => mx_append_sid( mx_this_url( 'virtual_action=manage' ) ), + 'U_DELETE' => mx_append_sid( mx_this_url( 'virtual_action=manage&delete=do&id='.$mx_request_vars->get('virtual', MX_TYPE_INT) ) ), + 'VIRTUAL_PAGE_ID' => $page_id, + )); +} + +$template->pparse("body"); +?> \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/index.htm b/modules/mx_coreblocks3/templates/_core/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_coreblocks3/templates/_core/mx_google.tpl b/modules/mx_coreblocks3/templates/_core/mx_google.tpl new file mode 100644 index 00000000..fb0a05aa --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_google.tpl @@ -0,0 +1,11 @@ + + + + +
    + Google +
    + + +
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_includex.tpl b/modules/mx_coreblocks3/templates/_core/mx_includex.tpl new file mode 100644 index 00000000..3bea9219 --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_includex.tpl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    {textfile_mode.FILE_CONTENTS}
    +
    + + + + + + +
    +
    {pic_mode.FILE_CONTENTS}
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_language.tpl b/modules/mx_coreblocks3/templates/_core/mx_language.tpl new file mode 100644 index 00000000..c248b710 --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_language.tpl @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + +
    {switch_is_admin.L_CHANGE_NOW}
    +
    +
    + {switch_is_admin.LANG_SELECT}  
    + +
    +
    +
    {switch_is_user.L_CHANGE_NOW}
    +
    +
    + {switch_is_user.LANG_SELECT}  
    + +
    +
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_login.tpl b/modules/mx_coreblocks3/templates/_core/mx_login.tpl new file mode 100644 index 00000000..1ab14624 --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_login.tpl @@ -0,0 +1,17 @@ + + + + +
    + +
    + {L_USERNAME}:

    + {L_PASSWORD}:

    + +  {L_AUTO_LOGIN}
    + + + +
    +
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_online.tpl b/modules/mx_coreblocks3/templates/_core/mx_online.tpl new file mode 100644 index 00000000..54020f93 --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_online.tpl @@ -0,0 +1,17 @@ + + + + + + + + + + +
    + {L_WHO_IS_ONLINE} + + {TOTAL_POSTS}
    {TOTAL_USERS}
    {NEWEST_USER}
    +
    + {TOTAL_USERS_ONLINE}   {ONLINE_LEGEND}
    {RECORD_USERS}
    {LOGGED_IN_USER_LIST}
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_search_body.tpl b/modules/mx_coreblocks3/templates/_core/mx_search_body.tpl new file mode 100644 index 00000000..6e6b613f --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_search_body.tpl @@ -0,0 +1,28 @@ +
    + + + + + + + + + + + + +
    {L_SEARCH_QUERY}
    {L_SEARCH_KEYWORDS}:
    {L_SEARCH_KEYWORDS_EXPLAIN}

    {L_SEARCH_ANY_TERMS}
    {L_SEARCH_ALL_TERMS}
    {S_HIDDEN_FIELDS}
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_search_results.tpl b/modules/mx_coreblocks3/templates/_core/mx_search_results.tpl new file mode 100644 index 00000000..236a254e --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_search_results.tpl @@ -0,0 +1,41 @@ + + + + +
    {L_SEARCH_MATCHES}
    + + + + + +
    {L_NEW_SEARCH}
    + + + + + + + + + + + + + + + +
     {L_PAGE}  {L_BLOCK} 
    + {searchresults.PAGE_TITLE_URL} + {searchresults.PAGE_DESC} + + {searchresults.BLOCK_TITLE_URL} + {searchresults.BLOCK_DESC} + {searchresults.L_BLOCK_UPDATED}{searchresults.BLOCK_EDITOR} {searchresults.EDIT_TIME} +
     
    + + + + + + +
    {PAGE_NUMBER}{PAGINATION}
    {S_TIMEZONE}
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_site_log.tpl b/modules/mx_coreblocks3/templates/_core/mx_site_log.tpl new file mode 100644 index 00000000..4e02c0d4 --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_site_log.tpl @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + +
    {no_row.L_NO_ITEMS}
    + {msg_row.L_TOPIC_FOLDER_ALT} + + {msg_row.LAST_PAGE}
    + » {msg_row.LAST_BLOCK}
    + {msg_row.EXTRA}{msg_row.L_BLOCK_UPDATED}{msg_row.EDITOR} ({msg_row.EDIT_TIME}) +
    {PAGINATION}
    {PAGE_NUMBER}
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_theme.tpl b/modules/mx_coreblocks3/templates/_core/mx_theme.tpl new file mode 100644 index 00000000..b156b626 --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_theme.tpl @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + +
    {switch_is_admin.L_CHANGE_NOW}
    +
    + {switch_is_admin.STYLE_SELECT}  
    + +
    +
    {switch_is_user.L_CHANGE_NOW}
    +
    + {switch_is_user.STYLE_SELECT}  
    + +
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/_core/mx_virtual.tpl b/modules/mx_coreblocks3/templates/_core/mx_virtual.tpl new file mode 100644 index 00000000..d0c71677 --- /dev/null +++ b/modules/mx_coreblocks3/templates/_core/mx_virtual.tpl @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    {virtual_items.ICON} {virtual_items.NAME}
    +
    + {L_VIRTUAL_CP} +
    + {L_VIRTUAL_WELCOME} {VIRTUAL_NAME}. {L_VIRTUAL_INFO} +
    + +

    + + + +

    + {L_VIRTUAL_DELETE} +
    {L_VIRTUAL_CREATE_INFO}
    + {GROUP_SELECT} + +
    + +
    + + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/index.htm b/modules/mx_coreblocks3/templates/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_coreblocks3/templates/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_coreblocks3/templates/prosilver/index.htm b/modules/mx_coreblocks3/templates/prosilver/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_google.html b/modules/mx_coreblocks3/templates/prosilver/mx_google.html new file mode 100644 index 00000000..375f9d34 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_google.html @@ -0,0 +1,16 @@ +
    +
    +
    +
    + Google +
    +
    + + +
    +
    +
    +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_includex.html b/modules/mx_coreblocks3/templates/prosilver/mx_includex.html new file mode 100644 index 00000000..0e7fa1f0 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_includex.html @@ -0,0 +1,55 @@ +
    +
    + +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    + {textfile_mode.FILE_CONTENTS} +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + +
    +
    +
    +
    + + + +
    +
    +
    + {pic_mode.FILE_CONTENTS} +
    +
    +
    + + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_language.html b/modules/mx_coreblocks3/templates/prosilver/mx_language.html new file mode 100644 index 00000000..ce4add46 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_language.html @@ -0,0 +1,38 @@ +
    +
    + + + +
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_login.html b/modules/mx_coreblocks3/templates/prosilver/mx_login.html new file mode 100644 index 00000000..befeba71 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_login.html @@ -0,0 +1,46 @@ +
    +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + +
    {L_FORGOT_PASS}
    +
    {L_RESEND_ACTIVATION}
    + +
    + +
    + +
    + +
    + +
    +
    + +
    +
    {S_HIDDEN_FIELDS}
    +
    +
    +
    + +
    +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_online.html b/modules/mx_coreblocks3/templates/prosilver/mx_online.html new file mode 100644 index 00000000..152137f5 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_online.html @@ -0,0 +1,36 @@ +
    +
    + +
    +
    +
    + {L_WHO_IS_ONLINE} + +
    + {TOTAL_POSTS} +
    + {TOTAL_USERS} +
    + {NEWEST_USER} +
    + +
    + +
    + + {last_online.ONLINE_TIME} + +

    +
    + {TOTAL_USERS_ONLINE}   +
    + {RECORD_USERS} +
    + {LOGGED_IN_USER_LIST} +
    + {L_ONLINE_LEGEND}: {ONLINE_LEGEND} +
    +
    + +
    +
    {LAST_ONLINE_DEBUG}
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_search_body.html b/modules/mx_coreblocks3/templates/prosilver/mx_search_body.html new file mode 100644 index 00000000..f69312fc --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_search_body.html @@ -0,0 +1,30 @@ +
    +
    + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_search_results.html b/modules/mx_coreblocks3/templates/prosilver/mx_search_results.html new file mode 100644 index 00000000..648d52cd --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_search_results.html @@ -0,0 +1,50 @@ +
    +
    + +
    +
    + {SEARCH_MATCHES} +
    +
    + +

    {L_NEW_SEARCH}

    + +
    +
      + +
    +
    + +
    + +
    + +
    +  +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_site_log.html b/modules/mx_coreblocks3/templates/prosilver/mx_site_log.html new file mode 100644 index 00000000..5ce4c19b --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_site_log.html @@ -0,0 +1,20 @@ +
    + +
    + {no_row.L_NO_ITEMS} +
    + + +
    +
    +
    {msg_row.L_TOPIC_FOLDER_ALT}
    +
    + {msg_row.LAST_PAGE}
    + » {msg_row.LAST_BLOCK}
    + {msg_row.EXTRA}{msg_row.L_BLOCK_UPDATED}{msg_row.EDITOR} ({msg_row.EDIT_TIME}) +
    +
    +
    + + +
    diff --git a/modules/mx_coreblocks3/templates/prosilver/mx_theme.html b/modules/mx_coreblocks3/templates/prosilver/mx_theme.html new file mode 100644 index 00000000..3da5d7d8 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver/mx_theme.html @@ -0,0 +1,39 @@ +
    +
    + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/index.htm b/modules/mx_coreblocks3/templates/prosilver2/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_google.html b/modules/mx_coreblocks3/templates/prosilver2/mx_google.html new file mode 100644 index 00000000..375f9d34 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_google.html @@ -0,0 +1,16 @@ +
    +
    +
    +
    + Google +
    +
    + + +
    +
    +
    +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_includex.html b/modules/mx_coreblocks3/templates/prosilver2/mx_includex.html new file mode 100644 index 00000000..0e7fa1f0 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_includex.html @@ -0,0 +1,55 @@ +
    +
    + +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    + {textfile_mode.FILE_CONTENTS} +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + +
    +
    +
    +
    + + + +
    +
    +
    + {pic_mode.FILE_CONTENTS} +
    +
    +
    + + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_language.html b/modules/mx_coreblocks3/templates/prosilver2/mx_language.html new file mode 100644 index 00000000..ce4add46 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_language.html @@ -0,0 +1,38 @@ +
    +
    + + + +
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_login.html b/modules/mx_coreblocks3/templates/prosilver2/mx_login.html new file mode 100644 index 00000000..9461c72f --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_login.html @@ -0,0 +1,29 @@ +
    +
    +
    +
    +
    +
    +
    +
     
    +
    +
    +
    +
    +
     
    +
    +
    + +
    +
    +
    {L_AUTO_LOGIN}
    +
    + +
    +
    {S_HIDDEN_FIELDS}
    +
    +
    +
    +
    +  +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_online.html b/modules/mx_coreblocks3/templates/prosilver2/mx_online.html new file mode 100644 index 00000000..0b3dd519 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_online.html @@ -0,0 +1,30 @@ +
    +
    + +
    +
    + {L_WHO_IS_ONLINE} + +
    + {TOTAL_POSTS}
    {TOTAL_USERS}
    {NEWEST_USER} +
    + +
    +
    + + +
    +
    +
    + + {last_online.ONLINE_TIME} + +
    +
    +
    + {TOTAL_USERS_ONLINE}  
    {RECORD_USERS}
    {LOGGED_IN_USER_LIST}
    + {L_ONLINE_LEGEND}: {ONLINE_LEGEND} +
    + +
    +
    {LAST_ONLINE_DEBUG}
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_search_body.html b/modules/mx_coreblocks3/templates/prosilver2/mx_search_body.html new file mode 100644 index 00000000..f69312fc --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_search_body.html @@ -0,0 +1,30 @@ +
    +
    + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_search_results.html b/modules/mx_coreblocks3/templates/prosilver2/mx_search_results.html new file mode 100644 index 00000000..648d52cd --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_search_results.html @@ -0,0 +1,50 @@ +
    +
    + +
    +
    + {SEARCH_MATCHES} +
    +
    + +

    {L_NEW_SEARCH}

    + +
    +
      + +
    +
    + +
    + +
    + +
    +  +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_site_log.html b/modules/mx_coreblocks3/templates/prosilver2/mx_site_log.html new file mode 100644 index 00000000..5ce4c19b --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_site_log.html @@ -0,0 +1,20 @@ +
    + +
    + {no_row.L_NO_ITEMS} +
    + + +
    +
    +
    {msg_row.L_TOPIC_FOLDER_ALT}
    +
    + {msg_row.LAST_PAGE}
    + » {msg_row.LAST_BLOCK}
    + {msg_row.EXTRA}{msg_row.L_BLOCK_UPDATED}{msg_row.EDITOR} ({msg_row.EDIT_TIME}) +
    +
    +
    + + +
    diff --git a/modules/mx_coreblocks3/templates/prosilver2/mx_theme.html b/modules/mx_coreblocks3/templates/prosilver2/mx_theme.html new file mode 100644 index 00000000..3da5d7d8 --- /dev/null +++ b/modules/mx_coreblocks3/templates/prosilver2/mx_theme.html @@ -0,0 +1,39 @@ +
    +
    + +
    + +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/subsilver2/mx_online.html b/modules/mx_coreblocks3/templates/subsilver2/mx_online.html new file mode 100644 index 00000000..33b72476 --- /dev/null +++ b/modules/mx_coreblocks3/templates/subsilver2/mx_online.html @@ -0,0 +1,17 @@ + + + + + + + + + + +
    + {L_WHO_IS_ONLINE} + + {TOTAL_POSTS}
    {TOTAL_USERS}
    {NEWEST_USER}
    +
    + {TOTAL_USERS_ONLINE}
    {L_ONLINE_LEGEND}: {ONLINE_LEGEND}
    {RECORD_USERS}
    {LOGGED_IN_USER_LIST}
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/subsilver2/mx_search_body.html b/modules/mx_coreblocks3/templates/subsilver2/mx_search_body.html new file mode 100644 index 00000000..ec02035d --- /dev/null +++ b/modules/mx_coreblocks3/templates/subsilver2/mx_search_body.html @@ -0,0 +1,20 @@ +
    + + + + + + + + + + + +
    {L_SEARCH_QUERY}
    {L_SEARCH_KEYWORDS}:
    {L_SEARCH_KEYWORDS_EXPLAIN}

    {L_SEARCH_ANY_TERMS}
    {L_SEARCH_ALL_TERMS}
    {S_HIDDEN_FIELDS}
    + + + + + +
    {S_TIMEZONE}
    +
    \ No newline at end of file diff --git a/modules/mx_coreblocks3/templates/subsilver2/mx_search_results.html b/modules/mx_coreblocks3/templates/subsilver2/mx_search_results.html new file mode 100644 index 00000000..236a254e --- /dev/null +++ b/modules/mx_coreblocks3/templates/subsilver2/mx_search_results.html @@ -0,0 +1,41 @@ + + + + +
    {L_SEARCH_MATCHES}
    + + + + + +
    {L_NEW_SEARCH}
    + + + + + + + + + + + + + + + +
     {L_PAGE}  {L_BLOCK} 
    + {searchresults.PAGE_TITLE_URL} + {searchresults.PAGE_DESC} + + {searchresults.BLOCK_TITLE_URL} + {searchresults.BLOCK_DESC} + {searchresults.L_BLOCK_UPDATED}{searchresults.BLOCK_EDITOR} {searchresults.EDIT_TIME} +
     
    + + + + + + +
    {PAGE_NUMBER}{PAGINATION}
    {S_TIMEZONE}
    \ No newline at end of file diff --git a/modules/mx_navmenu/admin/mx_module_defs.php b/modules/mx_navmenu/admin/mx_module_defs.php index 5248b571..ea59fb9e 100644 --- a/modules/mx_navmenu/admin/mx_module_defs.php +++ b/modules/mx_navmenu/admin/mx_module_defs.php @@ -73,11 +73,11 @@ function submit_module_parameters( $parameter_data, $block_id ) { case 'nav_menu': $parameter_value = addslashes(serialize($parameter_value)); - break; + break; case 'site_menu': // Nothing special to do for this simple integer - break; + break; } return array('parameter_value' => $parameter_value, 'parameter_opt' => $parameter_opt); } @@ -237,13 +237,14 @@ function display_panel_nav_menu( $parameter_data, $block_id ) FROM " . GROUPS_TABLE . " WHERE group_single_user <> " . TRUE . " ORDER BY group_name ASC"; - break; + break; case 'phpbb3': + default: $sql = "SELECT group_id, group_name FROM " . GROUPS_TABLE . " WHERE group_name NOT IN ('BOTS', 'GUESTS') ORDER BY group_name ASC"; - break; + break; } if( !($result = $db->sql_query($sql)) ) @@ -374,9 +375,10 @@ function display_panel_nav_menu( $parameter_data, $block_id ) $cat_id = $new_cat ? 'new_cat' : $cat_rows[$cat_count]['cat_id']; $mode = MX_MENU_CAT_TYPE; + $action = $new_cat ? MX_DO_INSERT : MX_DO_UPDATE; - $deletemode = '?panel_mode=' . $mode . '&panel_action=' . MX_DO_DELETE . '&id=' . $cat_id . '&block_id=' . $block_id . '&portalpage=' . $portalpage. '&dynamic_block=' . $dynamic_block_id; + $deletemode = '?panel_mode=' . $mode . '&panel_action=' . MX_DO_DELETE . '&id=' . $cat_id . '&block_id=' . $block_id . '&portalpage=' . $portalpage. '&dynamic_block=' . $dynamic_block_id; $upmode = '?panel_mode=' . $mode . '&panel_action=' . MX_DO_MOVE . '&id=' . $cat_id . '&block_id=' . $block_id . '&block_order=' . $block_order . '&move=-15' . '&portalpage=' . $portalpage. '&dynamic_block=' . $dynamic_block_id; $downmode = '?panel_mode=' . $mode . '&panel_action=' . MX_DO_MOVE . '&id=' . $cat_id . '&block_id=' . $block_id . '&block_order=' . $block_order . '&move=15' . '&portalpage=' . $portalpage. '&dynamic_block=' . $dynamic_block_id; @@ -741,7 +743,8 @@ function display_panel_site_menu( $parameter_data, $block_id ) include_once( $mx_root_path . 'modules/mx_navmenu/includes/navmenu_functions.' . $phpEx ); $parameter_id = $parameter_data['parameter_id']; - + $block_order = $parameter_data['parameter_order']; + // // Load states // @@ -776,8 +779,10 @@ function display_panel_site_menu( $parameter_data, $block_id ) $submit = $mx_request_vars->is_post('submit'); $cancel = $mx_request_vars->is_post('cancel'); $preview = $mx_request_vars->is_post('preview'); - $refresh = $preview || $submit_search; - + $refresh = $preview || isset($submit_search); + + $s_hidden_fields = ''; + // // SUBMIT? // @@ -970,7 +975,7 @@ function display_panel_site_menu( $parameter_data, $block_id ) { $menu_active_select = ''; } - + $menuicon = $cat_rows[$cat_count]['menu_icon']; $menuicons = post_icons('menu_icons/', $cat_rows[$cat_count]['menu_icon']); $menu_alt_icon = $cat_rows[$cat_count]['menu_alt_icon']; $menu_alt_icon_hot = $cat_rows[$cat_count]['menu_alt_icon_hot']; @@ -982,7 +987,7 @@ function display_panel_site_menu( $parameter_data, $block_id ) 'CAT_ID' => $cat_id, 'VISIBLE' => $visible_cat ? 'block' : 'none', - 'VISIBLE_EDIT' => $visible_cat_edit || $new_page ? 'block' : 'none', + 'VISIBLE_EDIT' => $visible_cat_edit || isset($new_page) ? 'block' : 'none', 'IMG_URL' => $visible_cat ? $admin_icon['contract'] : $admin_icon['expand'], 'IMG_URL_EDIT' => $visible_cat_edit ? $admin_icon['contract'] : $admin_icon['expand'], @@ -1015,7 +1020,7 @@ function display_panel_site_menu( $parameter_data, $block_id ) )); - $num_of_menus = count($catData); + $num_of_menus = count($cat_rows); //$menu_info = mx_get_info(MENU_NAV_TABLE, 'cat_id', $cat_id); diff --git a/modules/mx_navmenu/mx_menu_nav.php b/modules/mx_navmenu/mx_menu_nav.php index 80bd4eb6..8c548867 100644 --- a/modules/mx_navmenu/mx_menu_nav.php +++ b/modules/mx_navmenu/mx_menu_nav.php @@ -214,7 +214,7 @@ case 'phpbb3': case 'olympus': case 'ascraeus': - case 'rhea': + default: $mx_bbcode = new mx_bbcode(base64_encode($bbcode_bitfield)); break; } diff --git a/modules/mx_navmenu/mx_site_nav.php b/modules/mx_navmenu/mx_site_nav.php index 20808ec6..6baf5e25 100644 --- a/modules/mx_navmenu/mx_site_nav.php +++ b/modules/mx_navmenu/mx_site_nav.php @@ -40,16 +40,17 @@ // // Define some parameters // -/* -$menu_display_style = 'Overall_navigation'; -$menu_display_mode == 'Horizontal'; -$menu_page_sync = true; -*/ + $menu_custom_tpl = $mx_menu_config['menu_custom_tpl']; $menu_display_style = $mx_menu_config['menu_display_style']; $menu_display_mode = $mx_menu_config['menu_display_mode']; $menu_page_sync = ( $mx_menu_config['menu_page_sync'] != 'No' ); - +/* * / +$menu_custom_tpl = ''; +$menu_display_style = 'Overall_navigation'; +$menu_display_mode = 'Horizontal'; +$menu_page_sync = true; +/* */ $page_parent = !empty($mx_menu_config['menu_page_parent']) ? $mx_menu_config['menu_page_parent'] : 0; // @@ -88,49 +89,67 @@ { case 'Classic': $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_classic_hor.tpl') : array('body' => 'mx_menu_classic_ver.tpl'); - break; + break; case 'Advanced': $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_advanced_hor.tpl') : array('body' => 'mx_menu_advanced_ver.tpl'); $kick_js = $menu_display_mode == 'Horizontal' ? 'adv_hor.js' : 'adv_ver.js'; $mx_page->add_footer_text( 'includes/js/' . $kick_js, true ); - break; + break; case 'Simple_CSS_menu': $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_simple_CSS_hor.tpl') : array('body' => 'mx_menu_simple_CSS_ver.tpl'); $kick_js = $menu_display_mode == 'Horizontal' ? 'simple_CSS_hor.js' : 'simple_CSS_ver.js'; $mx_page->add_footer_text( 'includes/js/' . $kick_js, true ); - break; + break; case 'Advanced_CSS_menu': $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_advanced_CSS_hor.tpl') : array('body' => 'mx_menu_advanced_CSS_ver.tpl'); $kick_js = $menu_display_mode == 'Horizontal' ? 'adv_CSS_hor.js' : 'adv_CSS_ver.js'; $mx_page->add_footer_text( 'includes/js/' . $kick_js, true ); - break; + break; case 'Simple_x': $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_simple_x_hor.tpl') : array('body' => 'mx_menu_simple_x_ver.tpl'); - break; + break; case 'Overall_navigation': $template_tmp = array('body' => 'mx_menu_overall_standard.tpl'); - break; + break; default: $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_classic_hor.tpl') : array('body' => 'mx_menu_classic_ver.tpl'); - break; + break; } switch( $menu_display_mode ) { case 'Overall_navigation': $template_tmp = array('body' => "mx_menu_overall_standard.$tplEx"); - break; + break; default: $template_tmp = $template_tmp; - break; + break; } } $template->set_filenames($template_tmp); generate_site_menu($page_parent); +/* +* Get menu data +**/ +if ( $mx_cache->_exists($nav_def_key) ) +{ + $mx_nav_data = $mx_cache->get($nav_def_key); +} +else +{ + $mx_nav_data = mx_get_nav_menu($block_id); + $mx_cache->put($nav_def_key, $mx_nav_data); +} +$navCategory = $mx_nav_data['navcategory']; +$pageMapping = $mx_nav_data['pagemapping']; -$cat_width = $num_of_cats > 0 ? ceil(100 / $num_of_cats) . '%' : '100%'; +$num_of_cats = count($navCategory); +/* +* Get menu data +**/ +$cat_width = ($num_of_cats > 0) ? ceil(100 / $num_of_cats) . '%' : '100%'; $template->assign_vars(array( 'BLOCK_SIZE' => ( !empty($block_size) ? $block_size : '100%' ), @@ -144,19 +163,24 @@ 'U_PORTAL_ROOT_PATH' => PORTAL_URL, 'U_PHPBB_ROOT_PATH' => PHPBB_URL, 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, - + + //SEARCH + 'U_SEARCH' => mx_append_sid(PHPBB_URL .'search.'.$phpEx), + 'U_SEARCH_UNANSWERED' => mx_append_sid(PHPBB_URL . 'search.'.$phpEx.'?search_id=unanswered'), + 'U_SEARCH_SELF' => mx_append_sid(PHPBB_URL .'search.'.$phpEx.'?search_id=egosearch'), + 'U_SEARCH_NEW' => mx_append_sid(PHPBB_URL .'search.'.$phpEx.'?search_id=newposts'), // // mygosmenu // 'MX_ROOT_PATH' => $mx_root_path, - 'T_TR_COLOR1' => '#'.$theme['tr_color1'], - 'T_TR_COLOR2' => '#'.$theme['tr_color2'], - 'T_TR_COLOR3' => '#'.$theme['tr_color3'], - 'T_BODY_LINK' => '#'.$theme['body_link'], - 'T_BODY_VLINK' => '#'.$theme['body_vlink'], - 'T_TH_COLOR1' => '#'.$theme['th_color1'], - 'T_FONTFACE1' => $theme['fontface1'], + 'T_TR_COLOR1' => '#'.$mx_user->theme['tr_color1'], + 'T_TR_COLOR2' => '#'.$mx_user->theme['tr_color2'], + 'T_TR_COLOR3' => '#'.$mx_user->theme['tr_color3'], + 'T_BODY_LINK' => '#'.$mx_user->theme['body_link'], + 'T_BODY_VLINK' => '#'.$mx_user->theme['body_vlink'], + 'T_TH_COLOR1' => '#'.$mx_user->theme['th_color1'], + 'T_FONTFACE1' => $mx_user->theme['fontface1'], 'IMG_CONTRACT' => $images['mx_contract'], 'IMG_EXPAND' => $images['mx_expand'], 'MENU_MODE' => $menu_display_mode, diff --git a/modules/mx_navmenu/mx_site_nav2.php b/modules/mx_navmenu/mx_site_nav2.php index 06be94bb..20808ec6 100644 --- a/modules/mx_navmenu/mx_site_nav2.php +++ b/modules/mx_navmenu/mx_site_nav2.php @@ -2,8 +2,8 @@ /** * * @package MX-Publisher Module - mx_navmenu -* @version $Id: mx_site_nav2.php,v 1.3 2014/05/18 06:24:56 orynider Exp $ -* @copyright (c) 2002-2008 [Jon Ohlsson] MX-Publisher Project Team +* @version $Id: mx_site_nav.php,v 1.13 2014/05/18 06:24:56 orynider Exp $ +* @copyright (c) 2002-2006 [Jon Ohlsson] MX-Publisher Project Team * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 * @link http://mxpcms.sourceforge.net * @@ -29,7 +29,7 @@ // // Setup config parameters // -$config_name = array('menu_custom_tpl', 'menu_display_mode', 'menu_page_parent'); +$config_name = array('menu_display_style', 'menu_display_mode', 'menu_page_sync', 'menu_page_parent', 'menu_custom_tpl'); for( $i = 0; $i < count($config_name); $i++ ) { @@ -40,8 +40,16 @@ // // Define some parameters // +/* +$menu_display_style = 'Overall_navigation'; +$menu_display_mode == 'Horizontal'; +$menu_page_sync = true; +*/ $menu_custom_tpl = $mx_menu_config['menu_custom_tpl']; +$menu_display_style = $mx_menu_config['menu_display_style']; $menu_display_mode = $mx_menu_config['menu_display_mode']; +$menu_page_sync = ( $mx_menu_config['menu_page_sync'] != 'No' ); + $page_parent = !empty($mx_menu_config['menu_page_parent']) ? $mx_menu_config['menu_page_parent'] : 0; // @@ -49,6 +57,7 @@ // Define this menu block has been used on this page - either as a block or in the header. To avoid it being used several times // $nav_def_key = 'MX_SITE_MENU_' . $block_id; + if ( defined($nav_def_key) ) { $mx_block->show_title = false; @@ -63,30 +72,61 @@ $page_id = $mx_request_vars->request('page', MX_TYPE_INT, 1); $virtual_id = $mx_request_vars->request('virtual', MX_TYPE_INT, ''); -if (!empty($menu_custom_tpl) && !in_array($menu_custom_tpl, array('Classic','Advanced','Simple_CSS_menu','Advanced_CSS_menu','Overall_navigation'))) +if (!empty($menu_custom_tpl)) { - $template_tmp = $menu_custom_tpl; + $template_tmp = array('body' => $menu_custom_tpl); + $template_tmp_path = str_replace(strrchr($template_tmp, '/'), '', $template_tmp) . '/'; + $kick_js = @file_exists($mx_root_path . $module_root_path . 'templates/' .$mx_user->template_names[$module_root_path] . $template_tmp_path) ? ($menu_display_mode == 'Horizontal' ? 'horizontal' : 'vertical') : ''; + if (!empty($kick_js)) + { + $mx_page->add_footer_text( 'templates/' . $mx_user->template_names[$module_root_path] . $template_tmp_path . $kick_js . '.js', true ); + } } else { - switch( $menu_display_mode ) + switch( $menu_display_style ) { - case 'Horizontal': - $template_tmp = 'mx_menu_horizontal.tpl'; + case 'Classic': + $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_classic_hor.tpl') : array('body' => 'mx_menu_classic_ver.tpl'); break; - case 'Vertical': - $template_tmp = 'mx_menu_vertical.tpl'; + case 'Advanced': + $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_advanced_hor.tpl') : array('body' => 'mx_menu_advanced_ver.tpl'); + $kick_js = $menu_display_mode == 'Horizontal' ? 'adv_hor.js' : 'adv_ver.js'; + $mx_page->add_footer_text( 'includes/js/' . $kick_js, true ); break; - case 'Overall_navigation': - $template_tmp = 'mx_menu_overall_navigation.tpl'; + case 'Simple_CSS_menu': + $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_simple_CSS_hor.tpl') : array('body' => 'mx_menu_simple_CSS_ver.tpl'); + $kick_js = $menu_display_mode == 'Horizontal' ? 'simple_CSS_hor.js' : 'simple_CSS_ver.js'; + $mx_page->add_footer_text( 'includes/js/' . $kick_js, true ); + break; + case 'Advanced_CSS_menu': + $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_advanced_CSS_hor.tpl') : array('body' => 'mx_menu_advanced_CSS_ver.tpl'); + $kick_js = $menu_display_mode == 'Horizontal' ? 'adv_CSS_hor.js' : 'adv_CSS_ver.js'; + $mx_page->add_footer_text( 'includes/js/' . $kick_js, true ); break; + case 'Simple_x': + $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_simple_x_hor.tpl') : array('body' => 'mx_menu_simple_x_ver.tpl'); + break; + case 'Overall_navigation': + $template_tmp = array('body' => 'mx_menu_overall_standard.tpl'); + break; default: - $template_tmp = 'mx_menu_vertical.tpl'; + $template_tmp = $menu_display_mode == 'Horizontal' ? array('body' => 'mx_menu_classic_hor.tpl') : array('body' => 'mx_menu_classic_ver.tpl'); break; } + + switch( $menu_display_mode ) + { + case 'Overall_navigation': + $template_tmp = array('body' => "mx_menu_overall_standard.$tplEx"); + break; + default: + $template_tmp = $template_tmp; + break; + } } -$template->set_filenames(array('body' => $template_tmp)); +$template->set_filenames($template_tmp); generate_site_menu($page_parent); @@ -104,15 +144,10 @@ 'U_PORTAL_ROOT_PATH' => PORTAL_URL, 'U_PHPBB_ROOT_PATH' => PHPBB_URL, 'TEMPLATE_ROOT_PATH' => TEMPLATE_ROOT_PATH, - - //phpBB - 'U_SEARCH' => mx_append_sid(PHPBB_URL .'search.'.$phpEx), - 'U_SEARCH_UNANSWERED' => mx_append_sid(PHPBB_URL . 'search.'.$phpEx.'?search_id=unanswered'), - 'U_SEARCH_SELF' => mx_append_sid(PHPBB_URL .'search.'.$phpEx.'?search_id=egosearch'), - 'U_SEARCH_NEW' => mx_append_sid(PHPBB_URL .'search.'.$phpEx.'?search_id=newposts'), + // - // css + // mygosmenu // 'MX_ROOT_PATH' => $mx_root_path, 'T_TR_COLOR1' => '#'.$theme['tr_color1'], diff --git a/modules/mx_navmenu/templates/_core/_core.cfg b/modules/mx_navmenu/templates/_core/_core.cfg index 6e861904..a6ffc830 100644 --- a/modules/mx_navmenu/templates/_core/_core.cfg +++ b/modules/mx_navmenu/templates/_core/_core.cfg @@ -20,7 +20,7 @@ // // Do not alter this line! // -define(MX_TEMPLATE_CONFIG, TRUE); +define('MX_TEMPLATE_CONFIG', TRUE); $mx_template_config = true; // ------------------------------------------------------------------------- diff --git a/modules/mx_navmenu/templates/_core/contrib/index.htm b/modules/mx_navmenu/templates/_core/contrib/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_navmenu/templates/_core/contrib/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_navmenu/templates/_core/mx_menu_classic_hor.tpl b/modules/mx_navmenu/templates/_core/mx_menu_classic_hor.tpl new file mode 100644 index 00000000..d5521371 --- /dev/null +++ b/modules/mx_navmenu/templates/_core/mx_menu_classic_hor.tpl @@ -0,0 +1,43 @@ + + + + + + +
    + + + + + + + + + + +
    + + + + + + + + +
    + + +  {catrow.CATEGORY} +
    {catrow.DESCRIPTION}
    +
    + + + + + + + + +
    {catrow.menurow.U_MENU_ICON}{catrow.menurow.MENU_NAME}
    +
    +
    diff --git a/modules/mx_navmenu/templates/mxBase1/mxBase1.cfg b/modules/mx_navmenu/templates/mxBase1/mxBase1.cfg new file mode 100644 index 00000000..a6ffc830 --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase1/mxBase1.cfg @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/modules/mx_navmenu/templates/mxBase1/mx_menu_classic_hor.tpl b/modules/mx_navmenu/templates/mxBase1/mx_menu_classic_hor.tpl new file mode 100644 index 00000000..d5521371 --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase1/mx_menu_classic_hor.tpl @@ -0,0 +1,43 @@ + + + + + + +
    + + + + + + + + + + +
    + + + + + + + + +
    + + +  {catrow.CATEGORY} +
    {catrow.DESCRIPTION}
    +
    + + + + + + + + +
    {catrow.menurow.U_MENU_ICON}{catrow.menurow.MENU_NAME}
    +
    +
    diff --git a/modules/mx_navmenu/templates/mxBase1/mx_menu_classic_ver.tpl b/modules/mx_navmenu/templates/mxBase1/mx_menu_classic_ver.tpl new file mode 100644 index 00000000..b344fe9c --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase1/mx_menu_classic_ver.tpl @@ -0,0 +1,46 @@ + + + + + + + + + + + + +
    + + + + +
    + + + + + + +
    + + +  {catrow.CATEGORY} + +
    +  {catrow.switch_cat_desc.CAT_DESC} + +
    + +
    +
    + + + + + + + + +
    {catrow.menurow.U_MENU_ICON} {catrow.menurow.MENU_NAME}
    +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/mxBase1/mx_menu_overall_standard.tpl b/modules/mx_navmenu/templates/mxBase1/mx_menu_overall_standard.tpl new file mode 100644 index 00000000..a4492dcd --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase1/mx_menu_overall_standard.tpl @@ -0,0 +1,33 @@ + + + + +
    + + +
    + diff --git a/modules/mx_navmenu/templates/mxBase1/mx_menu_overall_standard.tpl6 b/modules/mx_navmenu/templates/mxBase1/mx_menu_overall_standard.tpl6 new file mode 100644 index 00000000..c097b472 --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase1/mx_menu_overall_standard.tpl6 @@ -0,0 +1,58 @@ + + + + + + +
    + + + + + + + +
    + + + + + + + +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/mxBase2/mxBase2.cfg b/modules/mx_navmenu/templates/mxBase2/mxBase2.cfg new file mode 100644 index 00000000..a6ffc830 --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase2/mxBase2.cfg @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_hor.tpl b/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_hor.tpl new file mode 100644 index 00000000..d5521371 --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_hor.tpl @@ -0,0 +1,43 @@ + + + + + + +
    + + + + + + + + + + +
    + + + + + + + + +
    + + +  {catrow.CATEGORY} +
    {catrow.DESCRIPTION}
    +
    + + + + + + + + +
    {catrow.menurow.U_MENU_ICON}{catrow.menurow.MENU_NAME}
    +
    +
    diff --git a/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_subpages.tpl b/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_subpages.tpl new file mode 100644 index 00000000..1fe8790a --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_subpages.tpl @@ -0,0 +1,5 @@ + diff --git a/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_ver.tpl b/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_ver.tpl new file mode 100644 index 00000000..d0be945a --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase2/mx_menu_classic_ver.tpl @@ -0,0 +1,12 @@ + + + diff --git a/modules/mx_navmenu/templates/mxBase2/mx_menu_horizontal.tpl b/modules/mx_navmenu/templates/mxBase2/mx_menu_horizontal.tpl new file mode 100644 index 00000000..949b8f68 --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase2/mx_menu_horizontal.tpl @@ -0,0 +1,19 @@ + + +
    +
    + + + + + + diff --git a/modules/mx_navmenu/templates/mxBase2/mx_menu_overall_standard.tpl b/modules/mx_navmenu/templates/mxBase2/mx_menu_overall_standard.tpl new file mode 100644 index 00000000..ee7e07db --- /dev/null +++ b/modules/mx_navmenu/templates/mxBase2/mx_menu_overall_standard.tpl @@ -0,0 +1,18 @@ + diff --git a/modules/mx_navmenu/templates/mxBase2/mx_menu_vertical.tpl b/modules/mx_navmenu/templates/mxBase2/mx_menu_vertical.tpl index 51ca0fb5..d0be945a 100644 --- a/modules/mx_navmenu/templates/mxBase2/mx_menu_vertical.tpl +++ b/modules/mx_navmenu/templates/mxBase2/mx_menu_vertical.tpl @@ -4,8 +4,9 @@
  • {catrow.menurow_cat.CATEGORY_NAME}
  • -
  • {catrow.menurow.U_MENU_ICON}{catrow.menurow.MENU_NAME}
  • +
  • {catrow.menurow.MENU_NAME}
  • + diff --git a/modules/mx_navmenu/templates/platinum/admin/index.htm b/modules/mx_navmenu/templates/platinum/admin/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/admin/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_navmenu/templates/platinum/admin/mx_module_parameters.html b/modules/mx_navmenu/templates/platinum/admin/mx_module_parameters.html new file mode 100644 index 00000000..52a39d86 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/admin/mx_module_parameters.html @@ -0,0 +1,535 @@ + + +
    +
    + {S_GEN_BLOCK_LIST} + {S_GEN_FUNCTION_LIST} + {S_GEN_PAGE_LIST} + +
    +
    +

    {L_MENU_TITLE}

    + + + + +
    +
    +
    + + {L_EDIT} + {L_MOVE_UP} + {L_MOVE_DOWN} + {L_DELETE} + +
    +
    + list + + + {catrow.CAT_TITLE} + + + {catrow.CAT_TITLE} + +
    {catrow.CAT_DESC} +
    +
    +
    + +
    + +
    +
    +
    + {catrow.L_TITLE_DELETE} +
    +
    +
    {catrow.NAME}
    +
    +
    +
    +
    {catrow.S_SELECT_TO}
    +
    +
    +
    +
    +
    +

    + {catrow.S_HIDDEN_DELETE_FIELDS} + +

    +
    + +
    + + +
    +
    +
    + {catrow.L_TITLE_EDIT} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    {catrow.S_CAT_SHOW_CAT}
    +
    +
    +
    +
    +
    +
    +
    +
    {catrow.S_CAT_LINK_TARGET_LIST}
    +
    +

    + {catrow.S_HIDDEN_FIELDS} + +

    +
    + +
    + + {catrow.nocat.NONE} + + + +
    + +
    +
    + + {L_MOVE_UP} + {L_MOVE_DOWN} + + {L_DELETE} + + +
    + +
    + +
    +
    +
    + {L_DELETE} +

    + {catrow.menurow.MESSAGE_DELETE} +

    +
    + +
    + +
    +
    +
    + {L_EDIT} +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    {catrow.menurow.S_LINK_TARGET_LIST}
    +
    +
    +
    {catrow.menurow.L_MENU_ACTION_TITLE}
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    {catrow.menurow.L_MENU_ACTION_ADV}
    +
    +
    +
    +
    +
    +
    +
    {catrow.menurow.L_MENU_PERMISSIONS_TITLE}
    +
    +
    +
    +
    +
    + {modulerow.U_MENU_ICON}{modulerow.MENU_NAME} +
    + + + + + + + + + + + + + + + + +
    {catrow.menurow.module_auth_titles.CELL_TITLE}
    {catrow.menurow.module_auth_data.S_AUTH_LEVELS_SELECT}
    {catrow.menurow.module_auth_data.L_AUTH_GROUP_LEVELS_SELECT}
    {catrow.menurow.module_auth_data.S_AUTH_GROUP_LEVELS_SELECT}
    + + +
    +
    +
    {catrow.menurow.S_POSTICONS}
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    + {catrow.menurow.S_HIDDEN_FIELDS} + +

    + + + +
    + +
    + + +
    +
    + +
    + + +
    +
    + + + diff --git a/modules/mx_navmenu/templates/platinum/images/bg_list.gif b/modules/mx_navmenu/templates/platinum/images/bg_list.gif new file mode 100644 index 00000000..89f8963f Binary files /dev/null and b/modules/mx_navmenu/templates/platinum/images/bg_list.gif differ diff --git a/modules/mx_navmenu/templates/platinum/images/bg_menu.gif b/modules/mx_navmenu/templates/platinum/images/bg_menu.gif new file mode 100644 index 00000000..4a9f5a91 Binary files /dev/null and b/modules/mx_navmenu/templates/platinum/images/bg_menu.gif differ diff --git a/modules/mx_navmenu/templates/platinum/index.htm b/modules/mx_navmenu/templates/platinum/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_classic_hor.html b/modules/mx_navmenu/templates/platinum/mx_menu_classic_hor.html new file mode 100644 index 00000000..6bb57fa3 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_classic_hor.html @@ -0,0 +1,97 @@ + +
    +
    +
    + +
    +
    + +
    + diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_classic_subpages.html b/modules/mx_navmenu/templates/platinum/mx_menu_classic_subpages.html new file mode 100644 index 00000000..b3d4db16 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_classic_subpages.html @@ -0,0 +1,23 @@ +
    +
    +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_classic_ver.html b/modules/mx_navmenu/templates/platinum/mx_menu_classic_ver.html new file mode 100644 index 00000000..a159004f --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_classic_ver.html @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_classic_ver_css.html b/modules/mx_navmenu/templates/platinum/mx_menu_classic_ver_css.html new file mode 100644 index 00000000..6f655dce --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_classic_ver_css.html @@ -0,0 +1,124 @@ + + + + + \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_horizontal.html b/modules/mx_navmenu/templates/platinum/mx_menu_horizontal.html new file mode 100644 index 00000000..d7345af5 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_horizontal.html @@ -0,0 +1,26 @@ + +
    + + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_overall_gray.html b/modules/mx_navmenu/templates/platinum/mx_menu_overall_gray.html new file mode 100644 index 00000000..ae0a80d3 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_overall_gray.html @@ -0,0 +1,97 @@ + + + diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_overall_navigation.html b/modules/mx_navmenu/templates/platinum/mx_menu_overall_navigation.html new file mode 100644 index 00000000..3236f1a8 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_overall_navigation.html @@ -0,0 +1,91 @@ + +
    + +
    + diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_overall_simple.html b/modules/mx_navmenu/templates/platinum/mx_menu_overall_simple.html new file mode 100644 index 00000000..949b8f68 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_overall_simple.html @@ -0,0 +1,19 @@ + + +
    +
    + + + + + + diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_overall_standard.html b/modules/mx_navmenu/templates/platinum/mx_menu_overall_standard.html new file mode 100644 index 00000000..99e0d6dc --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_overall_standard.html @@ -0,0 +1,102 @@ + + + diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_overall_standard.tpl b/modules/mx_navmenu/templates/platinum/mx_menu_overall_standard.tpl new file mode 100644 index 00000000..3236f1a8 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_overall_standard.tpl @@ -0,0 +1,91 @@ + +
    + +
    + diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_simple.html b/modules/mx_navmenu/templates/platinum/mx_menu_simple.html new file mode 100644 index 00000000..2177c7e4 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_simple.html @@ -0,0 +1,26 @@ + +
    +
    + + + +
    +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_vertical.html b/modules/mx_navmenu/templates/platinum/mx_menu_vertical.html new file mode 100644 index 00000000..fd5b3e92 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_vertical.html @@ -0,0 +1,28 @@ +
    +
    +
    + + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/mx_menu_vertical_adds.html b/modules/mx_navmenu/templates/platinum/mx_menu_vertical_adds.html new file mode 100644 index 00000000..cbb881ee --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/mx_menu_vertical_adds.html @@ -0,0 +1,29 @@ +
    +
    +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/platinum.cfg b/modules/mx_navmenu/templates/platinum/platinum.cfg new file mode 100644 index 00000000..c4133685 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/platinum.cfg @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/modules/mx_navmenu/templates/platinum/platinum.css b/modules/mx_navmenu/templates/platinum/platinum.css new file mode 100644 index 00000000..a1fa6203 --- /dev/null +++ b/modules/mx_navmenu/templates/platinum/platinum.css @@ -0,0 +1,117 @@ +@CHARSET "UTF-8"; +li.nav-button, li.nav-button-current { +border-width: 1px; +border-color: Transparent; +border-style: solid solid none solid; +padding-left: 5px; +padding-right: 5px; +margin: 1px; +margin-bottom: 0px; +border-bottom: none; +} + +li.nav-button-current { +background: #0076b1 none; +border-color: white; +border: none; +margin: 0px; +padding-top: 1px; +padding-bottom: 1px; +} + +li.nav-button-current A:link, li.nav-button-current A:visited, +li.nav-button-current A:hover { +background-image: url("./../../../../templates/platinum/theme/images/bg_list.gif"); +color: White; +} + +li.nav-button-current A:active { +background-image: url("./../../../../templates/platinum/theme/images/bg_active.gif"); +color: Red; +} + +ul.nav-menu { +padding:0px; +margin:0px; +list-style-type: disc; +} +li.genmed, li.cattitle { +padding-right: 3px; +margin-right: 3px; +border-right-style: none; +border-right-width: 1px; +border-right-color: Transparent; +list-style-type : disc; +padding-top: 0px; +margin-top: 0px; +list-style-type: disc; +} +li.cattitle { +font-weight: bold; +} + +/**********************\ +|* Overall navigation *| +\**********************/ +li.mnu-ov, li.mnu-ov-current { + float:left; + list-style-image: none; + position:relative; + padding: 4px; + background: #12A3EB url("./../../../../templates/platinum/theme/images/sitebar_bg.gif") repeat-x; + background-position: 0px -23px; + border: none; + margin: 0px; +} +li.button ul, li.button-current ul { +/* border: solid 1px black;*/ + border: none; +} +li.mnu-ov A, li.mnu-ov-current A { + padding-left: 20px; + background-repeat: no-repeat; + font-size: 1.1em; + background-position: 0px 0px; +} +li.mnu-ov-current A { + background-position: 0px -30px; +} +li.mnu-ov A:hover, li.mnu-ov-current A:hover { + background-position: 0px -15px; +} + +/*******************\ +|* Navigation menu *| +\*******************/ +.topiclist dd.posts_portal { + float:left; + text-align:left; + font-size: 1.0em; + padding:6px 5px 6px 5px; +} +.topiclist li dl dd.posts_portal A.nav { + padding-bottom: 50px; + margin-bottom:10px; +} + +.topiclist li dl dd.posts_portal span.mnu-nm, .topiclist li dl dd.posts_portal span.mnu-nm:hover, +.topiclist li dl dd.posts_portal span.mnu-nm-current, .topiclist li dl dd.posts_portal span.mnu-nm-current:hover { + background-repeat: no-repeat; + background-position: 0px 0px; + padding-left: 20px; + display:block; + clear:both; + margin-top:3px; + margin-bottom:3px; +} +.topiclist li dl dd.posts_portal span.mnu-nm-current { + background-position: 0px -30px; + font-weight: bold; +} + +.topiclist li dl dd.posts_portal span.mnu-nm:hover, .topiclist li dl dd.posts_portal span.mnu-nm-current:hover { + background-position: 0px -15px; +} + + +* html .nav-cat td { position: relative; } /* ie 5.0 fix */ diff --git a/modules/mx_navmenu/templates/prosilver/mx_menu_classic_hor.html b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_hor.html new file mode 100644 index 00000000..6bb57fa3 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_hor.html @@ -0,0 +1,97 @@ + +
    +
    +
    + +
    +
    + +
    + diff --git a/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver.html b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver.html index b3d4db16..a159004f 100644 --- a/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver.html +++ b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver.html @@ -1,23 +1,35 @@ -
    -
    -
    -
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver2.html b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver2.html new file mode 100644 index 00000000..7869c8fd --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver2.html @@ -0,0 +1,30 @@ + + +
    +
    + +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver_css.html b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver_css.html new file mode 100644 index 00000000..6f655dce --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver/mx_menu_classic_ver_css.html @@ -0,0 +1,124 @@ + + + + + \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver/mx_menu_overall_gray.html b/modules/mx_navmenu/templates/prosilver/mx_menu_overall_gray.html new file mode 100644 index 00000000..ae0a80d3 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver/mx_menu_overall_gray.html @@ -0,0 +1,97 @@ + + + diff --git a/modules/mx_navmenu/templates/prosilver/mx_menu_overall_standard.html b/modules/mx_navmenu/templates/prosilver/mx_menu_overall_standard.html new file mode 100644 index 00000000..b3fcdaf6 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver/mx_menu_overall_standard.html @@ -0,0 +1,106 @@ + + + + + diff --git a/modules/mx_navmenu/templates/prosilver/mx_menu_vertical.html b/modules/mx_navmenu/templates/prosilver/mx_menu_vertical.html index b3d4db16..fd5b3e92 100644 --- a/modules/mx_navmenu/templates/prosilver/mx_menu_vertical.html +++ b/modules/mx_navmenu/templates/prosilver/mx_menu_vertical.html @@ -1,16 +1,21 @@
    +
    + {modulerow.U_MENU_ICON}{modulerow.MENU_NAME} +
    + + + + + + + + + + + + + + + + +
    {catrow.menurow.module_auth_titles.CELL_TITLE}
    {catrow.menurow.module_auth_data.S_AUTH_LEVELS_SELECT}
    {catrow.menurow.module_auth_data.L_AUTH_GROUP_LEVELS_SELECT}
    {catrow.menurow.module_auth_data.S_AUTH_GROUP_LEVELS_SELECT}
    + + +
    +
    +
    {catrow.menurow.S_POSTICONS}
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    + {catrow.menurow.S_HIDDEN_FIELDS} + +

    + + + +
    + +
    + + +
    +
    + +
    + + +
    +
    + + + diff --git a/modules/mx_navmenu/templates/prosilver2/images/bg_list.gif b/modules/mx_navmenu/templates/prosilver2/images/bg_list.gif new file mode 100644 index 00000000..89f8963f Binary files /dev/null and b/modules/mx_navmenu/templates/prosilver2/images/bg_list.gif differ diff --git a/modules/mx_navmenu/templates/prosilver2/images/bg_menu.gif b/modules/mx_navmenu/templates/prosilver2/images/bg_menu.gif new file mode 100644 index 00000000..4a9f5a91 Binary files /dev/null and b/modules/mx_navmenu/templates/prosilver2/images/bg_menu.gif differ diff --git a/modules/mx_navmenu/templates/prosilver2/index.htm b/modules/mx_navmenu/templates/prosilver2/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_hor.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_hor.html new file mode 100644 index 00000000..18f8017b --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_hor.html @@ -0,0 +1,104 @@ + +
    +
    +
    + + +
    +
    + +
    + diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_subpages.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_subpages.html new file mode 100644 index 00000000..b3d4db16 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_subpages.html @@ -0,0 +1,23 @@ +
    +
    +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_ver.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_ver.html new file mode 100644 index 00000000..7303ba57 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_classic_ver.html @@ -0,0 +1,25 @@ +
    +
    +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_horizontal.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_horizontal.html new file mode 100644 index 00000000..71bf8b82 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_horizontal.html @@ -0,0 +1,26 @@ + +
    + + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_navigation.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_navigation.html new file mode 100644 index 00000000..6fb6021f --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_navigation.html @@ -0,0 +1,91 @@ + +
    + +
    + diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_simple.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_simple.html new file mode 100644 index 00000000..949b8f68 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_simple.html @@ -0,0 +1,19 @@ + + +
    +
    + + + + + + diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_standard.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_standard.html new file mode 100644 index 00000000..6fb6021f --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_overall_standard.html @@ -0,0 +1,91 @@ + +
    + +
    + diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_simple.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_simple.html new file mode 100644 index 00000000..2177c7e4 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_simple.html @@ -0,0 +1,26 @@ + +
    +
    + + + +
    +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_vertical.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_vertical.html new file mode 100644 index 00000000..b3d4db16 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_vertical.html @@ -0,0 +1,23 @@ +
    +
    +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver2/mx_menu_vertical_adds.html b/modules/mx_navmenu/templates/prosilver2/mx_menu_vertical_adds.html new file mode 100644 index 00000000..cbb881ee --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/mx_menu_vertical_adds.html @@ -0,0 +1,29 @@ +
    +
    +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver2/prosilver2.cfg b/modules/mx_navmenu/templates/prosilver2/prosilver2.cfg new file mode 100644 index 00000000..c4133685 --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/prosilver2.cfg @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/modules/mx_navmenu/templates/prosilver2/prosilver2.css b/modules/mx_navmenu/templates/prosilver2/prosilver2.css new file mode 100644 index 00000000..15f9bcca --- /dev/null +++ b/modules/mx_navmenu/templates/prosilver2/prosilver2.css @@ -0,0 +1,117 @@ +@CHARSET "UTF-8"; +li.nav-button, li.nav-button-current { +border-width: 1px; +border-color: Transparent; +border-style: solid solid none solid; +padding-left: 5px; +padding-right: 5px; +margin: 1px; +margin-bottom: 0px; +border-bottom: none; +} + +li.nav-button-current { +background: #0076b1 none; +border-color: white; +border: none; +margin: 0px; +padding-top: 1px; +padding-bottom: 1px; +} + +li.nav-button-current A:link, li.nav-button-current A:visited, +li.nav-button-current A:hover { +background-image: url("./../../../../templates/prosilver/theme/images/bg_list.gif"); +color: White; +} + +li.nav-button-current A:active { +background-image: url("./../../../../templates/prosilver/theme/images/bg_active.gif"); +color: Red; +} + +ul.nav-menu { +padding:0px; +margin:0px; +list-style-type: disc; +} +li.genmed, li.cattitle { +padding-right: 3px; +margin-right: 3px; +border-right-style: none; +border-right-width: 1px; +border-right-color: Transparent; +list-style-type : disc; +padding-top: 0px; +margin-top: 0px; +list-style-type: disc; +} +li.cattitle { +font-weight: bold; +} + +/**********************\ +|* Overall navigation *| +\**********************/ +li.mnu-ov, li.mnu-ov-current { + float:left; + list-style-image: none; + position:relative; + padding: 4px; + background: #12A3EB url("./../../../../templates/prosilver/theme/images/sitebar_bg.gif") repeat-x; + background-position: 0px -23px; + border: none; + margin: 0px; +} +li.button ul, li.button-current ul { +/* border: solid 1px black;*/ + border: none; +} +li.mnu-ov A, li.mnu-ov-current A { + padding-left: 20px; + background-repeat: no-repeat; + font-size: 1.1em; + background-position: 0px 0px; +} +li.mnu-ov-current A { + background-position: 0px -30px; +} +li.mnu-ov A:hover, li.mnu-ov-current A:hover { + background-position: 0px -15px; +} + +/*******************\ +|* Navigation menu *| +\*******************/ +.topiclist dd.posts_portal { + float:left; + text-align:left; + font-size: 1.0em; + padding:6px 5px 6px 5px; +} +.topiclist li dl dd.posts_portal A.nav { + padding-bottom: 50px; + margin-bottom:10px; +} + +.topiclist li dl dd.posts_portal span.mnu-nm, .topiclist li dl dd.posts_portal span.mnu-nm:hover, +.topiclist li dl dd.posts_portal span.mnu-nm-current, .topiclist li dl dd.posts_portal span.mnu-nm-current:hover { + background-repeat: no-repeat; + background-position: 0px 0px; + padding-left: 20px; + display:block; + clear:both; + margin-top:3px; + margin-bottom:3px; +} +.topiclist li dl dd.posts_portal span.mnu-nm-current { + background-position: 0px -30px; + font-weight: bold; +} + +.topiclist li dl dd.posts_portal span.mnu-nm:hover, .topiclist li dl dd.posts_portal span.mnu-nm-current:hover { + background-position: 0px -15px; +} + + +* html .nav-cat td { position: relative; } /* ie 5.0 fix */ diff --git a/modules/mx_navmenu/templates/subSilver/subSilver.cfg b/modules/mx_navmenu/templates/subSilver/subSilver.cfg index a32d832c..336f61a8 100644 --- a/modules/mx_navmenu/templates/subSilver/subSilver.cfg +++ b/modules/mx_navmenu/templates/subSilver/subSilver.cfg @@ -21,7 +21,7 @@ // // Do not alter this line! // -define(MX_TEMPLATE_CONFIG, TRUE); +define('MX_TEMPLATE_CONFIG', TRUE); $mx_template_config = true; // ------------------------------------------------------------------------- diff --git a/modules/mx_navmenu/templates/subsilver2/subsilver2.cfg b/modules/mx_navmenu/templates/subsilver2/subsilver2.cfg index 6dd4f491..0038b17e 100644 --- a/modules/mx_navmenu/templates/subsilver2/subsilver2.cfg +++ b/modules/mx_navmenu/templates/subsilver2/subsilver2.cfg @@ -21,7 +21,7 @@ // // Do not alter this line! // -define(MX_TEMPLATE_CONFIG, TRUE); +define('MX_TEMPLATE_CONFIG', TRUE); $mx_template_config = true; // ------------------------------------------------------------------------- diff --git a/modules/mx_phpbb2blocks/includes/phpbb2blocks_constants.php b/modules/mx_phpbb2blocks/includes/phpbb2blocks_constants.php index 1ad7b9ec..46d374e5 100644 --- a/modules/mx_phpbb2blocks/includes/phpbb2blocks_constants.php +++ b/modules/mx_phpbb2blocks/includes/phpbb2blocks_constants.php @@ -13,7 +13,17 @@ { mx_message_die(GENERAL_MESSAGE, 'There are blocks on this page designed for MX-Publisher with phpBB2 backend, thus not compatible with current setup.'); } - +/* START Include language file */ +$default_lang = $language = ($mx_user->user_language_name) ? $mx_user->user_language_name : (($board_config['default_lang']) ? $board_config['default_lang'] : 'english'); +/* */ +if ((@include $mx_root_path . "includes/shared/phpbb2/language/lang_" . $language . "/lang_main.$phpEx") === false) +{ + if ((@include $mx_root_path . "includes/shared/phpbb2/language/lang_english/lang_main.$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'Language file ' . $mx_root_path . "includes/shared/phpbb2/language/lang_" . $language . "/lang_main.$phpEx" . ' couldn\'t be opened.'); + } + $default_lang = $language = 'english'; +} // ------------------------------------------------------------------------- // Footer Copyrights // ------------------------------------------------------------------------- diff --git a/modules/mx_phpbb2blocks/mx_statistics.php b/modules/mx_phpbb2blocks/mx_statistics.php index 13654a15..3fb296ef 100644 --- a/modules/mx_phpbb2blocks/mx_statistics.php +++ b/modules/mx_phpbb2blocks/mx_statistics.php @@ -36,16 +36,18 @@ $vote_right = $images['mx_vote_rcap'] ; $vote_bar = $images['mx_vote_bar']; -if( file_exists($module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx) ) -{ - include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx); - include($module_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx); -} -else +/* START Include language file */ +$default_lang = $language = ($mx_user->user_language_name) ? $mx_user->user_language_name : (($board_config['default_lang']) ? $board_config['default_lang'] : 'english'); + +if ((@include $mx_root_path . "includes/shared/phpbb2/language/lang_" . $language . "/lang_admin.$phpEx") === false) { - include($phpbb_root_path . 'language/lang_english/lang_admin.' . $phpEx); - include($module_root_path . 'language/lang_english/lang_main.' . $phpEx); + if ((@include $mx_root_path . "includes/shared/phpbb2/language/lang_english/lang_admin.$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'Language file ' . $mx_root_path . "includes/shared/phpbb2/language/lang_" . $language . "/lang_admin.$phpEx" . ' couldn\'t be opened.'); + } + $default_lang = $language = 'english'; } +/* */ // // Do the math :) (i think this is the same method as in philip mayer's statistic's file) diff --git a/modules/mx_phpbb2blocks/templates/_core/_core.cfg b/modules/mx_phpbb2blocks/templates/_core/_core.cfg index 8f53d7af..52aed499 100644 --- a/modules/mx_phpbb2blocks/templates/_core/_core.cfg +++ b/modules/mx_phpbb2blocks/templates/_core/_core.cfg @@ -20,7 +20,7 @@ // // Do not alter this line! // -define(MX_TEMPLATE_CONFIG, TRUE); +define('MX_TEMPLATE_CONFIG', TRUE); $mx_template_config = true; // ------------------------------------------------------------------------- diff --git a/modules/mx_phpbb2blocks/templates/prosilver/mx_forum.html b/modules/mx_phpbb2blocks/templates/prosilver/mx_forum.html index ea813f13..b4f1fd41 100644 --- a/modules/mx_phpbb2blocks/templates/prosilver/mx_forum.html +++ b/modules/mx_phpbb2blocks/templates/prosilver/mx_forum.html @@ -1,34 +1,96 @@ -
    -
    - - -
      - -
    • -
      -
      - {catrow.forumrow.FORUM_NAME}
      - {catrow.forumrow.FORUM_DESC} -
      {catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS} -
      -
      {catrow.forumrow.TOPICS}
      -
      {catrow.forumrow.POSTS}
      + + +
      +
      + + +
        + + + + +
      • + +
        +
        + +
        + + + {forumrow.FORUM_IMAGE} + {forumrow.FORUM_NAME} +
        {forumrow.FORUM_DESC} + +
        {forumrow.L_MODERATOR_STR}{L_COLON} {forumrow.MODERATORS} + + + +
        {forumrow.L_SUBFORUM_STR}{L_COLON} + + {forumrow.subforum.SUBFORUM_NAME}{L_COMMA_SEPARATOR} + + + + + + + +
        +
        + +
        {L_REDIRECTS}{L_COLON} {forumrow.CLICKS}
        + +
        {forumrow.TOPICS} {L_TOPICS}
        +
        {forumrow.POSTS} {L_POSTS}
        - {catrow.forumrow.LAST_POST} + + {UNAPPROVED_IMG} + + {UNAPPROVED_POST_IMG} + + {L_LAST_POST} + + + {forumrow.LAST_POST_SUBJECT_TRUNCATED}
        + + {L_POST_BY_AUTHOR} {forumrow.LAST_POSTER_FULL} + {LAST_POST_IMG}
        {forumrow.LAST_POST_TIME}{L_NO_POSTS}
         
        -
        -
      • - -
      - -
      -
      + +
       
      + +
      + +
    • + + + + + +
    + + +
    + +
    + + + + diff --git a/modules/mx_phpbb2blocks/templates/prosilver/mx_last_msg.html b/modules/mx_phpbb2blocks/templates/prosilver/mx_last_msg.html index 8e7d692a..24364ca6 100644 --- a/modules/mx_phpbb2blocks/templates/prosilver/mx_last_msg.html +++ b/modules/mx_phpbb2blocks/templates/prosilver/mx_last_msg.html @@ -1,10 +1,10 @@
    -
    {no_row.L_NO_ITEMS}
    +
    {no_row.L_NO_ITEMS}
    -
    +
    {msg_row.L_TOPIC_FOLDER_ALT} diff --git a/modules/mx_phpbb2blocks/templates/prosilver/mx_statistics.html b/modules/mx_phpbb2blocks/templates/prosilver/mx_statistics.html index 25d4668e..80641484 100644 --- a/modules/mx_phpbb2blocks/templates/prosilver/mx_statistics.html +++ b/modules/mx_phpbb2blocks/templates/prosilver/mx_statistics.html @@ -7,31 +7,31 @@

    {L_ADMIN_STATISTICS}

    -
    + {modulerow.U_MENU_ICON}{modulerow.MENU_NAME} +
    - +
    + - - - - + + + + - - - - + + + +
    {L_STATISTIC}{L_VALUE}{L_STATISTIC}{L_VALUE}{L_STATISTIC}{L_VALUE}{L_STATISTIC}{L_VALUE}
    {adminrow.STATISTIC}{adminrow.VALUE}{adminrow.STATISTIC2}{adminrow.VALUE2}{adminrow.STATISTIC}{adminrow.VALUE}{adminrow.STATISTIC2}{adminrow.VALUE2}

    {L_TOP_POSTERS}

    - +
    @@ -44,10 +44,10 @@

    {L_TOP_POSTERS}

    - - - - + + + + +
    {L_EMOTICONS}
    + + + + +
    {smilies_row.smilies_col.SMILEY_DESC}
    + + + + + +
    {L_MORE_SMILIES}
    + + + + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    +
     {L_FONT_COLOR}: +  {L_FONT_SIZE}: +
    +
    {L_BBCODE_CLOSE_TAGS}
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    {L_OPTIONS}
    {HTML_STATUS}
    {BBCODE_STATUS}
    {SMILIES_STATUS}
    +
    +
    + +
    +
    {L_ALLOW_BBCODE}
    +
    {L_YES}   {L_NO}
    +
    + + +
    +
    {L_ALLOW_HTML}
    +
    {L_YES}   {L_NO}
    +
    + + +
    +
    {L_HTML_TAGS}
    +
    +
    + + +
    +
    {L_ALLOW_SMILIES}
    +
    {L_YES}   {L_NO}
    +
    + + +
    +
    {L_BLOCK_STYLE}
    {L_BLOCK_STYLE_EXPLAIN}
    +
    {L_YES}   {L_NO}
    +
    + + +
    +
    {L_TEXT_STYLE}
    {L_TEXT_STYLE_EXPLAIN}
    +
    {S_TEXT_STYLE}
    +
    + + +
    +
    {L_TITLE_STYLE}
    {L_TITLE_STYLE_EXPLAIN}
    +
    {L_YES}   {L_NO}
    +
    + +
    +
    +
    + +
    +
    {L_COLUMN}
    +
    +
    + + {POLLBOX} +
    +
    {S_HIDDEN_FORM_FIELDS} 
    +
    + + +
    +
    +
    {S_TIMEZONE}
    +
    +
    + + + + + + +
    +
    +
    +
    +
    {JUMPBOX}
    +
    +
    +
    + +
    + diff --git a/modules/mx_textblocks/templates/prosilver2/mx_textblock_html.html b/modules/mx_textblocks/templates/prosilver2/mx_textblock_html.html new file mode 100644 index 00000000..7054d67d --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/mx_textblock_html.html @@ -0,0 +1,11 @@ +
    +
    +
    +
    +
    +
    {U_TEXT}
    +
    +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_textblocks/templates/prosilver2/mx_textblock_multi.html b/modules/mx_textblocks/templates/prosilver2/mx_textblock_multi.html new file mode 100644 index 00000000..8bc95df4 --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/mx_textblock_multi.html @@ -0,0 +1,37 @@ +
    +
    +
    +
    + +
    +
    +
    + {L_TOC}

    + + + {switch_toc.pages.TOC_ITEM} + + +
    +
    + +
    +
    {U_TEXT}
    +
    + +
    +
    +
    +

    {L_GOTO_PAGE} + + + {switch_pages.pages.PAGE_LINK} + + +
    +
    + +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_textblocks/templates/prosilver2/mx_textblock_preview.html b/modules/mx_textblocks/templates/prosilver2/mx_textblock_preview.html new file mode 100644 index 00000000..6d006c84 --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/mx_textblock_preview.html @@ -0,0 +1,11 @@ +
    +
    +
    +
     {BLOCK_TITLE}  +
    +
    {BLOCK_INFO}
    +
    +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_translator/LanguageTools.pak b/modules/mx_translator/LanguageTools.pak new file mode 100644 index 00000000..0bf0e609 --- /dev/null +++ b/modules/mx_translator/LanguageTools.pak @@ -0,0 +1,2 @@ +module=+:52=+:Language Tools=+:modules/mx_translator/=+:Change installed language packs=+:1 +function=+:0=+:0=+:0=+:endoflist=+:0=+:0 diff --git a/modules/mx_translator/acp/translator_helper.php b/modules/mx_translator/acp/translator_helper.php new file mode 100644 index 00000000..58558a96 --- /dev/null +++ b/modules/mx_translator/acp/translator_helper.php @@ -0,0 +1,146 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + */ + +namespace orynider\mx_translator\acp; + +/** + * Class to handle allowing or disallowing mx_translator services + */ +class mx_translator_helper +{ + /** @var \orynider\cache\driver\driver_interface $cache */ + protected $cache; + + /** @var \orynider\config\config $config */ + protected $config; + + /** @var \orynider\file_downloader $file_downloader */ + protected $file_downloader; + + /** @var \orynider\language\language $language */ + protected $language; + + /** @var \orynider\log\log $log */ + protected $log; + + /** @var \orynider\user $user */ + protected $user; + + /** @var bool Use SSL or not */ + protected $use_ssl = false; + + /** + * Constructor + * + * @param \orynider\cache\driver\driver_interface $cache + * @param \orynider\config\config $config + * @param \orynider\file_downloader $file_downloader + * @param \orynider\language\language $language + * @param \orynider\log\log $log + * @param \orynider\user $user + */ + public function __construct(\phpbb\cache\driver\driver_interface $cache, \phpbb\config\config $config, \phpbb\file_downloader $file_downloader, \phpbb\language\language $language, \phpbb\log\log $log, \phpbb\user $user) + { + $this->cache = $cache; + $this->config = $config; + $this->file_downloader = $file_downloader; + $this->language = $language; + $this->log = $log; + $this->user = $user; + } + + /** + * Obtains the latest mx_translator services information from phpBB + * + * @param bool $force_update Ignores cached data. Defaults to false. + * @param bool $force_cache Force the use of the cache. Override $force_update. + * + * @throws \RuntimeException + * + * @return void + */ + public function set_mx_translator_services($force_update = false, $force_cache = false) + { + $cache_key = '_versioncheck_mx_translator_' . $this->use_ssl; + + $info = $this->cache->get($cache_key); + + if ($info === false && $force_cache) + { + throw new \RuntimeException($this->language->lang('VERSIONCHECK_FAIL')); + } + else if ($info === false || $force_update) + { + try + { + $info = $this->file_downloader->get('www.phpbb.com', '/mx_translator', 'enabled', 443); + } + catch (\orynider\exception\runtime_exception $exception) + { + $prepare_parameters = array_merge(array($exception->getMessage()), $exception->get_parameters()); + throw new \RuntimeException(call_user_func_array(array($this->language, 'lang'), $prepare_parameters)); + } + + if ($info === '0') + { + $this->set_mx_translator_configs(array( + 'allow_mx_translator_phpbb' => false, + )); + } + else + { + $info = '1'; + $this->set_mx_translator_configs(array( + 'allow_mx_translator_phpbb' => true, + )); + } + + $this->cache->put($cache_key, $info, 86400); // 24 hours + } + } + + /** + * Sets mx_translator service configs as determined by phpBB + * + * @param array $data Array of mx_translator file data. + * + * @return void + */ + protected function set_mx_translator_configs($data) + { + $mx_translator_configs = array( + 'allow_mx_translator_phpbb', + 'phpbb_mx_translator_api_key', + ); + + foreach ($mx_translator_configs as $cfg_name) + { + if (array_key_exists($cfg_name, $data) && ($data[$cfg_name] != $this->config[$cfg_name] || !isset($this->config[$cfg_name]))) + { + $this->config->set($cfg_name, $data[$cfg_name]); + } + } + + $this->config->set('mx_translator_last_gc', time(), false); + } + + /** + * Log a mx_translator error message to the error log + * + * @param string $message The error message + */ + public function log_mx_translator_error($message) + { + $user_id = empty($this->user->data) ? ANONYMOUS : $this->user->data['user_id']; + $user_ip = empty($this->user->ip) ? '' : $this->user->ip; + + $this->log->add('critical', $user_id, $user_ip, 'LOG_MX_TRANSLATOR_CHECK_FAIL', false, array($message)); + } +} diff --git a/modules/mx_translator/acp/translator_info.php b/modules/mx_translator/acp/translator_info.php new file mode 100644 index 00000000..bd80cafc --- /dev/null +++ b/modules/mx_translator/acp/translator_info.php @@ -0,0 +1,48 @@ + '\orynider\mx_translator\acp\translator_module', + 'title' => 'ACP_TRANSLATOR', + 'modes' => array( + 'config' => array( + 'title' => 'ACP_TRANSLATOR_CONFIG', + 'auth' => 'ext_orynider/mx_translator && acl_a_board', + 'cat' => array('ACP_TRANSLATOR') + ), + 'MXP' => array( + 'title' => 'ACP_TRANSLATE_MX_PORTAL', + 'auth' => 'ext_orynider/mx_translator && acl_a_board', + 'cat' => array('ACP_TRANSLATOR') + ), + 'MODS' => array( + 'title' => 'ACP_TRANSLATE_MX_MODULES', + 'auth' => 'ext_orynider/mx_translator && acl_a_board', + 'cat' => array('ACP_TRANSLATOR') + ), + 'PHPBB' => array( + 'title' => 'ACP_TRANSLATE_PHPBB_LANG', + 'auth' => 'ext_orynider/mx_translator && acl_a_board', + 'cat' => array('ACP_TRANSLATOR') + ), + 'phpbb_ext' => array( + 'title' => 'ACP_TRANSLATE_PHPBB_EXT', + 'auth' => 'ext_orynider/mx_translator && acl_a_board', + 'cat' => array('ACP_TRANSLATOR') + ), + ), + ); + } +} diff --git a/modules/mx_translator/acp/translator_module.php b/modules/mx_translator/acp/translator_module.php new file mode 100644 index 00000000..d140ae12 --- /dev/null +++ b/modules/mx_translator/acp/translator_module.php @@ -0,0 +1,171 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) + * + */ +namespace orynider\mx_translator\acp; + +/* +if ( !empty( $setmodules)) +{ + $module['Language_tools']['ACP_TRANSLATOR_CONFIG'] = mx_append_sid( $admin_module_root_path . $basename . '?modes=config'); + $module['Language_tools']['ACP_TRANSLATE_MX_PORTAL'] = mx_append_sid( $admin_module_root_path . $basename . '?s=MXP&modes=translate'); + $module['Language_tools']['ACP_TRANSLATE_MX_MODULES'] = mx_append_sid( $admin_module_root_path . $basename . '?s=MODS&modes=translate'); + $module['Language_tools']['ACP_TRANSLATE_PHPBB_LANG'] = mx_append_sid( $admin_module_root_path . $basename . '?s=PHPBB&modes=translate'); + $module['Language_tools']['ACP_TRANSLATE_PHPBB_EXT'] = mx_append_sid( $admin_module_root_path . $basename . '?s=phpbb_ext&modes=translate'); + return; +} +*/ + +/** +* mx_langtools ACP module + */ +$basename = basename( __FILE__); +$mx_root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_root_path; +$module_root_path = $phpbb_root_path . 'ext/orynider/mx_translator/'; +$admin_module_root_path = $module_root_path . 'acp/'; +$phpEx = substr( __FILE__, strrpos( __FILE__, '.') + 1); +define('MODULE_URL', PHPBB_URL . 'ext/orynider/mx_translator/'); +//define('IN_AJAX', (isset($_GET['ajax']) && ($_GET['ajax'] == 1) && ($_SERVER['HTTP_SEREFER'] = $_SERVER['PHP_SELF'])) ? 1 : 0); +define('IN_PORTAL', 1); +define('IN_ADMIN', 1); + +$no_page_header = 'no_page_header'; +//require_once($mx_root_path . 'admin/pagestart.' . $phpEx); +//include_once($module_root_path . 'includes/translator.' . $phpEx); + +//@error_reporting( E_ALL || !E_NOTICE); +//$mxp_translator = new mxp_translator(); +/** +* Class mxp_translator_module extends mxp_translator +* Displays a message to the user and allows him to send an email +*/ +class translator_module +{ + var $tpl_name; + var $page_title; + var $request; + var $config; + var $lang; + var $log; + var $template; + var $user; + + var $u_action; + var $parent_id = 0; + /**#@+ + * mx_user class specific vars + * + */ + var $template_path = 'templates/'; + var $theme = array(); + var $template_name = ''; + var $template_names = array(); + + var $default_template_name = 'all'; + + var $default_current_template_path = ''; + var $default_current_style_path = ''; + + var $user_current_template_path = ''; + var $user_current_style_path = ''; + + var $style_name = ''; + var $style_path = 'styles/'; + + var $default_style_name = 'prosilver'; + var $default_style2_name = 'subsilver2'; + + var $default_module_style = ''; + var $module_lang_path = 'ext/orynider/mx_langtools/language/'; + + var $is_admin = false; + var $keyoptions = false; + + function main($id, $mode = 'generate') + { + global $user, $template, $request; + global $config, $phpbb_container; + + /** @var \phpbb\language\language $lang */ + $this->lang = $phpbb_container->get('language'); + /** @var \phpbb\request\request $request */ + $this->request = $phpbb_container->get('request'); + /** @var \phpbb\log\log $log */ + $this->log = $phpbb_container->get('log'); + + // Requests + $action = $request->variable('action', ''); + $page_id = $request->variable('page_id', 0); + $currency_id = $request->variable('currency_id', 0); + + /* general vars */ + $mode = $request->variable('mode', $mode); + $start = $request->variable('start', 0); + $s = $request->variable('mode', 'generate'); + /* */ + + /* Get an instance of the admin controller */ + $mxp_translator = $phpbb_container->get('orynider.mx_translator.admin.controller'); + + // Make the $u_action url available in the admin controller + //$mxp_translator->set_page_url($this->u_action); + + /** Load the "settings" or "manage" module modes **/ + switch ($mode) + { + case 'config': + // Load a template from adm/style for our ACP page + $this->tpl_name = 'acp_translator_config'; + // Set the page title for our ACP page + $this->page_title = $this->lang->lang('ACP_TRANSLATOR'); + // Load the display options handle in the admin controller + $mxp_translator->display_settings($this->tpl_name, $this->page_title); + break; + case 'translate': + default: + switch ($s) + { + case 'MXP': + // Load a template from adm/style for our ACP page + $this->tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $this->page_title = $this->lang->lang('ACP_TRANSLATE_MX_PORTAL'); + // Load the display options handle in the admin controller + $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + case 'MODS': + // Load a template from adm/style for our ACP page + $this->tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $this->page_title = $this->lang->lang('ACP_TRANSLATE_MX_MODULES'); + // Load the display options handle in the admin controller + $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + case 'PHPBB': + // Load a template from adm/style for our ACP page + $this->tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $this->page_title = $this->lang->lang('ACP_TRANSLATE_PHPBB_LANG'); + // Load the display options handle in the admin controller + $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + case 'phpbb_ext': + // Load a template from adm/style for our ACP page + $this->tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $this->page_title = $this->lang->lang('ACP_TRANSLATE_PHPBB_EXT'); + // Load the display options handle in the admin controller + $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + } + break; + + } + } +} // class mx_user +// THE END diff --git a/modules/mx_translator/adm/style/acp_translator_config.html b/modules/mx_translator/adm/style/acp_translator_config.html new file mode 100644 index 00000000..b7a14c76 --- /dev/null +++ b/modules/mx_translator/adm/style/acp_translator_config.html @@ -0,0 +1,37 @@ +{% INCLUDE 'overall_header.html' %} +

    {{ lang('ACP_TRANSLATOR_CONFIG') }}

    + +

    {{ lang('ACP_TRANSLATOR_CONFIG_EXPLAIN') }}

    + + + +
    + {{ lang('ACP_TRANSLATOR_CONFIG_SET') }} +
    +
    +
    {{ lang('TRANSLATOR_DEFAULT_LANG_EXPLAIN') }} +
    +
    + +
    +
    +
    +
    +
    {{ lang('TRANSLATOR_CHOICE_LANG_EXPLAIN') }} +
    +
    + +
    +
    + + +

    + +   + + {{ S_FORM_TOKEN }} + +

    + + +{% INCLUDE 'overall_footer.html' %} diff --git a/modules/mx_translator/adm/style/lang_translate.html b/modules/mx_translator/adm/style/lang_translate.html new file mode 100644 index 00000000..4ed2ce6e --- /dev/null +++ b/modules/mx_translator/adm/style/lang_translate.html @@ -0,0 +1,110 @@ +{% INCLUDE 'overall_header.html' %} + +

    {L_LANGUAGES_TOOLS}

    +

    {L_TRANSLATE_DESCRIPTION}

    + +
    +
    + +

    {L_TRANSLATE}

    +

    {L_FILE}: {FILE_FULL_ROOT_PATH_TRANSLATE} • +{L_FILE_IS_WRITABLE} +{L_FILE_IS_UNWRITABLE} + • {L_FILE_CHARSET}: {L_ENCODING} +

    + + + +
    {L_RANK}
    {users.RANK}{users.USERNAME}{users.POSTS}{users.PERCENTAGE}%{users.RANK}{users.USERNAME}{users.POSTS}{users.PERCENTAGE}% @@ -71,7 +71,7 @@

    {L_TOP_POSTERS}

    {L_MOST_VIEWED}

    - +
    @@ -82,9 +82,9 @@

    {L_MOST_VIEWED}

    - - - + + + @@ -92,7 +92,7 @@

    {L_MOST_VIEWED}

    {L_MOST_ACTIVE}

    -
    {L_RANK}
    {topicviews.RANK}{topicviews.VIEWS}{topicviews.TITLE}{topicviews.RANK}{topicviews.VIEWS}{topicviews.TITLE}
    +
    @@ -103,9 +103,9 @@

    {L_MOST_ACTIVE}

    - - - + + + diff --git a/modules/mx_phpbb2blocks/templates/prosilver/prosilver.cfg b/modules/mx_phpbb2blocks/templates/prosilver/prosilver.cfg new file mode 100644 index 00000000..5f987f35 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/prosilver/prosilver.cfg @@ -0,0 +1,95 @@ +img('topic_read.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_new'] = "$current_template_images/" . $mx_user->img('topic_unread.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_announce'] = "$current_template_images/" . $mx_user->img('announce_read.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_announce_new'] = "$current_template_images/" . $mx_user->img('announce_unread.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_sticky'] = "$current_template_images/" . $mx_user->img('topic_read_mine.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_sticky_new'] = "$current_template_images/" . $mx_user->img('topic_unread_mine.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_locked'] = "$current_template_images/" . $mx_user->img('topic_read_locked.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_locked_new'] = "$current_template_images/" . $mx_user->img('topic_unread_locked.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_hot'] = "$current_template_images/" . $mx_user->img('topic_read_hot.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_hot_new'] = "$current_template_images/" . $mx_user->img('topic_unread_hot.gif', '', '', '', 'filename'); +$mx_images['last_msg_icon_newest_reply'] = "$current_template_images/" . $mx_user->img('icon_newest_reply.gif', '', '', '', 'filename'); +$mx_images['last_msg_icon_latest_reply'] = "$current_template_images/" . $mx_user->img('icon_latest_reply.gif', '', '', '', 'filename'); + +// +// Announcement Block +// +$mx_images['mx_folder'] = "$current_template_images/" . $mx_user->img('topic_read.gif', '', '', '', 'filename'); +$mx_images['mx_folder_new'] = "$current_template_images/" . $mx_user->img('topic_unread.gif', '', '', '', 'filename'); +$mx_images['mx_folder_announce'] = "$current_template_images/" . $mx_user->img('announce_read.gif', '', '', '', 'filename'); +$mx_images['mx_folder_announce_new'] = "$current_template_images/" . $mx_user->img('announce_unread.gif', '', '', '', 'filename'); +$mx_images['mx_folder_sticky'] = "$current_template_images/" . $mx_user->img('topic_read_mine.gif', '', '', '', 'filename'); +$mx_images['mx_folder_sticky_new'] = "$current_template_images/" . $mx_user->img('topic_unread_mine.gif', '', '', '', 'filename'); +$mx_images['mx_folder_locked'] = "$current_template_images/" . $mx_user->img('topic_read_locked.gif', '', '', '', 'filename'); +$mx_images['mx_folder_locked_new'] = "$current_template_images/" . $mx_user->img('topic_unread_locked.gif', '', '', '', 'filename'); +$mx_images['mx_folder_hot'] = "$current_template_images/" . $mx_user->img('topic_read_hot.gif', '', '', '', 'filename'); +$mx_images['mx_folder_hot_new'] = "$current_template_images/" . $mx_user->img('topic_unread_hot.gif', '', '', '', 'filename'); +$mx_images['mx_icon_newest_reply'] = "$current_template_images/" . $mx_user->img('icon_newest_reply.gif', '', '', '', 'filename'); +$mx_images['mx_icon_latest_reply'] = "$current_template_images/" . $mx_user->img('icon_latest_reply.gif', '', '', '', 'filename'); + +// +// Forum Block +// +$mx_images['mx_forum'] = "$current_template_images/" . $mx_user->img('forum_read.gif', '', '27', '', 'filename'); +$mx_images['mx_forum_new'] = "$current_template_images/" . $mx_user->img('forum_unread.gif', '', '', '', 'filename'); +$mx_images['mx_forum_locked'] = "$current_template_images/" . $mx_user->img('forum_read_locked.gif', '', '', '', 'filename'); + +// +// Poll/Statistics Block +// +$mx_images['mx_voting_graphic'] = $images['voting_graphic']; // Array() +$mx_images['mx_voting_graphic'][0] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][1] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][2] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][3] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][4] = "$current_template_images/voting_bar.gif"; + +$mx_images['mx_vote_bar'] = PHPBB_URL . $images['mx_graphics']['phpbb_icons'] . "/voting_bar.gif"; +$mx_images['mx_vote_lcap'] = PHPBB_URL . $images['mx_graphics']['phpbb_icons'] . "/vote_lcap.gif"; +$mx_images['mx_vote_rcap'] = PHPBB_URL . $images['mx_graphics']['phpbb_icons'] . "/vote_rcap.gif"; +?> \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/prosilver2/mx_announce.html b/modules/mx_phpbb2blocks/templates/prosilver2/mx_announce.html new file mode 100644 index 00000000..8cc34bda --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/prosilver2/mx_announce.html @@ -0,0 +1,35 @@ + +
    +
    +
    +
    +
    +
    +

    + + {postrow.TITLE} + + + {postrow.L_TOPIC_FOLDER_ALT} + {postrow.TITLE} +

    + {postrow.MESSAGE} +
    +
    +
    +
    +
    +
    +
    +
    {postrow.L_AUTHOR}: {postrow.POSTER_NAME}
    +
    {postrow.L_POSTED}:
    {postrow.FIRST_POST_TIME}
    +
    {postrow.L_REPLIES}:
    {postrow.REPLIES}
    +
    {postrow.L_VIEWS}:
    {postrow.VIEWS}
    +
    {postrow.L_LASTPOST}:
    {postrow.LAST_POST_TIME} {postrow.LAST_POST_AUTHOR} {postrow.LAST_POST_IMG}
    +
    +
    +
    + +
    +
    + \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/prosilver2/mx_forum.html b/modules/mx_phpbb2blocks/templates/prosilver2/mx_forum.html new file mode 100644 index 00000000..ea813f13 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/prosilver2/mx_forum.html @@ -0,0 +1,34 @@ +
    +
    + + +
      + +
    • +
      +
      + {catrow.forumrow.FORUM_NAME}
      + {catrow.forumrow.FORUM_DESC} +
      {catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS} +
      +
      {catrow.forumrow.TOPICS}
      +
      {catrow.forumrow.POSTS}
      +
      + {catrow.forumrow.LAST_POST} +
      +
      +
    • + +
    + +
    +
    diff --git a/modules/mx_phpbb2blocks/templates/prosilver2/mx_last_msg.html b/modules/mx_phpbb2blocks/templates/prosilver2/mx_last_msg.html new file mode 100644 index 00000000..8e7d692a --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/prosilver2/mx_last_msg.html @@ -0,0 +1,26 @@ +
    +
    + +
    {no_row.L_NO_ITEMS}
    + + +
    +
    +
    + {msg_row.L_TOPIC_FOLDER_ALT} +
    + +
    + {msg_row.LAST_MSG_DATE} + {msg_row.TOPIC_AUTHOR} {msg_row.LAST_POST_AUTHOR}{msg_row.LAST_POST_IMG} +
    +
    +
    + +
    {PAGINATION}
    +
    + +
    diff --git a/modules/mx_phpbb2blocks/templates/prosilver2/mx_statistics.html b/modules/mx_phpbb2blocks/templates/prosilver2/mx_statistics.html new file mode 100644 index 00000000..25d4668e --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/prosilver2/mx_statistics.html @@ -0,0 +1,117 @@ + +
    +
    +
    +

    {L_ADMIN_STATISTICS}

    +
    {L_RANK}
    {topicreplies.RANK}{topicreplies.REPLIES}{topicreplies.TITLE}{topicreplies.RANK}{topicreplies.REPLIES}{topicreplies.TITLE}
    + + + + + + + + + + + + + + + + + + + + +
    {L_STATISTIC}{L_VALUE}{L_STATISTIC}{L_VALUE}
    {adminrow.STATISTIC}{adminrow.VALUE}{adminrow.STATISTIC2}{adminrow.VALUE2}
    + +

    {L_TOP_POSTERS}

    + + + + + + + + + + + + + + + + + + + + + +
    {L_RANK}{L_USERNAME}{L_POSTS}{L_PERCENTAGE}{L_GRAPH}
    {users.RANK}{users.USERNAME}{users.POSTS}{users.PERCENTAGE}% + + + + +
    {users.PERCENTAGE}%
    + + + + +
    {users.PERCENTAGE}%
    + + + + +
    {users.PERCENTAGE}%
    +
    +
    +

    {L_MOST_VIEWED}

    + + + + + + + + + + + + + + + + + +
    {L_RANK}{L_VIEWS}{L_TOPIC}
    {topicviews.RANK}{topicviews.VIEWS}{topicviews.TITLE}
    +
    +
    +

    {L_MOST_ACTIVE}

    + + + + + + + + + + + + + + + + + +
    {L_RANK}{L_REPLIES}{L_TOPIC}
    {topicreplies.RANK}{topicreplies.REPLIES}{topicreplies.TITLE}
    +
    +
    + + + \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/prosilver2/prosilver2.cfg b/modules/mx_phpbb2blocks/templates/prosilver2/prosilver2.cfg new file mode 100644 index 00000000..5f987f35 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/prosilver2/prosilver2.cfg @@ -0,0 +1,95 @@ +img('topic_read.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_new'] = "$current_template_images/" . $mx_user->img('topic_unread.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_announce'] = "$current_template_images/" . $mx_user->img('announce_read.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_announce_new'] = "$current_template_images/" . $mx_user->img('announce_unread.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_sticky'] = "$current_template_images/" . $mx_user->img('topic_read_mine.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_sticky_new'] = "$current_template_images/" . $mx_user->img('topic_unread_mine.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_locked'] = "$current_template_images/" . $mx_user->img('topic_read_locked.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_locked_new'] = "$current_template_images/" . $mx_user->img('topic_unread_locked.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_hot'] = "$current_template_images/" . $mx_user->img('topic_read_hot.gif', '', '', '', 'filename'); +$mx_images['last_msg_folder_hot_new'] = "$current_template_images/" . $mx_user->img('topic_unread_hot.gif', '', '', '', 'filename'); +$mx_images['last_msg_icon_newest_reply'] = "$current_template_images/" . $mx_user->img('icon_newest_reply.gif', '', '', '', 'filename'); +$mx_images['last_msg_icon_latest_reply'] = "$current_template_images/" . $mx_user->img('icon_latest_reply.gif', '', '', '', 'filename'); + +// +// Announcement Block +// +$mx_images['mx_folder'] = "$current_template_images/" . $mx_user->img('topic_read.gif', '', '', '', 'filename'); +$mx_images['mx_folder_new'] = "$current_template_images/" . $mx_user->img('topic_unread.gif', '', '', '', 'filename'); +$mx_images['mx_folder_announce'] = "$current_template_images/" . $mx_user->img('announce_read.gif', '', '', '', 'filename'); +$mx_images['mx_folder_announce_new'] = "$current_template_images/" . $mx_user->img('announce_unread.gif', '', '', '', 'filename'); +$mx_images['mx_folder_sticky'] = "$current_template_images/" . $mx_user->img('topic_read_mine.gif', '', '', '', 'filename'); +$mx_images['mx_folder_sticky_new'] = "$current_template_images/" . $mx_user->img('topic_unread_mine.gif', '', '', '', 'filename'); +$mx_images['mx_folder_locked'] = "$current_template_images/" . $mx_user->img('topic_read_locked.gif', '', '', '', 'filename'); +$mx_images['mx_folder_locked_new'] = "$current_template_images/" . $mx_user->img('topic_unread_locked.gif', '', '', '', 'filename'); +$mx_images['mx_folder_hot'] = "$current_template_images/" . $mx_user->img('topic_read_hot.gif', '', '', '', 'filename'); +$mx_images['mx_folder_hot_new'] = "$current_template_images/" . $mx_user->img('topic_unread_hot.gif', '', '', '', 'filename'); +$mx_images['mx_icon_newest_reply'] = "$current_template_images/" . $mx_user->img('icon_newest_reply.gif', '', '', '', 'filename'); +$mx_images['mx_icon_latest_reply'] = "$current_template_images/" . $mx_user->img('icon_latest_reply.gif', '', '', '', 'filename'); + +// +// Forum Block +// +$mx_images['mx_forum'] = "$current_template_images/" . $mx_user->img('forum_read.gif', '', '27', '', 'filename'); +$mx_images['mx_forum_new'] = "$current_template_images/" . $mx_user->img('forum_unread.gif', '', '', '', 'filename'); +$mx_images['mx_forum_locked'] = "$current_template_images/" . $mx_user->img('forum_read_locked.gif', '', '', '', 'filename'); + +// +// Poll/Statistics Block +// +$mx_images['mx_voting_graphic'] = $images['voting_graphic']; // Array() +$mx_images['mx_voting_graphic'][0] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][1] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][2] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][3] = "$current_template_images/voting_bar.gif"; +$mx_images['mx_voting_graphic'][4] = "$current_template_images/voting_bar.gif"; + +$mx_images['mx_vote_bar'] = PHPBB_URL . $images['mx_graphics']['phpbb_icons'] . "/voting_bar.gif"; +$mx_images['mx_vote_lcap'] = PHPBB_URL . $images['mx_graphics']['phpbb_icons'] . "/vote_lcap.gif"; +$mx_images['mx_vote_rcap'] = PHPBB_URL . $images['mx_graphics']['phpbb_icons'] . "/vote_rcap.gif"; +?> \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/subSilver/images/index.htm b/modules/mx_phpbb2blocks/templates/subSilver/images/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/images/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_phpbb2blocks/templates/subSilver/images/thumb_globe.gif b/modules/mx_phpbb2blocks/templates/subSilver/images/thumb_globe.gif new file mode 100644 index 00000000..b120028c Binary files /dev/null and b/modules/mx_phpbb2blocks/templates/subSilver/images/thumb_globe.gif differ diff --git a/modules/mx_phpbb2blocks/templates/subSilver/images/thumb_news.gif b/modules/mx_phpbb2blocks/templates/subSilver/images/thumb_news.gif new file mode 100644 index 00000000..35bc0271 Binary files /dev/null and b/modules/mx_phpbb2blocks/templates/subSilver/images/thumb_news.gif differ diff --git a/modules/mx_phpbb2blocks/templates/subSilver/index.htm b/modules/mx_phpbb2blocks/templates/subSilver/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_phpbb2blocks/templates/subSilver/mx_announce.tpl b/modules/mx_phpbb2blocks/templates/subSilver/mx_announce.tpl new file mode 100644 index 00000000..e1446cd3 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/mx_announce.tpl @@ -0,0 +1,41 @@ + + + + + + + + +
    + + + + + + +
    +

    + + {postrow.TITLE} + + + {postrow.L_TOPIC_FOLDER_ALT} + {postrow.TITLE} +

    + {postrow.MESSAGE} +
    +
    + + + + + + + + +
    {postrow.L_AUTHOR}: {postrow.POSTER_NAME}{postrow.L_POSTED}:
    {postrow.FIRST_POST_TIME}
    {postrow.L_REPLIES}:
    {postrow.REPLIES}
    {postrow.L_VIEWS}:
    {postrow.VIEWS}
    {postrow.L_LASTPOST}:
    {postrow.LAST_POST_TIME} {postrow.LAST_POST_AUTHOR} {postrow.LAST_POST_IMG}
    +
    +
    + \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/subSilver/mx_forum.tpl b/modules/mx_phpbb2blocks/templates/subSilver/mx_forum.tpl new file mode 100644 index 00000000..d3838160 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/mx_forum.tpl @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + +
     {L_FORUM}  {L_TOPICS}  {L_POSTS}  {L_LASTPOST} 
    {catrow.CAT_DESC} 
    {catrow.forumrow.L_FORUM_FOLDER_ALT} {catrow.forumrow.FORUM_NAME}
    +
    {catrow.forumrow.FORUM_DESC}
    +
    {catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS}
    {catrow.forumrow.TOPICS}{catrow.forumrow.POSTS} {catrow.forumrow.LAST_POST}
    + + + + + + +
    {L_MARK_FORUMS_READ}{S_TIMEZONE}
    + +
    + + + + + + + + + + + + +
    {L_NEW_POSTS}{L_NEW_POSTS}  {L_NO_NEW_POSTS}{L_NO_NEW_POSTS}  {L_FORUM_LOCKED}{L_FORUM_LOCKED}
    \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/subSilver/mx_last_msg.tpl b/modules/mx_phpbb2blocks/templates/subSilver/mx_last_msg.tpl new file mode 100644 index 00000000..05fcbe41 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/mx_last_msg.tpl @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + +
    {no_row.L_NO_ITEMS}
    + + {msg_row.L_TOPIC_FOLDER_ALT} + + + + {msg_row.LAST_MSG} +
    + + {msg_row.FORUM_NAME} + +
    + + {msg_row.LAST_MSG_DATE} + + + {msg_row.TOPIC_AUTHOR} {msg_row.LAST_POST_AUTHOR}{msg_row.LAST_POST_IMG} + +
    +
    {PAGINATION}
    \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/subSilver/mx_poll_ballot.tpl b/modules/mx_phpbb2blocks/templates/subSilver/mx_poll_ballot.tpl new file mode 100644 index 00000000..681e0afc --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/mx_poll_ballot.tpl @@ -0,0 +1,33 @@ + + + + +

    +
    + + + + + + + + + + + + + +
    {POLL_QUESTION}
    + + + + + + + +
     {poll_option.POLL_OPTION_CAPTION}
    +
    + +
    {L_VIEW_RESULTS}
    {S_HIDDEN_FIELDS} +
    +
    \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/subSilver/mx_poll_result.tpl b/modules/mx_phpbb2blocks/templates/subSilver/mx_poll_result.tpl new file mode 100644 index 00000000..88e24a6c --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/mx_poll_result.tpl @@ -0,0 +1,40 @@ + + + + +

    + + + + + + + + + + +
    {POLL_QUESTION}
    + + + + + + + + + + + + +
    {poll_option.POLL_OPTION_CAPTION}
    + + + + + + +
    {poll_option.POLL_OPTION_PERCENT}
    +
     {poll_option.POLL_OPTION_PERCENT} [{poll_option.POLL_OPTION_RESULT}]
    +
    {L_TOTAL_VOTES} : {TOTAL_VOTES}
    +
    +
    \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/subSilver/mx_statistics.tpl b/modules/mx_phpbb2blocks/templates/subSilver/mx_statistics.tpl new file mode 100644 index 00000000..23b97157 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/mx_statistics.tpl @@ -0,0 +1,124 @@ + + + + + + + +
    {L_ADMIN_STATISTICS}
    + + + + + + + + + + + +
    {L_STATISTIC} + {L_VALUE} + {L_STATISTIC} + {L_VALUE} +
    {adminrow.STATISTIC}{adminrow.VALUE}{adminrow.STATISTIC2}{adminrow.VALUE2}
    +
    +
    + + + + + + + +
    {L_TOP_POSTERS}
    + + + + + + + + + + + + + + + + + +
    {L_RANK}{L_USERNAME}{L_POSTS}{L_PERCENTAGE}{L_GRAPH}
    {users.RANK}{users.USERNAME}{users.POSTS}{users.PERCENTAGE}% + + + + +
    {users.PERCENTAGE}%
    + + + + +
    {users.PERCENTAGE}%
    + + + + +
    {users.PERCENTAGE}%
    +
    +
    +
    + + + + + +
    + + + + + + + +
    {L_MOST_VIEWED}
    + + + + + + + + + + + + + +
    {L_RANK}{L_VIEWS}{L_TOPIC}
    {topicviews.RANK}{topicviews.VIEWS}{topicviews.TITLE}
    +
    +
    + + + + + + + +
    {L_MOST_ACTIVE}
    + + + + + + + + + + + + + +
    {L_RANK}{L_REPLIES}{L_TOPIC}
    {topicreplies.RANK}{topicreplies.REPLIES}{topicreplies.TITLE}
    +
    +
    \ No newline at end of file diff --git a/modules/mx_phpbb2blocks/templates/subSilver/subSilver.cfg b/modules/mx_phpbb2blocks/templates/subSilver/subSilver.cfg new file mode 100644 index 00000000..8bdebe49 --- /dev/null +++ b/modules/mx_phpbb2blocks/templates/subSilver/subSilver.cfg @@ -0,0 +1,87 @@ + \ No newline at end of file diff --git a/modules/mx_phpbb3blocks/includes/phpbb3blocks_constants.php b/modules/mx_phpbb3blocks/includes/phpbb3blocks_constants.php index 81eaacb2..7d81c692 100644 --- a/modules/mx_phpbb3blocks/includes/phpbb3blocks_constants.php +++ b/modules/mx_phpbb3blocks/includes/phpbb3blocks_constants.php @@ -25,7 +25,7 @@ case 'phpbb3': case 'olympus': case 'ascraeus': - + default: break; } diff --git a/modules/mx_phpbb3blocks/templates/mxp/images/index.htm b/modules/mx_phpbb3blocks/templates/mxp/images/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_phpbb3blocks/templates/mxp/images/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_phpbb3blocks/templates/mxp/images/spacer.gif b/modules/mx_phpbb3blocks/templates/mxp/images/spacer.gif new file mode 100644 index 00000000..5bfd67a2 Binary files /dev/null and b/modules/mx_phpbb3blocks/templates/mxp/images/spacer.gif differ diff --git a/modules/mx_phpbb3blocks/templates/mxp/images/thumb_globe.gif b/modules/mx_phpbb3blocks/templates/mxp/images/thumb_globe.gif new file mode 100644 index 00000000..b120028c Binary files /dev/null and b/modules/mx_phpbb3blocks/templates/mxp/images/thumb_globe.gif differ diff --git a/modules/mx_phpbb3blocks/templates/mxp/images/thumb_news.gif b/modules/mx_phpbb3blocks/templates/mxp/images/thumb_news.gif new file mode 100644 index 00000000..35bc0271 Binary files /dev/null and b/modules/mx_phpbb3blocks/templates/mxp/images/thumb_news.gif differ diff --git a/modules/mx_phpbb3blocks/templates/mxp/images/vote_lcap.gif b/modules/mx_phpbb3blocks/templates/mxp/images/vote_lcap.gif new file mode 100644 index 00000000..93571e46 Binary files /dev/null and b/modules/mx_phpbb3blocks/templates/mxp/images/vote_lcap.gif differ diff --git a/modules/mx_phpbb3blocks/templates/mxp/images/vote_rcap.gif b/modules/mx_phpbb3blocks/templates/mxp/images/vote_rcap.gif new file mode 100644 index 00000000..c9181d67 Binary files /dev/null and b/modules/mx_phpbb3blocks/templates/mxp/images/vote_rcap.gif differ diff --git a/modules/mx_phpbb3blocks/templates/mxp/images/voting_bar.gif b/modules/mx_phpbb3blocks/templates/mxp/images/voting_bar.gif new file mode 100644 index 00000000..c81dc425 Binary files /dev/null and b/modules/mx_phpbb3blocks/templates/mxp/images/voting_bar.gif differ diff --git a/modules/mx_phpbb3blocks/templates/mxp/mx_activity_stats.html b/modules/mx_phpbb3blocks/templates/mxp/mx_activity_stats.html new file mode 100644 index 00000000..e40e438c --- /dev/null +++ b/modules/mx_phpbb3blocks/templates/mxp/mx_activity_stats.html @@ -0,0 +1,24 @@ + + + +

    {L_WHO_IS_ONLINE}

    {L_WHO_IS_ONLINE}

    +

    {TOTAL_USERS_ONLINE} ({L_ONLINE_EXPLAIN})
    {RECORD_USERS}

    {LOGGED_IN_USER_LIST} +

    + {USERS_24HOUR_TOTAL}: {lastvisit.USERNAME_FULL}, + +
    {L_LEGEND}: {LEGEND}

    + + + +

    {L_BIRTHDAYS}

    +

    {L_CONGRATULATIONS}: {BIRTHDAY_LIST}{L_NO_BIRTHDAYS}

    + + + +

    {L_STATISTICS}

    +

    {TOTAL_POSTS} • {TOTAL_TOPICS} • {TOTAL_USERS} • {NEWEST_USER}

    + +

    {L_24HOUR_STATS}

    +

    {24HOUR_POSTS} • {24HOUR_TOPICS} • {24HOUR_USERS}

    + + diff --git a/modules/mx_phpbb3blocks/templates/mxp/mx_announce.html b/modules/mx_phpbb3blocks/templates/mxp/mx_announce.html new file mode 100644 index 00000000..15d5dc09 --- /dev/null +++ b/modules/mx_phpbb3blocks/templates/mxp/mx_announce.html @@ -0,0 +1,38 @@ + +
    +
    +
    +
    +
    +
    +

    + + {postrow.TITLE} + + + {postrow.L_TOPIC_FOLDER_ALT} + {postrow.TITLE} +

    + {postrow.MESSAGE} +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    {postrow.L_AUTHOR}: {postrow.POSTER_FULL}
    +
    {postrow.L_POSTED}:
    {postrow.FIRST_POST_TIME}
    +
    {postrow.L_REPLIES}:
    {postrow.REPLIES}
    +
    {postrow.L_VIEWS}:
    {postrow.VIEWS}
    +
    {postrow.L_LASTPOST}:
    {postrow.LAST_POST_TIME} {postrow.LAST_POST_AUTHOR} {postrow.LAST_POST_IMG}
    +
    +
    +
    + +
    +
    + \ No newline at end of file diff --git a/modules/mx_phpbb3blocks/templates/mxp/mx_forum.html b/modules/mx_phpbb3blocks/templates/mxp/mx_forum.html new file mode 100644 index 00000000..45608906 --- /dev/null +++ b/modules/mx_phpbb3blocks/templates/mxp/mx_forum.html @@ -0,0 +1,88 @@ + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    \ No newline at end of file diff --git a/modules/mx_phpbb3blocks/templates/mxp/mx_last_msg.html b/modules/mx_phpbb3blocks/templates/mxp/mx_last_msg.html new file mode 100644 index 00000000..0d7c4d33 --- /dev/null +++ b/modules/mx_phpbb3blocks/templates/mxp/mx_last_msg.html @@ -0,0 +1,27 @@ +
    +
    + +
    +
    {PAGINATION}
    + +
    diff --git a/modules/mx_phpbb3blocks/templates/mxp/mx_vieforum.html b/modules/mx_phpbb3blocks/templates/mxp/mx_vieforum.html new file mode 100644 index 00000000..77f382d5 --- /dev/null +++ b/modules/mx_phpbb3blocks/templates/mxp/mx_vieforum.html @@ -0,0 +1,209 @@ +

    {L_MCP} ]

    +

    {FORUM_NAME}

    + + +

    + + {FORUM_DESC}
    + {L_MODERATOR}{L_MODERATORS}: {MODERATORS} +

    + + + +
    +
    + + + {L_FORUM_RULES} + + {L_FORUM_RULES}
    + {FORUM_RULES} + + +
    +
    + + + + + + + + + + +
    style="margin-top: 2em;"> + + + + + + + + + + + + + +
    + + + + +
    +
    + {L_NO_READ_ACCESS} +
    +
    + + + + + +
    +
    + +
    +

    {L_LOGIN_LOGOUT}  •  {L_REGISTER}

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
     
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + +
    +
    +
      +
    • +
      +
      {L_ACTIVE_TOPICS}{L_ANNOUNCEMENTS}{L_TOPICS}
      +
      {L_REPLIES}
      +
      {L_VIEWS}
      +
      {L_LAST_POST}
      +
      +
    • +
    + +
    +
    + + + +
    +
    + {L_NO_TOPICS} +
    +
    + + + + +
    + {L_PREVIOUS} + {L_NEXT} + + + +
    + +
    + + + +
    + + + + + + + +
    + + + + + +

    {L_WHO_IS_ONLINE}

    +

    {LOGGED_IN_USER_LIST}

    + + + +

    {L_FORUM_PERMISSIONS}

    +

    {rules.RULE}

    + \ No newline at end of file diff --git a/modules/mx_phpbb3blocks/templates/mxp/mxp.cfg b/modules/mx_phpbb3blocks/templates/mxp/mxp.cfg new file mode 100644 index 00000000..fc206963 --- /dev/null +++ b/modules/mx_phpbb3blocks/templates/mxp/mxp.cfg @@ -0,0 +1,110 @@ + \ No newline at end of file diff --git a/modules/mx_rebuild_search_tables/admin/admin_rebuild_search.php b/modules/mx_rebuild_search_tables/admin/admin_rebuild_search.php index a659f56e..81f7ec02 100644 --- a/modules/mx_rebuild_search_tables/admin/admin_rebuild_search.php +++ b/modules/mx_rebuild_search_tables/admin/admin_rebuild_search.php @@ -34,8 +34,7 @@ switch (PORTAL_BACKEND) { - case 'internal': - case 'phpbb3': + default: mx_message_die(GENERAL_MESSAGE, 'This feature is designed for MX-Publisher with phpBB2 backend, thus not compatible with current setup.'); break; diff --git a/modules/mx_rebuild_search_tables/templates/subSilver/admin/index.htm b/modules/mx_rebuild_search_tables/templates/subSilver/admin/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_rebuild_search_tables/templates/subSilver/admin/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_rebuild_search_tables/templates/subSilver/admin/rebuild_search.tpl b/modules/mx_rebuild_search_tables/templates/subSilver/admin/rebuild_search.tpl new file mode 100644 index 00000000..7ccaaff1 --- /dev/null +++ b/modules/mx_rebuild_search_tables/templates/subSilver/admin/rebuild_search.tpl @@ -0,0 +1,26 @@ +

    {L_REBUILD_SEARCH}

    + +

    {L_REBUILD_SEARCH_DESC}

    + + +
    + + + + + +
    +
     {L_TOPICS}  {L_TOPICS}  {L_AUTHOR}  {L_REPLIES}  {L_VIEWS}  {L_LAST_POST} 
    {L_ANNOUNCEMENTS}
    {L_TOPICS}
    {topicrow.TOPIC_FOLDER_IMG} + {NEWEST_POST_IMG} + {topicrow.ATTACH_ICON_IMG} {topicrow.TOPIC_TYPE} {topicrow.TOPIC_TITLE} + + {topicrow.UNAPPROVED_IMG}  + + + {REPORTED_IMG}  + + +

    [ {GOTO_PAGE_IMG}{L_GOTO_PAGE}: {topicrow.PAGINATION} ]

    + +

    {topicrow.TOPIC_AUTHOR_FULL}

    {topicrow.REPLIES}

    {topicrow.VIEWS}

    +

    {topicrow.LAST_POST_TIME}

    +

    {topicrow.LAST_POST_AUTHOR_FULL} + {LAST_POST_IMG} +

    +
    {L_NO_TOPICS}{L_NO_TOPICS_TIME_FRAME}{L_NO_TOPICS}{L_NO_TOPICS_TIME_FRAME}
    + + + + + + + + + + + + + + + + + + +
    {L_REBUILD_SEARCH}
    {L_POST_LIMIT}
    {L_TIME_LIMIT}
    {L_REFRESH_RATE}
    + \ No newline at end of file diff --git a/modules/mx_rebuild_search_tables/templates/subSilver/admin/rebuild_search_progress.tpl b/modules/mx_rebuild_search_tables/templates/subSilver/admin/rebuild_search_progress.tpl new file mode 100644 index 00000000..52df024d --- /dev/null +++ b/modules/mx_rebuild_search_tables/templates/subSilver/admin/rebuild_search_progress.tpl @@ -0,0 +1,7 @@ +

    {PERCENT} %

    + +
    + + +
    +
    \ No newline at end of file diff --git a/modules/mx_rebuild_search_tables/templates/subSilver/index.htm b/modules/mx_rebuild_search_tables/templates/subSilver/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_rebuild_search_tables/templates/subSilver/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_shared/ajax/AjaxPages.js b/modules/mx_shared/ajax/AjaxPages.js new file mode 100644 index 00000000..5bc23ed7 --- /dev/null +++ b/modules/mx_shared/ajax/AjaxPages.js @@ -0,0 +1,314 @@ +/** + * Ajax Pages v0.5 + * + * This software is licensed under the MIT License. + * + * The MIT License + * + * Copyright (c) 2005 Gustavo Ribeiro Amigo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE + * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * Class responsable for processing Ajax Pages. + * @constructor + * @author Gustavo Amigo + */ +var AjaxPages = function() {}; + +/** + * Loads an Ajax Pages template from a file + * @param url The file to be loaded + * @returns The template loaded + */ +AjaxPages.prototype.load = function ( url ) { + var req; + // branch for native XMLHttpRequest object + if (window.XMLHttpRequest) { + req = new XMLHttpRequest(); + req.open("GET", url, false); + req.send(null); + // branch for IE/Windows ActiveX version + } else if (window.ActiveXObject) { + req = new ActiveXObject("Microsoft.XMLHTTP"); + if (req) { + req.open("GET", url, true); + req.send(); + } + } + + this.template = req.responseText; + return req.responseText; +} + +/** + * Parses the template + * @param value (Optional) The template code + * @returns The javascript code generated from the parsing + */ +AjaxPages.prototype.parse = function( value ) { + if ( value == undefined ) { + value = this.template; + } + var out = ""; + var lineNumber = 1; + try { + + var betweenPerc = false; + + out = "function(context) { \n"; + + out += "var __ajp = new AjaxPages();\n"; + out += "var __include;\n"; + + out += "try {\n" + + out += " if ( context == undefined ) { \n"; + out += " context = '';\n"; + out += " }\n"; + + out += "var out= unescape('"; + + var line = ""; + + for (i = 0; i < value.length; i++ ) + { + var nextTwo = ""; + if ( i <= value.length - 2 ) { + nextTwo = value.charAt(i) + value.charAt( i + 1 ); + } + + var nextThree = ""; + if ( i <= value.length - 3 ) { + nextThree = value.charAt(i) + value.charAt( i + 1 ) + value.charAt( i + 2 ); + } + + if ( nextTwo == "<%" && nextThree != "<%=" && nextThree != "<%@") { + + out += "');\n"; + betweenPerc = true; + i += 1; + + } else if ( nextTwo == "<%" && nextThree == "<%=" && nextThree != "<%@") { + + out += escape(line) + "');\n"; + line = ""; + out += " out+= "; + + betweenPerc = true; + i += 2; + } else if ( nextTwo == "<%" && nextThree != "<%=" && nextThree == "<%@" ) { + + i += 3; + var directive = ""; + + while ( nextTwo != "%>" ) { + directive += value.charAt(i); + i++; + if ( i <= value.length - 2 ) { + nextTwo = value.charAt(i) + value.charAt( i + 1 ); + } + + } + + out += escape(line) + "');\n"; + line = ""; + + + out += this._processDirective( directive ); + out += " out+= unescape('"; + i++; + } else if ( nextTwo == "%>" ) { + out += ";\n" + " out+= unescape('"; + // TODO Throw error if it is off, wrong sintax + betweenPerc = false; + i += 1; + } else if ( value.charAt(i) == String.fromCharCode(10) ) { + if ( !betweenPerc ) { + out += escape(line) + "\\n');\n" + " out+= unescape('"; + line = ""; + lineNumber ++; + } + + } else if ( value.charAt(i) == String.fromCharCode(13) ) { + } else { + if ( betweenPerc ) { + out += value.charAt(i) ; + } else { + line += value.charAt(i); + } + } + } + + out += escape(line) + "');\n"; + + out += "} catch (e) {" + out += "return '"+"An exception occurred while excuting template. Error type: ' + e.name" + + "+ '. Error message: ' + e.message;"; + out += "}" + out += " return out;\n"; + out += "}\n"; + } catch (e) { + + out = "function(context) { \n"; + out += "return '"+"An exception occurred while parsing on line "+ lineNumber +". Error type: " + e.name + + ". Error message: " + e.message+"';"; + out += "}" + } + + return out; +} + + + + + +/** + * Private method. Should not be used externally. + * @private + */ +AjaxPages.prototype._processDirective = function(directive) { + var i = 0; + + var tolkenIndex = 0; + var tolken = new Array(); + + //Skip first spaces; + while ( directive.charAt(i) == ' ' ) { + i++; + } + + tolken[tolkenIndex] = ""; + while ( directive.charAt(i) != ' ' && i <= directive.length ) { + tolken[tolkenIndex] += directive.charAt(i); + i++; + } + + tolkenIndex++; + + //Skip first spaces; + while ( directive.charAt(i) == ' ' ) { + i++; + } + + tolken[tolkenIndex] = ""; + while ( directive.charAt(i) != ' ' && directive.charAt(i) != '=' && i <= directive.length ) { + tolken[tolkenIndex] += directive.charAt(i); + i++; + } + + tolkenIndex++; + + //Skip first spaces; + while ( directive.charAt(i) == ' ' ) { + i++; + } + + if( directive.charAt(i) != '=' ) + throw new AjaxPagesException("Sintax error", "Tolken = expected attribute"); + i++ + + //Skip first spaces; + while ( directive.charAt(i) == ' ' ) { + i++; + } + + tolken[tolkenIndex] = ""; + while ( directive.charAt(i) != ' ' && i <= directive.length ) { + tolken[tolkenIndex] += directive.charAt(i); + i++; + } + tolkenIndex++; + + //Skip first spaces; + while ( directive.charAt(i) == ' ' && i <= directive.length ) { + i++; + } + + tolken[tolkenIndex] = ""; + while ( directive.charAt(i) != ' ' && directive.charAt(i) != '=' && i <= directive.length && i <= directive.length ) { + tolken[tolkenIndex] += directive.charAt(i); + i++; + } + + tolkenIndex++; + + if( directive.charAt(i) != '=' && i <= directive.length ) + throw new AjaxPagesException("Sintax error", "Tolken = expected after attribute" ); + i++ + + tolken[tolkenIndex] = ""; + while ( directive.charAt(i) != ' ' && i <= directive.length && i <= directive.length ) { + tolken[tolkenIndex] += directive.charAt(i); + i++; + } + + var file = ""; + var context = ""; + + if ( tolken[0] != "include" ) + throw new AjaxPagesException("Sintax error","Directive " + tolken[0] + " unknown.") ; + + if ( tolken[1] != "file" ) + throw new AjaxPagesException("Sintax error", "Attribute file expected after include." ); + else file = tolken[2]; + + + if ( tolken[3] != "context" && tolken[3] != "" ) + throw new AjaxPagesException( "Sintax error", "Attribute context expected after file."); + else if ( tolken[3] == "context" ) + context = tolken[4] + else + context = "context"; + + var out = " __ajp.load("+ file +");\n"; + out += " __include = __ajp.getProcessor();\n"; + out += " out+= __include(" + context + ");\n"; + + return out; + +} + +/** + * Processes the template + * @param value (Optional) The template code. + * @returns The output from processing the template + */ +AjaxPages.prototype.process = function( value ) { + eval ( "var processor =" + this.parse( value ) ); + return processor(); +} + +/** + * Get the function that processes the template + * @param value (Optional) The template code + * @returns The function that process the template + */ +AjaxPages.prototype.getProcessor = function( value ) { + eval ( "var processor =" + this.parse( value ) ); + return processor; +} + +/** + * Exception throwed by AjaxPages + */ +AjaxPagesException = function( name, message ) { + this.name = name; + this.message = message; +} \ No newline at end of file diff --git a/modules/mx_shared/tinymce/index.htm b/modules/mx_shared/tinymce/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_shared/tinymce/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_textblocks/language/lang_romanian/index.htm b/modules/mx_textblocks/language/lang_romanian/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_textblocks/language/lang_romanian/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_textblocks/language/lang_romanian/lang_admin.php b/modules/mx_textblocks/language/lang_romanian/lang_admin.php new file mode 100644 index 00000000..4e9f982a --- /dev/null +++ b/modules/mx_textblocks/language/lang_romanian/lang_admin.php @@ -0,0 +1,46 @@ + + * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v2 + * @link http://www.phpbb.com + * Encoding: UTF-8 + * 1 tab = 4 spaces + */ + +if ( !isset($lang) ) +{ + $lang = array(); +} +// +// Parameter Types +// +$lang = array_merge( $lang, array( // # + 'ParType_phpBBTextBlock' => 'Standard phpBB TextBlock', + 'ParType_phpBBTextBlock_info' => 'Aceasta este un Standard phpBB TextBlock, parsare bbcodes, html och smilies așa cum este definit de setările phpBB Config.', + 'ParType_CustomizedTextBlock' => 'TextBlock Personalizat', + 'ParType_CustomizedTextBlock_info' => 'Acesta este un TextBlock Personalizat, parsare bbcodes, html och smilies așa cum este definit de această setările de bloc', + 'ParType_WysiwygTextBlock' => 'Wysiwyg TextBlock', + 'ParType_WysiwygTextBlock_info' => 'Acesta este un Wysiwyg TextBlock, care conține un editor html', +// +// Parameter Names +// + 'block_style' => 'Margine Block:', + 'title_style' => 'Titlu Stil Antet:', + 'allow_bbcode' => 'Permite BBCodes:', + 'allow_html' => 'Permite Html:', + 'allow_smilies' => 'Permite Zâmbetele:', + 'html_tags' => 'Etichete Html permise:', + + 'block_style_explain' => 'Afișați marginea în jurul textului:', + 'title_style_explain' => 'Utilizați stil CSS pentru rândul de titlu:', +)); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/modules/mx_textblocks/language/lang_romanian/lang_main.php b/modules/mx_textblocks/language/lang_romanian/lang_main.php new file mode 100644 index 00000000..6b803bda --- /dev/null +++ b/modules/mx_textblocks/language/lang_romanian/lang_main.php @@ -0,0 +1,28 @@ + 'Conţine:', + 'Goto_page' => 'Mergi la pagina:', + 'Blog_id' => 'Blog id:
    - "%s" este înlocuit de username.', +)); + +// +// That's all Folks! +// ------------------------------------------------- +?> \ No newline at end of file diff --git a/modules/mx_textblocks/mx_textblock_bbcode.php b/modules/mx_textblocks/mx_textblock_bbcode.php index 63456d4e..47096822 100644 --- a/modules/mx_textblocks/mx_textblock_bbcode.php +++ b/modules/mx_textblocks/mx_textblock_bbcode.php @@ -16,7 +16,7 @@ // // Virtual Blog Mode -// +//die($msg_text); if ($mx_page->is_virtual) { if ($mx_request_vars->is_request('virtual')) diff --git a/modules/mx_textblocks/mx_textblock_multi.php b/modules/mx_textblocks/mx_textblock_multi.php index 5df3f8e2..08cae4de 100644 --- a/modules/mx_textblocks/mx_textblock_multi.php +++ b/modules/mx_textblocks/mx_textblock_multi.php @@ -33,9 +33,18 @@ // // Read Block Settings // +$show_title = $mx_block->block_info['show_title']; $title = $mx_block->block_info['block_title']; -$message = $mx_block->get_parameters( 'Text' ); +$desc = $mx_block->block_info['block_desc']; +$block_style = $mx_block->block_parameters['block_style']; +$text_style = $mx_block->block_parameters['text_style']; +$title_style = $mx_block->block_parameters['title_style']; + +/** Debug Block Configuration in MXP 2.7 **/ +$message = $mx_block->get_parameters('Text'); +/** **/ +print_r($message); $block_style = $mx_block->get_parameters( 'block_style' ); $text_style = $mx_block->get_parameters( 'text_style' ); $title_style = $mx_block->get_parameters( 'title_style' ); @@ -55,7 +64,7 @@ // - LANG: MX_LANG_MAIN (default), MX_LANG_ADMIN, MX_LANG_ALL, MX_LANG_NONE // - IMAGES: MX_IMAGES (default), MX_IMAGES_NONE // ------------------------------------------------------------------------- - $mx_user->extend(MX_LANG_MAIN, MX_IMAGES_NONE); + //$mx_user->extend(MX_LANG_MAIN, MX_IMAGES_NONE); $mx_page->add_copyright( 'MX-Publisher Knowledge Base Module' ); } @@ -79,7 +88,7 @@ // Decode for display // $title = $mx_text->display_simple($title); -$message = $mx_text->display($message, $mx_block->get_parameters( 'Text', MX_GET_PAR_OPTIONS )); +//$message = $mx_text->display($message, $mx_block->get_parameters( 'Text', MX_GET_PAR_OPTIONS )); // // Start output of page @@ -103,6 +112,9 @@ $block_style = ( ( $block_style == '' ) || ( $block_style == 'FALSE' ) ) ? '' : 'forumline'; $text_style = ( ( $text_style == '' ) || ( $text_style == 'none' ) ) ? 'genmed' : $text_style; +$s_hidden_fields = ''; +$s_hidden_fields .= ''; + $template->assign_vars(array( 'BLOCK_SIZE' => ( !empty($block_size) ? $block_size : '100%' ), 'L_TITLE' => ( !empty($lang[$title]) ? $lang[$title] : $title ), diff --git a/modules/mx_textblocks/templates/prosilver/mx_textblock_bbcode.html b/modules/mx_textblocks/templates/prosilver/mx_textblock_bbcode.html index eda2efbe..35b1e4ad 100644 --- a/modules/mx_textblocks/templates/prosilver/mx_textblock_bbcode.html +++ b/modules/mx_textblocks/templates/prosilver/mx_textblock_bbcode.html @@ -1,7 +1,12 @@
    -
    -
    -
    {U_TEXT}
    +
    + +
    +
    +
    +
    {U_TEXT}
    +
    +
    diff --git a/modules/mx_textblocks/templates/prosilver/mx_textblock_blog.html b/modules/mx_textblocks/templates/prosilver/mx_textblock_blog.html new file mode 100644 index 00000000..1d929078 --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver/mx_textblock_blog.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + {switch_blog_edit.S_HIDDEN_FORM_FIELDS} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     {switch_blog_edit.EDIT_IMG} 

    {L_TOC}

    + + {switch_toc.pages.TOC_ITEM} + +
    {switch_blog_id.BLOG_ID}
    {U_TEXT}

    {L_GOTO_PAGE} + + {switch_pages.pages.PAGE_LINK} + +
    \ No newline at end of file diff --git a/modules/mx_textblocks/templates/prosilver/mx_textblock_multi.html b/modules/mx_textblocks/templates/prosilver/mx_textblock_multi.html index 8bc95df4..df44b1e6 100644 --- a/modules/mx_textblocks/templates/prosilver/mx_textblock_multi.html +++ b/modules/mx_textblocks/templates/prosilver/mx_textblock_multi.html @@ -15,9 +15,11 @@
    -
    -
    {U_TEXT}
    -
    +
    + + {U_TEXT} + +
    diff --git a/modules/mx_textblocks/templates/prosilver2/admin/index.htm b/modules/mx_textblocks/templates/prosilver2/admin/index.htm new file mode 100644 index 00000000..ee1f723a --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/admin/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_textblocks/templates/prosilver2/admin/mx_module_parameters.html b/modules/mx_textblocks/templates/prosilver2/admin/mx_module_parameters.html new file mode 100644 index 00000000..2aef9dbf --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/admin/mx_module_parameters.html @@ -0,0 +1,389 @@ + + + + + + + + + + + + + +
    + +
    + + + + +

    +
    +
    +
    +

    {L_PREVIEW}

    +
    {TEXT}
    +
    +
    +
    +

    + + + +
    + +
    + +

    {L_EMOTICONS}

    + + + + {smilies_row.smilies_col.SMILEY_DESC} + + +
    + + {L_MORE_SMILIES} + +
    + {BBCODE_STATUS}
    + {HTML_STATUS}
    + {SMILIES_STATUS} +
    +
    + +

    {textblock.PARAMETER_TITLE}

    + {textblock.PARAMETER_TYPE}
    + {textblock.PARAMETER_TYPE_EXPLAIN} +
    + + + + + + + + + +  {L_FONT_SIZE}: + +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/modules/mx_textblocks/templates/prosilver2/mx_textblock_bbcode.html b/modules/mx_textblocks/templates/prosilver2/mx_textblock_bbcode.html new file mode 100644 index 00000000..eda2efbe --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/mx_textblock_bbcode.html @@ -0,0 +1,8 @@ +
    +
    +
    +
    {U_TEXT}
    +
    +
    + +
    \ No newline at end of file diff --git a/modules/mx_textblocks/templates/prosilver2/mx_textblock_blog.html b/modules/mx_textblocks/templates/prosilver2/mx_textblock_blog.html new file mode 100644 index 00000000..1d929078 --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/mx_textblock_blog.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + {switch_blog_edit.S_HIDDEN_FORM_FIELDS} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     {switch_blog_edit.EDIT_IMG} 

    {L_TOC}

    + + {switch_toc.pages.TOC_ITEM} + +
    {switch_blog_id.BLOG_ID}
    {U_TEXT}

    {L_GOTO_PAGE} + + {switch_pages.pages.PAGE_LINK} + +
    \ No newline at end of file diff --git a/modules/mx_textblocks/templates/prosilver2/mx_textblock_edit.html b/modules/mx_textblocks/templates/prosilver2/mx_textblock_edit.html new file mode 100644 index 00000000..acacf611 --- /dev/null +++ b/modules/mx_textblocks/templates/prosilver2/mx_textblock_edit.html @@ -0,0 +1,453 @@ + + + + + + + +

    {L_TITLE}

    + +

    {L_EXPLAIN}

    + +
    + +{POST_PREVIEW_BOX} +{ERROR_BOX} + + +
    +
    +
    +
    +
    +
    {L_POST_A}
    +
    +
    +
    {L_BLOCK_TITLE}
    +
    +
    + +
    +
    {L_BLOCK_DESC}
    +
    +
    + +
    +
    {L_SHOW_TITLE}
    {L_SHOW_TITLE_EXPLAIN}
    +
    {L_YES}   {L_NO}
    +
    +
    +
    {L_SHOW_STATS}
    +
    {L_YES}   {L_NO}
    +
    + +
    +
    {L_SHOW_BLOCK}
    +
    {L_YES}   {L_NO}
    +
    +
    +
    +
    +
    +
    {L_BLOCK_INFO}
    +
    +
    +

    +
    +
    + + + + + + + + + + + + + + + + + + + +
    {L_TRANSLATE_KEY}{L_TRANSLATE_VALUE}
    +   + + +   + + +   + {language_item.U_KEY} + + + +
    + + + + + + + +
    + + +
    +

    +{% INCLUDE 'overall_footer.html' %} diff --git a/modules/mx_translator/adm/style/selects.html b/modules/mx_translator/adm/style/selects.html new file mode 100644 index 00000000..a0aa5b42 --- /dev/null +++ b/modules/mx_translator/adm/style/selects.html @@ -0,0 +1,156 @@ + + + + + +

    {L_WHAT_TRANSLATE}

    +
    + + + + + + + + + + + + + + + + + + + + + +
    + {L_LANGUAGE_INTO} + + {L_MX_MODULES} + + {L_FILE_SELECT} + + « +
    + + + + + + + +
    +
    + diff --git a/modules/mx_translator/admin/admin_translator_module.php b/modules/mx_translator/admin/admin_translator_module.php new file mode 100644 index 00000000..ef88e99b --- /dev/null +++ b/modules/mx_translator/admin/admin_translator_module.php @@ -0,0 +1,408 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) + * + */ +//namespace orynider\mx_translator\acp; +$basename = basename( __FILE__); +$mx_root_path = './../../../'; +$module_root_path = $mx_root_path . 'modules/mx_translator/'; +$admin_module_root_path = $module_root_path . 'admin/'; + +//$basename = basename( __FILE__); +//$mx_root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_root_path; +//$module_root_path = $phpbb_root_path . 'ext/orynider/mx_translator/'; +//$admin_module_root_path = $module_root_path . 'acp/'; + +/* */ +if ( !empty( $setmodules)) +{ + $module['Language_tools']['ACP_TRANSLATOR_CONFIG'] = mx_append_sid( $admin_module_root_path . $basename . '?mode=config'); + $module['Language_tools']['ACP_TRANSLATE_MX_PORTAL'] = mx_append_sid( $admin_module_root_path . $basename . '?s=MXP&mode=translate'); + $module['Language_tools']['ACP_TRANSLATE_MX_MODULES'] = mx_append_sid( $admin_module_root_path . $basename . '?s=MODS&mode=translate'); + $module['Language_tools']['ACP_TRANSLATE_PHPBB_LANG'] = mx_append_sid( $admin_module_root_path . $basename . '?s=PHPBB&mode=translate'); + $module['Language_tools']['ACP_TRANSLATE_PHPBB_EXT'] = mx_append_sid( $admin_module_root_path . $basename . '?s=phpbb_ext&mode=translate'); + return; +} +/* */ + +/** +* mx_langtools ACP module + */ +define('IN_PORTAL', 1); +define('IN_ADMIN', 1); +$phpEx = substr( __FILE__, strrpos( __FILE__, '.') + 1); +if (!defined('PHP_EXT')) define('PHP_EXT', $phpEx); +$lang = array(); +$no_page_header = ''; +require_once($mx_root_path . 'admin/pagestart.' . $phpEx); + +define('MODULE_URL', PORTAL_URL . 'modules/mx_translator/'); +define('IN_AJAX', (isset($_GET['ajax']) && ($_GET['ajax'] == 1) && ($_SERVER['HTTP_SEREFER'] = $_SERVER['PHP_SELF'])) ? 1 : 0); + +//include_once($module_root_path . 'includes/translator.' . $phpEx); + +//@error_reporting( E_ALL || !E_NOTICE); +//$mxp_translator = new mxp_translator(); +/** +* Class mxp_translator_module extends mxp_translator +* Displays a message to the user and allows him to send an email +*/ + +/* START Include language file */ +$language = ($mx_user->user_language_name) ? $mx_user->user_language_name : (($board_config['default_lang']) ? $board_config['default_lang'] : 'english'); +if ((@include $module_root_path . "language/lang_" . $language . "/info_acp_translator.$phpEx") === false) +{ + if ((@include $module_root_path . "language/lang_english/info_acp_translator.$phpEx") === false) + { + mx_message_die(CRITICAL_ERROR, 'Language file ' . $module_root_path . "language/lang_" . $language . "/info_acp_translator.$phpEx" . ' couldn\'t be opened.'); + } + $language = 'english'; +} + +//include_once($module_root_path . 'includes/translator.' . $phpEx); + +/* Get an instance of the admin controller */ +if (!include_once($module_root_path . 'controller/mxp_translator.' . $phpEx)) +{ + die('Cant find ' . $module_root_path . 'controller/mxp_translator.' . $phpEx); +} + +//$mxp_translator = new orynider\mx_translator\controller\mxp_translator(); +$mxp_translator = new mxp_translator(); + +/* Requests */ +//$action = $request->variable('action', ''); + +/* general vars */ +$mode = $mx_request_vars->request('mode', 'generate'); +$start = $mx_request_vars->request('start', 0); +$s = $mx_request_vars->request('s', ''); +$ajax = $mx_request_vars->request('ajax', 0); +$set_file = $mx_request_vars->request('set_file', ''); +$into = $mx_request_vars->request('into', ''); +/* */ + +// Make the $u_action url available in the admin controller +//$mxp_translator->set_page_url($this->u_action); +/** + * Set config value. + * + * Creates missing config entry if needed. + * + * @param unknown_type $config_name + * @param unknown_type $config_value +* @param unknown_type $is_dynamic + */ +function acp_translator_set_config($config_name, $config_value) +{ + global $db, $mx_cache, $translator_config, $mx_table_prefix; + $mx_table_prefix = !empty($mx_table_prefix) ? $mx_table_prefix : 'mx_'; + define('TRANSLATOR_CONFIG_TABLE', $mx_table_prefix . "translator_config"); + $sql = 'UPDATE ' . TRANSLATOR_CONFIG_TABLE . " + SET config_value = '" . $db->sql_escape($config_value) . "' + WHERE config_name = '" . $db->sql_escape($config_name) . "'"; + $db->sql_query($sql); + + if (!$db->sql_affectedrows() && !isset($translator_config[$config_name])) + { + $sql = 'INSERT INTO ' . TRANSLATOR_CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'config_name' => $config_name, + 'config_value' => $config_value, + )); + $db->sql_query($sql); + } + + $portal_config[$config_name] = $config_value; + $mx_cache->put('translator_config', $translator_config); +} +/** + * Get config data + * + * @access public + * @return unknown + */ +function acp_translator_get_config($use_cache = true) +{ + global $db, $mx_cache, $translator_config, $mx_table_prefix; + global $board_config; + + $mx_table_prefix = !empty($mx_table_prefix) ? $mx_table_prefix : 'mx_'; + define('TRANSLATOR_CONFIG_TABLE', $mx_table_prefix . "translator_config"); + + /* * / + if (($translator_config = $mx_cache->get('translator_config')) && ($use_cache)) + { + return $translator_config; + } + else + { + /* */ + $sql = "SELECT * + FROM " . TRANSLATOR_CONFIG_TABLE . ""; + + if ( !($result = $db->sql_query($sql)) ) + { + if (!function_exists('mx_message_die')) + { + die("Couldnt query portal configuration, Allso this hosting or server is using a cache optimizer not compatible with MX-Publisher or just lost connection to database wile query."); + } + else + { + mx_message_die( GENERAL_ERROR, 'Couldnt query portal configuration', '', __LINE__, __FILE__, $sql ); + } + } + while($row = $db->sql_fetchrow($result)) + { + $config_name = $row['config_name']; + $config_value = $row['config_value']; + $translator_config[$config_name] = trim($config_value); + } + $board_config = array_merge($board_config, $translator_config); + $db->sql_freeresult($result); + + $mx_cache->put('translator_config', $translator_config); +/* * / } /**/ +} +/** **/ +if ($mx_request_vars->is_post('submit') ) +{ + $mode = 'submit'; +} +/** Load the "settings" or "manage" module modes **/ +switch ($mode) +{ + case 'submit': + // Is the form being submitted to us? + if ($mx_request_vars->is_empty_post('translator_default_lang') || $mx_request_vars->is_empty_post('translator_choice_lang')) + { + mx_message_die(GENERAL_ERROR, "Failed to update translator configuration, you didn't specified valid values or your admin templates are incompatible with this version of MXP."); + } + $s_errors = (bool) count($errors); + acp_translator_set_config('translator_default_lang', ($mx_request_vars->request('translator_default_lang', 'en'))); + acp_translator_set_config('translator_choice_lang', ($mx_request_vars->request('translator_choice_lang', 'de,fr,es,ro'))); + + $params = $_SERVER['QUERY_STRING']; + $params = "mode=config&i=-orynider-mx_translator-acp-translator_module"; + $u_action = mx_append_sid("{$admin_module_root_path}$basename?$params", false, true); + + // If no errors, process the form data + //if (empty($errors)) + //{ + // Add option settings change action to the admin log + //$mxp_translator->log->add('admin', $mx_user->data['user_id'], $mx_user->ip, 'ACP_TRANSLATOR_SETTINGS_LOG'); + // Option settings have been updated and logged + // Confirm this to the user and provide link back to previous page + //trigger_error($mxp_translator->lang('ACP_TRANSLATOR_SETTINGS_CHANGED') . adm_back_link($mxp_translator->u_action)); + //} + //trigger_error($mxp_translator->lang('TRANSLATOR_CONFIG_SAVED') . adm_back_link($u_action)); + $message = $mxp_translator->lang('ACP_TRANSLATOR_SETTINGS_CHANGED') . "

    " . sprintf($mxp_translator->lang('CLICK_RETURN_CONFIG_INDEX'), "", "") . "

    " . sprintf($mxp_translator->lang('CLICK_RETURN_ADMIN_INDEX'), "", ""); + + mx_message_die(GENERAL_MESSAGE, $message); + break; + case 'config': + // Load a template from adm/style for our ACP page + $tpl_name = 'acp_translator_config'; + // Set the page title for our ACP page + $page_title = $lang['ACP_TRANSLATOR']; + // Load the display options handle in the admin controller display_settings($tpl_name, $page_title); + display_settings($tpl_name, $page_title); + break; + + case 'translate': + default: + switch ($s) + { + case 'MXP': + // Load a template from adm/style for our ACP page + $tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $page_title = $lang['ACP_TRANSLATE_MX_PORTAL']; + // Load the display options handle in the admin controller $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + case 'MODS': + // Load a template from adm/style for our ACP page + $tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $page_title = $lang['ACP_TRANSLATE_MX_MODULES']; + // Load the display options handle in the admin controller $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + case 'PHPBB': + // Load a template from adm/style for our ACP page + $tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $page_title = $lang['ACP_TRANSLATE_PHPBB_LANG']; + // Load the display options handle in the admin controller $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + case 'phpbb_ext': + // Load a template from adm/style for our ACP page + $tpl_name = 'lang_translate'; + // Set the page title for our ACP page + $page_title = $lang['ACP_TRANSLATE_PHPBB_EXT']; + // Load the display options handle in the admin controller $mxp_translator->display_translate($this->tpl_name, $this->page_title); + break; + } + + if (IN_AJAX == 0) + { + $lang['ENCODING'] = $mxp_translator->file_encoding; + if (isset($_POST['save']) || isset($_POST['download'])) + { + $mxp_translator->file_preparesave(); + } + if (isset($_POST['save'])) + { + $mxp_translator->file_save(); + } + else if (isset($_POST['download'])) + { + $mxp_translator->file_download(); + } + + //require_once($mx_root_path . 'admin/page_header_admin.' . $phpEx); + $template->set_filenames(array('body' => $tpl_name.'.html')); + $template->assign_block_vars('file_to_translate_select', array()); + + $s_action = $admin_module_root_path . $basename; + $params = $_SERVER['QUERY_STRING']; + + /** ------------------------------------------------------------------------- + * Extend User Style with module lang and images + * Usage: $user->extend(LANG, IMAGES, '_core', 'img_file_in_dir', 'img_file_ext') + * Switches: + * - LANG: MX_LANG_MAIN (default), MX_LANG_ADMIN, MX_LANG_ALL, MX_LANG_NONE + * - IMAGES: MX_IMAGES (default), MX_IMAGES_NONE + ** ------------------------------------------------------------------------- */ + $mxp_translator->extend(false, false, 'all', 'icon_info', false); + + /** + * Reset custom module default style, once used. + */ + if (@file_exists($mxp_translator->user_current_style_path . 'images/menu_icons/icon_info.gif')) + { + $img_info = $mxp_translator->user_current_style_path . 'images/menu_icons/icon_info.gif'; + } + else + { + $img_info = $mxp_translator->default_current_style_path . 'images/menu_icons/icon_info.gif'; + } + if (@file_exists($mxp_translator->user_current_style_path . 'images/menu_icons/icon_google.gif')) + { + $img_google = $mxp_translator->user_current_style_path . 'images/menu_icons/icon_google.gif'; + } + else + { + $img_google = $mxp_translator->default_current_style_path . 'images/menu_icons/icon_google.gif'; + } + /* * / + print_r($img_google); + /* */ + $template->assign_vars(array( // # + 'TH_COLOR2' => $theme['th_color2'], + + 'S_ACTION' => $s_action . '?' . str_replace('&', '&',$params), + 'S_ACTION_AJAX' => $s_action . '?' . str_replace('&', '&',$params) . '&ajax=1', + 'S_LANGUAGE_INTO' => $mxp_translator->gen_select_list('html', 'language', $mxp_translator->language_into, $mxp_translator->language_from), + 'S_MODULE_LIST' => $mxp_translator->gen_select_list('html', 'modules', $mxp_translator->module_select), + 'S_FILE_LIST' => $mxp_translator->gen_select_list('html', 'files', $mxp_translator->module_file), + 'L_RESET' => $lang['Reset'], + 'IMG_INFO' => $img_info, + 'IMG_GOOGLE' => $img_google, + 'I_LANGUAGE' => $mxp_translator->language_into, + 'I_MODULE' => $mxp_translator->module_select, + 'I_FILE' => $mxp_translator->module_file, + )); + + $mxp_translator->assign_template_vars($template); + $template->assign_vars(array( // # + 'L_MX_MODULES' => $lang['ACP_TRANSLATE_MX_MODULES'], + )); + + if (($s == 'MODS') || ($s == 'phpbb_ext')) + { + $template->assign_block_vars('file_to_translate_select.modules', array()); + $template->assign_block_vars('modules', array()); + } + $mxp_translator->file_translate(); + + $template->pparse('body'); + //require_once($mx_root_path . 'admin/page_footer_admin.' . $phpEx); + } + else + { // AJAX + $template->set_filenames( array('body' => 'selects.html')); + $style = "width:100%;"; + if ($into == 'language') + { + $option_list = $mxp_translator->gen_select_list('html', 'language', $mxp_translator->language_into, $mxp_translator->language_from); + $name = 'language[into]'; + $id = 'f_lang_into'; + } + if ($into == 'files') + { + $option_list = $mxp_translator->gen_select_list('html', 'files', $mxp_translator->module_file); + $name = 'translate[file]'; + $id = 'f_select_file'; + } + $template->assign_block_vars('ajax_select', array( + 'NAME' => $name, + 'ID' => $id, + 'STYLE' => $style, + 'OPTIONS' => $option_list, + )); + $template->pparse('body'); + } + break; +} + +function display_settings($tpl_name, $page_title) +{ + global $mxp_translator, $template, $mx_user; + global $mx_root_path, $module_root_path, $board_config; + + $basename = basename( __FILE__); + $php_ext = $phpEx = substr(__FILE__, strrpos( __FILE__, '.') + 1); + $u_action = $module_root_path . 'admin/' . $basename; + + /* Load common language files if they not loaded yet */ + $mxp_translator->_load_lang($module_root_path, 'lang_admin', true); + //Load Shared phpBB3 common language file + $mx_user->_load_lang('phpbb3', 'common', true); + // Create a form key for preventing CSRF attacks + //require_once($mx_root_path . 'admin/page_header_admin.' . $phpEx); + + $errors = array(); + + acp_translator_get_config(); + + $tpl_name = !empty($tpl_name) ? $tpl_name : 'acp_translator_config'; + $template->set_filenames(array('body' => $tpl_name.'.html')); + // Create an array to collect errors that will be output to the user + $mxp_translator->assign_template_vars($template, false); + $template->assign_vars(array( + 'U_ACTION' => mx_append_sid("admin_translator_module.$phpEx"), + + 'ACP_TRANSLATOR_CONFIG_EXPLAIN' => $mxp_translator->lang('ACP_TRANSLATOR_CONFIG_EXPLAIN'), + 'ACP_TRANSLATOR_CONFIG_SET' => $mxp_translator->lang('ACP_TRANSLATOR_CONFIG_SET'), + + 'L_TRANSLATOR_DEFAULT_LANG' => $mxp_translator->lang('TRANSLATOR_DEFAULT_LANG'), + 'L_TRANSLATOR_DEFAULT_LANG_EXPLAIN' => $mxp_translator->lang('TRANSLATOR_DEFAULT_LANG_EXPLAIN'), + + 'L_TRANSLATOR_CHOICE_LANG' => $mxp_translator->lang('TRANSLATOR_CHOICE_LANG'), + 'L_TRANSLATOR_CHOICE_LANG_EXPLAIN' => $mxp_translator->lang('TRANSLATOR_CHOICE_LANG_EXPLAIN'), + + 'TRANSLATOR_DEFAULT_LANG' => (isset($board_config['translator_default_lang'])) ? $board_config['translator_default_lang'] : 'error', + 'TRANSLATOR_CHOICE_LANG' => (isset($board_config['translator_choice_lang'])) ? $board_config['translator_choice_lang'] : 'error', + + 'L_SUBMIT' => $mx_user->lang['SUBMIT'] . '', + 'L_RESET ' => $mx_user->lang['RESET'] . '', + )); + $template->pparse('body'); + global $mx_backend, $db; //decapritated use if(is_object($db)){ $db->sql_close(); } in page_header_admin.php + //require_once($mx_root_path . 'admin/page_footer_admin.' . $phpEx); +} +?> \ No newline at end of file diff --git a/modules/mx_translator/admin/index.htm b/modules/mx_translator/admin/index.htm new file mode 100644 index 00000000..7e52164c --- /dev/null +++ b/modules/mx_translator/admin/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_translator/composer.json b/modules/mx_translator/composer.json new file mode 100644 index 00000000..1d8f6744 --- /dev/null +++ b/modules/mx_translator/composer.json @@ -0,0 +1,31 @@ +{ + "name": "orynider/mx_translator", + "type": "phpbb-extension", + "description": "Translator extension for phpBB based on module by culprit_cz. Adds Translator to the Forum Header.", + "homepage": "", + "version": "1.0.0", + "license": "GPL-2.0", + "authors": [ + { + "name": "FlorinCB", + "email": "orynider@gmail.com", + "homepage": "http://pubory.uv.ro", + "role": "Extension Developer" + } + ], + "require": { + "php": ">=5.3.3", + "phpbb/phpbb": ">=3.1.0" + }, + "extra": { + "display-name": "Translator", + "soft-require": { + "phpbb/phpbb": ">=3.1.0" + }, + "version-check": { + "host": "www.phpbb.com", + "directory": "/customise/db/extension/mx_translator", + "filename": "version_check" + } + } +} \ No newline at end of file diff --git a/modules/mx_translator/config/services.yml b/modules/mx_translator/config/services.yml new file mode 100644 index 00000000..9c5566c6 --- /dev/null +++ b/modules/mx_translator/config/services.yml @@ -0,0 +1,23 @@ +services: + orynider.mx_translator.admin.controller: + class: orynider\mx_translator\controller\mxp_translator + arguments: + - '@cache.driver' + - '@config' + - '@service_container' + - '@controller.helper' + - '@dbal.conn' + - '@language' + - '@log' + - '@request' + - '@template' + - '@user' + - '%core.root_path%' + - '%core.php_ext%' + orynider.mx_translator.listener: + class: orynider\mx_translator\event\listener + arguments: + - '@template' + - '@config' + tags: + - { name: event.listener } diff --git a/modules/mx_translator/controller/index.htm b/modules/mx_translator/controller/index.htm new file mode 100644 index 00000000..7e52164c --- /dev/null +++ b/modules/mx_translator/controller/index.htm @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/mx_translator/controller/mxp_translator.php b/modules/mx_translator/controller/mxp_translator.php new file mode 100644 index 00000000..e1404593 --- /dev/null +++ b/modules/mx_translator/controller/mxp_translator.php @@ -0,0 +1,3629 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) + * + */ +//namespace orynider\mx_translator\controller; +if (!defined('IN_PHPBB')) +{ + exit; +} +//use Symfony\Component\DependencyInjection\ContainerInterface; +//use orynider\mx_translator\google_translater; +define('MXP_LANG_TOOLS_COOKIE_NAME', 'lT_'); +/** + * mxp_translator + * + * @package Translator + * @author culprit_cz + * @copyright Copyright (c) 2008 + * @version $Id: mxp_translator.php,v 1.5 2008/02/29 15:36:48 orynider Exp $ + * @access public + */ +class mxp_translator +{ + var $page_title; + var $tpl_name; + var $u_action; + var $parent_id = 0; + /** @var \phpbb\cache\driver\driver_interface */ + protected $cache; + /** @var \phpbb\config\config */ + protected $config; + /** @var ContainerInterface */ + protected $container; + /** @var \phpbb\controller\helper */ + protected $helper; + /** @var \phpbb\db\driver\driver_interface */ + protected $db; + /** @var \phpbb\log\log */ + protected $log; + /** @var \phpbb\request\request + $_GET = $this->request->query->all(); + $_POST = $this->request->request->all(); + $_SERVER = $this->request->server->all(); + $_COOKIE = $this->request->cookies->all(); + **/ + protected $request; + /** @var \phpbb\template\template */ + protected $template; + /** @var \phpbb\user */ + protected $user; + /** @var string phpBB root path */ + protected $root_path; + + protected $common_language_files_loaded; + + protected $phpbb_admin_path; + /** @var string forum root path */ + protected $forum_root_path; + /** @var string portal_backend */ + var $backend; + /** @var string */ + protected $table_prefix; + /** @var string phpEx */ + protected $php_ext; + /** + * Server and execution environment parameters ($_SERVER). + * + * @var \Symfony\Component\HttpFoundation\ServerBag + */ + public $get; + public $post; + public $server; + public $cookie; + + var $language_list = array(); + var $forum_language_list = array(); + var $module_list = array(); + var $language_file_list = array(); + /** @var \phpbb\language\language */ + var $lang = array(); + + var $orig_ary = array(); + var $tran_ary = array(); + var $g_ary = array(); + var $language_from = ''; + var $langauge_into = ''; + var $module_select = ''; + var $module_file = ''; + + var $file_encoding = 'UTF-8'; + + var $file_save_path = ''; + var $file_save_content = ''; + /** + * Constructor + * + * @param \phpbb\cache\driver\driver_interface $cache + * @param \phpbb\config\config $config + * @param ContainerInterface $container + * @param \phpbb\controller\helper $helper + * @param \phpbb\db\driver\driver_interface $db + * @param \phpbb\language\language $lang + * @param \phpbb\log\log $log + * @param \phpbb\request\request $request + * @param \phpbb\template\template $template + * @param \phpbb\user $user + * @param string $root_path + * @param string $php_ext + */ + public function __construct_(\phpbb\cache\driver\driver_interface $cache, \phpbb\config\config $config, ContainerInterface $container, \phpbb\controller\helper $helper, \phpbb\db\driver\driver_interface $db, \phpbb\language\language $lang, \phpbb\log\log $log, \phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user, $root_path, $table_prefix, $php_ext, $server = array()) + { + $this->cache = $cache; + $this->config = $config; + $this->container = $container; + $this->helper = $helper; + $this->db = $db; + $this->lang = array(); + $this->log = $log; + $this->request = $request; + $this->s = $request->variable('mode', 'generate'); + $this->l = $request->variable('l', array('ENCODING' => 'UTF-8')); + /** POST 64 & GET 128 **/ + //$this->l = $this->phpbb_read('l', ($type | 64 | 128), '', false); + + /* set language_from to translator_default_lang */ + $this->language_from = (isset($this->config['translator_default_lang'])) ? $this->config['translator_default_lang'] : 'en'; + $this->translator_choice_lang = (isset($this->config['translator_choice_lang'])) ? $this->config['translator_choice_lang'] : ''; + + // Requests + $this->action = $request->variable('action', ''); + $this->page_id = $request->variable('page_id', 0); + $this->currency_id = $request->variable('currency_id', 0); + + /* general vars */ + $this->mode = $request->variable('mode', 'generate'); + $this->start = $request->variable('start', 0); + + $this->set_file = $request->variable('set_file', ''); + $this->into = $request->variable('into', ''); + $this->ajax = $request->variable('ajax', 0); + + /** **/ + $this->cookies = array(); + $this->template = $template; + $this->user = $user; + $this->language = $language; + $this->root_path = $root_path; + $this->forum_root_path = $root_path; + $this->table_prefix = $table_prefix; + $this->phpbb_admin_path = $root_path . 'adm/'; + $this->php_ext = $php_ext; + $this->mx_root_path = file_exists('./../../mx_meta.inc') ? './../../' : $root_path; + /* + * Read main mxp config file + */ + include_once($this->mx_root_path . 'config.' . $php_ext); + $this->mx_table_prefix = !empty($mx_table_prefix) ? $mx_table_prefix : 'mx_'; + define('MXP_MODULE_TABLE', $mx_table_prefix . 'module'); + + $this->module_root_path = $root_path . 'ext/orynider/mx_translator/'; + //print_r($this->forum_root_path); + if (!empty($config['version'])) + { + if ($config['version'] >= '4.0.0') + { + $this->backend = 'phpbb4'; + } + if (($config['version'] >= '3.3.0') && ($config['version'] < '4.0.0')) + { + $this->backend = 'proteus'; + } + if (($config['version'] >= '3.2.0') && ($config['version'] < '3.3.0')) + { + $this->backend = 'rhea'; + } + if (($config['version'] >= '3.1.0') && ($config['version'] < '3.2.0')) + { + $this->backend = 'ascraeus'; + } + if (($config['version'] >= '3.0.0') && ($config['version'] < '3.1.0')) + { + $this->backend = 'olympus'; + } + if (($config['version'] >= '2.0.0') && ($config['version'] < '3.0.0')) + { + $this->backend = 'phpbb2'; + } + if (($config['version'] >= '1.0.0') && ($config['version'] < '2.0.0')) + { + $this->backend = 'phpbb'; + } + } + else if (!empty($config['portal_backend'])) + { + $this->backend = $config['portal_backend']; + } + else + { + $this->backend = 'internal'; + } + + $this->portal_block = isset($config['portal_backend']) ? true : false; + + if ($config['version'] < '3.1.0') + { + define('EXT_TABLE', $table_prefix . 'ext'); + define('STYLES_TABLE', 'THEMES_TABLE'); + } + + $this->trans = $this->container->get('orynider.mx_translator.googletranslater'); + + $language = $this->request->variable('language', array('into' => 'en')); + $translate = $this->request->variable('translate', array('module' => 'modules/mx_translator/', 'file' => 'common.php')); + $this->language_into = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'language_into', $language['into']); + $this->dir_select_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_from', $translate['dir']); + $this->dir_select_into = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_into', $translate['dir']); + $this->dir_select = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select', $translate['dir']); + $this->module_select = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'module_select', $translate['module']); + $this->module_file = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'module_file', $translate['file']); + + $this->phpbb_get_lang_list(); + $this->get_module_list(); + $this->get_dir_list(); + $this->get_file_list(); + + /** + * SELECT encoding of language file + */ + if ($config['version'] < '3.0.0') + { + $lang_enc = $this->_load_file_to_translate($root_path . 'language/' . $this->language_from . '/lang_main.' . $phpEx); + $lang_enc = $this->_load_file_to_translate($root_path . 'language/' . $this->language_into . '/lang_main.' . $phpEx); + } + else + { + $lang_enc['ENCODING'] = 'UTF-8'; + } + //$lang_enc['ENCODING'] = 'Windows-1250'; + if (isset($lang_enc['ENCODING']) && $lang_enc != '') + { + $this->file_encoding = $lang_enc['ENCODING']; + } + $this->file_save_path = $mx_root_path . ($this->request->variable('s', '') == 'MODS' ? $this->module_select : '') . 'language/' . $this->language_into . '/' . $this->module_file; + } + + public function mxp_translator() + { + global $mx_cache, $board_config, $db, $table_prefix, $mx_table_prefix; + global $phpbb_root_path, $smf_root_path, $mx_root_path, $module_root_path; + global $php_ext, $phpEx, $lang, $mx_request_vars, $template, $mx_user; + $this->cache = $mx_cache; + $this->config = $board_config; + $this->container = $mx_cache; + $this->helper = $mx_cache; + $this->db = $db; + $this->lang = $lang; + $this->log = $mx_cache; + $this->request = $mx_request_vars; + $this->s = $this->request->request('s', ''); + //$this->l = $this->request->request('l', ''); + /** POST 64 & GET 128 **/ + $type = 64; + $this->l = $this->mx_read('l', ($type | 64 | 128), '', false); + + /* set language_from to translator_default_lang */ + $this->language_from = (isset($this->config['translator_default_lang'])) ? $this->config['translator_default_lang'] : 'lang_english'; + $this->translator_choice_lang = (isset($this->config['translator_choice_lang'])) ? $this->config['translator_choice_lang'] : ''; + + // Requests + $this->action = $this->request->request('action', ''); + $this->page_id = $this->request->request('page_id', 0); + $this->currency_id = $this->request->request('currency_id', 0); + + /* general vars */ + $this->mode = $this->request->request('mode', 'generate'); + $this->start = $this->request->request('start', 0); + + $this->ajax = $this->request->request('ajax', 0); + $this->set_file = $this->request->request('set_file', ''); + $this->into = $this->request->request('into', ''); + $this->cookies = array(); + $this->server = $_SERVER; //new ServerBag($server); + $this->template = $template; + $this->user = $mx_user; + $this->language = $mx_user->lang; + $this->root_path = !empty($mx_root_path) ? $mx_root_path : $mx_root_path; + $this->phpbb_admin_path = $phpbb_root_path . 'adm/'; + $this->forum_root_path = !empty($phpbb_root_path) ? str_replace('olympus', 'rhea', $phpbb_root_path) : (!empty($smf_root_path) ? $smf_root_path : $root_path); + $this->table_prefix = $table_prefix; + $this->mx_table_prefix = $mx_table_prefix; + $this->php_ext = !empty($php_ext) ? $php_ext : (!empty($phpEx) ? $phpEx : ".php"); + $this->mx_root_path = !empty($mx_root_path) ? $mx_root_path : '../' . $root_path; + define('MXP_MODULE_TABLE', MODULE_TABLE); + $this->module_root_path = !empty($module_root_path) ? $module_root_path : $mx_root_path . 'mx_translator/'; + //print_r($this->forum_root_path); + if (!empty($board_config['version'])) + { + if ($board_config['version'] >= '4.0.0') + { + $this->backend = 'phpbb4'; + } + if (($board_config['version'] >= '3.3.0') && ($board_config['version'] < '4.0.0')) + { + $this->backend = 'proteus'; + } + if (($board_config['version'] >= '3.2.0') && ($board_config['version'] < '3.3.0')) + { + $this->backend = 'rhea'; + } + if (($board_config['version'] >= '3.1.0') && ($board_config['version'] < '3.2.0')) + { + $this->backend = 'ascraeus'; + } + if (($board_config['version'] >= '3.0.0') && ($board_config['version'] < '3.1.0')) + { + $this->backend = 'olympus'; + } + if (($board_config['version'] >= '2.0.0') && ($board_config['version'] < '3.0.0')) + { + $this->backend = 'phpbb2'; + } + if (($board_config['version'] >= '1.0.0') && ($board_config['version'] < '2.0.0')) + { + $this->backend = 'phpbb'; + } + } + else if (!empty($board_config['portal_backend'])) + { + $this->backend = $board_config['portal_backend']; + } + else + { + $this->backend = 'internal'; + } + + $this->portal_block = !empty($board_config['portal_backend']) ? $board_config['portal_backend'] : false; + + if (isset($board_config['version']) && ($board_config['version'] < '3.1.0')) + { + define('EXT_TABLE', $table_prefix . 'ext'); + define('STYLES_TABLE', 'THEMES_TABLE'); + } + + /* Get an instance of the admin controller */ + if (!include_once($module_root_path . 'google_translater/google_translater.' . $phpEx)) + { + die('Cant find ' . $module_root_path . 'google_translater/google_translater.' . $phpEx); + } + $this->trans = new google_translater(); + //$this->trans = $this->container->get('orynider.mx_translator.googletranslater'); + + $this->language_into = $this->mxp_cookie( MXP_LANG_TOOLS_COOKIE_NAME . 'language_into', @$_POST['language']['into'] ); + $this->dir_select_from = $this->mxp_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_from', @$_POST['translate']['dir']); + $this->dir_select_into = $this->mxp_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_into', @$_POST['translate']['dir']); + $this->dir_select = $this->mxp_cookie( MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select', @$_POST['translate']['dir']); + $this->module_select = $this->mxp_cookie( MXP_LANG_TOOLS_COOKIE_NAME . 'module_select', @$_POST['translate']['module']); + $this->module_file = $this->mxp_cookie( MXP_LANG_TOOLS_COOKIE_NAME . 'module_file' , @$_POST['translate']['file']); + //$this->language_into = 'lang_russian'; + $this->mxp_get_lang_list(); + $this->get_module_list(); + //print_r($this->ext_root_path); + $this->get_dir_list(); + $this->get_file_list(); + + /** + * SELECT encoding of language file + */ + $lang_enc = $this->_load_file_to_translate($mx_root_path . 'includes/shared/phpbb2/language/' . $this->language_from . '/lang_main.' . $phpEx); + $lang_enc = $this->_load_file_to_translate($mx_root_path . 'includes/shared/phpbb2/language/' . $this->language_into . '/lang_main.' . $phpEx); + + if (isset( $lang_enc['ENCODING']) && $lang_enc != '') + { + $this->file_encoding = $lang_enc['ENCODING']; + } + else + { + $this->file_encoding = 'UTF-8'; + } + $this->file_save_path = $mx_root_path . ( (isset($_GET['s'] ) && $_GET['s'] == 'MODS') ? $this->module_select : '') . 'language/' . $this->language_into . '/' . $this->module_file; + } + + /** + * Set and get value from posted or cookie + * @return mixed value generated from posted, geted or cookie + * @param $name string cookie name of the value + * @param $value mixed value which should be setted for cookie + */ + function phpbb_cookie($name, $value = '') + { + $board_config = $this->config; /* cookie_name', 'phpbb3_li1e6', 0 */ + $cookie_board_name = $name; + $return = ''; + if ($value != '') + { + $return = $value; + // Currently not working under linux machines [Ubuntu GG] + //setcookie( $cookie_board_name, $value, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + setcookie( $cookie_board_name, $value, (time() + 21600), $board_config['cookie_path']); + + $this->cookie[$cookie_board_name] = $value; + + } + else if(isset($_COOKIE[$cookie_board_name])) + { + $value = $this->cookie[$cookie_board_name] = $this->request->variable($cookie_board_name, 0, false, \phpbb\request\request_interface::COOKIE); + // Currently not working under linux machines [Ubuntu GG] + //setcookie( $cookie_board_name, $_COOKIE[ $cookie_board_name], (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + setcookie($cookie_board_name, $value, (time() + 21600), $board_config['cookie_path']); + + } + $this->cookie['test' . $name] = $value; + return $value; + } + + /** + * Set and get value from posted or cookie + * @return mixed value generated from posted, geted or cookie + * @param $name string cookie name of the value + * @param $value mixed value which should be setted for cookie + */ + function mxp_cookie($name, $value = '') + { + $board_config = $this->config; /* cookie_name', 'phpbb3_li1e6', 0 */ + $cookie_board_name = $name; + $return = ''; + if ($value != '') + { + $return = $value; + // Currently not working under linux machines [Ubuntu GG] + //setcookie( $cookie_board_name, $value, (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + setcookie($cookie_board_name, $value, (time() + 21600), $board_config['cookie_path']); + + $this->cookie[$cookie_board_name] = $value; + + } + else if(isset($_COOKIE[$cookie_board_name])) + { + $value = $this->cookie[$cookie_board_name] = $_COOKIE[$cookie_board_name]; + // Currently not working under linux machines [Ubuntu GG] + //setcookie( $cookie_board_name, $_COOKIE[ $cookie_board_name], (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); + setcookie($cookie_board_name, $value, (time() + 21600), $board_config['cookie_path']); + + } + switch ($this->portal_block) + { + /* MX-Publisher Module */ + case 'phpbb2': + case 'internal': + case 'phpbb3': + case 'olympus': + case 'ascraeus': + case 'rhea': + case 'proteus': + default: + $this->cookie['test' . $name] = $_COOKIE['test' . $name] = $value; + break; + /* phpBB Extension */ + case false: + $this->cookie['test' . $name] = $value; + break; + } + return $value; + } + /** + * Function: _read() from class mx_request_vars + * autor John Olson + * Get the value of the specified request var (post or get) and force the result to be + * of specified type. It might also transform the result (stripslashes, htmlspecialchars) for security + * purposes. It all depends on the $type argument. + * If the specified request var does not exist, then the default ($dflt) value is returned. + * Note the $type argument behaves as a bit array where more than one option can be specified by OR'ing + * the passed argument. This is tipical practice in languages like C, but it can also be done with PHP. + * + * @access private + * @param unknown_type $var + * @param unknown_type $type + * @param unknown_type $dflt + * @return unknown + */ + public function mx_read($var, $type = 0, $dflt = '', $not_null = false) + { + if(($type & (64|128)) == 0) + { + $type |= (64|128); + } + + if(($type & 64) && isset($_POST[$var]) || ($type & 128) && isset($_GET[$var])) + { + $val = ( ($type & 64) && isset($_POST[$var]) ? $_REQUEST[$var] : $_GET[$var]); + if(!($type & 16)) + { + if(is_array($val)) + { + foreach($val as $k => $v) + { + $val[$k] = trim(stripslashes($v)); + } + } + else + { + $val = trim(stripslashes($val)); + } + } + } + else + { + $val = $dflt; + } + + if($type & 1) // integer + { + return $not_null && empty($val) ? $dflt : intval($val); + } + + if($type & 2) // float + { + return $not_null && empty($val) ? $dflt : floatval($val); + } + + if($type & 8) // ie username + { + if( is_array($val) ) + { + foreach( $val as $k => $v ) + { + $val[$k] = htmlspecialchars(strip_tags(ltrim(rtrim($v, " \t\n\r\0\x0B\\")))); + } + } + else + { + $val = htmlspecialchars(strip_tags(ltrim(rtrim($val, " \t\n\r\0\x0B\\")))); + } + } + elseif($type & 4) // no slashes nor html + { + if(is_array($val)) + { + foreach( $val as $k => $v ) + { + $val[$k] = htmlspecialchars(ltrim(rtrim($v, " \t\n\r\0\x0B\\"))); + } + } + else + { + $val = htmlspecialchars(ltrim(rtrim($val, " \t\n\r\0\x0B\\"))); + } + } + + if($type & 32) + { + if(is_array($val)) + { + foreach($val as $k => $v) + { + $val[$k] = str_replace(($type & 16 ? "\'" : "'"), "''", $v); + } + } + else + { + $val = str_replace(($type & 16 ? "\'" : "'"), "''", $val); + } + } + return $not_null && empty($val) ? $dflt : $val; + } + /** + * Function: _read() from class request_vars + * Get the value of the specified request var (post or get) and force the result to be + * of specified type. It might also transform the result (stripslashes, htmlspecialchars) for security + * purposes. It all depends on the $type argument. + * If the specified request var does not exist, then the default ($dflt) value is returned. + * Note the $type argument behaves as a bit array where more than one option can be specified by OR'ing + * the passed argument. This is tipical practice in languages like C, but it can also be done with PHP. + * + * @access private + * @param unknown_type $var + * @param unknown_type $type + * @param unknown_type $dflt + * @return unknown + */ + public function phpbb_read($var, $type = 0, $default = '', $not_null = false) + { + $super_global = \phpbb\request\request_interface::REQUEST; + $trim = true; + $var = $this->request->raw_variable($var_name, $default, $super_global); + + // Return prematurely if raw variable is empty array or the same as + // the default. Using strict comparison to ensure that one can't + // prevent proper type checking on any input variable + if ($var === array() || $var === $default) + { + return $var; + } + $this->request->type_cast_helper->recursive_set_var($var, $default, $multibyte, $trim); + + return $not_null && empty($var) ? $default : $var; + } + /** + * Load available languages list + * + * @return array available languages list: KEY = folder name + */ + function phpbb_get_lang_list() + { + if (count($this->language_list)) + { + return $this->language_list; + } + /* c:\Wamp\www\Rhea\language\ */ + $dir = opendir($this->forum_root_path . 'language/'); + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($this->forum_root_path . 'language/' . $f) || $f == $this->language_from) + { + continue; + } + if ($this->language_from == '') + { + $this->language_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'language_from', $f); + } + $this->forum_language_list[$f] = $this->ucstrreplace('lang_', '', $f); + } + closedir($dir); + if ($this->root_path != $this->forum_root_path) + { + $dir = opendir($this->root_path . 'language/'); + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($this->root_path . 'language/' . $f) || $f == $this->language_from) + { + continue; + } + if ($this->language_from == '') + { + $this->language_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'language_from', $f); + } + $this->language_list[$f] = $this->ucstrreplace('lang_', '', $f); + } + closedir($dir); + } + return $this->language_list = array_merge($this->forum_language_list, $this->language_list); + } + + /** + * Load available languages list + * + * @return array available languages list: KEY = folder name + */ + function mxp_get_lang_list() + { + if (count($this->language_list)) + { + return $this->language_list; + } + switch ($this->s) + { + case 'MXP': + case 'MODS': + $lang_dir = (isset($this->mx_root_path) ? $this->mx_root_path : $this->root_path) . 'language/'; + $lang_dir_ext = $this->module_root_path . 'language/'; + + break; + case 'PHPBB': + case 'phpbb_ext': + $lang_dir_ext = $this->forum_root_path . 'language/'; + /* c:\Wamp\www\Rhea\language\ */ + $lang_dir = $this->root_path . 'language/'; + break; + } + + if (!isset($lang_dir)) + { + global $mx_root_path, $module_root_path, $phpbb_root_path; + + $lang_dir = (isset($mx_root_path) ? $mx_root_path : $phpbb_root_path) . 'language/'; + $lang_dir_ext = $module_root_path . 'language/'; + } + + $dir = opendir($lang_dir); + + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($lang_dir . $f) || $f == $this->language_from) + { + continue; + } + if ($this->language_from == '') + { + $this->language_from = $this->mxp_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'language_from', $f); + } + $this->language_list[$f] = $this->ucstrreplace('lang_', '', $f); + } + closedir($dir); + + if ($lang_dir != $lang_dir_ext) + { + $dir = opendir($lang_dir_ext); + while($f = readdir($dir)) + { + if (($f == '.' || $f == '..') || !is_dir($lang_dir_ext . $f) || $f == $this->language_from) + { + continue; + } + if ($this->language_from == '') + { + $this->language_from = $this->mxp_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'language_from', $f); + } + $this->language_list_ext[$f] = $this->ucstrreplace('lang_', '', $f); + } + closedir($dir); + } + return $this->language_list = array_merge($this->language_list, $this->language_list_ext); + } + + function get_file_list($module = '') + { + $file_list = array(); + switch ($this->s) + { + case 'MXP': + $file_list = $this->__load_lang_files('', $this->language_from); + $this->language_file_list['MXP'] = $file_list; + break; + case 'MODS': + if ($this->module_select == '') + { + return array(); + } + $file_list = $this->__load_lang_files($module, $this->language_from); + $this->language_file_list[$module] = $file_list; + break; + case 'PHPBB': + $file_list = $this->__load_lang_files('', $this->language_from); + $this->language_file_list['PHPBB'] = $file_list; + break; + case 'phpbb_ext': + if ($this->module_select == '') + { + return array(); + } + $file_list = $this->__load_lang_files($module, $this->language_from); + $this->language_file_list[$module] = $file_list; + break; + default: + break; + } + return $file_list; + } + + function get_dir_list($module = '') + { + $dir_list = array(); + switch ($this->s) + { + case 'MXP': + $dir_list = $this->__load_lang_dirs('', $this->language_from, '', $this->language_into); + $this->language_dir_list['MXP'] = $dir_list; + break; + case 'MODS': + if ($this->module_select == '') + { + return array(); + } + $dir_list = $this->__load_lang_dirs($module, $this->language_from, '', $this->language_into); + $this->language_dir_list[$module] = $dir_list; + break; + case 'PHPBB': + $dir_list = $this->__load_lang_dirs('', $this->language_from, '', $this->language_into); + $this->language_dir_list['PHPBB'] = $dir_list; + break; + case 'phpbb_ext': + if ($this->module_select == '') + { + return array(); + } + $dir_list = $this->__load_lang_dirs($module, $this->language_from, '', $this->language_into); + $this->language_dir_list[$module] = $dir_list; + break; + default: + break; + } + //print_r($dir_list); + return $dir_list; + } + + function __load_lang_dirs($path, $lang_from = '', $add_path = '', $lang_into = '') + { + if ($this->language_from == '') + { + $this->language_from = $lang_from; + } + if ($this->language_into == '') + { + $this->language_into = $lang_into; + } + /* root path at witch we add ie. extension path */ + switch ($this->s) + { + case 'MXP': + $root_path = $this->mx_root_path; + break; + case 'MODS': + $root_path = $this->root_path; + break; + case 'PHPBB': + $root_path = $this->forum_root_path; + break; + case 'phpbb_ext': + $root_path = $this->forum_root_path; + break; + default: + break; + } + $php_ext = $this->php_ext; + if (!file_exists($root_path . 'mx_meta.inc') && !file_exists($root_path . 'modcp'.$php_ext)) + { + $lang_from = $this->encode_lang($lang_from); + if ($this->language_from == '') + { + $this->language_from = 'en'; + } + if ($this->language_into == '') + { + $this->language_into = 'ro'; + } + } + if ($this->language_from == '') + { + return null; + } + $lang_dirs = array(); + $folder_path = $root_path . $path . 'language/' . $lang_from; + $folder_into = $root_path . $path . 'language/' . $lang_into; + if ($this->dir_select_from == '') + { + $this->dir_select_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_from', $folder_path); + } + if ($this->dir_select_into == '') + { + $this->dir_select_into = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_into', $folder_into); + } + $lang_dirs[$add_path . $folder_into] = $add_path . $folder_into . '/'; + $subdirs = glob($folder_path . '/*' , GLOB_ONLYDIR); + /* * / + for($subdir_id = 0, $count = count($subdirs); $subdir_id < $count; $subdir_id++) + { + $subdir_path = $subdirs[$subdir_id]; + if ($subdir_path == '.' || $subdir_path == '..' || $subdir_path == 'CVS') + { + continue; + } + $lang_dirs[$add_path . $subdir_path] = $add_path . $subdir_path; + } + /* */ + //print_r($lang_dirs); + /* */ + foreach($subdirs as $subdir_id => $subdir_path) + { + + $subdir_path = $subdirs[$subdir_id]; + if ($subdir_path == '.' || $subdir_path == '..' || $subdir_path == 'CVS') + { + continue; + } + if ($this->dir_select_from == '') + { + $this->dir_select_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_from', $folder_path .'/'. basename($subdir_path)); + } + if ($this->dir_select_into == '') + { + $this->dir_select_into = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_into', $folder_into .'/'. basename($subdir_path)); + } + $lang_dirs[$add_path . $folder_into .'/'. basename($subdir_path)] = $add_path . $folder_into .'/'. basename($subdir_path) . '/'; + //$sub_dirs = $this->__load_lang_dirs($path, $lang_from, $add_path . '/'. $subdir); + //$lang_dirs = array_merge($lang_dirs, $sub_dirs); + } + /* */ + //print_r($lang_dirs); + return $lang_dirs; + } + + function __load_lang_dir($path, $lang_from = '', $add_path = '', $lang_into = '', $dir_select = 'language_from') + { + if ($this->language_from == '') + { + $this->language_from = $lang_from; + } + if ($this->language_into == '') + { + $this->language_into = $lang_into; + } + /* root path at witch we add ie. extension path */ + switch ($this->s) + { + case 'MXP': + $root_path = $this->mx_root_path; + break; + case 'MODS': + $root_path = $this->root_path; + break; + case 'PHPBB': + $root_path = $this->forum_root_path; + $this->language_from = (isset($this->config['translator_default_lang'])) ? $this->config['translator_default_lang'] : 'en'; + break; + case 'phpbb_ext': + $root_path = $this->forum_root_path; + $this->language_from = (isset($this->config['translator_default_lang'])) ? $this->config['translator_default_lang'] : 'en'; + break; + default: + break; + } + $php_ext = $this->php_ext; + if (!file_exists($root_path . 'mx_meta.inc') && !file_exists($root_path . 'modcp'.$php_ext)) + { + $lang_from = $this->encode_lang($lang_from); + if ($this->language_into == '') + { + $this->language_into = 'ro'; + } + } + if ($this->language_from == '') + { + return null; + } + $lang_dirs = array(); + $folder_from = $root_path . $path . 'language/' . $lang_from; + $folder_into = $root_path . $path . 'language/' . $lang_into; + $this->dir_select_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_from', $folder_from); + $this->dir_select_into = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_into', $folder_into); + $subdirs = glob($folder_from . '/*' , GLOB_ONLYDIR); + /* */ + foreach($subdirs as $subdir_id => $subdir_from) + { + + $subdir_from = $subdirs[$subdir_id]; + if ($subdir_from == '.' || $subdir_from == '..' || $subdir_from == 'CVS') + { + continue; + } + $this->dir_select_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_from', $folder_from .'/'. basename($subdir_from)); + $this->dir_select_into = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_into', $folder_into .'/'. basename($subdir_from)); + //$sub_dirs = $this->__load_lang_dirs($path, $lang_from, $add_path . '/'. $subdir); + //$lang_dirs = array_merge($lang_dirs, $sub_dirs); + } + /* */ + //print_r($this->dir_select_from); + return ($dir_select == 'language_from') ? $this->dir_select_from : $this->dir_select_into; + } + + function __load_lang_files($path, $language, $add_path = '', $dir_select = '') + { + if (($this->dir_select_from == $this->dir_select_into) && ($this->language_from !== $this->language_into)) + { + $this->dir_select_from = str_replace($this->language_into, $this->language_from, $this->dir_select_from); + $this->dir_select_from = ($this->trisstr('\.' . $php_ext . '$', $this->dir_select_from) == false) ? $this->dir_select_from : dirname($this->dir_select_from); + $this->dir_select_into = ($this->trisstr('\.' . $php_ext . '$', $this->dir_select_into) == false) ? $this->dir_select_into : dirname($this->dir_select_into); + } + /* root path at witch we add ie. extension path */ + switch ($this->s) + { + case 'MXP': + $root_path = $this->mx_root_path; + break; + case 'MODS': + $root_path = $this->root_path; + break; + case 'PHPBB': + $root_path = $this->forum_root_path; + break; + case 'phpbb_ext': + $root_path = $this->forum_root_path; + break; + default: + break; + } + $php_ext = $this->php_ext; + if (!file_exists($root_path . 'mx_meta.inc') && !file_exists($root_path . 'modcp'.$php_ext)) + { + $language = $this->encode_lang($language); + if ($this->language_from == '') + { + $this->language_from = 'en'; + } + } + if ($this->language_from == '') + { + return null; + } + + $lang_files = array(); + $folder_path = $root_path . $path . 'language/' . $language . '/' . $add_path; + $folder_from = $root_path . $path . 'language/' . $this->language_from; + $folder_into = $root_path . $path . 'language/' . $this->language_into; + $subdir_select_from = $this->dir_select_from; + $subdir_select_into = $this->dir_select_into; + $subdirs = glob($folder_from . '/*' , GLOB_ONLYDIR); + /* */ + foreach($subdirs as $subdir_id => $subdir_from) + { + + $subdir_from = $subdirs[$subdir_id]; + if ($subdir_from == '.' || $subdir_from == '..' || $subdir_from == 'CVS') + { + continue; + } + $subdir_select_from = $this->dir_select_from = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_from', $folder_from .'/'. basename($subdir_from)); + $subdir_select_into = $this->dir_select_into = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select_into', $folder_into .'/'. basename($subdir_from)); + //$sub_dirs = $this->__load_lang_dirs($path, $lang_from, $add_path . '/'. $subdir); + //$lang_dirs = array_merge($lang_dirs, $sub_dirs); + } + /* */ + if (!is_dir($folder_path . '/')) + { + $dir = 'Resource id #53'.'Resource id #54'.'Resource id #55'.'Resource id #56'.'Resource id #57'.'Resource id #58'; + return array_merge(array('common.php' => 'common.php', 'info_acp_translator.php' => 'info_acp_translator.php', 'lang_admin.php' => 'lang_admin.php'), array ('lang_admin.php' => 'lang_admin.php', 'lang_main.php' => 'lang_main.php', 'lang_meta.php' => 'lang_meta.php')); + } + else + { + $dir = opendir($folder_path); + } + while($file = @readdir($dir)) + { + if ( $file == '.' || $file == '..' || $file == 'CVS') + { + continue; + } + + if (is_dir($folder_path . '/' . $file)) + { + + $sub_files = $this->__load_lang_files($path, $language, $add_path . '/'. $file); + $lang_files = array_merge($lang_files, $sub_files); + } + else if( is_file($folder_path . '/' . $file)) + { + $lang_files[$add_path . (!empty($add_path) ? '/' : '') . $file] = $add_path . (!empty($add_path) ? '/' : '') . $file; + } + } + @closedir($dir); + if (is_dir($subdir_select_from . '/') && is_array($subdirs)) + { + $subdir = opendir($subdir_select_from); + } + while($file = @readdir($subdir)) + { + //if ( $file == '.' || $file == '..' || $file == 'CVS' || ($this->trisstr('\.' . $php_ext . '$', $file) == false) ) + if ($file == '.' || $file == '..' || $file == 'CVS') + { + continue; + } + if(is_file($subdir_select_from . '/' . $file)) + { + $sub_files[$add_path . (!empty($add_path) ? '/' : '') . $file] = $add_path . (!empty($add_path) ? '/' : '') . $file; + $lang_files = array_merge($lang_files, $sub_files); + } + } + @closedir($subdir); + return $lang_files; + } + + function get_module_list() + { + global $db; + $file_list = array(); + $module_list = array(); + + switch ($this->s) + { + case 'MXP': + case 'MODS': + $sql = "SELECT module_path, module_name FROM " . MXP_MODULE_TABLE . " ORDER BY module_name"; + if (($rs = $this->db->sql_query($sql))) + { + while($row = $this->db->sql_fetchrow($rs)) + { + $dir_list = $this->__load_lang_dirs($row['module_path'], $this->language_from, '', $this->language_into); + $file_list = $this->__load_lang_files($row['module_path'], $this->language_from); + //print_r($dir_list); + if (count( $file_list) == 0) + { + continue; + } + if ($this->dir_select == '') + { + $this->dir_select = $this->mxp_cookie( MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select', $row['module_path']); + + } + if ($this->module_select == '') + { + $this->module_select = $this->mxp_cookie( MXP_LANG_TOOLS_COOKIE_NAME . 'module_select', $row['module_path']); + + } + $this->ext_root_path = $this->mx_root_path . $row['module_path']; + $this->module_list[$row['module_path']] = $row['module_name']; + $this->module_name = print_r($row['module_name'], true); + $this->language_dir_list[$row['module_path']] = $dir_list; + $this->language_file_list[$row['module_path']] = $file_list; + } + } + else + { + $this->ext_root_path = $this->mx_root_path; + } + break; + case 'PHPBB': + case 'phpbb_ext': + /* c:\Wamp\www\Rhea\language\ */ + $lang_dir = $this->forum_root_path . 'language/'; + + // Now only pull the data of the requested topics + $sql_array = array( + 'SELECT' => 'e.*', + 'FROM' => array(EXT_TABLE => 'e'), + ); + $sql = $this->db->sql_build_query('SELECT', $sql_array); + $rs = $this->db->sql_query_limit($sql, 10); + $file_list = array(); + $row = $this->db->sql_fetchrow($rs); + $row['module_path'] = 'ext/' . $row['ext_name'] . '/'; + $this->ext_root_path = $this->forum_root_path . $row['module_path']; + $dir_list = $this->__load_lang_dirs($row['module_path'], $this->language_from, '', $this->language_into); + $file_list = $this->__load_lang_files($row['module_path'], $this->language_from); + if (count($file_list) == 0) + { + continue; + } + if ($this->dir_select == '') + { + $this->dir_select = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'dir_select', $row['module_path']); + } + if ($this->module_select == '') + { + $this->module_select = $this->phpbb_cookie(MXP_LANG_TOOLS_COOKIE_NAME . 'module_select', $row['module_path']); + + } + $module_name = explode('/', $row['ext_name']); + $row['module_name'] = $module_name[1]; + $module_name = explode('/', $row['ext_name']); + $vendor = $module_name[0]; + $counthost = count($module_name) - 1; + $docid2 = $module_name[$counthost]; + $this->module_list[$row['module_path']] = $row['module_name']; + $this->module_name = print_r($row['module_name'], true); + $this->language_dir_list[$row['module_path']] = $dir_list; + $this->language_file_list[$row['module_path']] = $file_list; + $this->db->sql_freeresult($rs); + break; + } + + return $this->module_list; + } + + /** + * Generate option list + * @return HMTML option list + * @param $html string generate option list in HTML or JS format /now available only HTML/ + * @param $which_list string which option list should be generated /' + * @param $selected string key of selected item + * @param $disabled mixed list of disabed key items + * @param $from_select boolean is the list initial? + */ + function gen_select_list($html, $which_list, $selected = '', $disabled = '') + { + switch ($which_list) + { + case 'language': + $list_ary = $this->language_list; + break; + case 'modules': + $list_ary = $this->module_list; + break; + case 'phpbb_ext': + $list_ary = $this->module_list; + break; + case 'phpbb': + $list_ary = $this->language_file_list['PHPBB']; + break; + case 'core': + $list_ary = $this->language_file_list['MXP']; + break; + case 'files': + switch($this->s) + { + case 'MXP': + $list_ary = $this->language_file_list['MXP']; + break; + case 'PHPBB': + $list_ary = $this->language_file_list['PHPBB']; + break; + case 'MODS': + $list_ary = @isset($this->module_select) ? @print_r($this->language_dir_list[$this->module_select], true) : ''; + break; + case 'phpbb_ext': + $list_ary = $this->language_file_list[$this->module_select]; + break; + } + break; + case 'dirs': + switch($this->s) + { + case 'MXP': + $list_ary = $this->language_dir_list['MXP']; + break; + case 'PHPBB': + $list_ary = $this->language_dir_list['PHPBB']; + break; + case 'MODS': + $list_ary = @isset($this->dir_select) ? @print_r($this->language_dir_list[$this->dir_select], true) : ''; + break; + case 'phpbb_ext': + $list_ary = $this->language_dir_list[$this->dir_select]; + break; + default: + $list_ary = $this->language_dir_list[$this->dir_select]; + break; + } + break; + default: + return ''; + break; + } + if (count($list_ary) < 1) + { + return ''; + } + if (!is_array($list_ary)) + { + $list_ary = array(print_r($list_ary, true), ''); + } + asort($list_ary); + reset($list_ary); + $option_list = ''; + $num_args = func_num_args(); + + switch ($html) + { + case 'html': + foreach($list_ary as $key => $value) + { + if ((is_array( $disabled) && in_array( $key, $disabled)) || (!is_array( $disabled) && $key == $disabled)) + { + continue; + } + $option_list .= '