Move over to own Repository :)

This commit is contained in:
Kevin
2008-01-26 00:01:09 +00:00
commit 41022d1ddb
149 changed files with 12674 additions and 0 deletions

View File

@@ -0,0 +1,360 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* Set config value. Creates missing config entry.
*/
function set_portal_config($config_name, $config_value, $is_dynamic = false)
{
global $db, $cache, $config;
$sql = 'UPDATE ' . PORTAL_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($config[$config_name]))
{
$sql = 'INSERT INTO ' . PORTAL_CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array(
'config_name' => $config_name,
'config_value' => $config_value,
'is_dynamic' => ($is_dynamic) ? 1 : 0));
$db->sql_query($sql);
}
$config[$config_name] = $config_value;
if (!$is_dynamic)
{
$cache->destroy('config');
}
}
class acp_portal
{
var $u_action;
var $new_config = array();
function main($id, $mode)
{
global $db, $user, $template;
global $config, $portal_config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
// Get portal config
$sql = 'SELECT *
FROM ' . PORTAL_CONFIG_TABLE;
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result) )
{
$config_name = $row['config_name'];
$config_value = $row['config_value'];
$config[$config_name] = $config_value;
}
$user->add_lang('mods/lang_portal_acp');
$action = request_var('action', '');
$submit = (isset($_POST['submit'])) ? true : false;
/**
* Validation types are:
* string, int, bool,
* script_path (absolute path in url - beginning with / and no trailing slash),
* rpath (relative), rwpath (realtive, writeable), path (relative path, but able to escape the root), wpath (writeable)
*/
switch ($mode)
{
case 'general':
$display_vars = array(
'title' => 'ACP_PORTAL_GENERAL_INFO',
'vars' => array(
'legend1' => 'ACP_PORTAL_GENERAL_SETTINGS',
'portal_advanced_stat' => array('lang' => 'PORTAL_ADVANCED_STAT' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_search' => array('lang' => 'PORTAL_SEARCH' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_leaders' => array('lang' => 'PORTAL_LEADERS' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_clock' => array('lang' => 'PORTAL_CLOCK' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_link_us' => array('lang' => 'PORTAL_LINK_US' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_links' => array('lang' => 'PORTAL_LINKS' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_birthdays' => array('lang' => 'PORTAL_BIRTHDAYS' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_random_member' => array('lang' => 'PORTAL_RANDOM_MEMBER' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_whois_online' => array('lang' => 'PORTAL_WHOIS_ONLINE' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
//'portal_change_style' => array('lang' => 'PORTAL_CHANGE_STYLE' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_main_menu' => array('lang' => 'PORTAL_MAIN_MENU' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_user_menu' => array('lang' => 'PORTAL_USER_MENU' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_friends' => array('lang' => 'PORTAL_FRIENDS' , 'validate' => 'bool' , 'type' => 'radio:yes_no' , 'explain' => true),
'portal_max_online_friends' => array('lang' => 'PORTAL_MAX_ONLINE_FRIENDS' , 'validate' => 'int' , 'type' => 'text:3:3' , 'explain' => true),
'legend2' => 'ACP_PORTAL_COLLUMN_WIDTH_SETTINGS',
'portal_left_collumn_width' => array('lang' => 'PORTAL_LEFT_COLLUMN_WIDTH' , 'validate' => 'int' , 'type' => 'text:3:3', 'explain' => true),
'portal_right_collumn_width' => array('lang' => 'PORTAL_RIGHT_COLLUMN_WIDTH' , 'validate' => 'int' , 'type' => 'text:3:3', 'explain' => true),
)
);
break;
case 'news':
$display_vars = array(
'title' => 'ACP_PORTAL_NEWS_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_NEWS_SETTINGS',
'portal_news' => array('lang' => 'PORTAL_NEWS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_news_style' => array('lang' => 'PORTAL_NEWS_STYLE' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_show_all_news' => array('lang' => 'PORTAL_SHOW_ALL_NEWS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_number_of_news' => array('lang' => 'PORTAL_NUMBER_OF_NEWS' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_news_length' => array('lang' => 'PORTAL_NEWS_LENGTH' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_news_forum' => array('lang' => 'PORTAL_NEWS_FORUM' , 'validate' => 'string', 'type' => 'text:10:200', 'explain' => true),
)
);
break;
case 'announcements':
$display_vars = array(
'title' => 'ACP_PORTAL_ANNOUNCE_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_ANNOUNCE_SETTINGS',
'portal_announcements' => array('lang' => 'PORTAL_ANNOUNCEMENTS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_announcements_style' => array('lang' => 'PORTAL_ANNOUNCEMENTS_STYLE' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_number_of_announcements' => array('lang' => 'PORTAL_NUMBER_OF_ANNOUNCEMENTS' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_announcements_day' => array('lang' => 'PORTAL_ANNOUNCEMENTS_DAY' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_announcements_length' => array('lang' => 'PORTAL_ANNOUNCEMENTS_LENGTH' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_global_announcements_forum' => array('lang' => 'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM', 'validate' => 'string', 'type' => 'text:10:200', 'explain' => true),
)
);
break;
case 'recent':
$display_vars = array(
'title' => 'ACP_PORTAL_RECENT_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_RECENT_SETTINGS',
'portal_recent' => array('lang' => 'PORTAL_RECENT' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_max_topics' => array('lang' => 'PORTAL_MAX_TOPIC' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_recent_title_limit' => array('lang' => 'PORTAL_RECENT_TITLE_LIMIT' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_exclude_forums' => array('lang' => 'PORTAL_EXCLUDE_FORUM' , 'validate' => 'string', 'type' => 'text:10:200', 'explain' => true),
)
);
break;
case 'wordgraph':
$display_vars = array(
'title' => 'ACP_PORTAL_WORDGRAPH_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_WORDGRAPH_SETTINGS',
'portal_wordgraph' => array('lang' => 'PORTAL_WORDGRAPH' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_wordgraph_max_words' => array('lang' => 'PORTAL_WORDGRAPH_MAX_WORDS' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'portal_wordgraph_word_counts' => array('lang' => 'PORTAL_WORDGRAPH_WORD_COUNTS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_wordgraph_ratio' => array('lang' => 'PORTAL_WORDGRAPH_RATIO' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
)
);
break;
case 'paypal':
$display_vars = array(
'title' => 'ACP_PORTAL_PAYPAL_SETTINGS',
'vars' => array(
'legend2' => 'ACP_PORTAL_PAYPAL_SETTINGS',
'portal_pay_c_block' => array('lang' => 'PORTAL_PAY_C_BLOCK' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_pay_s_block' => array('lang' => 'PORTAL_PAY_S_BLOCK' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_pay_acc' => array('lang' => 'PORTAL_PAY_ACC' , 'validate' => 'string', 'type' => 'text:25:100', 'explain' => true),
)
);
break;
case 'attachments':
$display_vars = array(
'title' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS',
'portal_attachments' => array('lang' => 'PORTAL_ATTACHMENTS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_attachments_number' => array('lang' => 'PORTAL_ATTACHMENTS_NUMBER' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
)
);
break;
case 'members':
$display_vars = array(
'title' => 'ACP_PORTAL_MEMBERS_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_MEMBERS_SETTINGS',
'portal_latest_members' => array('lang' => 'PORTAL_LATEST_MEMBERS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_max_last_member' => array('lang' => 'PORTAL_MAX_LAST_MEMBER' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
)
);
break;
case 'polls':
$display_vars = array(
'title' => 'ACP_PORTAL_POLLS_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_POLLS_SETTINGS',
'portal_poll_topic' => array('lang' => 'PORTAL_POLL_TOPIC' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_poll_topic_id' => array('lang' => 'PORTAL_POLL_TOPIC_ID' , 'validate' => 'string', 'type' => 'text:10:200', 'explain' => true),
)
);
break;
case 'bots':
$display_vars = array(
'title' => 'ACP_PORTAL_BOTS_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_BOTS_SETTINGS',
'portal_load_last_visited_bots' => array('lang' => 'PORTAL_LOAD_LAST_VISITED_BOTS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_last_visited_bots_number' => array('lang' => 'PORTAL_LAST_VISITED_BOTS_NUMBER' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
)
);
break;
case 'poster':
$display_vars = array(
'title' => 'ACP_PORTAL_MOST_POSTER_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_MOST_POSTER_SETTINGS',
'portal_top_posters' => array('lang' => 'PORTAL_TOP_POSTERS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_max_most_poster' => array('lang' => 'PORTAL_MAX_MOST_POSTER' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
)
);
break;
case 'welcome':
$display_vars = array(
'title' => 'ACP_PORTAL_WELCOME_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_WELCOME_SETTINGS',
'portal_welcome' => array('lang' => 'PORTAL_WELCOME' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_welcome_guest' => array('lang' => 'PORTAL_WELCOME_GUEST' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_welcome_intro' => array('lang' => 'PORTAL_WELCOME_INTRO' , 'validate' => 'string', 'type' => 'textarea:6:6', 'explain' => true),
)
);
break;
/*
case 'ads':
$display_vars = array(
'title' => 'ACP_PORTAL_ADS_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_ADS_SETTINGS',
'portal_ads_small' => array('lang' => 'PORTAL_ADS_SMALL' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
//'portal_ads_small_box' => array('lang' => 'PORTAL_ADS_SMALL_BOX' , 'validate' => 'string', 'type' => 'textarea:8:8', 'explain' => true),
'portal_ads_center' => array('lang' => 'PORTAL_ADS_CENTER' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
//'portal_ads_center_box' => array('lang' => 'PORTAL_ADS_CENTER_BOX' , 'validate' => 'string', 'type' => 'textarea:8:8', 'explain' => true),
)
);
break;
*/
case 'minicalendar':
$display_vars = array(
'title' => 'ACP_PORTAL_MINICALENDAR_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_MINICALENDAR_SETTINGS',
'portal_minicalendar' => array('lang' => 'PORTAL_MINICALENDAR' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_minicalendar_today_color' => array('lang' => 'PORTAL_MINICALENDAR_TODAY_COLOR' , 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true),
'portal_minicalendar_day_link_color' => array('lang' => 'PORTAL_MINICALENDAR_DAY_LINK_COLOR' , 'validate' => 'string', 'type' => 'text:10:10', 'explain' => true),
)
);
break;
default:
trigger_error('NO_MODE', E_USER_ERROR);
break;
}
if (isset($display_vars['lang']))
{
$user->add_lang($display_vars['lang']);
}
$this->new_config = $config;
$cfg_array = (isset($_REQUEST['config'])) ? utf8_normalize_nfc(request_var('config', array('' => ''), true)) : $this->new_config;
$error = array();
// We validate the complete config if whished
validate_config_vars($display_vars['vars'], $cfg_array, $error);
// Do not write values if there is an error
if (sizeof($error))
{
$submit = false;
}
// We go through the display_vars to make sure no one is trying to set variables he/she is not allowed to...
foreach ($display_vars['vars'] as $config_name => $null)
{
if (!isset($cfg_array[$config_name]) || strpos($config_name, 'legend') !== false)
{
continue;
}
$this->new_config[$config_name] = $config_value = $cfg_array[$config_name];
if ($config_name == 'email_function_name')
{
$this->new_config['email_function_name'] = trim(str_replace(array('(', ')'), array('', ''), $this->new_config['email_function_name']));
$this->new_config['email_function_name'] = (empty($this->new_config['email_function_name']) || !function_exists($this->new_config['email_function_name'])) ? 'mail' : $this->new_config['email_function_name'];
$config_value = $this->new_config['email_function_name'];
}
if ($submit)
{
set_portal_config($config_name, $config_value);
}
}
if ($submit)
{
add_log('admin', 'LOG_CONFIG_' . strtoupper($mode));
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
}
$this->tpl_name = 'acp_board';
$this->page_title = $display_vars['title'];
$template->assign_vars(array(
'L_TITLE' => $user->lang[$display_vars['title']],
'L_TITLE_EXPLAIN' => $user->lang[$display_vars['title'] . '_EXPLAIN'],
'S_ERROR' => (sizeof($error)) ? true : false,
'ERROR_MSG' => implode('<br />', $error),
'U_ACTION' => $this->u_action)
);
// Output relevant page
foreach ($display_vars['vars'] as $config_key => $vars)
{
if (!is_array($vars) && strpos($config_key, 'legend') === false)
{
continue;
}
if (strpos($config_key, 'legend') !== false)
{
$template->assign_block_vars('options', array(
'S_LEGEND' => true,
'LEGEND' => (isset($user->lang[$vars])) ? $user->lang[$vars] : $vars)
);
continue;
}
$type = explode(':', $vars['type']);
$l_explain = '';
if ($vars['explain'] && isset($vars['lang_explain']))
{
$l_explain = (isset($user->lang[$vars['lang_explain']])) ? $user->lang[$vars['lang_explain']] : $vars['lang_explain'];
}
else if ($vars['explain'])
{
$l_explain = (isset($user->lang[$vars['lang'] . '_EXPLAIN'])) ? $user->lang[$vars['lang'] . '_EXPLAIN'] : '';
}
$template->assign_block_vars('options', array(
'KEY' => $config_key,
'TITLE' => (isset($user->lang[$vars['lang']])) ? $user->lang[$vars['lang']] : $vars['lang'],
'S_EXPLAIN' => $vars['explain'],
'TITLE_EXPLAIN' => $l_explain,
'CONTENT' => build_cfg_template($type, $config_key, $this->new_config, $config_key, $vars),
)
);
unset($display_vars['vars'][$config_key]);
}
}
}
?>

View File

@@ -0,0 +1,43 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @package module_install
*/
class acp_portal_info
{
function module()
{
return array(
'filename' => 'acp_portal',
'title' => 'ACP_PORTAL_INFO',
'version' => '0.1.0',
'modes' => array(
'general' => array('title' => 'ACP_PORTAL_GENERAL_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'news' => array('title' => 'ACP_PORTAL_NEWS_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'announcements' => array('title' => 'ACP_PORTAL_ANNOUNCE_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'welcome' => array('title' => 'ACP_PORTAL_WELCOME_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'recent' => array('title' => 'ACP_PORTAL_RECENT_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'wordgraph' => array('title' => 'ACP_PORTAL_WORDGRAPH_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'paypal' => array('title' => 'ACP_PORTAL_PAYPAL_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'attachments' => array('title' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'members' => array('title' => 'ACP_PORTAL_MEMBERS_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'polls' => array('title' => 'ACP_PORTAL_POLLS_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'bots' => array('title' => 'ACP_PORTAL_BOTS_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'poster' => array('title' => 'ACP_PORTAL_MOST_POSTER_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
//'ads' => array('title' => 'ACP_PORTAL_ADS_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'minicalendar' => array('title' => 'ACP_PORTAL_MINICALENDAR_INFO', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
),
);
}
}
?>

View File

@@ -0,0 +1,954 @@
<?php
/**
*
* @package phpbb3f1webtipp
* $LastChangedDate$
* $LastChangedBy$
* $Id$
* $Revision$
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* This file creates new schema files for every database.
* The filenames will be prefixed with an underscore to not overwrite the current schema files.
*
* If you overwrite the original schema files please make sure you save the file with UNIX linefeeds.
*/
//die("Please read the first lines of this script for instructions on how to enable it");
@set_time_limit(0);
$schema_path = './schemas/';
if (!is_writable($schema_path))
{
die('Schema path not writable');
}
$schema_data = get_schema_struct();
$dbms_type_map = array(
'mysql_41' => array(
'INT:' => 'int(%d)',
'BINT' => 'bigint(20)',
'UINT' => 'mediumint(8) UNSIGNED',
'UINT:' => 'int(%d) UNSIGNED',
'TINT:' => 'tinyint(%d)',
'USINT' => 'smallint(4) UNSIGNED',
'BOOL' => 'tinyint(1) UNSIGNED',
'VCHAR' => 'varchar(255)',
'VCHAR:' => 'varchar(%d)',
'CHAR:' => 'char(%d)',
'XSTEXT' => 'text',
'XSTEXT_UNI'=> 'varchar(100)',
'STEXT' => 'text',
'STEXT_UNI' => 'varchar(255)',
'TEXT' => 'text',
'TEXT_UNI' => 'text',
'MTEXT' => 'mediumtext',
'MTEXT_UNI' => 'mediumtext',
'TIMESTAMP' => 'int(11) UNSIGNED',
'DECIMAL' => 'decimal(5,2)',
'DECIMAL:' => 'decimal(%d,2)',
'PDECIMAL' => 'decimal(6,3)',
'PDECIMAL:' => 'decimal(%d,3)',
'VCHAR_UNI' => 'varchar(255)',
'VCHAR_UNI:'=> 'varchar(%d)',
'VCHAR_CI' => 'varchar(255)',
'VARBINARY' => 'varbinary(255)',
),
'mysql_40' => array(
'INT:' => 'int(%d)',
'BINT' => 'bigint(20)',
'UINT' => 'mediumint(8) UNSIGNED',
'UINT:' => 'int(%d) UNSIGNED',
'TINT:' => 'tinyint(%d)',
'USINT' => 'smallint(4) UNSIGNED',
'BOOL' => 'tinyint(1) UNSIGNED',
'VCHAR' => 'varbinary(255)',
'VCHAR:' => 'varbinary(%d)',
'CHAR:' => 'binary(%d)',
'XSTEXT' => 'blob',
'XSTEXT_UNI'=> 'blob',
'STEXT' => 'blob',
'STEXT_UNI' => 'blob',
'TEXT' => 'blob',
'TEXT_UNI' => 'blob',
'MTEXT' => 'mediumblob',
'MTEXT_UNI' => 'mediumblob',
'TIMESTAMP' => 'int(11) UNSIGNED',
'DECIMAL' => 'decimal(5,2)',
'DECIMAL:' => 'decimal(%d,2)',
'PDECIMAL' => 'decimal(6,3)',
'PDECIMAL:' => 'decimal(%d,3)',
'VCHAR_UNI' => 'blob',
'VCHAR_UNI:'=> array('varbinary(%d)', 'limit' => array('mult', 3, 255, 'blob')),
'VCHAR_CI' => 'blob',
'VARBINARY' => 'varbinary(255)',
),
'firebird' => array(
'INT:' => 'INTEGER',
'BINT' => 'DOUBLE PRECISION',
'UINT' => 'INTEGER',
'UINT:' => 'INTEGER',
'TINT:' => 'INTEGER',
'USINT' => 'INTEGER',
'BOOL' => 'INTEGER',
'VCHAR' => 'VARCHAR(255) CHARACTER SET NONE',
'VCHAR:' => 'VARCHAR(%d) CHARACTER SET NONE',
'CHAR:' => 'CHAR(%d) CHARACTER SET NONE',
'XSTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
'STEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
'TEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
'MTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
'XSTEXT_UNI'=> 'VARCHAR(100) CHARACTER SET UTF8',
'STEXT_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
'TEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
'MTEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
'TIMESTAMP' => 'INTEGER',
'DECIMAL' => 'DOUBLE PRECISION',
'DECIMAL:' => 'DOUBLE PRECISION',
'PDECIMAL' => 'DOUBLE PRECISION',
'PDECIMAL:' => 'DOUBLE PRECISION',
'VCHAR_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
'VCHAR_UNI:'=> 'VARCHAR(%d) CHARACTER SET UTF8',
'VCHAR_CI' => 'VARCHAR(255) CHARACTER SET UTF8',
'VARBINARY' => 'CHAR(255) CHARACTER SET NONE',
),
'mssql' => array(
'INT:' => '[int]',
'BINT' => '[float]',
'UINT' => '[int]',
'UINT:' => '[int]',
'TINT:' => '[int]',
'USINT' => '[int]',
'BOOL' => '[int]',
'VCHAR' => '[varchar] (255)',
'VCHAR:' => '[varchar] (%d)',
'CHAR:' => '[char] (%d)',
'XSTEXT' => '[varchar] (1000)',
'STEXT' => '[varchar] (3000)',
'TEXT' => '[varchar] (8000)',
'MTEXT' => '[text]',
'XSTEXT_UNI'=> '[varchar] (100)',
'STEXT_UNI' => '[varchar] (255)',
'TEXT_UNI' => '[varchar] (4000)',
'MTEXT_UNI' => '[text]',
'TIMESTAMP' => '[int]',
'DECIMAL' => '[float]',
'DECIMAL:' => '[float]',
'PDECIMAL' => '[float]',
'PDECIMAL:' => '[float]',
'VCHAR_UNI' => '[varchar] (255)',
'VCHAR_UNI:'=> '[varchar] (%d)',
'VCHAR_CI' => '[varchar] (255)',
'VARBINARY' => '[varchar] (255)',
),
'oracle' => array(
'INT:' => 'number(%d)',
'BINT' => 'number(20)',
'UINT' => 'number(8)',
'UINT:' => 'number(%d)',
'TINT:' => 'number(%d)',
'USINT' => 'number(4)',
'BOOL' => 'number(1)',
'VCHAR' => 'varchar2(255)',
'VCHAR:' => 'varchar2(%d)',
'CHAR:' => 'char(%d)',
'XSTEXT' => 'varchar2(1000)',
'STEXT' => 'varchar2(3000)',
'TEXT' => 'clob',
'MTEXT' => 'clob',
'XSTEXT_UNI'=> 'varchar2(300)',
'STEXT_UNI' => 'varchar2(765)',
'TEXT_UNI' => 'clob',
'MTEXT_UNI' => 'clob',
'TIMESTAMP' => 'number(11)',
'DECIMAL' => 'number(5, 2)',
'DECIMAL:' => 'number(%d, 2)',
'PDECIMAL' => 'number(6, 3)',
'PDECIMAL:' => 'number(%d, 3)',
'VCHAR_UNI' => 'varchar2(765)',
'VCHAR_UNI:'=> array('varchar2(%d)', 'limit' => array('mult', 3, 765, 'clob')),
'VCHAR_CI' => 'varchar2(255)',
'VARBINARY' => 'raw(255)',
),
'sqlite' => array(
'INT:' => 'int(%d)',
'BINT' => 'bigint(20)',
'UINT' => 'INTEGER UNSIGNED', //'mediumint(8) UNSIGNED',
'UINT:' => 'INTEGER UNSIGNED', // 'int(%d) UNSIGNED',
'TINT:' => 'tinyint(%d)',
'USINT' => 'INTEGER UNSIGNED', //'mediumint(4) UNSIGNED',
'BOOL' => 'INTEGER UNSIGNED', //'tinyint(1) UNSIGNED',
'VCHAR' => 'varchar(255)',
'VCHAR:' => 'varchar(%d)',
'CHAR:' => 'char(%d)',
'XSTEXT' => 'text(65535)',
'STEXT' => 'text(65535)',
'TEXT' => 'text(65535)',
'MTEXT' => 'mediumtext(16777215)',
'XSTEXT_UNI'=> 'text(65535)',
'STEXT_UNI' => 'text(65535)',
'TEXT_UNI' => 'text(65535)',
'MTEXT_UNI' => 'mediumtext(16777215)',
'TIMESTAMP' => 'INTEGER UNSIGNED', //'int(11) UNSIGNED',
'DECIMAL' => 'decimal(5,2)',
'DECIMAL:' => 'decimal(%d,2)',
'PDECIMAL' => 'decimal(6,3)',
'PDECIMAL:' => 'decimal(%d,3)',
'VCHAR_UNI' => 'varchar(255)',
'VCHAR_UNI:'=> 'varchar(%d)',
'VCHAR_CI' => 'varchar(255)',
'VARBINARY' => 'blob',
),
'postgres' => array(
'INT:' => 'INT4',
'BINT' => 'INT8',
'UINT' => 'INT4', // unsigned
'UINT:' => 'INT4', // unsigned
'USINT' => 'INT2', // unsigned
'BOOL' => 'INT2', // unsigned
'TINT:' => 'INT2',
'VCHAR' => 'varchar(255)',
'VCHAR:' => 'varchar(%d)',
'CHAR:' => 'char(%d)',
'XSTEXT' => 'varchar(1000)',
'STEXT' => 'varchar(3000)',
'TEXT' => 'varchar(8000)',
'MTEXT' => 'TEXT',
'XSTEXT_UNI'=> 'varchar(100)',
'STEXT_UNI' => 'varchar(255)',
'TEXT_UNI' => 'varchar(4000)',
'MTEXT_UNI' => 'TEXT',
'TIMESTAMP' => 'INT4', // unsigned
'DECIMAL' => 'decimal(5,2)',
'DECIMAL:' => 'decimal(%d,2)',
'PDECIMAL' => 'decimal(6,3)',
'PDECIMAL:' => 'decimal(%d,3)',
'VCHAR_UNI' => 'varchar(255)',
'VCHAR_UNI:'=> 'varchar(%d)',
'VCHAR_CI' => 'varchar_ci',
'VARBINARY' => 'bytea',
),
);
// A list of types being unsigned for better reference in some db's
$unsigned_types = array('UINT', 'UINT:', 'USINT', 'BOOL', 'TIMESTAMP');
$supported_dbms = array('firebird', 'mssql', 'mysql_40', 'mysql_41', 'oracle', 'postgres', 'sqlite');
foreach ($supported_dbms as $dbms)
{
$fp = fopen($schema_path . '_' . $dbms . '_schema.sql', 'wt');
$line = '';
// Write Header
switch ($dbms)
{
case 'mysql_40':
case 'mysql_41':
$line = "#\n# \$I" . "d: $\n#\n\n";
break;
case 'firebird':
$line = "#\n# \$I" . "d: $\n#\n\n";
$line .= custom_data('firebird') . "\n";
break;
case 'sqlite':
$line = "#\n# \$I" . "d: $\n#\n\n";
$line .= "BEGIN TRANSACTION;\n\n";
break;
case 'mssql':
$line = "/*\n\n \$I" . "d: $\n\n*/\n\n";
$line .= "BEGIN TRANSACTION\nGO\n\n";
break;
case 'oracle':
$line = "/*\n\n \$I" . "d: $\n\n*/\n\n";
$line .= custom_data('oracle') . "\n";
break;
case 'postgres':
$line = "/*\n\n \$I" . "d: $\n\n*/\n\n";
$line .= "BEGIN;\n\n";
$line .= custom_data('postgres') . "\n";
break;
}
fwrite($fp, $line);
foreach ($schema_data as $table_name => $table_data)
{
// Write comment about table
switch ($dbms)
{
case 'mysql_40':
case 'mysql_41':
case 'firebird':
case 'sqlite':
fwrite($fp, "# Table: '{$table_name}'\n");
break;
case 'mssql':
case 'oracle':
case 'postgres':
fwrite($fp, "/*\n\tTable: '{$table_name}'\n*/\n");
break;
}
// Create Table statement
$generator = $textimage = false;
$line = '';
switch ($dbms)
{
case 'mysql_40':
case 'mysql_41':
case 'firebird':
case 'oracle':
case 'sqlite':
case 'postgres':
$line = "CREATE TABLE {$table_name} (\n";
break;
case 'mssql':
$line = "CREATE TABLE [{$table_name}] (\n";
break;
}
// Table specific so we don't get overlap
$modded_array = array();
// Write columns one by one...
foreach ($table_data['COLUMNS'] as $column_name => $column_data)
{
// Get type
if (strpos($column_data[0], ':') !== false)
{
list($orig_column_type, $column_length) = explode(':', $column_data[0]);
if (!is_array($dbms_type_map[$dbms][$orig_column_type . ':']))
{
$column_type = sprintf($dbms_type_map[$dbms][$orig_column_type . ':'], $column_length);
}
else
{
if (isset($dbms_type_map[$dbms][$orig_column_type . ':']['rule']))
{
switch ($dbms_type_map[$dbms][$orig_column_type . ':']['rule'][0])
{
case 'div':
$column_length /= $dbms_type_map[$dbms][$orig_column_type . ':']['rule'][1];
$column_length = ceil($column_length);
$column_type = sprintf($dbms_type_map[$dbms][$orig_column_type . ':'][0], $column_length);
break;
}
}
if (isset($dbms_type_map[$dbms][$orig_column_type . ':']['limit']))
{
switch ($dbms_type_map[$dbms][$orig_column_type . ':']['limit'][0])
{
case 'mult':
$column_length *= $dbms_type_map[$dbms][$orig_column_type . ':']['limit'][1];
if ($column_length > $dbms_type_map[$dbms][$orig_column_type . ':']['limit'][2])
{
$column_type = $dbms_type_map[$dbms][$orig_column_type . ':']['limit'][3];
$modded_array[$column_name] = $column_type;
}
else
{
$column_type = sprintf($dbms_type_map[$dbms][$orig_column_type . ':'][0], $column_length);
}
break;
}
}
}
$orig_column_type .= ':';
}
else
{
$orig_column_type = $column_data[0];
$column_type = $dbms_type_map[$dbms][$column_data[0]];
if ($column_type == 'text' || $column_type == 'blob')
{
$modded_array[$column_name] = $column_type;
}
}
// Adjust default value if db-dependant specified
if (is_array($column_data[1]))
{
$column_data[1] = (isset($column_data[1][$dbms])) ? $column_data[1][$dbms] : $column_data[1]['default'];
}
switch ($dbms)
{
case 'mysql_40':
case 'mysql_41':
$line .= "\t{$column_name} {$column_type} ";
// For hexadecimal values do not use single quotes
if (!is_null($column_data[1]) && substr($column_type, -4) !== 'text' && substr($column_type, -4) !== 'blob')
{
$line .= (strpos($column_data[1], '0x') === 0) ? "DEFAULT {$column_data[1]} " : "DEFAULT '{$column_data[1]}' ";
}
$line .= 'NOT NULL';
if (isset($column_data[2]))
{
if ($column_data[2] == 'auto_increment')
{
$line .= ' auto_increment';
}
else if ($dbms === 'mysql_41' && $column_data[2] == 'true_sort')
{
$line .= ' COLLATE utf8_unicode_ci';
}
}
$line .= ",\n";
break;
case 'sqlite':
if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
$line .= "\t{$column_name} INTEGER PRIMARY KEY ";
$generator = $column_name;
}
else
{
$line .= "\t{$column_name} {$column_type} ";
}
$line .= 'NOT NULL ';
$line .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}'" : '';
$line .= ",\n";
break;
case 'firebird':
$line .= "\t{$column_name} {$column_type} ";
if (!is_null($column_data[1]))
{
$line .= 'DEFAULT ' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ' ';
}
$line .= 'NOT NULL';
// This is a UNICODE column and thus should be given it's fair share
if (preg_match('/^X?STEXT_UNI|VCHAR_(CI|UNI:?)/', $column_data[0]))
{
$line .= ' COLLATE UNICODE';
}
$line .= ",\n";
if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
$generator = $column_name;
}
break;
case 'mssql':
if ($column_type == '[text]')
{
$textimage = true;
}
$line .= "\t[{$column_name}] {$column_type} ";
if (!is_null($column_data[1]))
{
// For hexadecimal values do not use single quotes
if (strpos($column_data[1], '0x') === 0)
{
$line .= 'DEFAULT (' . $column_data[1] . ') ';
}
else
{
$line .= 'DEFAULT (' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ') ';
}
}
if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
$line .= 'IDENTITY (1, 1) ';
}
$line .= 'NOT NULL';
$line .= " ,\n";
break;
case 'oracle':
$line .= "\t{$column_name} {$column_type} ";
$line .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}' " : '';
// In Oracle empty strings ('') are treated as NULL.
// Therefore in oracle we allow NULL's for all DEFAULT '' entries
$line .= ($column_data[1] === '') ? ",\n" : "NOT NULL,\n";
if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
$generator = $column_name;
}
break;
case 'postgres':
$line .= "\t{$column_name} {$column_type} ";
if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
$line .= "DEFAULT nextval('{$table_name}_seq'),\n";
// Make sure the sequence will be created before creating the table
$line = "CREATE SEQUENCE {$table_name}_seq;\n\n" . $line;
}
else
{
$line .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}' " : '';
$line .= "NOT NULL";
// Unsigned? Then add a CHECK contraint
if (in_array($orig_column_type, $unsigned_types))
{
$line .= " CHECK ({$column_name} >= 0)";
}
$line .= ",\n";
}
break;
}
}
switch ($dbms)
{
case 'firebird':
// Remove last line delimiter...
$line = substr($line, 0, -2);
$line .= "\n);;\n\n";
break;
case 'mssql':
$line = substr($line, 0, -2);
$line .= "\n) ON [PRIMARY]" . (($textimage) ? ' TEXTIMAGE_ON [PRIMARY]' : '') . "\n";
$line .= "GO\n\n";
break;
}
// Write primary key
if (isset($table_data['PRIMARY_KEY']))
{
if (!is_array($table_data['PRIMARY_KEY']))
{
$table_data['PRIMARY_KEY'] = array($table_data['PRIMARY_KEY']);
}
switch ($dbms)
{
case 'mysql_40':
case 'mysql_41':
case 'postgres':
$line .= "\tPRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . "),\n";
break;
case 'firebird':
$line .= "ALTER TABLE {$table_name} ADD PRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . ");;\n\n";
break;
case 'sqlite':
if ($generator === false || !in_array($generator, $table_data['PRIMARY_KEY']))
{
$line .= "\tPRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . "),\n";
}
break;
case 'mssql':
$line .= "ALTER TABLE [{$table_name}] WITH NOCHECK ADD \n";
$line .= "\tCONSTRAINT [PK_{$table_name}] PRIMARY KEY CLUSTERED \n";
$line .= "\t(\n";
$line .= "\t\t[" . implode("],\n\t\t[", $table_data['PRIMARY_KEY']) . "]\n";
$line .= "\t) ON [PRIMARY] \n";
$line .= "GO\n\n";
break;
case 'oracle':
$line .= "\tCONSTRAINT pk_{$table_name} PRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . "),\n";
break;
}
}
switch ($dbms)
{
case 'oracle':
// UNIQUE contrains to be added?
if (isset($table_data['KEYS']))
{
foreach ($table_data['KEYS'] as $key_name => $key_data)
{
if (!is_array($key_data[1]))
{
$key_data[1] = array($key_data[1]);
}
if ($key_data[0] == 'UNIQUE')
{
$line .= "\tCONSTRAINT u_phpbb_{$key_name} UNIQUE (" . implode(', ', $key_data[1]) . "),\n";
}
}
}
// Remove last line delimiter...
$line = substr($line, 0, -2);
$line .= "\n)\n/\n\n";
break;
case 'postgres':
// Remove last line delimiter...
$line = substr($line, 0, -2);
$line .= "\n);\n\n";
break;
case 'sqlite':
// Remove last line delimiter...
$line = substr($line, 0, -2);
$line .= "\n);\n\n";
break;
}
// Write Keys
if (isset($table_data['KEYS']))
{
foreach ($table_data['KEYS'] as $key_name => $key_data)
{
if (!is_array($key_data[1]))
{
$key_data[1] = array($key_data[1]);
}
switch ($dbms)
{
case 'mysql_40':
case 'mysql_41':
$line .= ($key_data[0] == 'INDEX') ? "\tKEY" : '';
$line .= ($key_data[0] == 'UNIQUE') ? "\tUNIQUE" : '';
foreach ($key_data[1] as $key => $col_name)
{
if (isset($modded_array[$col_name]))
{
switch ($modded_array[$col_name])
{
case 'text':
case 'blob':
$key_data[1][$key] = $col_name . '(255)';
break;
}
}
}
$line .= ' ' . $key_name . ' (' . implode(', ', $key_data[1]) . "),\n";
break;
case 'firebird':
$line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : '';
$line .= ($key_data[0] == 'UNIQUE') ? 'CREATE UNIQUE INDEX' : '';
$line .= ' ' . $table_name . '_' . $key_name . ' ON ' . $table_name . '(' . implode(', ', $key_data[1]) . ");;\n";
break;
case 'mssql':
$line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : '';
$line .= ($key_data[0] == 'UNIQUE') ? 'CREATE UNIQUE INDEX' : '';
$line .= " [{$key_name}] ON [{$table_name}]([" . implode('], [', $key_data[1]) . "]) ON [PRIMARY]\n";
$line .= "GO\n\n";
break;
case 'oracle':
if ($key_data[0] == 'UNIQUE')
{
continue;
}
$line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : '';
$line .= " {$table_name}_{$key_name} ON {$table_name} (" . implode(', ', $key_data[1]) . ")\n";
$line .= "/\n";
break;
case 'sqlite':
$line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : '';
$line .= ($key_data[0] == 'UNIQUE') ? 'CREATE UNIQUE INDEX' : '';
$line .= " {$table_name}_{$key_name} ON {$table_name} (" . implode(', ', $key_data[1]) . ");\n";
break;
case 'postgres':
$line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : '';
$line .= ($key_data[0] == 'UNIQUE') ? 'CREATE UNIQUE INDEX' : '';
$line .= " {$table_name}_{$key_name} ON {$table_name} (" . implode(', ', $key_data[1]) . ");\n";
break;
}
}
}
switch ($dbms)
{
case 'mysql_40':
// Remove last line delimiter...
$line = substr($line, 0, -2);
$line .= "\n);\n\n";
break;
case 'mysql_41':
// Remove last line delimiter...
$line = substr($line, 0, -2);
$line .= "\n) CHARACTER SET `utf8` COLLATE `utf8_bin`;\n\n";
break;
// Create Generator
case 'firebird':
if ($generator !== false)
{
$line .= "\nCREATE GENERATOR {$table_name}_gen;;\n";
$line .= 'SET GENERATOR ' . $table_name . "_gen TO 0;;\n\n";
$line .= 'CREATE TRIGGER t_' . $table_name . ' FOR ' . $table_name . "\n";
$line .= "BEFORE INSERT\nAS\nBEGIN\n";
$line .= "\tNEW.{$generator} = GEN_ID({$table_name}_gen, 1);\nEND;;\n\n";
}
break;
case 'oracle':
if ($generator !== false)
{
$line .= "\nCREATE SEQUENCE {$table_name}_seq\n/\n\n";
$line .= "CREATE OR REPLACE TRIGGER t_{$table_name}\n";
$line .= "BEFORE INSERT ON {$table_name}\n";
$line .= "FOR EACH ROW WHEN (\n";
$line .= "\tnew.{$generator} IS NULL OR new.{$generator} = 0\n";
$line .= ")\nBEGIN\n";
$line .= "\tSELECT {$table_name}_seq.nextval\n";
$line .= "\tINTO :new.{$generator}\n";
$line .= "\tFROM dual;\nEND;\n/\n\n";
}
break;
}
fwrite($fp, $line . "\n");
}
$line = '';
// Write custom function at the end for some db's
switch ($dbms)
{
case 'mssql':
$line = "\nCOMMIT\nGO\n\n";
break;
case 'sqlite':
$line = "\nCOMMIT;";
break;
case 'postgres':
$line = "\nCOMMIT;";
break;
}
fwrite($fp, $line);
fclose($fp);
}
/**
* Define the basic structure
* The format:
* array('{TABLE_NAME}' => {TABLE_DATA})
* {TABLE_DATA}:
* COLUMNS = array({column_name} = array({column_type}, {default}, {auto_increment}))
* PRIMARY_KEY = {column_name(s)}
* KEYS = array({key_name} = array({key_type}, {column_name(s)})),
*
* Column Types:
* INT:x => SIGNED int(x)
* BINT => BIGINT
* UINT => mediumint(8) UNSIGNED
* UINT:x => int(x) UNSIGNED
* TINT:x => tinyint(x)
* USINT => smallint(4) UNSIGNED (for _order columns)
* BOOL => tinyint(1) UNSIGNED
* VCHAR => varchar(255)
* CHAR:x => char(x)
* XSTEXT_UNI => text for storing 100 characters (topic_title for example)
* STEXT_UNI => text for storing 255 characters (normal input field with a max of 255 single-byte chars) - same as VCHAR_UNI
* TEXT_UNI => text for storing 3000 characters (short text, descriptions, comments, etc.)
* MTEXT_UNI => mediumtext (post text, large text)
* VCHAR:x => varchar(x)
* TIMESTAMP => int(11) UNSIGNED
* DECIMAL => decimal number (5,2)
* DECIMAL: => decimal number (x,2)
* PDECIMAL => precision decimal number (6,3)
* PDECIMAL: => precision decimal number (x,3)
* VCHAR_UNI => varchar(255) BINARY
* VCHAR_CI => varchar_ci for postgresql, others VCHAR
*/
function get_schema_struct()
{
$schema_data = array();
// Create formel_config table
$schema_data['phpbb_portal_config'] = array(
'COLUMNS' => array(
'config_name' => array('VCHAR', ''),
'config_value' => array('VCHAR', ''),
),
'PRIMARY_KEY' => 'config_name',
);
return $schema_data;
}
/**
* Data put into the header for various dbms
*/
function custom_data($dbms)
{
switch ($dbms)
{
case 'oracle':
return <<<EOF
/*
This first section is optional, however its probably the best method
of running phpBB on Oracle. If you already have a tablespace and user created
for phpBB you can leave this section commented out!
The first set of statements create a phpBB tablespace and a phpBB user,
make sure you change the password of the phpBB user before you run this script!!
*/
/*
CREATE TABLESPACE "PHPBB"
LOGGING
DATAFILE 'E:\ORACLE\ORADATA\LOCAL\PHPBB.ora'
SIZE 10M
AUTOEXTEND ON NEXT 10M
MAXSIZE 100M;
CREATE USER "PHPBB"
PROFILE "DEFAULT"
IDENTIFIED BY "phpbb_password"
DEFAULT TABLESPACE "PHPBB"
QUOTA UNLIMITED ON "PHPBB"
ACCOUNT UNLOCK;
GRANT ANALYZE ANY TO "PHPBB";
GRANT CREATE SEQUENCE TO "PHPBB";
GRANT CREATE SESSION TO "PHPBB";
GRANT CREATE TABLE TO "PHPBB";
GRANT CREATE TRIGGER TO "PHPBB";
GRANT CREATE VIEW TO "PHPBB";
GRANT "CONNECT" TO "PHPBB";
COMMIT;
DISCONNECT;
CONNECT phpbb/phpbb_password;
*/
EOF;
break;
case 'postgres':
return <<<EOF
/*
Domain definition
*/
CREATE DOMAIN varchar_ci AS varchar(255) NOT NULL DEFAULT ''::character varying;
/*
Operation Functions
*/
CREATE FUNCTION _varchar_ci_equal(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) = LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_not_equal(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) != LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_less_than(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) < LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_less_equal(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) <= LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_greater_than(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) > LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_greater_equals(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) >= LOWER($2)' LANGUAGE SQL STRICT;
/*
Operators
*/
CREATE OPERATOR <(
PROCEDURE = _varchar_ci_less_than,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = >,
NEGATOR = >=,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel);
CREATE OPERATOR <=(
PROCEDURE = _varchar_ci_less_equal,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = >=,
NEGATOR = >,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel);
CREATE OPERATOR >(
PROCEDURE = _varchar_ci_greater_than,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = <,
NEGATOR = <=,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel);
CREATE OPERATOR >=(
PROCEDURE = _varchar_ci_greater_equals,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = <=,
NEGATOR = <,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel);
CREATE OPERATOR <>(
PROCEDURE = _varchar_ci_not_equal,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = <>,
NEGATOR = =,
RESTRICT = neqsel,
JOIN = neqjoinsel);
CREATE OPERATOR =(
PROCEDURE = _varchar_ci_equal,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = =,
NEGATOR = <>,
RESTRICT = eqsel,
JOIN = eqjoinsel,
HASHES,
MERGES,
SORT1= <);
EOF;
break;
}
return '';
}
?>

View File

View File

@@ -0,0 +1,683 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
define('IN_PHPBB', true);
$phpbb_root_path = '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/acp/acp_modules.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$user->add_lang('mods/portal_install');
$new_mod_version = '0.1.0';
$page_title = 'Board3portal v' . $new_mod_version;
$mode = request_var('mode', 'else', true);
function split_sql_file($sql, $delimiter)
{
$sql = str_replace("\r" , '', $sql);
$data = preg_split('/' . preg_quote($delimiter, '/') . '$/m', $sql);
$data = array_map('trim', $data);
// The empty case
$end_data = end($data);
if (empty($end_data))
{
unset($data[key($data)]);
}
return $data;
}
// What sql_layer should we use?
switch ($db->sql_layer)
{
case 'mysql':
$db_schema = 'mysql_40';
$delimiter = ';';
break;
case 'mysql4':
if (version_compare($db->mysql_version, '4.1.3', '>='))
{
$db_schema = 'mysql_41';
}
else
{
$db_schema = 'mysql_40';
}
$delimiter = ';';
break;
case 'mysqli':
$db_schema = 'mysql_41';
$delimiter = ';';
break;
case 'mssql':
$db_schema = 'mssql';
$delimiter = 'GO';
break;
case 'postgres':
$db_schema = 'postgres';
$delimiter = ';';
break;
case 'sqlite':
$db_schema = 'sqlite';
$delimiter = ';';
break;
case 'firebird':
$db_schema = 'firebird';
$delimiter = ';;';
break;
case 'oracle':
$db_schema = 'oracle';
$delimiter = '/';
break;
default:
trigger_error('Sorry, unsupportet Databases found.');
break;
}
switch ($mode)
{
case 'install':
$install = request_var('install', 0);
$installed = false;
if ($install == 1)
{
// Drop thes tables if existing
if ($db->sql_layer != 'mssql')
{
$sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config';
$result = $db->sql_query($sql);
$db->sql_freeresult($result);
}
else
{
$sql = 'if exists (select * from sysobjects where name = ' . $table_prefix . 'portal_config)
drop table ' . $table_prefix . 'portal_config';
$result = $db->sql_query($sql);
$db->sql_freeresult($result);
}
// locate the schema files
$dbms_schema = 'schemas/_' . $db_schema . '_schema.sql';
$sql_query = @file_get_contents($dbms_schema);
$sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query);
$sql_query = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql_query));
$sql_query = split_sql_file($sql_query, $delimiter);
// make the new one's
foreach ($sql_query as $sql)
{
if (!$db->sql_query($sql))
{
$error = $db->sql_error();
$this->p_master->db_error($error['message'], $sql, __LINE__, __FILE__);
}
}
unset($sql_query);
// Tadaa! Fill all data in ;-)
$sql_query = file_get_contents('schemas/_schema_data.sql');
switch ($db->sql_layer)
{
case 'mssql':
case 'mssql_odbc':
$sql_query = preg_replace('#\# MSSQL IDENTITY (phpbb_[a-z_]+) (ON|OFF) \##s', 'SET IDENTITY_INSERT \1 \2;', $sql_query);
break;
case 'postgres':
$sql_query = preg_replace('#\# POSTGRES (BEGIN|COMMIT) \##s', '\1; ', $sql_query);
break;
}
$sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query);
$sql_query = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql_query));
$sql_query = split_sql_file($sql_query, ';');
foreach ($sql_query as $sql)
{
if (!$db->sql_query($sql))
{
$error = $db->sql_error();
$this->p_master->db_error($error['message'], $sql, __LINE__, __FILE__);
}
}
unset($sql_query);
// create the acp modules
$modules = new acp_modules();
$portal = array(
'module_basename' => '',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => 31,
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_INFO',
'module_mode' => '',
'module_auth' => ''
);
$modules->update_module_data($portal);
$general = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_GENERAL_INFO',
'module_mode' => 'general',
'module_auth' => ''
);
$modules->update_module_data($general);
$news = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_NEWS_INFO',
'module_mode' => 'news',
'module_auth' => ''
);
$modules->update_module_data($news);
$announcements = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_ANNOUNCE_INFO',
'module_mode' => 'announcements',
'module_auth' => ''
);
$modules->update_module_data($announcements);
$welcome = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_WELCOME_INFO',
'module_mode' => 'welcome',
'module_auth' => ''
);
$modules->update_module_data($welcome);
$recent = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_RECENT_INFO',
'module_mode' => 'recent',
'module_auth' => ''
);
$modules->update_module_data($recent);
$wordgraph = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_WORDGRAPH_INFO',
'module_mode' => 'wordgraph',
'module_auth' => ''
);
$modules->update_module_data($wordgraph);
$paypal = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_PAYPAL_INFO',
'module_mode' => 'paypal',
'module_auth' => ''
);
$modules->update_module_data($paypal);
$attachments = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO',
'module_mode' => 'attachments',
'module_auth' => ''
);
$modules->update_module_data($attachments);
$members = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_MEMBERS_INFO',
'module_mode' => 'members',
'module_auth' => ''
);
$modules->update_module_data($members);
$polls = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_POLLS_INFO',
'module_mode' => 'polls',
'module_auth' => ''
);
$modules->update_module_data($polls);
$bots = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_BOTS_INFO',
'module_mode' => 'bots',
'module_auth' => ''
);
$modules->update_module_data($bots);
$poster = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_MOST_POSTER_INFO',
'module_mode' => 'poster',
'module_auth' => ''
);
$modules->update_module_data($poster);
$minicalendar = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_MINICALENDAR_INFO',
'module_mode' => 'minicalendar',
'module_auth' => ''
);
$modules->update_module_data($minicalendar);
// clear cache and log what we did
$cache->purge();
add_log('admin', $page_title . ' installed');
$installed = true;
}
break;
case 'update110b':
$update = request_var('update', 0);
$version = request_var('v', '0', true);
$updated = false;
if ($update == 1)
{
// Drop thes tables if existing
if ($db->sql_layer != 'mssql')
{
$sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config';
$result = $db->sql_query($sql);
$db->sql_freeresult($result);
}
else
{
$sql = 'if exists (select * from sysobjects where name = ' . $table_prefix . 'portal_config)
drop table ' . $table_prefix . 'portal_config';
$result = $db->sql_query($sql);
$db->sql_freeresult($result);
}
// locate the schema files
$dbms_schema = 'schemas/_' . $db_schema . '_schema.sql';
$sql_query = @file_get_contents($dbms_schema);
$sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query);
$sql_query = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql_query));
$sql_query = split_sql_file($sql_query, $delimiter);
// make the new one's
foreach ($sql_query as $sql)
{
if (!$db->sql_query($sql))
{
$error = $db->sql_error();
$this->p_master->db_error($error['message'], $sql, __LINE__, __FILE__);
}
}
unset($sql_query);
// Tadaa! Fill all data in ;-)
$sql_query = file_get_contents('schemas/_schema_data.sql');
switch ($db->sql_layer)
{
case 'mssql':
case 'mssql_odbc':
$sql_query = preg_replace('#\# MSSQL IDENTITY (phpbb_[a-z_]+) (ON|OFF) \##s', 'SET IDENTITY_INSERT \1 \2;', $sql_query);
break;
case 'postgres':
$sql_query = preg_replace('#\# POSTGRES (BEGIN|COMMIT) \##s', '\1; ', $sql_query);
break;
}
$sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query);
$sql_query = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql_query));
$sql_query = split_sql_file($sql_query, ';');
foreach ($sql_query as $sql)
{
if (!$db->sql_query($sql))
{
$error = $db->sql_error();
$this->p_master->db_error($error['message'], $sql, __LINE__, __FILE__);
}
}
unset($sql_query);
//fill the table, but with the old settings
$sql = 'SELECT * FROM ' . PORTAL_CONFIG_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
if (isset($config[$row['config_name']]))
{
$sql2 = 'UPDATE ' . PORTAL_CONFIG_TABLE . " SET config_value = '" . $config[$row['config_name']] . "' WHERE config_name = '" . $row['config_name'] . "' LIMIT 1";
$db->sql_query($sql2);
}
}
$db->sql_freeresult($result);
$sql = 'UPDATE ' . PORTAL_CONFIG_TABLE . " SET config_value = '" . $new_mod_version . "' WHERE config_name = 'portal_version' LIMIT 1";
$db->sql_query($sql);
//set back the config_table Oo
$sql = "ALTER TABLE {$table_prefix}config CHANGE config_value config_value varchar(255) NOT NULL";
$db->sql_query($sql);
$sql = 'DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'portal_welcome_intro'
OR config_name = 'portal_max_online_friends'
OR config_name = 'portal_max_most_poster'
OR config_name = 'portal_max_last_member'
OR config_name = 'portal_welcome'
OR config_name = 'portal_links'
OR config_name = 'portal_link_us'
OR config_name = 'portal_clock'
OR config_name = 'portal_random_member'
OR config_name = 'portal_latest_members'
OR config_name = 'portal_top_posters'
OR config_name = 'portal_leaders'
OR config_name = 'portal_advanced_stat'
OR config_name = 'portal_version'
OR config_name = 'portal_right_collumn_width'
OR config_name = 'portal_left_collumn_width'
OR config_name = 'portal_poll_topic'
OR config_name = 'portal_poll_topic_id'
OR config_name = 'portal_last_visited_bots_number'
OR config_name = 'portal_load_last_visited_bots'
OR config_name = 'portal_pay_acc'
OR config_name = 'portal_pay_s_block'
OR config_name = 'portal_pay_c_block'
OR config_name = 'portal_recent'
OR config_name = 'portal_recent_title_limit'
OR config_name = 'portal_max_topics'
OR config_name = 'portal_exclude_forums'
OR config_name = 'portal_news_forum'
OR config_name = 'portal_news_length'
OR config_name = 'portal_number_of_news'
OR config_name = 'portal_show_all_news'
OR config_name = 'portal_news'
OR config_name = 'portal_news_style'
OR config_name = 'portal_announcements'
OR config_name = 'portal_announcements_style'
OR config_name = 'portal_number_of_announcements'
OR config_name = 'portal_announcements_day'
OR config_name = 'portal_announcements_length'
OR config_name = 'portal_global_announcements_forum'
OR config_name = 'portal_wordgraph_word_counts'
OR config_name = 'portal_wordgraph_max_words'
OR config_name = 'portal_wordgraph'
OR config_name = 'portal_wordgraph_ratio'
OR config_name = 'portal_minicalendar'
OR config_name = 'portal_minicalendar_today_color'
OR config_name = 'portal_minicalendar_day_link_color'
OR config_name = 'portal_attachments'
OR config_name = 'portal_attachments_number'";
$db->sql_query($sql);
$sql = 'SELECT right_id, module_id FROM ' . MODULES_TABLE . "
WHERE module_langname = 'ACP_PORTAL_GENERAL_INFO'
OR module_langname = 'ACP_PORTAL_NEWS_INFO'
OR module_langname = 'ACP_PORTAL_ANNOUNCE_INFO'
OR module_langname = 'ACP_PORTAL_WELCOME_INFO'
OR module_langname = 'ACP_PORTAL_RECENT_INFO'
OR module_langname = 'ACP_PORTAL_WORDGRAPH_INFO'
OR module_langname = 'ACP_PORTAL_PAYPAL_INFO'
OR module_langname = 'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO'
OR module_langname = 'ACP_PORTAL_MEMBERS_INFO'
OR module_langname = 'ACP_PORTAL_POLLS_INFO'
OR module_langname = 'ACP_PORTAL_BOTS_INFO'
OR module_langname = 'ACP_PORTAL_MOST_POSTER_INFO'
OR module_langname = 'ACP_PORTAL_MINICALENDAR_INFO'";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$sql = 'DELETE FROM ' . MODULES_TABLE . " WHERE module_id = '{$row['module_id']}'";
$db->sql_query($sql);
$sql = 'UPDATE ' . MODULES_TABLE . "
SET left_id = left_id - 2
WHERE module_class = 'acp'
AND left_id > {$row['right_id']}";
$db->sql_query($sql);
$sql = 'UPDATE ' . MODULES_TABLE . "
SET right_id = right_id - 2
WHERE module_class = 'acp'
AND right_id > {$row['right_id']}";
$db->sql_query($sql);
}
$db->sql_freeresult($result);
$sql = 'SELECT right_id, module_id FROM ' . MODULES_TABLE . "
WHERE module_langname = 'ACP_PORTAL_INFO'";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$sql = 'DELETE FROM ' . MODULES_TABLE . " WHERE module_id = '{$row['module_id']}'";
$db->sql_query($sql);
$sql = 'UPDATE ' . MODULES_TABLE . "
SET left_id = left_id - 2
WHERE module_class = 'acp'
AND left_id > {$row['right_id']}";
$db->sql_query($sql);
$sql = 'UPDATE ' . MODULES_TABLE . "
SET right_id = right_id - 2
WHERE module_class = 'acp'
AND right_id > {$row['right_id']}";
$db->sql_query($sql);
}
$db->sql_freeresult($result);
// create the acp modules
$modules = new acp_modules();
$portal = array(
'module_basename' => '',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => 31,
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_INFO',
'module_mode' => '',
'module_auth' => ''
);
$modules->update_module_data($portal);
$general = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_GENERAL_INFO',
'module_mode' => 'general',
'module_auth' => ''
);
$modules->update_module_data($general);
$news = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_NEWS_INFO',
'module_mode' => 'news',
'module_auth' => ''
);
$modules->update_module_data($news);
$announcements = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_ANNOUNCE_INFO',
'module_mode' => 'announcements',
'module_auth' => ''
);
$modules->update_module_data($announcements);
$welcome = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_WELCOME_INFO',
'module_mode' => 'welcome',
'module_auth' => ''
);
$modules->update_module_data($welcome);
$recent = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_RECENT_INFO',
'module_mode' => 'recent',
'module_auth' => ''
);
$modules->update_module_data($recent);
$wordgraph = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_WORDGRAPH_INFO',
'module_mode' => 'wordgraph',
'module_auth' => ''
);
$modules->update_module_data($wordgraph);
$paypal = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_PAYPAL_INFO',
'module_mode' => 'paypal',
'module_auth' => ''
);
$modules->update_module_data($paypal);
$attachments = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO',
'module_mode' => 'attachments',
'module_auth' => ''
);
$modules->update_module_data($attachments);
$members = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_MEMBERS_INFO',
'module_mode' => 'members',
'module_auth' => ''
);
$modules->update_module_data($members);
$polls = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_POLLS_INFO',
'module_mode' => 'polls',
'module_auth' => ''
);
$modules->update_module_data($polls);
$bots = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_BOTS_INFO',
'module_mode' => 'bots',
'module_auth' => ''
);
$modules->update_module_data($bots);
$poster = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_MOST_POSTER_INFO',
'module_mode' => 'poster',
'module_auth' => ''
);
$modules->update_module_data($poster);
$minicalendar = array(
'module_basename' => 'portal',
'module_enabled' => 1,
'module_display' => 1,
'parent_id' => $portal['module_id'],
'module_class' => 'acp',
'module_langname' => 'ACP_PORTAL_MINICALENDAR_INFO',
'module_mode' => 'minicalendar',
'module_auth' => ''
);
$modules->update_module_data($minicalendar);
// clear cache and log what we did
$cache->purge();
add_log('admin', $page_title . ' updated');
$updated = true;
}
break;
default:
//we had a little cheater
break;
}
include($phpbb_root_path . 'install_portal/layout.'.$phpEx);
?>

View File

@@ -0,0 +1,155 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
$activemenu = ' id="activemenu"';
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="en-gb" lang="en-gb"><head>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
echo '<meta http-equiv="Content-Style-Type" content="text/css">';
echo '<meta http-equiv="Content-Language" content="en-gb">';
echo '<meta http-equiv="imagetoolbar" content="no"><title>' . $page_title . '</title>';
echo '<link href="../adm/style/admin.css" rel="stylesheet" type="text/css" media="screen">';
echo '</head>';
echo '<body class="ltr">';
echo '<div id="wrap">';
echo ' <div id="page-header">';
echo ' <h1>' . $page_title . '</h1>';
echo ' <p><a href="' . $phpbb_root_path . '">' . $user->lang['INDEX'] . '</a></p>';
echo ' <p id="skip"><a href="#acp">Skip to content</a></p>';
echo ' </div>';
echo ' <div id="page-body">';
echo ' <div id="acp">';
echo ' <div class="panel">';
echo ' <span class="corners-top"><span></span></span>';
echo ' <div id="content">';
echo ' <div id="menu">';
echo ' <ul>';
echo ' <li' . (($mode == 'else') ? $activemenu : '') . '><a href="install.php"><span>' . $user->lang['INSTALLER_INTRO'] . '</span></a></li>';
echo ' <li class="header">' . $user->lang['INSTALLER_INSTALL_MENU'] . '</li>';
echo ' <li' . (($mode == 'install') ? $activemenu : '') . '><a href="install.php?mode=install"><span>' . sprintf($user->lang['INSTALLER_INSTALL_VERSION'], $new_mod_version) . '</span></a></li>';
echo ' <li class="header">' . $user->lang['INSTALLER_UPDATE_MENU'] . '</li>';
echo ' <li' . (($mode == 'update110b') ? $activemenu : '') . '><a href="install.php?mode=update110b&amp;v=1.1.0b"><span>' . $user->lang['INSTALLER_UPDATE_VERSION'] . '1.1.0b - phpbb3portal</span></a></li>';
echo ' </ul>';
echo ' </div>';
echo ' <div id="main">';
echo '<a name="maincontent"></a>';
if ($mode == 'install')
{
if ($install == 1)
{
if ($installed)
{
echo '<div class="successbox">';
echo ' <h3>' . $user->lang['INFORMATION'] . '</h3>';
echo ' <p>' . sprintf($user->lang['INSTALLER_INSTALL_SUCCESSFUL'], $new_mod_version) . '</p>';
echo '</div>';
}
else
{
echo '<div class="errorbox">';
echo ' <h3>' . $user->lang['WARNING'] . '</h3>';
echo ' <p>' . sprintf($user->lang['INSTALLER_INSTALL_UNSUCCESSFUL'], $new_mod_version) . '</p>';
echo '</div>';
}
}
else
{
echo '<h1>' . $user->lang['INSTALLER_INSTALL_WELCOME'] . '</h1>';
echo '<p>' . $user->lang['INSTALLER_INSTALL_WELCOME_NOTE'] . '</p>';
echo '<form id="acp_board" method="post" action="install.php?mode=install">';
echo ' <fieldset>';
echo ' <legend>' . $user->lang['INSTALLER_INSTALL'] . '</legend>';
echo ' <dl>';
echo ' <dt><label for="install">v' . $new_mod_version . ':</label></dt>';
echo ' <dd><label><input name="install" value="1" class="radio" type="radio" />' . $user->lang['YES'] . '</label><label><input name="install" value="0" checked="checked" class="radio" type="radio" />' . $user->lang['NO'] . '</label></dd>';
echo ' </dl>';
echo ' <p class="submit-buttons">';
echo ' <input class="button1" id="submit" name="submit" value="Submit" type="submit" />&nbsp;';
echo ' <input class="button2" id="reset" name="reset" value="Reset" type="reset" />';
echo ' </p>';
echo ' </fieldset>';
echo '</form>';
}
}
else if ($mode == 'update110b')
{
if ($update == 1)
{
if ($updated)
{
echo '<div class="successbox">';
echo ' <h3>' . $user->lang['INFORMATION'] . '</h3>';
echo ' <p>' . sprintf($user->lang['INSTALLER_UPDATE_SUCCESSFUL'], $version, $new_mod_version) . '</p>';
echo '</div>';
}
else
{
echo '<div class="errorbox">';
echo ' <h3>' . $user->lang['WARNING'] . '</h3>';
echo ' <p>' . sprintf($user->lang['INSTALLER_UPDATE_UNSUCCESSFUL'], $version, $new_mod_version) . '</p>';
echo '</div>';
}
}
else
{
echo '<h1>' . $user->lang['INSTALLER_UPDATE_WELCOME'] . '</h1>';
echo '<form id="acp_board" method="post" action="install.php?mode=' . $mode . '&amp;v=' . $version . '">';
echo ' <fieldset>';
echo ' <legend>' . $user->lang['INSTALLER_UPDATE'] . '</legend>';
echo ' <dl>';
echo ' <dt><label for="update">' . sprintf($user->lang['INSTALLER_UPDATE_NOTE'], $version, $new_mod_version) . ':</label></dt>';
echo ' <dd><label><input name="update" value="1" class="radio" type="radio" />' . $user->lang['YES'] . '</label><label><input name="update" value="0" checked="checked" class="radio" type="radio" />' . $user->lang['NO'] . '</label></dd>';
echo ' </dl>';
echo ' <p class="submit-buttons">';
echo ' <input class="button1" id="submit" name="submit" value="Submit" type="submit" />&nbsp;';
echo ' <input class="button2" id="reset" name="reset" value="Reset" type="reset" />';
echo ' </p>';
echo ' </fieldset>';
echo '</form>';
}
}
else if ($mode == 'else')
{
echo '<h1>' . $user->lang['INSTALLER_INTRO_WELCOME'] . '</h1>';
echo '<p>' . $user->lang['INSTALLER_INTRO_WELCOME_NOTE'] . '</p>';
}
else
{
echo '<div class="errorbox">';
echo ' <h3>ERROR</h3>';
echo ' <p>' . $user->lang['INSTALLER_NEEDS_FOUNDER'] . '</p>';
echo '</div>';
}
echo ' </div>';
echo ' </div>';
echo ' <span class="corners-bottom"><span></span></span>';
echo ' </div>';
echo ' </div>';
echo ' </div>';
echo ' <!--';
echo ' We request you retain the full copyright notice below including the link to www.phpbb.com.';
echo ' This not only gives respect to the large amount of time given freely by the developers';
echo ' but also helps build interest, traffic and use of phpBB. If you (honestly) cannot retain';
echo ' the full copyright we ask you at least leave in place the "Powered by phpBB" line, with';
echo ' "phpBB" linked to www.phpbb.com. If you refuse to include even this then support on our';
echo ' forums may be affected.';
echo ' The phpBB Group : 2006';
echo ' // -->';
echo '<div id="page-footer">Powered by phpBB &copy; 2000, 2002, 2005, 2007 <a href="http://www.phpbb.com/">phpBB Group</a><br />Installer by <a href="http://mods.flying-bits.org/">nickvergessen</a></div>';
echo '</div>';
echo '</body>';
echo '</html>';
?>

View File

@@ -0,0 +1,14 @@
#
# $Id: $
#
# Table: 'phpbb_portal_config'
CREATE TABLE phpbb_portal_config (
config_name VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL,
config_value VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL
);;
ALTER TABLE phpbb_portal_config ADD PRIMARY KEY (config_name);;

View File

@@ -0,0 +1,30 @@
/*
$Id: $
*/
BEGIN TRANSACTION
GO
/*
Table: 'phpbb_portal_config'
*/
CREATE TABLE [phpbb_portal_config] (
[config_name] [varchar] (255) DEFAULT ('') NOT NULL ,
[config_value] [varchar] (255) DEFAULT ('') NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [phpbb_portal_config] WITH NOCHECK ADD
CONSTRAINT [PK_phpbb_portal_config] PRIMARY KEY CLUSTERED
(
[config_name]
) ON [PRIMARY]
GO
COMMIT
GO

View File

@@ -0,0 +1,12 @@
#
# $Id: $
#
# Table: 'phpbb_portal_config'
CREATE TABLE phpbb_portal_config (
config_name varbinary(255) DEFAULT '' NOT NULL,
config_value varbinary(255) DEFAULT '' NOT NULL,
PRIMARY KEY (config_name)
);

View File

@@ -0,0 +1,12 @@
#
# $Id: $
#
# Table: 'phpbb_portal_config'
CREATE TABLE phpbb_portal_config (
config_name varchar(255) DEFAULT '' NOT NULL,
config_value varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (config_name)
) CHARACTER SET `utf8` COLLATE `utf8_bin`;

View File

@@ -0,0 +1,90 @@
/*
$Id: $
*/
/*
This first section is optional, however its probably the best method
of running phpBB on Oracle. If you already have a tablespace and user created
for phpBB you can leave this section commented out!
The first set of statements create a phpBB tablespace and a phpBB user,
make sure you change the password of the phpBB user before you run this script!!
*/
/*
CREATE TABLESPACE "PHPBB"
LOGGING
DATAFILE 'E:\ORACLE\ORADATA\LOCAL\PHPBB.ora'
SIZE 10M
AUTOEXTEND ON NEXT 10M
MAXSIZE 100M;
CREATE USER "PHPBB"
PROFILE "DEFAULT"
IDENTIFIED BY "phpbb_password"
DEFAULT TABLESPACE "PHPBB"
QUOTA UNLIMITED ON "PHPBB"
ACCOUNT UNLOCK;
GRANT ANALYZE ANY TO "PHPBB";
GRANT CREATE SEQUENCE TO "PHPBB";
GRANT CREATE SESSION TO "PHPBB";
GRANT CREATE TABLE TO "PHPBB";
GRANT CREATE TRIGGER TO "PHPBB";
GRANT CREATE VIEW TO "PHPBB";
GRANT "CONNECT" TO "PHPBB";
COMMIT;
DISCONNECT;
CONNECT phpbb/phpbb_password;
*/
/*
Table: 'phpbb_portal_config'
*/
CREATE TABLE phpbb_portal_config (
config_name varchar2(255) DEFAULT '' ,
config_value varchar2(255) DEFAULT '' ,
CONSTRAINT pk_phpbb_portal_config PRIMARY KEY (config_name)
)
/

View File

@@ -0,0 +1,169 @@
/*
$Id: $
*/
BEGIN;
/*
Domain definition
*/
CREATE DOMAIN varchar_ci AS varchar(255) NOT NULL DEFAULT ''::character varying;
/*
Operation Functions
*/
CREATE FUNCTION _varchar_ci_equal(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) = LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_not_equal(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) != LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_less_than(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) < LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_less_equal(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) <= LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_greater_than(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) > LOWER($2)' LANGUAGE SQL STRICT;
CREATE FUNCTION _varchar_ci_greater_equals(varchar_ci, varchar_ci) RETURNS boolean AS 'SELECT LOWER($1) >= LOWER($2)' LANGUAGE SQL STRICT;
/*
Operators
*/
CREATE OPERATOR <(
PROCEDURE = _varchar_ci_less_than,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = >,
NEGATOR = >=,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel);
CREATE OPERATOR <=(
PROCEDURE = _varchar_ci_less_equal,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = >=,
NEGATOR = >,
RESTRICT = scalarltsel,
JOIN = scalarltjoinsel);
CREATE OPERATOR >(
PROCEDURE = _varchar_ci_greater_than,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = <,
NEGATOR = <=,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel);
CREATE OPERATOR >=(
PROCEDURE = _varchar_ci_greater_equals,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = <=,
NEGATOR = <,
RESTRICT = scalargtsel,
JOIN = scalargtjoinsel);
CREATE OPERATOR <>(
PROCEDURE = _varchar_ci_not_equal,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = <>,
NEGATOR = =,
RESTRICT = neqsel,
JOIN = neqjoinsel);
CREATE OPERATOR =(
PROCEDURE = _varchar_ci_equal,
LEFTARG = varchar_ci,
RIGHTARG = varchar_ci,
COMMUTATOR = =,
NEGATOR = <>,
RESTRICT = eqsel,
JOIN = eqjoinsel,
HASHES,
MERGES,
SORT1= <);
/*
Table: 'phpbb_portal_config'
*/
CREATE TABLE phpbb_portal_config (
config_name varchar(255) DEFAULT '' NOT NULL,
config_value varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (config_name)
);
COMMIT;

View File

@@ -0,0 +1,68 @@
#
# $Id: schema_data.sql,v 1.257 2007/09/20 21:19:00 stoffel04 Exp $
#
# POSTGRES BEGIN #
# -- Config
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_welcome_intro', 'Welcome to my community!');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_max_online_friends', '8');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_max_most_poster', '8');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_max_last_member', '8');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_welcome', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_links', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_link_us', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_clock', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_random_member', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_latest_members', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_top_posters', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_leaders', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_advanced_stat', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_version', '0.1.0');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_welcome_guest', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_birthdays', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_search', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_friends', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_whois_online', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_change_style', '0');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_main_menu', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_user_menu', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_right_collumn_width', '180');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_left_collumn_width', '180');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_poll_topic', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_poll_topic_id', '2');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_last_visited_bots_number', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_load_last_visited_bots', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_pay_acc', 'your@paypal.com');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_pay_s_block', '0');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_pay_c_block', '0');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_recent', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_recent_title_limit', '100');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_max_topics', '10');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_exclude_forums', '');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_news_forum', '2');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_news_length', '250');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_number_of_news', '5');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_show_all_news', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_news', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_news_style', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_announcements', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_announcements_style', '0');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_number_of_announcements', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_announcements_day', '0');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_announcements_length', '200');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_global_announcements_forum', '2');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_wordgraph_word_counts', '0');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_wordgraph_max_words', '80');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_wordgraph', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_wordgraph_ratio', '18');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_minicalendar', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_minicalendar_today_color', '//FF0000');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_minicalendar_day_link_color', '//006F00');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_attachments', '1');
INSERT INTO phpbb_portal_config (config_name, config_value) VALUES ('portal_attachments_number', '8');
# POSTGRES COMMIT #

View File

@@ -0,0 +1,16 @@
#
# $Id: $
#
BEGIN TRANSACTION;
# Table: 'phpbb_portal_config'
CREATE TABLE phpbb_portal_config (
config_name varchar(255) NOT NULL DEFAULT '',
config_value varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (config_name)
);
COMMIT;

View File

View File

@@ -0,0 +1,40 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (empty($lang) || !is_array($lang))
{
$lang = array();
}
$lang = array_merge($lang, array(
'ACP_PORTAL_INFO' => 'Portal',
'ACP_PORTAL_GENERAL_INFO' => 'General',
'ACP_PORTAL_ANNOUNCE_INFO' => 'Global announcements',
'ACP_PORTAL_NEWS_INFO' => 'News',
'ACP_PORTAL_RECENT_INFO' => 'Recent topics',
'ACP_PORTAL_WORDGRAPH_INFO' => 'Wordgraph',
'ACP_PORTAL_GENERAL_INFO' => 'General settings',
'ACP_PORTAL_PAYPAL_INFO' => 'Paypal donations',
'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO' => 'Attachments',
'ACP_PORTAL_MEMBERS_INFO' => 'Latest members',
'ACP_PORTAL_POLLS_INFO' => 'Poll',
'ACP_PORTAL_BOTS_INFO' => 'Last visited bots',
'ACP_PORTAL_MOST_POSTER_INFO' => 'Most posters',
'ACP_PORTAL_WELCOME_INFO' => 'Welcome message',
'ACP_PORTAL_ADS_INFO' => 'Advertisement',
'ACP_PORTAL_MINICALENDAR_INFO' => 'Mini calendar',
));
?>

View File

@@ -0,0 +1,243 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (empty($lang) || !is_array($lang))
{
$lang = array();
}
// DEVELOPERS PLEASE NOTE
//
// 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(
// General
'PORTAL' => 'Portal',
'WELCOME' => 'Welcome',
// news & global announcements
'LATEST_ANNOUNCEMENTS' => 'Latest global announcements',
'LATEST_NEWS' => 'Latest news',
'READ_FULL' => 'Read all',
'NO_NEWS' => 'No news',
'NO_ANNOUNCEMENTS' => 'No global announcements',
'POSTED_BY' => 'Poster',
'COMMENTS' => 'Comments',
'VIEW_COMMENTS' => 'View comments',
'POST_REPLY' => 'Write comments',
'TOPIC_VIEWS' => 'Views',
'JUMP_NEWEST' => 'Jump to newest post',
'JUMP_FIRST' => 'Jump to first post',
'JUMP_TO_POST' => 'Jump to post',
// who is online
'WIO_TOTAL' => 'Total',
'WIO_REGISTERED' => 'Registered',
'WIO_HIDDEN' => 'Hidden',
'WIO_GUEST' => 'Guest',
//'RECORD_ONLINE_USERS'=> 'View record: <strong>%1$s</strong><br />%2$s',
// user menu
'USER_MENU' => 'User menu',
'UM_LOG_ME_IN' => 'remember me',
'UM_HIDE_ME' => 'hide me',
'UM_MAIN_SUBSCRIBED'=> 'Subscribed',
'UM_BOOKMARKS' => 'Bookmarks',
// statistics
/*
'ST_NEW' => 'New',
'ST_NEW_POSTS' => 'New post',
'ST_NEW_TOPICS' => 'New topic',
'ST_NEW_ANNS' => 'New announcment',
'ST_NEW_STICKYS'=> 'New sticky',
*/
'ST_TOP' => 'Total',
'ST_TOP_ANNS' => 'Total announcment',
'ST_TOP_STICKYS'=> 'Total sticky',
'ST_TOT_ATTACH' => 'Total attachments',
// search
'SH' => 'go',
'SH_SITE' => 'forums',
'SH_POSTS' => 'posts',
'SH_AUTHOR' => 'author',
'SH_ENGINE' => 'search engines',
'SH_ADV' => 'advanced search',
// recent
'RECENT_NEWS' => 'Recent',
'RECENT_TOPIC' => 'Recent topic',
'RECENT_ANN' => 'Recent announcment',
'RECENT_HOT_TOPIC' => 'Recent popular topic',
// random member
'RND_MEMBER' => 'Random member',
'RND_JOIN' => 'Join',
'RND_POSTS' => 'Posts',
'RND_OCC' => 'Occupation',
'RND_FROM' => 'Location',
'RND_WWW' => 'Web page',
// top poster
'TOP_POSTER' => 'Top poster',
// attachments
'DOWNLOADS' => 'Downloads',
// links
'LINKS' => 'Links',
// latest members
'LATEST_MEMBERS' => 'Latest members',
// make donation
'DONATION' => 'Make donation',
'DONATION_TEXT' => 'is a formation suplying services with no intention of any revenue. Anyone who wants to support this formation can do it by donating so that the cost of server, the domain and etc. could be paid of.',
'PAY_MSG' => 'After selecting the amount which you want to donate from the menu, you can go on by clicking on the picture of PayPal.',
'PAY_ITEM' => 'Make donation', // paypal item
// main menu
'M_MENU' => 'Menu',
'M_CONTENT' => 'Content',
'M_ACP' => 'ACP',
'M_HELP' => 'Help',
'M_BBCODE' => 'BBCode FAQ',
'M_TERMS' => 'Term of use',
'M_PRV' => 'Privacy policy',
'M_SEARCH' => 'Search',
// link us
'LINK_US' => 'Link to us',
'LINK_US_TXT' => 'Please feel free to link to <strong>%s</strong>. Use the following HTML:',
// friends
'FRIENDS' => 'Friends',
'FRIENDS_OFFLINE' => 'Offline',
'FRIENDS_ONLINE' => 'Online',
'NO_FRIENDS' => 'No friends currently defined',
'NO_FRIENDS_OFFLINE' => 'No friends offline',
'NO_FRIENDS_ONLINE' => 'No friends online',
// last bots
'LAST_VISITED_BOTS' => 'Last %s visited bots',
// wordgraph
'WORDGRAPH' => 'Wordgraph',
// change style
'BOARD_STYLE' => 'Board style',
'STYLE_CHOOSE' => 'Select a style',
// team
'NO_ADMINISTRATORS_P' => 'No administrators',
'NO_MODERATORS_P' => 'No moderators',
// average Statistics
'TOPICS_PER_DAY_OTHER' => 'Topics per day: <strong>%d</strong>',
'TOPICS_PER_DAY_ZERO' => 'Topics per day: <strong>0</strong>',
'POSTS_PER_DAY_OTHER' => 'Posts per day: <strong>%d</strong>',
'POSTS_PER_DAY_ZERO' => 'Posts per day: <strong>0</strong>',
'USERS_PER_DAY_OTHER' => 'Users per day: <strong>%d</strong>',
'USERS_PER_DAY_ZERO' => 'Users per day: <strong>0</strong>',
'TOPICS_PER_USER_OTHER' => 'Topics per user: <strong>%d</strong>',
'TOPICS_PER_USER_ZERO' => 'Topics per user: <strong>0</strong>',
'POSTS_PER_USER_OTHER' => 'Posts per user: <strong>%d</strong>',
'POSTS_PER_USER_ZERO' => 'Posts per user: <strong>0</strong>',
'POSTS_PER_TOPIC_OTHER' => 'Posts per topic: <strong>%d</strong>',
'POSTS_PER_TOPIC_ZERO' => 'Posts per topic: <strong>0</strong>',
// other
'POLL' => 'Poll',
'CLOCK' => 'Clock',
'SPONSOR' => 'Sponsors',
/**
* DO NOT REMOVE or CHANGE
*/
'PORTAL_COPY' => '<a href="http://www.board3.de" title="board3.de">board3 Portal</a> - based on <a href="http://www.phpbb3portal.com" title="phpBB3 Portal">phpBB3 Portal</a>',
)
);
// mini calendar
$lang = array_merge($lang, array(
'Mini_Cal_calendar' => 'Calendar',
'Mini_Cal_add_event' => 'Add Event',
'Mini_Cal_events' => 'Upcoming Events',
'Mini_Cal_no_events' => 'None',
'Mini_cal_this_event' => 'This month holiday events',
'View_next_month' => 'next month',
'View_previous_month' => 'previous month',
// uses MySQL DATE_FORMAT - %c long_month, numeric (1..12) - %e Day of the long_month, numeric (0..31)
// see http://www.mysql.com/doc/D/a/Date_and_time_functions.html for more details
// currently supports: %a, %b, %c, %d, %e, %m, %y, %Y, %H, %k, %h, %l, %i, %s, %p
'Mini_Cal_date_format' => '%b %e',
'Mini_Cal_date_format_Time' => '%H:%i',
// if you change the first day of the week in constants.php, you should change values for the short day names accordingly
// e.g. FDOW = Sunday -> $lang['mini_cal']['day'][1] = 'Su'; ... $lang['mini_cal']['day'][7] = 'Sa';
// FDOW = Monday -> $lang['mini_cal']['day'][1] = 'Mo'; ... $lang['mini_cal']['day'][7] = 'Su';
'mini_cal' => array(
'day' => array(
'1' => 'Mo',
'2' => 'Tu',
'3' => 'We',
'4' => 'Th',
'5' => 'Fr',
'6' => 'Sa',
'7' => 'Su',
),
'month' => array(
'1' => 'Jan',
'2' => 'Feb',
'3' => 'Mar',
'4' => 'Apr',
'5' => 'May',
'6' => 'Jun',
'7' => 'Jul',
'8' => 'Aug',
'9' => 'Sep',
'10'=> 'Oct',
'11'=> 'Nov',
'12'=> 'Dec',
),
'long_month'=> array(
'1' => 'January',
'2' => 'February',
'3' => 'March',
'4' => 'April',
'5' => 'May',
'6' => 'June',
'7' => 'July',
'8' => 'August',
'9' => 'September',
'10'=> 'October',
'11'=> 'November',
'12'=> 'December',
),
),
));
?>

View File

@@ -0,0 +1,233 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
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(
'ACP_PORTAL_INFO_SETTINGS' => 'General settings',
'ACP_PORTAL_INFO_SETTINGS_EXPLAIN' => 'Thank you for choosing board3 Portal. On this page you can manage the portal of your board. The screens inhere will give you a quick overview of all the various portal settings. The links on the left hand side of this screen allow you to control every aspect of your portal experience.',
'ACP_PORTAL_SETTINGS' => 'Portal settings',
'ACP_PORTAL_SETTINGS_EXPLAIN' => 'Thank you for choosing board3 Portal. On this page you can manage the portal of your board. The screens inhere will give you a quick overview of all the various portal settings. The links on the left hand side of this screen allow you to control every aspect of your portal experience.',
// general
'ACP_PORTAL_GENERAL_INFO' => 'Portal administration',
'ACP_PORTAL_GENERAL_INFO_EXPLAIN' => 'Thank you for choosing board3 Portal. On this page you can manage the portal of your board. The screens inhere will give you a quick overview of all the various portal settings. The links on the left hand side of this screen allow you to control every aspect of your portal experience.',
'ACP_PORTAL_GENERAL_SETTINGS' => 'General settings',
'ACP_PORTAL_GENERAL_SETTINGS_EXPLAIN' => 'Here you can change your general and certain specific options.',
'PORTAL_ADVANCED_STAT' => 'Advanced statistics block',
'PORTAL_ADVANCED_STAT_EXPLAIN' => 'Display this block on portal.',
'PORTAL_LEADERS' => 'Leaders / team block',
'PORTAL_LEADERS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_CLOCK' => 'Clock block',
'PORTAL_CLOCK_EXPLAIN' => 'Display this block on portal.',
'PORTAL_LINK_US' => 'Link us block',
'PORTAL_LINK_US_EXPLAIN' => 'Display this block on portal.',
'PORTAL_LINKS' => 'Links block',
'PORTAL_LINKS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_BIRTHDAYS' => 'Birthday block',
'PORTAL_BIRTHDAYS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_SEARCH' => 'Search block',
'PORTAL_SEARCH_EXPLAIN' => 'Display this block on portal.',
'PORTAL_WELCOME' => 'Welcome center block',
'PORTAL_WELCOME_EXPLAIN' => 'Display this block on portal.',
'PORTAL_WHOIS_ONLINE' => 'Who is online?',
'PORTAL_WHOIS_ONLINE_EXPLAIN' => 'Display this block on portal.',
'PORTAL_CHANGE_STYLE' => 'Styleswitcher',
'PORTAL_CHANGE_STYLE_EXPLAIN' => 'Display this block on portal.<br /><span style="color:red">Please note:</span> if "Override user style:" in the board settings is set to "Yes", this block <u>wont be displayed</u>, independent of this settings.',
'PORTAL_FRIENDS' => 'Friends block',
'PORTAL_FRIENDS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_MAX_ONLINE_FRIENDS' => 'Limit of displayed online friends',
'PORTAL_MAX_ONLINE_FRIENDS_EXPLAIN' => 'Limit display of online friends in portal block to a certain value.',
'PORTAL_MAIN_MENU' => 'Main menu',
'PORTAL_MAIN_MENU_EXPLAIN' => 'Display this block on portal.',
'PORTAL_USER_MENU' => 'User menu / Login box',
'PORTAL_USER_MENU_EXPLAIN' => 'Display this block on portal.',
// random member
'PORTAL_RANDOM_MEMBER' => 'Random member block',
'PORTAL_RANDOM_MEMBER_EXPLAIN' => 'Display this block on portal.',
// global announcements
'ACP_PORTAL_ANNOUNCE_INFO' => 'Global announcements',
'ACP_PORTAL_ANNOUNCE_SETTINGS' => 'Global announcements settings',
'ACP_PORTAL_ANNOUNCE_SETTINGS_EXPLAIN' => 'Here you can change your global announcment information and certain specific options.',
'PORTAL_ANNOUNCEMENTS' => 'Display global announcements',
'PORTAL_ANNOUNCEMENTS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_ANNOUNCEMENTS_STYLE' => 'Compact global announcements block style',
'PORTAL_ANNOUNCEMENTS_STYLE_EXPLAIN' => 'If select yes use compact style for global announcements, no is large style',
'PORTAL_NUMBER_OF_ANNOUNCEMENTS' => 'Number of announcements on portal',
'PORTAL_NUMBER_OF_ANNOUNCEMENTS_EXPLAIN' => '0 means infinite',
'PORTAL_ANNOUNCEMENTS_DAY' => 'Number of days to display the announcement',
'PORTAL_ANNOUNCEMENTS_DAY_EXPLAIN' => '0 means infinite',
'PORTAL_ANNOUNCEMENTS_LENGTH' => 'Max length of global announcements',
'PORTAL_ANNOUNCEMENTS_LENGTH_EXPLAIN' => '0 means infinite',
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' => 'Global global announcements forum ID',
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM_EXPLAIN' => 'Forum we pull the articles from, leave blank to pull from all forums, separate by comma for multi-forums, eg. 1,2,5',
// news
'ACP_PORTAL_NEWS_INFO' => 'News',
'ACP_PORTAL_NEWS_SETTINGS' => 'News settings',
'ACP_PORTAL_NEWS_SETTINGS_EXPLAIN' => 'Here you can change your news information and certain specific options.',
'PORTAL_NEWS' => 'Display news block',
'PORTAL_NEWS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_NEWS_STYLE' => 'Compact news block style',
'PORTAL_NEWS_STYLE_EXPLAIN' => 'If select yes use compact style for news, no is large style.',
'PORTAL_SHOW_ALL_NEWS' => 'Show all of the articles in this forum',
'PORTAL_SHOW_ALL_NEWS_EXPLAIN' => 'Including stickies and announcements.',
'PORTAL_NUMBER_OF_NEWS' => 'Number of news articles on portal',
'PORTAL_NUMBER_OF_NEWS_EXPLAIN' => '0 means infinite',
'PORTAL_NEWS_LENGTH' => 'Max length of news article',
'PORTAL_NEWS_LENGTH_EXPLAIN' => '0 means infinite',
'PORTAL_NEWS_FORUM' => 'News Forum ID',
'PORTAL_NEWS_FORUM_EXPLAIN' => 'Forum we pull the articles from, leave blank to pull from all forums, separate by comma for multi-forums, eg. 1,2,5',
'PORTAL_EXCLUDE_FORUM' => 'Exclude Forum ID',
'PORTAL_EXCLUDE_FORUM_EXPLAIN' => 'Forum we pull the articles from, leave blank to pull from all forums, separate by comma for multi-forums, eg. 1,2,5',
// recent topics
'ACP_PORTAL_RECENT_INFO' => 'Recent topics',
'ACP_PORTAL_RECENT_SETTINGS' => 'Recent topics settings',
'ACP_PORTAL_RECENT_SETTINGS_EXPLAIN' => 'Here you can change your recent topics information and certain specific options.',
'PORTAL_RECENT' => 'Display recent topics block',
'PORTAL_RECENT_EXPLAIN' => 'Display this block on portal.',
'PORTAL_MAX_TOPIC' => 'Limit of recent announcements/hot topics',
'PORTAL_MAX_TOPIC_EXPLAIN' => '0 means infinite',
'PORTAL_RECENT_TITLE_LIMIT' => 'Character limit for recent topic',
'PORTAL_RECENT_TITLE_LIMIT_EXPLAIN' => '0 means infinite',
// paypal
'ACP_PORTAL_PAYPAL_INFO' => 'Paypal',
'ACP_PORTAL_PAYPAL_SETTINGS' => 'Paypal settings',
'ACP_PORTAL_PAYPAL_SETTINGS_EXPLAIN' => 'Here you can change your Paypal information and certain specific options.',
'PORTAL_PAY_C_BLOCK' => 'Display paypal center block',
'PORTAL_PAY_C_BLOCK_EXPLAIN' => 'Display this block on portal.',
'PORTAL_PAY_S_BLOCK' => 'Display paypal small block',
'PORTAL_PAY_S_BLOCK_EXPLAIN' => 'Display this block on portal.',
'PORTAL_PAY_ACC' => 'Paypal account to use',
'PORTAL_PAY_ACC_EXPLAIN' => 'Enter your on Paypal used e-mail address eg. xxx@xxx.com',
// last member
'ACP_PORTAL_MEMBERS_INFO' => 'Latest members',
'ACP_PORTAL_MEMBERS_SETTINGS' => 'Latest members settings',
'ACP_PORTAL_MEMBERS_SETTINGS_EXPLAIN' => 'Here you can change your latest members information and certain specific options.',
'PORTAL_LATEST_MEMBERS' => 'Display latest members block',
'PORTAL_LATEST_MEMBERS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_MAX_LAST_MEMBER' => 'Limit of displayed latest members',
'PORTAL_MAX_LAST_MEMBER_EXPLAIN' => '0 means infinite',
// bots
'ACP_PORTAL_BOTS_INFO' => 'Visiting bots',
'ACP_PORTAL_BOTS_SETTINGS' => 'Visiting bots settings',
'ACP_PORTAL_BOTS_SETTINGS_EXPLAIN' => 'Here you can change your visiting bots information and certain specific options.',
'PORTAL_LOAD_LAST_VISITED_BOTS' => 'Display visiting bots block',
'PORTAL_LOAD_LAST_VISITED_BOTS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_LAST_VISITED_BOTS_NUMBER' => 'How many bots to display',
'PORTAL_LAST_VISITED_BOTS_NUMBER_EXPLAIN' => '0 means infinite',
// polls
'ACP_PORTAL_POLLS_INFO' => 'Poll',
'ACP_PORTAL_POLLS_SETTINGS' => 'Poll settings',
'ACP_PORTAL_POLLS_SETTINGS_EXPLAIN' => 'Here you can change your poll information and certain specific options.',
'PORTAL_POLL_TOPIC' => 'Display poll blocks',
'PORTAL_POLL_TOPIC_EXPLAIN' => 'Display this block on portal.',
'PORTAL_POLL_TOPIC_ID' => 'Poll topic id',
'PORTAL_POLL_TOPIC_ID_EXPLAIN' => 'The id of the topic from wich the poll should be displayed. Only one ID number / poll is possible.',
// most poster
'ACP_PORTAL_MOST_POSTER_INFO' => 'Most poster',
'ACP_PORTAL_MOST_POSTER_SETTINGS' => 'Most poster settings',
'ACP_PORTAL_MOST_POSTER_SETTINGS_EXPLAIN' => 'Here you can change your most poster information and certain specific options.',
'PORTAL_TOP_POSTERS' => 'Display most/top posters block',
'PORTAL_TOP_POSTERS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_MAX_MOST_POSTER' => 'How many most posters to display',
'PORTAL_MAX_MOST_POSTER_EXPLAIN' => '0 means infinite',
// left and right collumn width
'ACP_PORTAL_COLLUMN_WIDTH_INFO' => 'Collumn width',
'ACP_PORTAL_COLLUMN_WIDTH_SETTINGS' => 'Left and right collumn width settings',
'PORTAL_LEFT_COLLUMN_WIDTH' => 'Width value of the left collumn',
'PORTAL_LEFT_COLLUMN_WIDTH_EXPLAIN' => 'Change the width of left collumn in pixel, recommended value 180',
'PORTAL_RIGHT_COLLUMN_WIDTH' => 'Width value of the right collumn',
'PORTAL_RIGHT_COLLUMN_WIDTH_EXPLAIN' => 'Change the width of right collumn in pixel, recommended value 180',
// attachments
'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO' => 'Attachments',
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS' => 'Attachments settings',
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS_EXPLAIN' => 'Here you can change your attachments information and certain specific options.',
'PORTAL_ATTACHMENTS' => 'Display attachments block',
'PORTAL_ATTACHMENTS_EXPLAIN' => 'Display this block on portal.',
'PORTAL_ATTACHMENTS_NUMBER' => 'Limit of displayed attachments',
'PORTAL_ATTACHMENTS_NUMBER_EXPLAIN' => '0 means infinite',
// friends
'ACP_PORTAL_FRIENDS_INFO' => 'Friends',
'ACP_PORTAL_FRIENDS_SETTINGS' => 'Friends Settings',
'ACP_PORTAL_FRIENDS_SETTINGS_EXPLAIN' => 'Here you can change your friends information and certain specific options.',
'PORTAL_FRIENDS' => 'Display friends block',
'PORTAL_FRIENDS_EXPLAIN' => 'Display attachments block',
'PORTAL_MAX_ONLINE_FRIENDS' => 'Limit of displayed friends',
'PORTAL_MAX_ONLINE_FRIENDS_EXPLAIN' => 'Limits the amound of displayed friends to the given value.',
// wordgraph
'ACP_PORTAL_WORDGRAPH_INFO' => 'Wordgraph',
'ACP_PORTAL_WORDGRAPH_SETTINGS' => 'Wordgraph settings',
'ACP_PORTAL_WORDGRAPH_SETTINGS_EXPLAIN' => 'Here you can change your wordgraph information and certain specific options.',
'PORTAL_WORDGRAPH' => 'Display wordgraph block',
'PORTAL_WORDGRAPH_EXPLAIN' => 'Display this block on portal.',
'PORTAL_WORDGRAPH_MAX_WORDS' => 'How many words to display',
'PORTAL_WORDGRAPH_MAX_WORDS_EXPLAIN' => '0 means infinite',
'PORTAL_WORDGRAPH_WORD_COUNTS' => 'Include count values to display',
'PORTAL_WORDGRAPH_WORD_COUNTS_EXPLAIN' => 'Display count values per word eg. (25).',
'PORTAL_WORDGRAPH_RATIO' => 'Used aspect ratio word size',
'PORTAL_WORDGRAPH_RATIO_EXPLAIN' => 'Change the aspect ratio (bigger/smaler) word size (default=18)',
// welcome message
'ACP_PORTAL_WELCOME_INFO' => 'Welcome',
'ACP_PORTAL_WELCOME_SETTINGS' => 'Welcome settings',
'ACP_PORTAL_WELCOME_SETTINGS_EXPLAIN' => 'Here you can change welcome messages and certain specific options.',
'PORTAL_WELCOME_INTRO' => 'Welcome message',
'PORTAL_WELCOME_GUEST' => 'Welcome message only for guests?',
'PORTAL_WELCOME_INTRO_EXPLAIN' => 'Change the welcome (plain text only). Max. 600 characters!',
// minicalendar
'ACP_PORTAL_MINICALENDAR_INFO' => 'Mini calendar',
'ACP_PORTAL_MINICALENDAR_SETTINGS' => 'Mini calendar settings',
'ACP_PORTAL_MINICALENDAR_SETTINGS_EXPLAIN' => 'Here you can change your mini calendar information and certain specific options.',
'PORTAL_MINICALENDAR' => 'Display mini calendar block',
'PORTAL_MINICALENDAR_EXPLAIN' => 'Display this block on portal.',
'PORTAL_MINICALENDAR_TODAY_COLOR' => 'Active day color',
'PORTAL_MINICALENDAR_TODAY_COLOR_EXPLAIN' => 'HEX or named colors are allowed such as #FFFFFF for white, or color names like vilolet.',
'PORTAL_MINICALENDAR_DAY_LINK_COLOR' => 'Day link color',
'PORTAL_MINICALENDAR_DAY_LINK_COLOR_EXPLAIN'=> 'HEX or named colors are allowed such as #FFFFFF for white, or color names like vilolet.',
));
?>

View File

@@ -0,0 +1,69 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
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(
'INSTALLER_CONVERT' => 'Convert',
'INSTALLER_CONVERT_MENU' => 'Convertmenu',
'INSTALLER_CONVERT_NOTE' => 'Convert MOD to v%s',
'INSTALLER_CONVERT_PREFIX' => 'Prefix of phpBB2-installation',
'INSTALLER_CONVERT_SUCCESSFUL' => 'Convert of the MOD to v%s was successful.<br />Now copy the image-files of album/upload and album/upload/cache of your phpbb2-Installation into the one\'s of the phpBB3',
'INSTALLER_CONVERT_UNSUCCESSFUL' => 'Convert of the MOD to v%s was <strong>not</strong> successful.',
'INSTALLER_CONVERT_UNSUCCESSFUL2' => 'You didn\'t insert a prefix of your phpBB2-installation.',
'INSTALLER_CONVERT_WELCOME' => 'Welcome to the Convertmenu',
'INSTALLER_CONVERT_WELCOME_NOTE' => 'When you choose to convert the MOD, we try to copy the data of your older phpBB2 Installation.',
'INSTALLER_INTRO' => 'Intro',
'INSTALLER_INTRO_WELCOME' => 'Welcome to the MOD Installation',
'INSTALLER_INTRO_WELCOME_NOTE' => 'Please choose what you want to do.',
'INSTALLER_INSTALL' => 'Install',
'INSTALLER_INSTALL_MENU' => 'Installmenu',
'INSTALLER_INSTALL_SUCCESSFUL' => 'Installation of the MOD v%s was successful.',
'INSTALLER_INSTALL_UNSUCCESSFUL' => 'Installation of the MOD v%s was <strong>not</strong> successful.',
'INSTALLER_INSTALL_VERSION' => 'Install MOD v%s',
'INSTALLER_INSTALL_WELCOME' => 'Welcome to the Installationmenu',
'INSTALLER_INSTALL_WELCOME_NOTE' => 'When you choose to install the MOD, any database of previous versions will be dropped.',
'INSTALLER_NEEDS_FOUNDER' => 'You must be logged in as a founder.',
'INSTALLER_UPDATE' => 'Update',
'INSTALLER_UPDATE_MENU' => 'Updatemenu',
'INSTALLER_UPDATE_NOTE' => 'Update MOD from v%s to v%s',
'INSTALLER_UPDATE_SUCCESSFUL' => 'Update of the MOD from v%s to v%s was successful.',
'INSTALLER_UPDATE_UNSUCCESSFUL' => 'Update of the MOD from v%s to v%s was <strong>not</strong> successful.',
'INSTALLER_UPDATE_VERSION' => 'Update MOD from v',
'INSTALLER_UPDATE_WELCOME' => 'Welcome to the Updatemenu',
'WARNING' => 'Warning',
));
?>

226
root/portal.php Normal file
View File

@@ -0,0 +1,226 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
define('IN_PHPBB', true);
define('IN_PORTAL', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'portal/includes/functions.'.$phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/lang_portal');
// show login box and user menu
// only registered user see user menu
if ($user->data['is_registered'])
{
include($phpbb_root_path . 'portal/block/user_menu.'.$phpEx);
}
else
{
include($phpbb_root_path . 'portal/block/login_box.'.$phpEx);
}
if ($portal_config['portal_main_menu'])
{
$template->assign_vars(array(
'S_DISPLAY_MAINMENU' => true,
));
}
if ($portal_config['portal_user_menu'])
{
$template->assign_vars(array(
'S_DISPLAY_USERMENU' => true,
));
}
if ($portal_config['portal_birthdays'])
{
include($phpbb_root_path . 'portal/block/birthday_list.'.$phpEx);
}
if ($portal_config['portal_search'])
{
include($phpbb_root_path . 'portal/block/search.'.$phpEx);
}
if ($portal_config['portal_attachments'])
{
include($phpbb_root_path . 'portal/block/attachments.'.$phpEx);
}
if ($portal_config['portal_recent'])
{
include($phpbb_root_path . 'portal/block/recent.'.$phpEx);
}
if ($portal_config['portal_advanced_stat'])
{
include($phpbb_root_path . 'portal/block/statistics.'.$phpEx);
}
if ($portal_config['portal_minicalendar'])
{
include($phpbb_root_path . 'portal/block/mini_cal.'.$phpEx);
}
if ($portal_config['portal_link_us'])
{
include($phpbb_root_path . 'portal/block/link_us.'.$phpEx);
}
if ($portal_config['portal_leaders'])
{
include($phpbb_root_path . 'portal/block/leaders.'.$phpEx);
}
if ($portal_config['portal_wordgraph'])
{
include($phpbb_root_path . 'portal/block/wordgraph.'.$phpEx);
}
if ($portal_config['portal_poll_topic'])
{
include($phpbb_root_path . 'portal/block/poll.'.$phpEx);
}
if ($portal_config['portal_load_last_visited_bots'])
{
include($phpbb_root_path . 'portal/block/latest_bots.'.$phpEx);
}
if ($portal_config['portal_top_posters'])
{
include($phpbb_root_path . 'portal/block/top_posters.'.$phpEx);
}
if ($portal_config['portal_latest_members'])
{
include($phpbb_root_path . 'portal/block/latest_members.'.$phpEx);
}
if ($portal_config['portal_random_member'])
{
include($phpbb_root_path . 'portal/block/random_member.'.$phpEx);
}
if ($portal_config['portal_friends'])
{
include($phpbb_root_path . 'portal/block/friends.'.$phpEx);
}
if ($portal_config['portal_whois_online'])
{
include($phpbb_root_path . 'portal/block/whois_online.'.$phpEx);
}
if ($portal_config['portal_change_style'])
{
include($phpbb_root_path . 'portal/block/change_style.'.$phpEx);
}
if ($portal_config['portal_clock'])
{
$template->assign_vars(array(
'S_DISPLAY_CLOCK' => true,
));
}
if ($portal_config['portal_links'])
{
// include($phpbb_root_path . 'portal/block/links.'.$phpEx);
$template->assign_vars(array(
'S_DISPLAY_LINKS' => true,
));
}
if ($portal_config['portal_welcome'])
{
$template->assign_vars(array(
'S_DISPLAY_WELCOME' => true,
'PORTAL_WELCOME_INTRO' => str_replace("\n", "<br />", $portal_config['portal_welcome_intro']),
));
}
if ($portal_config['portal_welcome_guest'])
{
$template->assign_vars(array(
'S_DISPLAY_WELCOME_GUEST' => true,
));
}
if ($portal_config['portal_announcements'])
{
include($phpbb_root_path . 'portal/block/announcements.'.$phpEx);
$template->assign_vars(array(
'S_ANNOUNCE_COMPACT' => ($portal_config['portal_announcements_style']) ? true : false,
));
}
if ($portal_config['portal_news'])
{
include($phpbb_root_path . 'portal/block/news.'.$phpEx);
$template->assign_vars(array(
'S_NEWS_COMPACT' => ($portal_config['portal_news_style']) ? true : false,
));
}
if ($portal_config['portal_pay_s_block'] or $portal_config['portal_pay_c_block'])
{
include($phpbb_root_path . 'portal/block/donate.'.$phpEx);
}
/*
if ($portal_config['portal_ads_small'])
{
$template->assign_vars(array(
'S_ADS_SMALL' => ($portal_config['portal_ads_small_box']) ? true : false,
// 'ADS_SMALL_BOX' => $portal_config['portal_ads_small_box'],
));
}
if ($portal_config['portal_ads_center'])
{
$template->assign_vars(array(
'S_ADS_CENTER' => ($portal_config['portal_ads_center_box']) ? true : false,
// 'ADS_CENTER_BOX' => $portal_config['portal_ads_center_box'],
));
}
*/
$template->assign_vars(array(
'S_DISPLAY_JUMPBOX' => true, // SQL + ACP eklenecek
'PORTAL_LEFT_COLLUMN' => $portal_config['portal_left_collumn_width'],
'PORTAL_RIGHT_COLLUMN' => $portal_config['portal_right_collumn_width'],
));
// output page
page_header($user->lang['PORTAL']);
$template->set_filenames(array(
'body' => '/portal/portal_body.html'
));
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>

View File

@@ -0,0 +1,113 @@
<?php
/*
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$template->assign_vars(array(
'NEWEST_POST_IMG' => $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'),
'READ_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_NEWEST_POST'),
'S_DISPLAY_ANNOUNCEMENTS' => true,
));
#if (!isset($HTTP_GET_VARS['article']))
$news = request_var('announcement', -1);
if($news < 0)
{
$fetch_news = phpbb_fetch_posts('', $portal_config['portal_number_of_announcements'], $portal_config['portal_announcements_length'], $portal_config['portal_announcements_day'], 'announcements');
if (count($fetch_news) == 0)
{
$template->assign_block_vars('announcements_row', array(
'S_NO_TOPICS' => true,
'S_NOT_LAST' => false
));
}
else
{
for ($i = 0; $i < count($fetch_news); $i++)
{
if( isset($fetch_news[$i]['striped']) && $fetch_news[$i]['striped'] == true )
{
$open_bracket = '[ ';
$close_bracket = ' ]';
$read_full = $user->lang['READ_FULL'];
}
else
{
$open_bracket = '';
$close_bracket = '';
$read_full = '';
}
// unread?
$forum_id = $fetch_news[$i]['forum_id'];
$topic_id = $fetch_news[$i]['topic_id'];
$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false);
$unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
$template->assign_block_vars('announcements_row', array(
'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
'TITLE' => $fetch_news[$i]['topic_title'],
'POSTER' => $fetch_news[$i]['username'],
'U_USER_PROFILE' => (($fetch_news[$i]['user_type'] == USER_NORMAL || $fetch_news[$i]['user_type'] == USER_FOUNDER) && $fetch_news[$i]['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $fetch_news[$i]['user_id']) : '',
'TIME' => $fetch_news[$i]['topic_time'],
'TEXT' => $fetch_news[$i]['post_text'],
'REPLIES' => $fetch_news[$i]['topic_replies'],
'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'],
'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($fetch_news[$i]['forum_id']) ? 'f=' . $fetch_news[$i]['forum_id'] . '&amp;' : '') . 'p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']),
'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($fetch_news[$i]['forum_id']) ? 'f=' . $fetch_news[$i]['forum_id'] . '&amp;' : '') . 't=' . $fetch_news[$i]['topic_id']),
'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&amp;' . (($fetch_news[$i]['forum_id']) ? 'f=' . $fetch_news[$i]['forum_id'] . '&amp;' : '') . 't=' . $fetch_news[$i]['topic_id']),
'U_READ_FULL' => append_sid("{$phpbb_root_path}portal.$phpEx", 'announcement=' . $i),
'L_READ_FULL' => $read_full,
'OPEN' => $open_bracket,
'CLOSE' => $close_bracket,
'S_NOT_LAST' => ($i < count($fetch_news) - 1) ? true : false,
'S_POLL' => $fetch_news[$i]['poll'],
// 'MINI_POST_IMG' => $user->img('icon_post_target', 'POST'),
'S_UNREAD_INFO' => $unread_topic,
));
}
}
}
else
{
#$fetch_news = phpbb_fetch_posts($portal_config['portal_news_forum'], $portal_config['portal_number_of_news'], 0, 0, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news');
$fetch_news = $fetch_news = phpbb_fetch_posts('', $portal_config['portal_number_of_announcements'], 0, 0, 'announcements');
$i = $news;
$forum_id = $fetch_news[$i]['forum_id'];
$topic_id = $fetch_news[$i]['topic_id'];
$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false);
$unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
$template->assign_block_vars('announcements_row', array(
'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
'TITLE' => $fetch_news[$i]['topic_title'],
'POSTER' => $fetch_news[$i]['username'],
'TIME' => $fetch_news[$i]['topic_time'],
'TEXT' => $fetch_news[$i]['post_text'],
'REPLIES' => $fetch_news[$i]['topic_replies'],
'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'],
'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($fetch_news[$i]['forum_id']) ? 'f=' . $fetch_news[$i]['forum_id'] . '&amp;' : '') . 'p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']),
'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", (($fetch_news[$i]['forum_id']) ? 'f=' . $fetch_news[$i]['forum_id'] . '&amp;' : '') . 't=' . $fetch_news[$i]['topic_id']),
'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&amp;' . (($fetch_news[$i]['forum_id']) ? 'f=' . $fetch_news[$i]['forum_id'] . '&amp;' : '') . 't=' . $fetch_news[$i]['topic_id']),
'S_POLL' => $fetch_news[$i]['poll'],
'S_UNREAD_INFO' => $unread_topic,
));
}
?>

View File

@@ -0,0 +1,54 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
// Just grab all attachment info from database
$sql = 'SELECT *
FROM ' . ATTACHMENTS_TABLE . '
ORDER BY filetime ' . ((!$config['display_order']) ? 'DESC' : 'ASC') . ', post_msg_id ASC';
$result = $db->sql_query_limit($sql, $portal_config['portal_attachments_number']);
while ($row = $db->sql_fetchrow($result))
{
$size_lang = ($row['filesize'] >= 1048576) ? $user->lang['MB'] : (($row['filesize'] >= 1024) ? $user->lang['KB'] : $user->lang['BYTES']);
$row['filesize'] = ($row['filesize'] >= 1048576) ? round((round($row['filesize'] / 1048576 * 100) / 100), 2) : (($row['filesize'] >= 1024) ? round((round($row['filesize'] / 1024 * 100) / 100), 2) : $row['filesize']);
$replace = str_replace(array('_','.zip','.jpg','.gif','.png','.ZIP','.JPG','.GIF','.PNG','.','-'), ' ', $row['real_filename']);
$template->assign_block_vars('attach', array(
'FILESIZE' => $row['filesize'] . ' ' . $size_lang,
'FILETIME' => $user->format_date($row['filetime']),
'DOWNLOAD_COUNT' => (int) $row['download_count'], // grab downloads count
'REAL_FILENAME' => $replace,
'PHYSICAL_FILENAME' => basename($row['physical_filename']),
'ATTACH_ID' => $row['attach_id'],
'POST_IDS' => (!empty($post_ids[$row['attach_id']])) ? $post_ids[$row['attach_id']] : '',
'POST_MSG_ID' => $row['post_msg_id'], // grab post ID to redirect to post
'U_FILE' => append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $row['attach_id']),
));
}
$db->sql_freeresult($result);
// Assign specific vars
$template->assign_vars(array(
'S_DISPLAY_ATTACHMENTS' => true,
));
?>

View File

@@ -0,0 +1,52 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
// Generate birthday list if required ... / borrowed from index.php (RC4)
$birthday_list = '';
if ($config['load_birthdays'] && $config['allow_birthdays'])
{
$now = getdate(time() + $user->timezone + $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 != '') ? ', ' : '') . 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);
}
// Assign index specific vars
$template->assign_vars(array(
'BIRTHDAY_LIST' => $birthday_list,
'S_DISPLAY_BIRTHDAY_LIST' => ($config['load_birthdays']) ? true : false,
)
);
?>

View File

@@ -0,0 +1,76 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$lang = request_var('lang', '', false, true);
if (file_exists($phpbb_root_path . 'language/' . $lang . "/common.$phpEx"))
{
$this->lang_name = $lang;
$this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/';
$cookie_expire = $this->time_now + (($config['max_autologin_time']) ? 86400 * (int) $config['max_autologin_time'] : 31536000);
$this->set_cookie('lang', $lang, $cookie_expire);
unset($cookie_expire);
}
$requested_style = request_var('style', 0, false, true);
if ($requested_style && (!$config['override_user_style'] || $auth->acl_get('a_styles')))
{
$style = $requested_style;
$cookie_expire = $this->time_now + (($config['max_autologin_time']) ? 86400 * (int) $config['max_autologin_time'] : 31536000);
$this->set_cookie('style', $style, $cookie_expire);
unset($cookie_expire);
}
$all = false;
$default = '';
$sql_where = (!$all) ? 'WHERE style_active = 1 ' : '';
$sql = 'SELECT style_id, style_name, style_copyright
FROM ' . STYLES_TABLE . "
$sql_where
ORDER BY style_name";
$result = $db->sql_query($sql);
$style_options = '';
while ($row = $db->sql_fetchrow($result))
{
$selected = ($row['style_id'] == $default) ? ' selected="selected"' : '';
$style_options .= '<option value="' . $row['style_id'] . '"' . $selected . '>' . $row['style_name'] . '</option>';
$template->assign_block_vars('styles', array(
'STYLE_ID' => $row['style_id'],
'STYLE_NAME' => $row['style_name'],
'STYLE_COPY' => $row['style_copyright'],
'U_STYLE' => append_sid("{$phpbb_root_path}portal.$phpEx", 'style=' . $row['style_id']),
));
}
$db->sql_freeresult($result);
// Assign specific vars
$template->assign_vars(array(
'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['style']),
'S_DISPLAY_CHANGE_STYLE' => true,
));
?>

View File

@@ -0,0 +1,44 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
if ($portal_config['portal_pay_acc'])
{
if ($portal_config['portal_pay_c_block'])
{
$template->assign_vars(array(
'S_DISPLAY_PAY_C' => true,
));
}
if ($portal_config['portal_pay_s_block'])
{
$template->assign_vars(array(
'S_DISPLAY_PAY_S' => true,
));
}
// Assign specific vars
$template->assign_vars(array(
'PAY_ACC' => $portal_config['portal_pay_acc'],
));
}
?>

View File

@@ -0,0 +1,71 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$s_display_friends = false;
// Output listing of friends online
$update_time = $config['load_online_time'] * 60;
$sql = $db->sql_build_query('SELECT_DISTINCT', array(
'SELECT' => 'u.user_id, u.username, u.user_colour, u.user_allow_viewonline, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline',
'FROM' => array(
USERS_TABLE => 'u',
ZEBRA_TABLE => 'z'
),
'LEFT_JOIN' => array(
array(
'FROM' => array(SESSIONS_TABLE => 's'),
'ON' => 's.session_user_id = z.zebra_id'
)
),
'WHERE' => 'z.user_id = ' . $user->data['user_id'] . '
AND z.friend = 1
AND u.user_id = z.zebra_id',
'GROUP_BY' => 'z.zebra_id, u.user_id, u.username, u.user_allow_viewonline, u.user_colour',
'ORDER_BY' => 'u.username_clean ASC',
));
$result = $db->sql_query_limit($sql, $portal_config['portal_max_online_friends']);
while ($row = $db->sql_fetchrow($result))
{
$which = (time() - $update_time < $row['online_time'] && $row['viewonline'] && $row['user_allow_viewonline']) ? 'online' : 'offline';
$s_display_friends = ($row['user_id']) ? true : false;
$template->assign_block_vars("friends_{$which}", array(
'USER_ID' => $row['user_id'],
'U_PROFILE' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
'USER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']))
);
}
$db->sql_freeresult($result);
// Assign specific vars
$template->assign_vars(array(
'S_DISPLAY_FRIENDS' => $s_display_friends,
'S_ZEBRA_ENABLED' => true,
));
?>

View File

@@ -0,0 +1,8 @@
<html>
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -0,0 +1,59 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
// Last x visited bots
$sql = 'SELECT username, user_colour, user_lastvisit
FROM ' . USERS_TABLE . '
WHERE user_type = ' . USER_IGNORE . '
ORDER BY user_lastvisit DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_last_visited_bots_number']);
while ($row = $db->sql_fetchrow($result))
{
// if ($row['user_lastvisit'] == 0)
if (!$row['user_lastvisit'])
{
$template->assign_vars(array(
'S_DISPLAY_LAST_BOTS' => false,
));
}
else
{
$template->assign_vars(array(
'S_DISPLAY_LAST_BOTS' => true,
));
$template->assign_block_vars('last_visited_bots', array(
'BOT_NAME' => get_username_string('full', '', $row['username'], $row['user_colour']),
'LAST_VISIT_DATE' => $user->format_date($row['user_lastvisit']),
));
}
}
$db->sql_freeresult($result);
// Assign specific vars
$template->assign_vars(array(
'LAST_VISITED_BOTS' => sprintf($user->lang['LAST_VISITED_BOTS'], $portal_config['portal_last_visited_bots_number']),
'S_LAST_VISITED_BOTS' => ($portal_config['portal_load_last_visited_bots']) ? true : false,
));
?>

View File

@@ -0,0 +1,44 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$sql = 'SELECT user_id, username, user_regdate, user_colour
FROM ' . USERS_TABLE . '
WHERE user_type <> ' . USER_IGNORE . '
AND user_inactive_time = 0
ORDER BY user_regdate DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_max_last_member']);
while( ($row = $db->sql_fetchrow($result)) && ($row['username']) )
{
$template->assign_block_vars('latest_members', array(
'USERNAME' => censor_text($row['username']),
'USERNAME_COLOR'=> ($row['user_colour']) ? ' style="color:#' . $row['user_colour'] .'"' : '',
'U_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $row['user_id']),
'JOINED' => $user->format_date($row['user_regdate'], $format = 'd M'),
));
}
$db->sql_freeresult($result);
$template->assign_vars(array(
'S_DISPLAY_LATEST_MEMBERS' => true,
));
?>

View File

@@ -0,0 +1,174 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
// Display a listing of board admins, moderators
$user->add_lang('groups');
$user_ary = $auth->acl_get_list(false, array('a_', 'm_'), false);
$admin_id_ary = $mod_id_ary = $forum_id_ary = array();
foreach ($user_ary as $forum_id => $forum_ary)
{
foreach ($forum_ary as $auth_option => $id_ary)
{
if (!$forum_id && $auth_option == 'a_')
{
$admin_id_ary = array_merge($admin_id_ary, $id_ary);
continue;
}
else
{
$mod_id_ary = array_merge($mod_id_ary, $id_ary);
}
if ($forum_id)
{
foreach ($id_ary as $id)
{
$forum_id_ary[$id][] = $forum_id;
}
}
}
}
$admin_id_ary = array_unique($admin_id_ary);
$mod_id_ary = array_unique($mod_id_ary);
// Admin group id...
$sql = 'SELECT group_id
FROM ' . GROUPS_TABLE . "
WHERE group_name = 'ADMINISTRATORS'";
$result = $db->sql_query($sql);
$admin_group_id = (int) $db->sql_fetchfield('group_id');
$db->sql_freeresult($result);
$sql = 'SELECT forum_id, forum_name
FROM ' . FORUMS_TABLE . '
WHERE forum_type = ' . FORUM_POST;
$result = $db->sql_query($sql);
$forums = array();
while ($row = $db->sql_fetchrow($result))
{
$forums[$row['forum_id']] = $row['forum_name'];
}
$db->sql_freeresult($result);
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'u.user_id, u.group_id as default_group, u.username, u.user_colour, u.user_allow_pm, g.group_id, g.group_name, g.group_colour, g.group_type, ug.user_id as ug_user_id',
'FROM' => array(
USERS_TABLE => 'u',
GROUPS_TABLE => 'g'
),
'LEFT_JOIN' => array(
array(
'FROM' => array(USER_GROUP_TABLE => 'ug'),
'ON' => 'ug.group_id = g.group_id AND ug.user_pending = 0 AND ug.user_id = ' . $user->data['user_id']
)),
'WHERE' => $db->sql_in_set('u.user_id', array_unique(array_merge($admin_id_ary, $mod_id_ary))) . '
AND u.group_id = g.group_id',
'ORDER_BY' => 'g.group_name ASC, u.username_clean ASC'
));
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$which_row = (in_array($row['user_id'], $admin_id_ary)) ? 'admin' : 'mod';
// We sort out admins not having the admin group as default
// The drawback is that only those admins are displayed which are within
// the special group 'Administrators' and also having it assigned as their default group.
// - might change
if ($which_row == 'admin' && $row['default_group'] != $admin_group_id)
{
// Remove from admin_id_ary, because the user may be a mod instead
unset($admin_id_ary[array_search($row['user_id'], $admin_id_ary)]);
if (!in_array($row['user_id'], $mod_id_ary))
{
continue;
}
else
{
$which_row = 'mod';
}
}
if ($row['group_type'] == GROUP_HIDDEN && !$auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel') && $row['ug_user_id'] != $user->data['user_id'])
{
$group_name = $user->lang['GROUP_UNDISCLOSED'];
$u_group = '';
}
else
{
$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
$u_group = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']);
}
$template->assign_block_vars($which_row, array(
'USER_ID' => $row['user_id'],
'GROUP_NAME' => $group_name,
'GROUP_COLOR' => $row['group_colour'],
'U_GROUP' => $u_group,
'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
'USER_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
'U_VIEW_PROFILE' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
));
}
$db->sql_freeresult($result);
/*we may delete this?
// Generate online information for user
if ($config['load_onlinetrack'] && sizeof($id_cache))
{
$sql = 'SELECT session_user_id, MAX(session_time) as online_time, MIN(session_viewonline) AS viewonline
FROM ' . SESSIONS_TABLE . '
WHERE ' . $db->sql_in_set('session_user_id', $id_cache) . '
GROUP BY session_user_id';
$result = $db->sql_query($sql);
$update_time = $config['load_online_time'] * 60;
while ($row = $db->sql_fetchrow($result))
{
$user_cache[$row['session_user_id']]['online'] = (time() - $update_time < $row['online_time'] && (($row['viewonline'] && $user_cache[$row['session_user_id']]['viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;
}
$db->sql_freeresult($result);
}
unset($id_cache);
// Assign specific vars
$template->assign_vars(array(
'ONLINE_IMG'=> ($poster_id == ANONYMOUS || !$config['load_onlinetrack']) ? '' : (($user_cache[$poster_id]['online']) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')),
'S_ONLINE' => ($poster_id == ANONYMOUS || !$config['load_onlinetrack']) ? false : (($user_cache[$poster_id]['online']) ? true : false),
));
*/
$template->assign_vars(array(
'S_DISPLAY_LEADERS' => true,
));
?>

View File

@@ -0,0 +1,31 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
//doing the easy way ;)
$u_link = $config['server_protocol'] . $config['server_name'] . $config['script_path'];
// Assign specific vars
$template->assign_vars(array(
'S_DISPLAY_LINK_US' => true,
'LINK_US_TXT' => sprintf($user->lang['LINK_US_TXT'], $config['sitename']),
'U_LINK_US' => '&lt;a&nbsp;href=&quot;' . $u_link . '&quot;&nbsp;' . (($config['site_desc']) ? 'title=&quot;' . $config['site_desc'] . '&quot;' : '' ) . '&gt;' . (($config['sitename']) ? $config['sitename'] : $u_link ) . '&lt;/a&gt;',
));
?>

View File

@@ -0,0 +1,26 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$template->assign_vars(array(
'S_DISPLAY_LINKS' => true,
));
?>

View File

@@ -0,0 +1,32 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$s_display = true;
// Assign specific vars
$template->assign_vars(array(
'U_PORTAL' => append_sid("{$phpbb_root_path}portal.$phpEx"),
'S_DISPLAY_FULL_LOGIN' => ($s_display) ? true : false,
'S_AUTOLOGIN_ENABLED' => ($config['allow_autologin']) ? true : false,
'S_LOGIN_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'),
));
?>

View File

@@ -0,0 +1,22 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
//we main delete this aswell? Oo
?>

View File

@@ -0,0 +1,164 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @copyright (c) Adrian Cockburn - phpbb@netclectic.com (mini calendar)
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
define ('IN_MINI_CAL', 1);
include_once($phpbb_root_path . '/portal/includes/mini_cal/mini_cal_config.'.$phpEx);
include_once($phpbb_root_path . '/portal/includes/mini_cal/mini_cal_common.'.$phpEx);
include_once($phpbb_root_path . '/portal/includes/mini_cal/calendarSuite.'.$phpEx);
// get the mode (if any)
$mini_cal_mode = 0;
if( isset($_GET['mode']) || isset($_POST['mode']) )
{
$mini_cal_mode = ( isset($_POST['mode']) ) ? $_POST['mode'] : $_GET['mode'];
}
$mini_cal_mode = ($mini_cal_mode == 'personal') ? $mini_cal_mode : 'default';
// get the user (for personal calendar)
if( isset($_GET['u']) || isset($_POST['u']) )
{
$mini_cal_user = ( isset($_POST['u']) ) ? intval($_POST['u']) : intval($_GET['u']);
}
// get the calendar month
$mini_cal_month = 0;
if( isset($_GET['m']) || isset($_POST['m']) )
{
$mini_cal_month = ( isset($_POST['m']) ) ? intval($_POST['m']) : intval($_GET['m']);
}
// initialise our calendarsuite class
$mini_cal = new calendarSuite();
// setup our mini_cal template
$template->set_filenames(array(
'mini_cal_body' => 'portal/block/mini_cal_body.html'
));
// initialise some variables
$mini_cal_today = date('Ymd', time());
$s_cal_month = ($mini_cal_month != 0) ? $mini_cal_month . ' month' : $mini_cal_today;
$mini_cal->getMonth($s_cal_month);
$mini_cal_count=MINI_CAL_FDOW;
$mini_cal_this_year = $mini_cal->dateYYYY;
$mini_cal_this_month = $mini_cal->dateMM;
$mini_cal_this_day = $mini_cal->dateDD;
$mini_cal_month_days = $mini_cal->daysMonth;
if ( MINI_CAL_CALENDAR_VERSION != 'NONE' )
{
// include the required events calendar support
$mini_cal_inc = 'mini_cal_' . MINI_CAL_CALENDAR_VERSION;
include_once($phpbb_root_path . 'portal/includes/mini_cal/' . $mini_cal_inc . '.' . $phpEx);
// include the required events calendar support
$mini_cal_auth = getMiniCalForumsAuth($user);
$mini_cal_event_days = getMiniCalEventDays($mini_cal_auth['view']);
getMiniCalEvents($mini_cal_auth);
getMiniCalPostForumsList($mini_cal_auth['post']);
}
// output the days for the current month
// if MINI_CAL_DATE_SEARCH = POSTS then hyperlink any days which have already past
// if MINI_CAL_DATE_SEARCH = EVENTS then hyperkink any which have events
$holiday=0;
for($i=0; $i < $mini_cal_month_days;)
{
// is this the first day of the week?
if($mini_cal_count==MINI_CAL_FDOW)
{
$template->assign_block_vars('mini_cal_row', array());
}
// is this a valid weekday?
if($mini_cal_count==($mini_cal->day[$i][7]))
{
$mini_cal_this_day = $mini_cal->day[$i][0];
$d_mini_cal_today = $mini_cal_this_year . ( ($mini_cal_this_month <= 9) ? '0' . $mini_cal_this_month : $mini_cal_this_month ) . ( ($mini_cal_this_day <= 9) ? '0' . $mini_cal_this_day : $mini_cal_this_day );
$mini_cal_day = ( $mini_cal_today == $d_mini_cal_today ) ? '<span class="' . MINI_CAL_TODAY_CLASS . '" style="font-weight: bold; border-style: outset; border-width: thin; color:' . $portal_config['portal_minicalendar_today_color'] . ';">' . $mini_cal_this_day . '</span>' : $mini_cal_this_day;
if ( (MINI_CAL_CALENDAR_VERSION != 'NONE') && (MINI_CAL_DATE_SEARCH == 'EVENTS') )
{
$mini_cal_day_link = '<a href="' . getMiniCalSearchURL($d_mini_cal_today) . '" class="' . MINI_CAL_DAY_LINK_CLASS . '" style="color: ' . $portal_config['portal_minicalendar_day_link_color'] . ';">' . ( $mini_cal_day ) . '</a>';
$mini_cal_day = ( in_array($mini_cal_this_day, $mini_cal_event_days) ) ? $mini_cal_day_link : $mini_cal_day;
}
else
{
$nix_mini_cal_today = gmmktime($config['board_timezone'], 0, 0, $mini_cal_this_month, $mini_cal_this_day, $mini_cal_this_year);
$mini_cal_day_link = '<a href="' . append_sid($phpbb_root_path . "search.$phpEx?search_id=unanswered&amp;st=" . $nix_mini_cal_today) . '" class="' . MINI_CAL_DAY_LINK_CLASS . '" style="color: ' . $portal_config['portal_minicalendar_day_link_color'] . ';">' . ( $mini_cal_day ) . '</a>';
$mini_cal_day = ( $mini_cal_today >= $d_mini_cal_today ) ? $mini_cal_day_link : $mini_cal_day;
}
$template->assign_block_vars('mini_cal_row.mini_cal_days', array(
'MINI_CAL_DAY' => $mini_cal_day
));
$i++;
}
// no day
else
{
$template->assign_block_vars('mini_cal_row.mini_cal_days', array(
'MINI_CAL_DAY' => ' '
));
}
// is this the last day of the week?
if ($mini_cal_count==6)
{
// if so then reset the count
$mini_cal_count=0;
}
else
{
// otherwise increment the count
$mini_cal_count++;
}
}
// output our general calendar bits
$prev_qs = setQueryStringVal('m', $mini_cal_month -1);
$next_qs = setQueryStringVal('m', $mini_cal_month +1);
$down = $mini_cal_month - 1;
$up = $mini_cal_month + 1;
$prev_month = '<a href="' . append_sid("{$phpbb_root_path}portal.$phpEx", "m=$down") . '"><img src="' . "{$phpbb_root_path}portal/images/mini_cal_icon_left_arrow.png" . '" title="' . $user->lang['View_previous_month'] . '" height="16" width="16" alt="&lt;&lt;" /></a>';
$next_month = '<a href="' . append_sid("{$phpbb_root_path}portal.$phpEx", "m=$up") . '"><img src="' . "{$phpbb_root_path}portal/images/mini_cal_icon_right_arrow.png" . '" title="' . $user->lang['View_next_month'] . '" height="16" width="16" alt="&gt;&gt;" /></a>';
$template->assign_vars(array(
'S_DISPLAY_MINICAL' => true,
'L_MINI_CAL_MONTH' => $user->lang['mini_cal']['long_month'][$mini_cal->day[0][4]] . " " . $mini_cal->day[0][5],
'L_MINI_CAL_ADD_EVENT' => $user->lang['Mini_Cal_add_event'],
'L_MINI_CAL_CALENDAR' => $user->lang['Mini_Cal_calendar'],
'L_MINI_CAL_EVENTS' => $user->lang['Mini_Cal_events'],
'L_MINI_CAL_NO_EVENTS' => $user->lang['Mini_Cal_no_events'],
'L_MINI_CAL_SUN' => $user->lang['mini_cal']['day'][1],
'L_MINI_CAL_MON' => $user->lang['mini_cal']['day'][2],
'L_MINI_CAL_TUE' => $user->lang['mini_cal']['day'][3],
'L_MINI_CAL_WED' => $user->lang['mini_cal']['day'][4],
'L_MINI_CAL_THU' => $user->lang['mini_cal']['day'][5],
'L_MINI_CAL_FRI' => $user->lang['mini_cal']['day'][6],
'L_MINI_CAL_SAT' => $user->lang['mini_cal']['day'][7],
'U_PREV_MONTH' => $prev_month,
'U_NEXT_MONTH' => $next_month,
));
?>

117
root/portal/block/news.php Normal file
View File

@@ -0,0 +1,117 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
//
// Fetch Posts for news from portal/includes/functions.php
//
$template->assign_vars(array(
'NEWEST_POST_IMG' => $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'),
'READ_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_NEWEST_POST'),
'S_DISPLAY_NEWS' => true,
));
#if (!isset($HTTP_GET_VARS['article']))
$news = request_var('news', -1);
if($news < 0)
{
$fetch_news = phpbb_fetch_posts($portal_config['portal_news_forum'], $portal_config['portal_number_of_news'], $portal_config['portal_news_length'], 0, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news');
if (count($fetch_news) == 0)
{
$template->assign_block_vars('news_row', array(
'S_NO_TOPICS' => true,
'S_NOT_LAST' => false
));
}
else
{
for ($i = 0; $i < count($fetch_news); $i++)
{
if( isset($fetch_news[$i]['striped']) && $fetch_news[$i]['striped'] == true )
{
$open_bracket = '[ ';
$close_bracket = ' ]';
$read_full = $user->lang['READ_FULL'];
}
else
{
$open_bracket = '';
$close_bracket = '';
$read_full = '';
}
// unread?
$forum_id = $fetch_news[$i]['forum_id'];
$topic_id = $fetch_news[$i]['topic_id'];
$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false);
$unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
$template->assign_block_vars('news_row', array(
'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
'TITLE' => $fetch_news[$i]['topic_title'],
'POSTER' => $fetch_news[$i]['username'],
'U_USER_PROFILE' => (($fetch_news[$i]['user_type'] == USER_NORMAL || $fetch_news[$i]['user_type'] == USER_FOUNDER) && $fetch_news[$i]['user_id'] != ANONYMOUS) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $fetch_news[$i]['user_id']) : '',
'TIME' => $fetch_news[$i]['topic_time'],
'TEXT' => $fetch_news[$i]['post_text'],
'REPLIES' => $fetch_news[$i]['topic_replies'],
'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'],
'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&amp;p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']),
'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&amp;t=' . $fetch_news[$i]['topic_id']),
'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&amp;f=' . $fetch_news[$i]['forum_id'] . '&amp;t=' . $fetch_news[$i]['topic_id']),
'U_READ_FULL' => append_sid("{$phpbb_root_path}portal.$phpEx", 'news=' . $i),
'L_READ_FULL' => $read_full,
'OPEN' => $open_bracket,
'CLOSE' => $close_bracket,
'S_NOT_LAST' => ($i < count($fetch_news) - 1) ? true : false,
'S_POLL' => $fetch_news[$i]['poll'],
'S_UNREAD_INFO' => $unread_topic,
));
}
}
}
else
{
$fetch_news = phpbb_fetch_posts($portal_config['portal_news_forum'], $portal_config['portal_number_of_news'], 0, 0, ($portal_config['portal_show_all_news']) ? 'news_all' : 'news');
$i = $news;
$forum_id = $fetch_news[$i]['forum_id'];
$topic_id = $fetch_news[$i]['topic_id'];
$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id, $global_announce_list = false);
$unread_topic = (isset($topic_tracking_info[$topic_id]) && $fetch_news[$i]['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
$template->assign_block_vars('news_row', array(
'ATTACH_ICON_IMG' => ($fetch_news[$i]['attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
//'FORUM_NAME' => $fetch_news[$i]['forum_name'],
'TITLE' => $fetch_news[$i]['topic_title'],
'POSTER' => $fetch_news[$i]['username'],
'TIME' => $fetch_news[$i]['topic_time'],
'TEXT' => $fetch_news[$i]['post_text'],
'REPLIES' => $fetch_news[$i]['topic_replies'],
'TOPIC_VIEWS' => $fetch_news[$i]['topic_views'],
//'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'],
'U_LAST_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&amp;p=' . $fetch_news[$i]['topic_last_post_id'] . '#p' . $fetch_news[$i]['topic_last_post_id']),
'U_VIEW_COMMENTS' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&amp;t=' . $fetch_news[$i]['topic_id']),
'U_POST_COMMENT' => append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=reply&amp;f=' . $fetch_news[$i]['forum_id'] . '&amp;t=' . $fetch_news[$i]['topic_id']),
'S_POLL' => $fetch_news[$i]['poll'],
'S_UNREAD_INFO' => $unread_topic,
));
}
?>

395
root/portal/block/poll.php Normal file
View File

@@ -0,0 +1,395 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
/**
* @ignore
*/
// Initial var setup
$forum_id = request_var('f', 0);
$topic_id = request_var('t', ((!empty($portal_config['portal_poll_topic_id'])) ? $portal_config['portal_poll_topic_id'] : 0));
$topic_id = preg_replace('/[^0-9]/', '', $topic_id); // just a temporary solution to get rid of sql errors
$post_id = request_var('p', 0);
$voted_id = request_var('vote_id', array('' => 0));
$start = request_var('start', 0);
$view = request_var('view', '');
$sort_days = request_var('st', ((!empty($user->data['user_post_show_days'])) ? $user->data['user_post_show_days'] : 0));
$sort_key = request_var('sk', ((!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'));
$sort_dir = request_var('sd', ((!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'));
$update = request_var('update', false);
// Do we have a topic or post id?
if (!$topic_id && !$post_id)
{
// trigger_error('NO_TOPIC');
$portal_config['portal_poll_topic'] = false;
}
// Find topic id if user requested a newer or older topic
if ($view && !$post_id)
{
if (!$forum_id)
{
$sql = 'SELECT forum_id
FROM ' . TOPICS_TABLE . "
WHERE topic_id = $topic_id";
$result = $db->sql_query($sql);
$forum_id = (int) $db->sql_fetchfield('forum_id');
$db->sql_freeresult($result);
if (!$forum_id)
{
trigger_error('NO_TOPIC');
}
}
// Check for global announcement correctness?
if ((!isset($row) || !$row['forum_id']) && !$forum_id)
{
//trigger_error('NO_TOPIC');
$portal_config['portal_poll_topic'] = false;
}
else if (isset($row) && $row['forum_id'])
{
$forum_id = $row['forum_id'];
}
}
// This rather complex gaggle of code handles querying for topics but
// also allows for direct linking to a post (and the calculation of which
// page the post is on and the correct display of viewtopic)
$sql_array = array(
'SELECT' => 't.*, f.*',
'FROM' => array(
FORUMS_TABLE => 'f',
)
);
if ($user->data['is_registered'])
{
$sql_array['SELECT'] .= ', tw.notify_status';
$sql_array['LEFT_JOIN'] = array();
$sql_array['LEFT_JOIN'][] = array(
'FROM' => array(TOPICS_WATCH_TABLE => 'tw'),
'ON' => 'tw.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tw.topic_id'
);
}
if (!$post_id)
{
$sql_array['WHERE'] = "t.topic_id = $topic_id";
}
else
{
$sql_array['WHERE'] = "p.post_id = $post_id AND t.topic_id = p.topic_id" . ((!$auth->acl_get('m_approve', $forum_id)) ? ' AND p.post_approved = 1' : '');
$sql_array['FROM'][POSTS_TABLE] = 'p';
}
$sql_array['WHERE'] .= ' AND (f.forum_id = t.forum_id';
$sql_array['WHERE'] .= ')';
$sql_array['FROM'][TOPICS_TABLE] = 't';
// Join to forum table on topic forum_id unless topic forum_id is zero
// whereupon we join on the forum_id passed as a parameter ... this
// is done so navigation, forum name, etc. remain consistent with where
// user clicked to view a global topic
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
$topic_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (!$topic_data)
{
// If post_id was submitted, we try at least to display the topic as a last resort...
if ($post_id && $forum_id && $topic_id)
{
redirect(append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id"));
}
//trigger_error('NO_TOPIC');
$portal_config['portal_poll_topic'] = false;
}
$forum_id = (int) $topic_data['forum_id'];
$topic_id = (int) $topic_data['topic_id'];
// Setup look and feel
$user->setup('viewtopic', $topic_data['forum_style']);
if (!$topic_data['topic_approved'] && !$auth->acl_get('m_approve', $forum_id))
{
//trigger_error('NO_TOPIC');
$portal_config['portal_poll_topic'] = false;
}
// Start auth check
if (!$auth->acl_get('f_read', $forum_id))
{
if ($user->data['user_id'] != ANONYMOUS)
{
//trigger_error('SORRY_AUTH_READ');
$portal_config['portal_poll_topic'] = false;
}
//login_box('', $user->lang['LOGIN_VIEWFORUM']);
$portal_config['portal_poll_topic'] = false;
}
// Forum is passworded ... check whether access has been granted to this
// user this session, if not show login box
if ($topic_data['forum_password'])
{
login_forum_box($topic_data);
}
// Post ordering options
$limit_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);
$sort_by_sql = array('a' => 'u.username_clean', 't' => 'p.post_time', 's' => 'p.post_subject');
$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
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);
// General Viewtopic URL for return links
$viewtopic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;start=$start&amp;$u_sort_param");
// This is only used for print view so ...
$server_path = (!$view) ? $phpbb_root_path : generate_board_url() . '/';
// Does this topic contain a poll?
if (!empty($topic_data['poll_start']))
{
$sql = 'SELECT o.*, p.bbcode_bitfield, p.bbcode_uid
FROM ' . POLL_OPTIONS_TABLE . ' o, ' . POSTS_TABLE . " p
WHERE o.topic_id = $topic_id
AND p.post_id = {$topic_data['topic_first_post_id']}
AND p.topic_id = o.topic_id
ORDER BY o.poll_option_id";
$result = $db->sql_query($sql);
$poll_info = array();
while ($row = $db->sql_fetchrow($result))
{
$poll_info[] = $row;
}
$db->sql_freeresult($result);
$cur_voted_id = array();
if ($user->data['is_registered'])
{
$sql = 'SELECT poll_option_id
FROM ' . POLL_VOTES_TABLE . '
WHERE topic_id = ' . $topic_id . '
AND vote_user_id = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$cur_voted_id[] = $row['poll_option_id'];
}
$db->sql_freeresult($result);
}
else
{
// Cookie based guest tracking ... I don't like this but hum ho
// it's oft requested. This relies on "nice" users who don't feel
// the need to delete cookies to mess with results.
if (isset($_COOKIE[$config['cookie_name'] . '_poll_' . $topic_id]))
{
$cur_voted_id = explode(',', $_COOKIE[$config['cookie_name'] . '_poll_' . $topic_id]);
$cur_voted_id = array_map('intval', $cur_voted_id);
}
}
$s_can_vote = (((!sizeof($cur_voted_id) && $auth->acl_get('f_vote', $forum_id)) ||
($auth->acl_get('f_votechg', $forum_id) && $topic_data['poll_vote_change'])) &&
(($topic_data['poll_length'] != 0 && $topic_data['poll_start'] + $topic_data['poll_length'] > time()) || $topic_data['poll_length'] == 0) &&
$topic_data['topic_status'] != ITEM_LOCKED &&
$topic_data['forum_status'] != ITEM_LOCKED) ? true : false;
$s_display_results = (!$s_can_vote || ($s_can_vote && sizeof($cur_voted_id)) || $view == 'viewpoll') ? true : false;
if ($update && $s_can_vote)
{
if (!sizeof($voted_id) || sizeof($voted_id) > $topic_data['poll_max_options'])
{
$redirect_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id");
meta_refresh(5, $redirect_url);
$message = (!sizeof($voted_id)) ? 'NO_VOTE_OPTION' : 'TOO_MANY_VOTE_OPTIONS';
$message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
trigger_error($message);
}
foreach ($voted_id as $option)
{
if (in_array($option, $cur_voted_id))
{
continue;
}
$sql = 'UPDATE ' . POLL_OPTIONS_TABLE . '
SET poll_option_total = poll_option_total + 1
WHERE poll_option_id = ' . (int) $option . '
AND topic_id = ' . (int) $topic_id;
$db->sql_query($sql);
if ($user->data['is_registered'])
{
$sql_ary = array(
'topic_id' => (int) $topic_id,
'poll_option_id' => (int) $option,
'vote_user_id' => (int) $user->data['user_id'],
'vote_user_ip' => (string) $user->ip,
);
$sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
}
}
foreach ($cur_voted_id as $option)
{
if (!in_array($option, $voted_id))
{
$sql = 'UPDATE ' . POLL_OPTIONS_TABLE . '
SET poll_option_total = poll_option_total - 1
WHERE poll_option_id = ' . (int) $option . '
AND topic_id = ' . (int) $topic_id;
$db->sql_query($sql);
if ($user->data['is_registered'])
{
$sql = 'DELETE FROM ' . POLL_VOTES_TABLE . '
WHERE topic_id = ' . (int) $topic_id . '
AND poll_option_id = ' . (int) $option . '
AND vote_user_id = ' . (int) $user->data['user_id'];
$db->sql_query($sql);
}
}
}
if ($user->data['user_id'] == ANONYMOUS && !$user->data['is_bot'])
{
$user->set_cookie('poll_' . $topic_id, implode(',', $voted_id), time() + 31536000);
}
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET poll_last_vote = ' . time() . "
WHERE topic_id = $topic_id";
//, topic_last_post_time = ' . time() . " -- for bumping topics with new votes, ignore for now
$db->sql_query($sql);
$redirect_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id");
meta_refresh(5, $redirect_url);
trigger_error($user->lang['VOTE_SUBMITTED'] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>'));
}
$poll_total = 0;
foreach ($poll_info as $poll_option)
{
$poll_total += $poll_option['poll_option_total'];
}
if ($poll_info[0]['bbcode_bitfield'])
{
$poll_bbcode = new bbcode();
}
else
{
$poll_bbcode = false;
}
for ($i = 0, $size = sizeof($poll_info); $i < $size; $i++)
{
$poll_info[$i]['poll_option_text'] = censor_text($poll_info[$i]['poll_option_text']);
$poll_info[$i]['poll_option_text'] = str_replace("\n", '<br />', $poll_info[$i]['poll_option_text']);
if ($poll_bbcode !== false)
{
$poll_bbcode->bbcode_second_pass($poll_info[$i]['poll_option_text'], $poll_info[$i]['bbcode_uid'], $poll_option['bbcode_bitfield']);
}
$poll_info[$i]['poll_option_text'] = smiley_text($poll_info[$i]['poll_option_text']);
}
$topic_data['poll_title'] = censor_text($topic_data['poll_title']);
$topic_data['poll_title'] = str_replace("\n", '<br />', $topic_data['poll_title']);
if ($poll_bbcode !== false)
{
$poll_bbcode->bbcode_second_pass($topic_data['poll_title'], $poll_info[0]['bbcode_uid'], $poll_info[0]['bbcode_bitfield']);
}
$topic_data['poll_title'] = smiley_text($topic_data['poll_title']);
unset($poll_bbcode);
foreach ($poll_info as $poll_option)
{
$option_pct = ($poll_total > 0) ? $poll_option['poll_option_total'] / $poll_total : 0;
$option_pct_txt = sprintf("%.1d%%", ($option_pct * 100));
$template->assign_block_vars('poll_option', array(
'POLL_OPTION_ID' => $poll_option['poll_option_id'],
'POLL_OPTION_CAPTION' => $poll_option['poll_option_text'],
'POLL_OPTION_RESULT' => $poll_option['poll_option_total'],
'POLL_OPTION_PERCENT' => $option_pct_txt,
'POLL_OPTION_PCT' => round($option_pct * 100),
'POLL_OPTION_IMG' => $user->img('poll_center', $option_pct_txt, round($option_pct * 10)),
'POLL_OPTION_VOTED' => (in_array($poll_option['poll_option_id'], $cur_voted_id)) ? true : false
));
}
$poll_end = $topic_data['poll_length'] + $topic_data['poll_start'];
$template->assign_vars(array(
'POLL_QUESTION' => $topic_data['poll_title'],
'TOTAL_VOTES' => $poll_total,
'POLL_LEFT_CAP_IMG' => $user->img('poll_left'),
'POLL_RIGHT_CAP_IMG'=> $user->img('poll_right'),
'L_MAX_VOTES' => ($topic_data['poll_max_options'] == 1) ? $user->lang['MAX_OPTION_SELECT'] : sprintf($user->lang['MAX_OPTIONS_SELECT'], $topic_data['poll_max_options']),
'L_POLL_LENGTH' => ($topic_data['poll_length']) ? sprintf($user->lang[($poll_end > time()) ? 'POLL_RUN_TILL' : 'POLL_ENDED_AT'], $user->format_date($poll_end)) : '',
'S_HAS_POLL' => true,
'S_CAN_VOTE' => $s_can_vote,
'S_DISPLAY_RESULTS' => $s_display_results,
'S_IS_MULTI_CHOICE' => ($topic_data['poll_max_options'] > 1) ? true : false,
'S_POLL_ACTION' => $viewtopic_url,
'U_VIEW_RESULTS' => $viewtopic_url . '&amp;view=viewpoll'
));
unset($poll_end, $poll_info, $voted_id);
}
$template->assign_vars(array(
'S_DISPLAY_POLL' => true
));
?>

View File

@@ -0,0 +1,63 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE user_type <> ' . USER_IGNORE . '
AND user_inactive_time = 0
ORDER BY RAND()
LIMIT 0,1';
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$avatar_img = get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']);
$rank_title = $rank_img = '';
get_user_rank($row['user_rank'], $row['user_posts'], $rank_title, $rank_img, $rank_img_src);
$username = $row['username'];
$user_id = (int) $row['user_id'];
$colour = $row['user_colour'];
$template->assign_block_vars('random_member', array(
//'USERNAME_FULL' => get_username_string('full', $user_id, $username, $colour),
'USERNAME' => get_username_string('username', $user_id, $username, $colour),
'USER_COLOR' => get_username_string('colour', $user_id, $username, $colour),
'U_VIEW_PROFILE' => get_username_string('profile', $user_id, $username, $colour),
'RANK_TITLE' => $rank_title,
'RANK_IMG' => $rank_img,
'RANK_IMG_SRC' => $rank_img_src,
'USER_POSTS' => (int) $row['user_posts'],
'AVATAR_IMG' => $avatar_img,
'JOINED' => $user->format_date($row['user_regdate'], 'd.M.Y'),
'USER_OCC' => censor_text($row['user_occ']),
'USER_FROM' => censor_text($row['user_from']),
'U_WWW' => censor_text($row['user_website']),
));
$db->sql_freeresult($result);
$template->assign_vars(array(
'S_DISPLAY_RANDOM_MEMBER' => true,
));
?>

View File

@@ -0,0 +1,158 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
//
// Exclude forums
//
$sql_where = '';
if ($portal_config['portal_exclude_forums'])
{
$exclude_forums = explode(',', $portal_config['portal_exclude_forums']);
foreach ($exclude_forums as $i => $id)
{
if ($id > 0)
{
$sql_where .= ' AND forum_id <> ' . trim($id);
}
}
}
//
// Recent announcements
//
$sql = 'SELECT topic_title, forum_id, topic_id
FROM ' . TOPICS_TABLE . '
WHERE topic_status <> ' . FORUM_LINK . '
AND topic_approved = 1
AND ( topic_type = ' . POST_ANNOUNCE . ' OR topic_type = ' . POST_GLOBAL . ' )
' . $sql_where . '
ORDER BY topic_time DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_max_topics']);
while( ($row = $db->sql_fetchrow($result)) && ($row['topic_title']) )
{
// auto auth
if ( ($auth->acl_get('f_read', $row['forum_id'])) || ($row['forum_id'] == '0') )
{
$template->assign_block_vars('latest_announcements', array(
'TITLE' => character_limit($row['topic_title'], $portal_config['portal_recent_title_limit']),
'FULL_TITLE' => censor_text($row['topic_title']),
'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&amp;t=' . $row['topic_id'])
));
}
}
$db->sql_freeresult($result);
//
// Recent hot topics
//
$sql = 'SELECT topic_title, forum_id, topic_id
FROM ' . TOPICS_TABLE . '
WHERE topic_approved = 1
AND topic_replies >=' . $config['hot_threshold'] . '
' . $sql_where . '
ORDER BY topic_time DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_max_topics']);
while( ($row = $db->sql_fetchrow($result)) && ($row['topic_title']) )
{
// auto auth
if ( ($auth->acl_get('f_read', $row['forum_id'])) || ($row['forum_id'] == '0') )
{
$template->assign_block_vars('latest_hot_topics', array(
'TITLE' => character_limit($row['topic_title'], $portal_config['portal_recent_title_limit']),
'FULL_TITLE' => censor_text($row['topic_title']),
'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&amp;t=' . $row['topic_id'])
));
}
}
$db->sql_freeresult($result);
//
// Recent topic (only show normal topic)
//
$sql = 'SELECT topic_title, forum_id, topic_id
FROM ' . TOPICS_TABLE . '
WHERE topic_status <> ' . FORUM_LINK . '
AND topic_approved = 1
AND topic_type = ' . POST_NORMAL . '
' . $sql_where . '
ORDER BY topic_time DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_max_topics']);
while( ($row = $db->sql_fetchrow($result)) && ($row['topic_title']) )
{
// auto auth
if ( ($auth->acl_get('f_read', $row['forum_id'])) || ($row['forum_id'] == '0') )
{
$template->assign_block_vars('latest_topics', array(
'TITLE' => character_limit($row['topic_title'], $portal_config['portal_recent_title_limit']),
'FULL_TITLE' => censor_text($row['topic_title']),
'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&amp;t=' . $row['topic_id'])
));
}
}
$db->sql_freeresult($result);
/*//we may also delete this?
//
// Recent active topic
//
$last_post_time_sql = ($sort_days) ? ' AND t.topic_last_post_time > ' . (time() - ($sort_days * 24 * 3600)) : '';
$sql = 'SELECT topic_title, forum_id, topic_id, topic_time, topic_first_poster_name
FROM ' . TOPICS_TABLE . '
WHERE topic_status <> ' . FORUM_LINK . "
$last_post_time_sql
AND topic_moved_id = 0
AND topic_approved = 1
AND topic_type = " . POST_NORMAL . '
' . $sql_where . '
ORDER BY topic_time DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_max_topics']);
while( ($row = $db->sql_fetchrow($result)) && ($row['topic_title']) )
{
// auto auth
if ( ($auth->acl_get('f_read', $row['forum_id'])) || ($row['forum_id'] == '0') )
{
$template->assign_block_vars('active_topics', array(
'TITLE' => character_limit($row['topic_title'], $portal_config['portal_recent_title_limit']),
'FULL_TITLE' => censor_text($row['topic_title']),
'DATE' => $user->format_date($row['topic_time']),
'POSTER' => $row['topic_first_poster_name'],
'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&amp;t=' . $row['topic_id'])
));
}
}
$db->sql_freeresult($result);
*/
$template->assign_vars(array(
'S_DISPLAY_RECENT' => true,
));
?>

View File

@@ -0,0 +1,28 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$template->assign_vars(array(
'S_DISPLAY_PORTALSEARCH' => true,
'S_SEARCH_ACTION' => "{$phpbb_root_path}search.$phpEx",
));
?>

View File

@@ -0,0 +1,149 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
// switch idea from phpBB2 :p
function get_db_stat($mode)
{
global $db, $user;
switch( $mode )
{
case 'announcmenttotal':
$sql = 'SELECT COUNT(distinct t.topic_id) AS announcment_total
FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
WHERE t.topic_type = ' . POST_ANNOUNCE . '
AND p.post_id = t.topic_first_post_id';
break;
case 'stickytotal':
$sql = 'SELECT COUNT(distinct t.topic_id) AS sticky_total
FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
WHERE t.topic_type = ' . POST_STICKY . '
AND p.post_id = t.topic_first_post_id';
break;
case 'attachmentstotal':
$sql = 'SELECT COUNT(attach_id) AS attachments_total
FROM ' . ATTACHMENTS_TABLE;
break;
}
if ( !($result = $db->sql_query($sql)) )
{
return false;
}
$row = $db->sql_fetchrow($result);
switch ( $mode )
{
case 'announcmenttotal':
return $row['announcment_total'];
break;
case 'stickytotal':
return $row['sticky_total'];
break;
case 'attachmentstotal':
return $row['attachments_total'];
break;
}
return false;
}
// Set some stats, get posts count from forums data if we... hum... retrieve all forums data
$total_posts = $config['num_posts'];
$total_topics = $config['num_topics'];
$total_users = $config['num_users'];
// no last user color, no more SQL codes ;)
$newest_user = $config['newest_username'];
$newest_uid = $config['newest_user_id'];
$l_total_user_s = ($total_users == 0) ? 'TOTAL_USERS_ZERO' : 'TOTAL_USERS_OTHER';
$l_total_post_s = ($total_posts == 0) ? 'TOTAL_POSTS_ZERO' : 'TOTAL_POSTS_OTHER';
$l_total_topic_s = ($total_topics == 0) ? 'TOTAL_TOPICS_ZERO' : 'TOTAL_TOPICS_OTHER';
// avarage stat
$board_days = ( time() - $config['board_startdate'] ) / 86400;
$topics_per_day = round($total_topics / $board_days, 0);
$posts_per_day = round($total_posts / $board_days, 0);
$users_per_day = round($total_users / $board_days, 0);
$topics_per_user = round($total_topics / $total_users, 0);
$posts_per_user = round($total_posts / $total_users, 0);
$posts_per_topic = round($total_posts / $total_topics, 0);
if ($topics_per_day > $total_topics)
{
$topics_per_day = $total_topics;
}
if ($posts_per_day > $total_posts)
{
$posts_per_day = $total_posts;
}
if ($users_per_day > $total_users)
{
$users_per_day = $total_users;
}
if ($topics_per_user > $total_topics)
{
$topics_per_user = $total_topics;
}
if ($posts_per_user > $total_posts)
{
$posts_per_user = $total_posts;
}
if ($posts_per_topic > $total_posts)
{
$posts_per_topic = $total_posts;
}
$l_topics_per_day_s = ($total_topics == 0) ? 'TOPICS_PER_DAY_ZERO' : 'TOPICS_PER_DAY_OTHER';
$l_posts_per_day_s = ($total_posts == 0) ? 'POSTS_PER_DAY_ZERO' : 'POSTS_PER_DAY_OTHER';
$l_users_per_day_s = ($total_users == 0) ? 'USERS_PER_DAY_ZERO' : 'USERS_PER_DAY_OTHER';
$l_topics_per_user_s = ($total_topics == 0) ? 'TOPICS_PER_USER_ZERO' : 'TOPICS_PER_USER_OTHER';
$l_posts_per_user_s = ($total_posts == 0) ? 'POSTS_PER_USER_ZERO' : 'POSTS_PER_USER_OTHER';
$l_posts_per_topic_s = ($total_posts == 0) ? 'POSTS_PER_TOPIC_ZERO' : 'POSTS_PER_TOPIC_OTHER';
// Assign specific vars
$template->assign_vars(array(
'S_DISPLAY_ADVANCED_STAT' => true,
'TOTAL_POSTS' => sprintf($user->lang[$l_total_post_s], $total_posts),
'TOTAL_TOPICS' => sprintf($user->lang[$l_total_topic_s], $total_topics),
'TOTAL_USERS' => sprintf($user->lang[$l_total_user_s], $total_users),
'NEWEST_USER' => sprintf($user->lang['NEWEST_USER'], '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $newest_uid) . '" style="color: #' . $config['newest_user_colour'] . ';">' . $newest_user . '</a>'),
'S_ANN' => get_db_stat('announcmenttotal'),
'S_SCT' => get_db_stat('stickytotal'),
'S_TOT_ATTACH' => get_db_stat('attachmentstotal'),
// avarage stat
'TOPICS_PER_DAY' => sprintf($user->lang[$l_topics_per_day_s], $topics_per_day),
'POSTS_PER_DAY' => sprintf($user->lang[$l_posts_per_day_s], $posts_per_day),
'USERS_PER_DAY' => sprintf($user->lang[$l_users_per_day_s], $users_per_day),
'TOPICS_PER_USER' => sprintf($user->lang[$l_topics_per_user_s], $topics_per_user),
'POSTS_PER_USER' => sprintf($user->lang[$l_posts_per_user_s], $posts_per_user),
'POSTS_PER_TOPIC' => sprintf($user->lang[$l_posts_per_topic_s], $posts_per_topic),
));
?>

View File

@@ -0,0 +1,48 @@
<?php
/*
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
/**
*/
$sql = 'SELECT user_id, username, user_posts, user_colour
FROM ' . USERS_TABLE . '
WHERE user_type <> ' . USER_IGNORE . '
AND user_posts <> 0
ORDER BY user_posts DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_max_most_poster']);
while( ($row = $db->sql_fetchrow($result)) && ($row['username']) )
{
$template->assign_block_vars('top_poster', array(
'S_SEARCH_ACTION'=> append_sid("{$phpbb_root_path}search.$phpEx", 'author_id=' . $row['user_id'] . '&amp;sr=posts'),
'USERNAME' => censor_text($row['username']),
'USERNAME_COLOR'=> ($row['user_colour']) ? ' style="color:#' . $row['user_colour'] .'"' : '',
'U_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $row['user_id']),
'POSTER_POSTS' => $row['user_posts'],
)
);
}
$db->sql_freeresult($result);
$template->assign_vars(array(
'S_DISPLAY_TOP_POSTERS' => true
));
?>

View File

@@ -0,0 +1,86 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
//
// + new posts since last visit & you post number
//
if ($user->data['is_registered'])
{
// new posts since last visit
$sql = "SELECT COUNT(distinct post_id) as total
FROM " . POSTS_TABLE . "
WHERE post_time >= " . $user->data['session_last_visit'];
$result = $db->sql_query($sql);
$new_posts_count = (int) $db->sql_fetchfield('total');
// your post number
$sql = "SELECT user_posts
FROM " . USERS_TABLE . "
WHERE user_id = " . $user->data['user_id'];
$result = $db->sql_query($sql);
$you_posts_count = (int) $db->sql_fetchfield('user_posts');
}
//
// - new posts since last visit & you post number
//
// Get user...
$user_id = $user->data['user_id'];
$username = $user->data['username'];
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE ' . (($username) ? "username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'" : "user_id = $user_id");
$result = $db->sql_query($sql);
$member = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$avatar_img = get_user_avatar($member['user_avatar'], $member['user_avatar_type'], $member['user_avatar_width'], $member['user_avatar_height']);
$rank_title = $rank_img = '';
get_user_rank($member['user_rank'], $member['user_posts'], $rank_title, $rank_img, $rank_img_src);
$username = $member['username'];
$user_id = (int) $member['user_id'];
$colour = $member['user_colour'];
// Assign specific vars
$template->assign_vars(array(
'L_NEW_POSTS' => $user->lang['SEARCH_NEW'] . '&nbsp;(' . $new_posts_count . ')',
'L_SELF_POSTS' => $user->lang['SEARCH_SELF'] . '&nbsp;(' . $you_posts_count . ')',
'AVATAR_IMG' => $avatar_img,
'RANK_TITLE' => $rank_title,
'RANK_IMG' => $rank_img,
'RANK_IMG_SRC' => $rank_img_src,
'USERNAME_FULL' => get_username_string('full', $user_id, $username, $colour),
'USERNAME' => get_username_string('username', $user_id, $username, $colour),
'USER_COLOR' => get_username_string('colour', $user_id, $username, $colour),
'U_VIEW_PROFILE' => get_username_string('profile', $user_id, $username, $colour),
'U_NEW_POSTS' => append_sid($phpbb_root_path . 'search.' . $phpEx . '?search_id=newposts'),
'U_SELF_POSTS' => append_sid($phpbb_root_path . 'search.' . $phpEx . '?search_id=egosearch'),
'U_UM_BOOKMARKS' => append_sid($phpbb_root_path . 'ucp.' . $phpEx . '?i=main&amp;mode=bookmarks'),
'U_UM_MAIN_SUBSCRIBED' => append_sid($phpbb_root_path . 'ucp.' . $phpEx . '?i=main&amp;mode=subscribed'),
'U_PRIVATE_MESSAGES' => append_sid($phpbb_root_path . 'ucp.' . $phpEx . '?i=pm&amp;folder=inbox'),
));
?>

View File

@@ -0,0 +1,251 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
//
// who is online borrowed from index.php (phpBB-3.0.B3)
// if this gets changed (in index.php) and I don't notice it, please tell me)
//
// Grab group details for legend display
$sql = 'SELECT group_id, group_name, group_colour, group_type
FROM ' . GROUPS_TABLE . '
WHERE group_legend = 1
AND group_type <> ' . GROUP_HIDDEN . '
ORDER BY group_name ASC';
$result = $db->sql_query($sql);
$legend = '';
while ($row = $db->sql_fetchrow($result))
{
$colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : '';
if ($row['group_name'] == 'BOTS')
{
$legend .= (($legend) ? ', ' : '') . '<span' . $colour_text . '>' . $user->lang['G_BOTS'] . '</span>';
}
else
{
$legend .= (($legend) ? ', ' : '') . '<a' . $colour_text . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']) . '">' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</a>';
}
}
$db->sql_freeresult($result);
//
// users online list borrowed from includes/functions.php (phpBB-3.0.B3)
// if this gets changed (in functions.php) and I don't notice it, please tell me)
//
$display_online_list = true;
// Get users online list ... if required
$l_online_users = $online_userlist = $l_online_record = '';
if ($config['load_online'] && $config['load_online_time'] && $display_online_list)
{
$userlist_ary = $userlist_visible = array();
$logged_visible_online = $logged_hidden_online = $guests_online = $prev_user_id = 0;
$prev_session_ip = $reading_sql = '';
if (!empty($_REQUEST['f']))
{
$f = request_var('f', 0);
// Do not change this (it is defined as _f_={forum_id}x within session.php)
$reading_sql = " AND s.session_page LIKE '%\_f\_={$f}x%'";
// Specify escape character for MSSQL
if ($db->sql_layer == 'mssql' || $db->sql_layer == 'mssql_odbc')
{
$reading_sql .= " ESCAPE '\\'";
}
}
// Get number of online guests
if (!$config['load_online_guests'])
{
if ($db->sql_layer === 'sqlite')
{
$sql = 'SELECT COUNT(session_ip) as num_guests
FROM (
SELECT DISTINCT s.session_ip
FROM ' . SESSIONS_TABLE . ' s
WHERE s.session_user_id = ' . ANONYMOUS . '
AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) .
$reading_sql .
')';
}
else
{
$sql = 'SELECT COUNT(DISTINCT s.session_ip) as num_guests
FROM ' . SESSIONS_TABLE . ' s
WHERE s.session_user_id = ' . ANONYMOUS . '
AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) .
$reading_sql;
}
$result = $db->sql_query($sql);
$guests_online = (int) $db->sql_fetchfield('num_guests');
$db->sql_freeresult($result);
}
$sql = 'SELECT u.username, u.user_id, u.user_type, u.user_allow_viewonline, u.user_colour, s.session_ip, s.session_viewonline
FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s
WHERE s.session_time >= ' . (time() - (intval($config['load_online_time']) * 60)) .
$reading_sql .
((!$config['load_online_guests']) ? ' AND s.session_user_id <> ' . ANONYMOUS : '') . '
AND u.user_id = s.session_user_id
ORDER BY u.username ASC, s.session_ip ASC';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
// User is logged in and therefore not a guest
if ($row['user_id'] != ANONYMOUS)
{
// Skip multiple sessions for one user
if ($row['user_id'] != $prev_user_id)
{
if ($row['user_colour'])
{
$user_colour = ' style="color:#' . $row['user_colour'] . '"';
$row['username'] = '<strong>' . $row['username'] . '</strong>';
}
else
{
$user_colour = '';
}
if ($row['user_allow_viewonline'] && $row['session_viewonline'])
{
$user_online_link = $row['username'];
$logged_visible_online++;
}
else
{
$user_online_link = '<em>' . $row['username'] . '</em>';
$logged_hidden_online++;
}
if (($row['user_allow_viewonline'] && $row['session_viewonline']) || $auth->acl_get('u_viewonline'))
{
if ($row['user_type'] <> USER_IGNORE)
{
$user_online_link = '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $row['user_id']) . '"' . $user_colour . '>' . $user_online_link . '</a>';
}
else
{
$user_online_link = ($user_colour) ? '<span' . $user_colour . '>' . $user_online_link . '</span>' : $user_online_link;
}
$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 (!$online_userlist)
{
$online_userlist = $user->lang['NO_ONLINE_USERS'];
}
if (empty($_REQUEST['f']))
{
$online_userlist = $user->lang['REGISTERED_USERS'] . ' ' . $online_userlist;
}
else
{
$l_online = ($guests_online == 1) ? $user->lang['BROWSING_FORUM_GUEST'] : $user->lang['BROWSING_FORUM_GUESTS'];
$online_userlist = sprintf($l_online, $online_userlist, $guests_online);
}
$total_online_users = $logged_visible_online + $logged_hidden_online + $guests_online;
if ($total_online_users > $config['record_online_users'])
{
set_config('record_online_users', $total_online_users, true);
set_config('record_online_date', time(), true);
}
// Build online listing
$vars_online = array(
'ONLINE' => array('total_online_users', 'l_t_user_s'),
'REG' => array('logged_visible_online', 'l_r_user_s'),
'HIDDEN' => array('logged_hidden_online', 'l_h_user_s'),
'GUEST' => array('guests_online', 'l_g_user_s')
);
foreach ($vars_online as $l_prefix => $var_ary)
{
switch (${$var_ary[0]})
{
case 0:
${$var_ary[1]} = $user->lang[$l_prefix . '_USERS_ZERO_TOTAL'];
break;
case 1:
${$var_ary[1]} = $user->lang[$l_prefix . '_USER_TOTAL'];
break;
default:
${$var_ary[1]} = $user->lang[$l_prefix . '_USERS_TOTAL'];
break;
}
}
unset($vars_online);
$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);
$l_online_record = sprintf($user->lang['RECORD_ONLINE_USERS'], $config['record_online_users'], $user->format_date($config['record_online_date']));
$l_online_time = ($config['load_online_time'] == 1) ? 'VIEW_ONLINE_TIME' : 'VIEW_ONLINE_TIMES';
$l_online_time = sprintf($user->lang[$l_online_time], $config['load_online_time']);
}
else
{
$l_online_time = '';
}
// Assign specific vars
$template->assign_vars(array(
'S_DISPLAY_ONLINE_PORTAL_LIST' => true,
'TOTAL_ONLINE_USERS' => $total_online_users,
'VISIBLE_ONLINE' => $logged_visible_online,
'HIDDEN_ONLINE' => $logged_hidden_online,
'GUEST_ONLINE' => $guests_online,
'RECORD_USERS' => $l_online_record,
'LEGEND'=> $legend,
));
?>

View File

@@ -0,0 +1,76 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_PORTAL'))
{
exit;
}
$words_array = array();
// Get words and number of those words
$sql = 'SELECT l.word_text, COUNT(*) AS word_count
FROM ' . SEARCH_WORDLIST_TABLE . ' AS l, ' . SEARCH_WORDMATCH_TABLE . ' AS m
WHERE m.word_id = l.word_id
GROUP BY m.word_id
ORDER BY word_count DESC';
$result = $db->sql_query_limit($sql, $portal_config['portal_wordgraph_max_words']);
while ($row = $db->sql_fetchrow($result))
{
$word = strtolower($row['word_text']);
$words_array[$word] = $row['word_count'];
}
$db->sql_freeresult($result);
$minimum = 1000000;
$maximum = -1000000;
foreach ( array_keys($words_array) as $word )
{
if ( $words_array[$word] > $maximum )
{
$maximum = $words_array[$word];
}
if ( $words_array[$word] < $minimum )
{
$minimum = $words_array[$word];
}
}
// ratio
$ratio = $portal_config['portal_wordgraph_ratio'] / ( $maximum - $minimum +1);
$words = array_keys($words_array);
sort($words);
foreach ( $words as $word )
{
$template->assign_block_vars('wordgraph', array(
'WORD' => ($portal_config['portal_wordgraph_word_counts']) ? $word . '(' . $words_array[$word] . ')' : $word,
'WORD_FONT_SIZE' => (int) ( 9 + ( $words_array[$word] * $ratio ) ),
'WORD_SEARCH_URL' => append_sid("{$phpbb_root_path}search.$phpEx", 'keywords=' . urlencode($word)),
));
}
$template->assign_vars(array(
'S_DISPLAY_WORDGRAPH' => true,
'L_WORDGRAPH' => $user->lang['WORDGRAPH'],
)
);
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

BIN
root/portal/images/dot.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

View File

@@ -0,0 +1,8 @@
<html>
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

BIN
root/portal/images/link.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,489 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
// Get portal config
$sql = 'SELECT *
FROM ' . PORTAL_CONFIG_TABLE;
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result) )
{
$portal_config_name = $row['config_name'];
$portal_config_value = $row['config_value'];
$portal_config[$portal_config_name] = $portal_config_value;
}
//
include($phpbb_root_path . 'includes/message_parser.'.$phpEx);
// fetch post for news & announce
function phpbb_fetch_posts($forum_sql, $number_of_posts, $text_length, $time, $type)
{
global $db, $phpbb_root_path, $auth, $bbcode_bitfield, $user, $forum_id;
$from_forum = ($forum_sql) ? 't.forum_id IN (' . $forum_sql . ') AND' : '';
$post_time = ($time == 0) ? '' : 't.topic_last_post_time > ' . (time() - $time * 86400) . ' AND';
if ($type == 'announcements')
{
// only global announcements for announcements block
$topic_type = '(( t.topic_type = ' . POST_ANNOUNCE . ') OR ( t.topic_type = ' . POST_GLOBAL . ')) AND';
$sql = 'SELECT
t.forum_id,
t.topic_id,
t.topic_last_post_id,
t.topic_last_post_time,
t.topic_time,
t.topic_title,
t.topic_attachment,
t.topic_views,
t.poll_title,
t.topic_replies,
t.forum_id,
t.topic_poster,
u.username,
u.user_id,
u.user_type,
u.user_colour,
p.post_id,
p.post_time,
p.post_text,
p.post_attachment,
p.enable_smilies,
p.enable_bbcode,
p.enable_magic_url,
p.bbcode_bitfield,
p.bbcode_uid
FROM
' . TOPICS_TABLE . ' AS t,
' . USERS_TABLE . ' AS u,
' . POSTS_TABLE . ' AS p
WHERE
' . $topic_type . '
' . $from_forum . '
' . $post_time . '
t.topic_poster = u.user_id AND
t.topic_first_post_id = p.post_id AND
t.topic_status <> 2 AND
t.topic_approved = 1
ORDER BY
t.topic_time DESC';
// query the database
if(!($result = $db->sql_query_limit($sql, $number_of_posts)))
{
die('Could not query topic information for board3 Portal announcements section');
}
//
// fetch all postings
//
// Instantiate BBCode if need be
if ($bbcode_bitfield !== '')
{
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx);
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
$posts = array();
$i = 0;
while ( ($row = $db->sql_fetchrow($result)) && ( ($i < $number_of_posts) || ($number_of_posts == '0') ) )
{
if ( ($auth->acl_get('f_read', $row['forum_id'])) || ($row['forum_id'] == '0') )
{
if ($row['user_id'] != ANONYMOUS && $row['user_colour'])
{
$row['username'] = '<b style="color:#' . $row['user_colour'] . '">' . $row['username'] . '</b>';
}
$posts[$i]['bbcode_uid'] = $row['bbcode_uid'];
$len_check = $row['post_text'];
$maxlen = $text_length;
if (($text_length != 0) && (strlen($len_check) > $text_length))
{
$posts[$i]['post_text'] = censor_text(get_sub_taged_string(str_replace("\n", '<br/> ', $row['post_text']), $row['bbcode_uid'], $maxlen));
$posts[$i]['striped'] = true;
} else $posts[$i]['post_text'] = censor_text($row['post_text']);
$posts[$i]['topic_id'] = $row['topic_id'];
$posts[$i]['topic_last_post_id'] = $row['topic_last_post_id'];
$posts[$i]['forum_id'] = $row['forum_id'];
$posts[$i]['topic_replies'] = $row['topic_replies'];
$posts[$i]['topic_time'] = $user->format_date($row['topic_time']);
$posts[$i]['topic_last_post_time'] = $row['topic_last_post_time'];
$posts[$i]['topic_title'] = $row['topic_title'];
$posts[$i]['username'] = $row['username'];
$posts[$i]['user_id'] = $row['user_id'];
$posts[$i]['user_type'] = $row['user_type'];
$posts[$i]['user_user_colour'] = $row['user_colour'];
$posts[$i]['poll'] = ($row['poll_title']) ? true : false;
$posts[$i]['attachment'] = ($row['topic_attachment']) ? true : false;
$posts[$i]['topic_views'] = ($row['topic_views']);
$message = $posts[$i]['post_text'];
$message = str_replace("\n", '<br />', $message);
if ($auth->acl_get('f_html', $forum_id))
{
$message = preg_replace('#<!\-\-(.*?)\-\->#is', '', $message); // Remove Comments from post content
}
// Second parse bbcode here
if ($row['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
}
$message = smiley_text($message); // Always process smilies after parsing bbcodes
$posts[$i]['post_text']= ap_validate($message);
$i++;
}
}
// return the result
return $posts;
}
// news - get last post
else if ($type == 'news_all')
{
// not show global announcements
$topic_type = '( t.topic_type != ' . POST_ANNOUNCE . ' ) AND ( t.topic_type != ' . POST_GLOBAL . ') AND';
}
else
{
// only normal topic
$topic_type = 't.topic_type = ' . POST_NORMAL . ' AND';
}
$sql = 'SELECT
t.forum_id,
t.topic_id,
t.topic_last_post_id,
t.topic_last_post_time,
t.topic_time,
t.topic_title,
t.topic_attachment,
t.topic_views,
t.poll_title,
t.topic_replies,
t.forum_id,
t.topic_poster,
u.username,
u.user_id,
u.user_type,
u.user_colour,
p.post_id,
p.post_time,
p.post_text,
p.post_attachment,
p.enable_smilies,
p.enable_bbcode,
p.enable_magic_url,
p.bbcode_bitfield,
p.bbcode_uid
FROM
' . TOPICS_TABLE . ' AS t,
' . USERS_TABLE . ' AS u,
' . POSTS_TABLE . ' AS p
WHERE
' . $topic_type . '
' . $from_forum . '
' . $post_time . '
t.topic_last_poster_id = u.user_id AND
t.topic_last_post_id = p.post_id AND
t.topic_status <> 2 AND
t.topic_approved = 1
ORDER BY
t.topic_last_post_time DESC';
// query the database
if(!($result = $db->sql_query_limit($sql, $number_of_posts)))
{
die('Could not query topic information for board Portal news section');
}
//
// fetch all postings
//
// Instantiate BBCode if need be
if ($bbcode_bitfield !== '')
{
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx);
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
$posts = array();
$i = 0;
while ( ($row = $db->sql_fetchrow($result)) && ( ($i < $number_of_posts) || ($number_of_posts == '0') ) )
{
if ( ($auth->acl_get('f_read', $row['forum_id'])) || ($row['forum_id'] == '0') )
{
if ($row['user_id'] != ANONYMOUS && $row['user_colour'])
{
$row['username'] = '<b style="color:#' . $row['user_colour'] . '">' . $row['username'] . '</b>';
}
$posts[$i]['bbcode_uid'] = $row['bbcode_uid'];
$len_check = $row['post_text'];
$maxlen = $text_length;
if (($text_length != 0) && (strlen($len_check) > $text_length))
{
$posts[$i]['post_text'] = censor_text(get_sub_taged_string(str_replace("\n", '<br/> ', $row['post_text']), $row['bbcode_uid'], $maxlen));
$posts[$i]['striped'] = true;
} else $posts[$i]['post_text'] = censor_text($row['post_text']);
$posts[$i]['topic_id'] = $row['topic_id'];
$posts[$i]['topic_last_post_id'] = $row['topic_last_post_id'];
$posts[$i]['forum_id'] = $row['forum_id'];
$posts[$i]['topic_replies'] = $row['topic_replies'];
$posts[$i]['topic_time'] = $user->format_date($row['topic_last_post_time']);
$posts[$i]['topic_last_post_time'] = $row['topic_last_post_time'];
$posts[$i]['topic_title'] = $row['topic_title'];
$posts[$i]['username'] = $row['username'];
$posts[$i]['user_id'] = $row['user_id'];
$posts[$i]['user_type'] = $row['user_type'];
$posts[$i]['user_user_colour'] = $row['user_colour'];
$posts[$i]['poll'] = ($row['poll_title']) ? true : false;
$posts[$i]['attachment'] = ($row['topic_attachment']) ? true : false;
$posts[$i]['topic_views'] = ($row['topic_views']);
$message = $posts[$i]['post_text'];
$message = str_replace("\n", '<br/> ', $message);
if ($auth->acl_get('f_html', $forum_id))
{
$message = preg_replace('#<!\-\-(.*?)\-\->#is', '', $message); // Remove Comments from post content
}
// Second parse bbcode here
if ($row['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
}
$message = smiley_text($message); // Always process smilies after parsing bbcodes
$posts[$i]['post_text']= ap_validate($message);
$i++;
}
}
// return the result
return $posts;
}
/**
* Censor title, return short title
*
* @param $title string title to censor
* @param $limit int short title character limit
*
*/
function character_limit(&$title, $limit = 0)
{
$title = censor_text($title);
if ($limit > 0)
{
return (strlen(utf8_decode($title)) > $limit + 3) ? truncate_string($title, $limit) . '...' : $title;
}
else
{
return $title;
}
}
/**
* Get user avatar / barroved from RC4
*
* @param string $avatar Users assigned avatar name
* @param int $avatar_type Type of avatar
* @param string $avatar_width Width of users avatar
* @param string $avatar_height Height of users avatar
* @param string $alt Optional language string for alt tag within image, can be a language key or text
*
* @return string Avatar image
*/
function get_user_avatar($avatar, $avatar_type, $avatar_width, $avatar_height, $alt = 'USER_AVATAR')
{
global $user, $portal_config, $config, $phpbb_root_path, $phpEx;
if (empty($avatar) || !$avatar_type)
{
return '';
}
$avatar_img = '';
switch ($avatar_type)
{
case AVATAR_UPLOAD:
$avatar_img = $phpbb_root_path . "download/file.$phpEx?avatar=";
break;
case AVATAR_GALLERY:
$avatar_img = $phpbb_root_path . $config['avatar_gallery_path'] . '/';
break;
}
$avatar_img .= $avatar;
return '<img src="' . $avatar_img . '" width="' . $avatar_width . '" height="' . $avatar_height . '" alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
}
/**
* Get user rank title and image / barroved from RC4
*
* @param int $user_rank the current stored users rank id
* @param int $user_posts the users number of posts
* @param string &$rank_title the rank title will be stored here after execution
* @param string &$rank_img the rank image as full img tag is stored here after execution
* @param string &$rank_img_src the rank image source is stored here after execution
*
*/
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src)
{
global $ranks, $config;
if (empty($ranks))
{
global $cache;
$ranks = $cache->obtain_ranks();
}
if (!empty($user_rank))
{
$rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : '';
$rank_img = (!empty($ranks['special'][$user_rank]['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] . '" alt="' . $ranks['special'][$user_rank]['rank_title'] . '" title="' . $ranks['special'][$user_rank]['rank_title'] . '" />' : '';
$rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] : '';
}
else
{
if (!empty($ranks['normal']))
{
foreach ($ranks['normal'] as $rank)
{
if ($user_posts >= $rank['rank_min'])
{
$rank_title = $rank['rank_title'];
$rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $config['ranks_path'] . '/' . $rank['rank_image'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : '';
$rank_img_src = (!empty($rank['rank_image'])) ? $config['ranks_path'] . '/' . $rank['rank_image'] : '';
break;
}
}
}
}
}
// Don't let them mess up the complete portal layout in cut messages and do some real AP magic
function is_valid_bbtag($str, $bbuid) {
return (substr($str,0,1) == '[') && (strpos($str, ':'.$bbuid.']') > 0);
}
function get_end_bbtag($tag, $bbuid) {
$etag = '';
for($i=0;$i<strlen($tag);$i++) {
if ($tag[$i] == '[') $etag .= $tag[$i] . '/';
else if (($tag[$i] == '=') || ($tag[$i] == ':')) {
if ($tag[1] == '*') $etag .= ':m:'.$bbuid.']';
else if (strpos($tag, 'list')) $etag .= ':u:'.$bbuid.']';
else $etag .= ':'.$bbuid.']';
break;
} else $etag .= $tag[$i];
}
return $etag;
}
function get_next_word($str) {
$ret = '';
for($i=0;$i<strlen($str);$i++) {
switch ($str[$i]) {
case ' ': //$ret .= ' '; break; break;
return $ret . ' ';
case '\\':
if ($str[$i+1] == 'n') return $ret . '\n';
case '[': if ($i != 0) return $ret;
default: $ret .= $str[$i];
}
}
return $ret;
}
function get_sub_taged_string($str, $bbuid, $maxlen) {
$sl = $str;
$ret = '';
$ntext = '';
$lret = '';
$i = 0;
$cnt = $maxlen;
$last = '';
$arr = array();
while((strlen($ntext) < $cnt) && (strlen($sl) > 0)) {
$sr = '';
if (substr($sl, 0, 1) == '[') $sr = substr($sl,0,strpos($sl,']')+1);
/* GESCHLOSSENE HTML-TAGS BEACHTEN */
if (substr($sl, 0, 1) == '<') {
$sr = substr($sl,0,strpos($sl,'>')+1);
$ret .= $sr;
} else if (is_valid_bbtag($sr, $bbuid)) {
if ($sr[1] == '/') {
/* entfernt das endtag aus dem tag array */
$tarr = array();
$j = 0;
foreach ($arr as $elem) {
if (strcmp($elem[1],$sr) != 0) $tarr[$j++] = $elem;
}
$arr = $tarr;
} else {
$arr[$i][0] = $sr;
$arr[$i++][1] = get_end_bbtag($sr, $bbuid);
}
$ret .= $sr;
} else {
$sr = get_next_word($sl);
$ret .= $sr;
$ntext .= $sr;
$last = $sr;
}
$sl = trim(substr($sl, strlen($sr), strlen($sl)-strlen($sr)));
}
$ret = trim($ret) . '...';
$ap = '';
foreach ($arr as $elem) {
$ap = $elem[1] . $ap;
}
$ret .= $ap;
return $ret;
}
function ap_validate($str) {
$s = str_replace('<br />', '<br/>', $str);
return str_replace('</li><br/>', '</li>', $s);
}
?>

View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -0,0 +1,307 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @copyright (c) Adrian Cockburn - phpbb@netclectic.com (mini calendar)
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_MINI_CAL'))
{
exit;
}
/**
* Features include: 11 languages, returns all data in one array,
* intelligent linker function
*
* day[] = array(0 => 'dayNumeric', // e.g. 19
* 1 => 'dayName', // e.g. Tue
* 2 => 'dayNameL', // e.g. Tuesday
* 3 => 'monthName', // e.g. March
* 4 => 'monthNumeric' // e.g. 12
* 5 => 'year' // e.g. 2002
* 6 => 'timestamp' // e.g. 1020204000
* 7 => 'dayOfWeek' // 0-6 ! e.g. sunday=0, monday=1...
* 8 => 'dayOfYear' // day of year (001 - 366)
* 9 => 'weekNum' // weeknumber of current year
* 10 => 'link' // link from link function
* 11 => 'mysqlDate' // contains date in mysql-format (YYYY-MM-DD)
*
*
* language options:
* 0 = english (default) 1 = german
* 2 = french 3 = spanish
* 4 = finish 5 = polish
* 6 = portuguese 7 = italian
* 8 = italian 9 = slovak
* 10 = turkish
*
**/
/**
* set language
* @const language
* default 0 / english
**/
define("language", "1");
/**
* set default date format
* @const dateFormat
* default
**/
define("dateFormat" , "0");
class calendarSuite {
var $dateYYY; // year in numeric format (YYYY)
var $dateMM; // month in numeric format (MM)
var $dateDD; // day in numeric format (DD)
var $ext_dateMM; // extended month (e.g. February)
var $ext_dateDD; // extended day (e.g. Mon)
var $daysMonth; // count of days in month
var $nextMonth; // contains next month
var $lastMonth; // contains last month
var $stamp; // timestamp
var $day; // return array s.a.
/**
* Constructor
*
* Sets default values for e.g. language (default=english)
**/
function calendarSuite(){
switch (language) {
case 0:
$this->language = "en_EN";
break;
case 1:
$this->language = "de_DE";
break;
case 2:
$this->language = "fr_FR";
break;
case 3:
$this->language = "es_ES";
break;
case 4:
$this->language = "fi_FI";
break;
case 5:
$this->language = "pl_PL";
break;
case 6:
$this->language = "pt_PT";
break;
case 7:
$this->language = "it_IT";
break;
case 8:
$this->language = "ru_RU";
break;
case 9:
$this->language = "sk_SK";
break;
case 10:
$this->language = "tr_TR";
break;
default:
$this->language = "en_EN";
}
setlocale (LC_TIME, $this->language); // set language
// end of function calendarSuite
}
/**
* determine the next month after current
**/
function nextMonth() {
$this->nextMonth = $this->getMonth("+1 month");
// end of function nextMonth
}
/**
* determine the last month before current
**/
function lastMonth() {
$this->lastMonth = $this->getMonth("-1 month");
// end of function lastMonth
}
/**
* convert date->timestamp
**/
function makeTimestamp($date) {
$this->stamp = strtotime($date);
return ($this->stamp);
// end of function makeTimestamp
}
/**
* get date listed in array
**/
function getMonth($callDate) {
$this->makeTimestamp($callDate);
$this->dateYYYY = date("Y", $this->stamp);
$this->dateMM = date("n", $this->stamp);
$this->ext_dateMM = date("F", $this->stamp);
$this->dateDD = date("d", $this->stamp);
$this->daysMonth = date("t", $this->stamp);
$this->monthStart = date("w", $this->stamp);
for($i=1; $i < $this->daysMonth+1; $i++) {
$this->makeTimestamp("$i $this->ext_dateMM $this->dateYYYY");
$this->day[] = array(
"0" => "$i",
"1" => (strftime('%a', $this->stamp)),
"2" => (strftime('%A', $this->stamp)),
"3" => (strftime("%B", $this->stamp)),
"4" => $this->dateMM,
"5" => $this->dateYYYY,
"6" => $this->stamp,
"7" => (date('w', $this->stamp)),
"8" => (strftime('%j', $this->stamp)),
"9" => (strftime('%U', $this->stamp)),
"10" => $this->dateLinker($this->stamp),
"11" => $this->formatDate($this->stamp, 99)
);
}
// end of function getMonth
}
/**
* get detailed array of day
**/
function getDayDetail($stamp) {
$this->dateYYYY = date("Y", $stamp);
$this->dateMM = date("n", $stamp);
$this->dateDD = date("d", $stamp);
$this->ext_dateMM = date("F", $stamp);
$this->daysMonth = date("t", $stamp);
$this->monthStart = date("w", $stamp);
$this->day = array(
"0" => (date("j",$stamp)),
"1" => (strftime('%a', $stamp)),
"2" => (strftime('%A', $stamp)),
"3" => $this->ext_dateMM,
"4" => $this->dateMM,
"5" => $this->dateYYYY,
"6" => $stamp,
"7" => (date('w', $stamp)),
"8" => strftime('%j', $stamp),
"9" => strftime('%U', $stamp)
);
// end of function getDay
}
/**
* make links for every day
**/
function dateLinker($stamp) {
$link = "?stamp=".$stamp;
return $link;
// end of function dateLinker
}
/**
* format date in different forms
**/
function formatDate($stamp, $option = dateFormat) {
switch ($option) {
case 0:
$this->formatted = date("d n Y", $stamp);
return $this->formatted;
break;
case 1:
$this->formatted = date("d Y M", $stamp);
return $this->formatted;
break;
case 2:
$this->formatted = date("M d Y", $stamp);
return $this->formatted;
break;
case 3:
$this->formatted = date("M Y d", $stamp);
return $this->formatted;
break;
case 4:
$this->formatted = date("Y M d", $stamp);
return $this->formatted;
break;
case 5:
$this->formatted = date("Y d M", $stamp);
return $this->formatted;
break;
case 6:
$this->formatted = date("d M Y", $stamp);
return $this->formatted;
break;
case 99:
$this->formatted = date("Y-m-d", $stamp);
return $this->formatted;
break;
}
// end of function formatDate
}
// end of class
}
?>

View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -0,0 +1,142 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @copyright (c) Adrian Cockburn - phpbb@netclectic.com (mini calendar)
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_MINI_CAL'))
{
exit;
}
/***************************************************************************
getFormattedDate
version: 1.0.0
parameters: $cal_weekday -
$cal_month -
$cal_monthday -
$cal_year -
$cal_hour -
$cal_min -
$cal_sec -
returns: a date formatted according to the MINI_CAL_DATE_PATTERNS
set in mini_cal_config.php and the Mini_Cal_date_format
set in lang_main_min_cal.php
***************************************************************************/
function getFormattedDate($cal_weekday, $cal_month, $cal_monthday, $cal_year, $cal_hour, $cal_min, $cal_sec, $format)
{
global $lang;
// initialise out date formatting patterns
$cal_date_pattern = unserialize(MINI_CAL_DATE_PATTERNS);
$cal_date_replace = array(
$lang['mini_cal']['day'][$cal_weekday],
$lang['mini_cal']['month'][$cal_month],
$cal_month,
( (strlen($cal_monthday) < 2 ) ? '0' : '' ) . $cal_monthday,
$cal_monthday,
( (strlen($cal_month) < 2 ) ? '0' : '' ) . $cal_month,
substr($cal_year, -2),
$cal_year,
( (strlen($cal_hour) < 2 ) ? '0' : '' ) . $cal_hour,
$cal_hour,
( (strlen($cal_hour) < 2 ) ? '0' : '' ) . ( ( $cal_hour > 12 ) ? $cal_hour-12 : $cal_hour ),
( $cal_hour > 12 ) ? $cal_hour-12 : $cal_hour,
$cal_min,
$cal_sec,
( $cal_hour < 12 ) ? 'AM' : 'PM'
);
return preg_replace($cal_date_pattern, $cal_date_replace, $format);
}
/***************************************************************************
setQueryStringVal
version: 1.0.0
parameters: $var - the variable who's value is to be replaced
$value - the new value for the variable
returns: a modified querystring prefixed with ?
***************************************************************************/
function setQueryStringVal($var, $value)
{
$querystring = $_SERVER["QUERY_STRING"];
if (!stristr($querystring, $var))
{
$querystring .= ($querystring) ? '&' : '';
$querystring .= "$var=$value";
}
else
{
$querystring = ereg_replace("($var=[[:digit:]]{1,3})", "$var=$value", $querystring);
}
return '?' . $querystring;
}
/***************************************************************************
getPostForumsList
version: 1.0.0
parameters: $mini_cal_post_auth - a comma seperated list of forms with post rights
returns: adds a forums select list to the template output
***************************************************************************/
function getPostForumsList($mini_cal_post_auth, $and_post_auth_sql = '')
{
if ($mini_cal_post_auth)
{
global $db, $template, $lang;
// get a list of events forums
$sql = 'SELECT c.cat_id, c.cat_title, f.forum_id, f.forum_name
FROM ' . FORUMS_TABLE . ' f, ' . CATEGORIES_TABLE . ' c
WHERE f.cat_id = c.cat_id
AND f.forum_id IN (' . $mini_cal_post_auth . ')' .
$and_post_auth_sql;
if( $result = $db->sql_query($sql) )
{
$num_rows = $db->sql_numrows($result);
if ( $num_rows > 0 )
{
$template->assign_block_vars('switch_mini_cal_add_events', array());
$forums_list = '<select style="width: 100%" name="' . POST_FORUM_URL . '" onchange="if(this.options[this.selectedIndex].value > -1){ forms[\'mini_cal\'].submit() }">';
$cat_id = 0;
while ($row = $db->sql_fetchrow($result))
{
$forums_list .= '<option value="' . $row['forum_id'] . '"' . $selected . '> - ' . substr($row['forum_name'],0,20) . '</option>';
}
$forums_list .= '</select>';
$template->assign_vars( array(
'S_MINI_CAL_EVENTS_FORUMS_LIST' => $forums_list
)
);
}
$db->sql_freeresult($result);
}
}
}
?>

View File

@@ -0,0 +1,88 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @copyright (c) Adrian Cockburn - phpbb@netclectic.com (mini calendar)
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_MINI_CAL'))
{
exit;
}
/***************************************************************************
The following values are configurable to tailor the mini cal to your needs.
***************************************************************************/
// Defines which events calendar you are using, if any
// possible values:
// MYCAL - MyCalendar
// PLUS - MyCalendar+
// TOPIC - Topic Calendar
// SNAIL - Websnail Calendar Pro
// SNAILLITE - Websnail Calendar Lite
// NONE - No Supported Calendar is installed
define('MINI_CAL_CALENDAR_VERSION', 'NONE');
// EVENTS CALENDAR USERS ONLY!
// Limits the number of events shown on the mini cal
define('MINI_CAL_LIMIT', 5);
// EVENTS CALENDAR USERS ONLY!
// Limits the number of days ahead in which time upcoming events will be shown
// set to 0 (zero) for umlimited
define('MINI_CAL_DAYS_AHEAD', 7);
// Defines what type of search happens when a user clicks on a date in the calendar
// possible values:
// POSTS - will return all posts posted on that date
// EVENTS - will return all events happening on that date (ONLY SUITABLE FOR EVENTS CALENDAR USERS).
define('MINI_CAL_DATE_SEARCH', 'POSTS');
// First Day of the Week - 0=Sunday, 1=Monday...6=Saturday
// if you change this remember to change the short day names in lang_main_mini_cal.php
define('MINI_CAL_FDOW', 1);
// Defines the css class to use for mini cal days urls
define('MINI_CAL_DAY_LINK_CLASS', 'gensmall');
// Defines the css class to use for mini cal today date
define('MINI_CAL_TODAY_CLASS', 'gensmall');
// defines the authentication level required to be able to view the upcoming events
// this relates to the permission level assigned to forum
// possible values:
// auth_view, auth_read, auth_post, auth_reply, auth_edit,
// auth_delte, auth_sticky, auth_announce, auth_vote, auth_pollcreate
define('MINI_CAL_EVENT_AUTH_LEVEL', 'auth_view');
/***************************************************************************
You should NOT modify any values below here.
***************************************************************************/
// DO NOT MODIFY THIS!
define('MINI_CAL_DATE_PATTERNS', serialize(array('/%a/', '/%b/', '/%c/', '/%d/', '/%e/', '/%m/', '/%y/', '/%Y/',
'/%H/', '/%k/', '/%h/', '/%l/', '/%i/', '/%s/', '/%p/')));
?>

View File

@@ -0,0 +1,304 @@
<?php
/**
*
* @package - Board3portal
* @version $Id$
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de )
* @copyright (c) Adrian Cockburn - phpbb@netclectic.com (mini calendar)
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (!defined('IN_MINI_CAL'))
{
exit;
}
/**
* set_var
*
* Set variable, used by {@link request_var the request_var function}
*
* @access private
*/
/***************************************************************************
getMiniCalForumsAuth
version: 1.0.0
parameters: $userdata - an initialised $userdata array.
returns: a two part array
$mini_cal_auth['view'] - a comma seperated list of forums which the user has VIEW permissions for
$mini_cal_auth['post'] - a comma seperated list of forums which the user has POST permissions for
***************************************************************************/
function getMiniCalForumsAuth($user)
{
global $db, $auth, $user;
// initialise our forums auth list
$mini_cal_auth_ary = array();
$mini_cal_auth_ary = $auth->acl($user->data);
$mini_cal_auth = array();
$mini_cal_auth['view'] = '';
$mini_cal_auth['post'] = '';
while ( list($mini_cal_forum_id, $mini_cal_auth_level) = each($mini_cal_auth_ary) )
{
if ( $mini_cal_auth_level[MINI_CAL_EVENT_AUTH_LEVEL] )
{
$mini_cal_auth['view'] .= ($mini_cal_auth['view'] == '') ? $mini_cal_forum_id : ', ' . $mini_cal_forum_id;
}
if ( ($mini_cal_auth_level['auth_post']) && $mini_cal_auth_level['auth_cal'] )
{
$mini_cal_auth['post'] .= ($mini_cal_auth['post'] == '') ? $mini_cal_forum_id : ', ' . $mini_cal_forum_id;
}
}
return $mini_cal_auth;
}
/***************************************************************************
getMiniCalEventDays
version: 1.0.0
parameters: $auth_view_forums - a comma seperated list of forums which the user has VIEW permissions for
returns: an array containing a list of day containing event the user has permission to view
***************************************************************************/
function getMiniCalEventDays($auth_view_forums)
{
global $db, $mini_cal_this_year, $mini_cal_this_month;
$mini_cal_event_days = array();
if ($auth_view_forums)
{
// start and end date
$start_date = mktime(0,0,0, $mini_cal_this_month, 01, $mini_cal_this_year);
$w_month = $mini_cal_this_month + 1;
$w_year = $mini_cal_this_year;
if ($w_month > 12)
{
$w_month = 01;
$w_year++;
}
$end_date = mktime(0,0,0, $w_month, 01, $w_year);
// we consider the duration
$sql = "SELECT DISTINCT topic_calendar_time, topic_calendar_duration
FROM " . TOPICS_TABLE . "
WHERE forum_id IN ($auth_view_forums)
AND (topic_calendar_time + topic_calendar_duration) >= $start_date
AND topic_calendar_time < $end_date
AND topic_calendar_time IS NOT NULL
AND topic_calendar_time <> 0";
if ( $result = $db->sql_query($sql) )
{
$mini_cal_event_days_ww = array();
while( $row = $db->sql_fetchrow($result) )
{
$start_day = intval(date('d', $row['topic_calendar_time']));
for ($i = 0; ( ($i <= intval($row['topic_calendar_duration'] / 86400)) && ( ($start_day + $i) <= 31) ); $i++)
{
$mini_cal_event_days_ww[ ($start_day + $i) ] = true;
}
}
while (list($mini_cal_event_day, $mini_cal_event_present) = each($mini_cal_event_days_ww) )
{
$mini_cal_event_days[] = $mini_cal_event_day;
}
}
}
return $mini_cal_event_days;
}
/***************************************************************************
getMiniCalEvents
version: 1.0.0
parameters: $mini_cal_auth - a two part array
$mini_cal_auth['view'] - a comma seperated list of forums which the user has VIEW permissions for
$mini_cal_auth['post'] - a comma seperated list of forums which the user has POST permissions for
returns: nothing - it assigns variable to the template
***************************************************************************/
function getMiniCalEvents($mini_cal_auth)
{
global $template, $db, $phpEx, $lang, $mini_cal_today,
$mini_cal_this_month, $mini_cal_this_year, $mini_cal_this_day;
// start and end date
$start_date = mktime(0,0,0, intval(substr($mini_cal_today, 4, 2)), $mini_cal_this_day, $mini_cal_this_year);
$w_month = $mini_cal_this_month;
$days_ahead_sql = '';
if (MINI_CAL_DAYS_AHEAD > 0)
{
$w_year = $mini_cal_this_year;
if ($w_month > 12)
{
$w_month = 01;
$w_year++;
}
$end_date = mktime(0,0,0, $w_month, $mini_cal_this_day + MINI_CAL_DAYS_AHEAD, $w_year);
$days_ahead_sql = " AND topic_calendar_time < $end_date ";
}
// initialise some sql bits
$mini_cal_auth_sql = ($mini_cal_auth['view']) ? ' AND t.forum_id in (' . $mini_cal_auth['view'] . ') ' : '';
// get events
$sql = "SELECT t.topic_id, t.topic_calendar_time, t.topic_title, t.forum_id, t.topic_calendar_duration
FROM " . TOPICS_TABLE . " t
WHERE topic_calendar_time >= $start_date
$days_ahead_sql
AND topic_calendar_time IS NOT NULL
AND topic_calendar_time <> 0
$mini_cal_auth_sql
ORDER BY
t.topic_calendar_time ASC
LIMIT
0," . MINI_CAL_LIMIT;
// did we get a result?
if( $result = $db->sql_query($sql) )
{
$template->assign_block_vars('switch_mini_cal_events', array());
if ( $db->sql_numrows($result) > 0 )
{
// we've got some events
// now let's output our events in the given date format for the current language
while ($row = $db->sql_fetchrow($result))
{
$cal_time = $row['topic_calendar_time'];
$day_span = (date("Ymd", $cal_time) < date("Ymd", $cal_time+$row['topic_calendar_duration']));
$include_time = date("His", $cal_time) > 0;
$cal_date = getFormattedDate(
date('w', $cal_time),
date('n', $cal_time),
date('d', $cal_time),
date('Y', $cal_time),
date('H', $cal_time),
date('i', $cal_time),
date('s', $cal_time),
$lang['Mini_Cal_date_format'].((!$day_span && $include_time)?' '.$lang['Mini_Cal_date_format_Time']:'')
);
if ($day_span || $row['topic_calendar_duration'] > 0)
{
$cal_time = $cal_time + $row['topic_calendar_duration'];
$cal_date .= ' - ' . getFormattedDate(
date('w', $cal_time),
date('n', $cal_time),
date('d', $cal_time),
date('Y', $cal_time),
date('H', $cal_time),
date('i', $cal_time),
date('s', $cal_time),
((!$day_span)?$lang['Mini_Cal_date_format_Time']:$lang['Mini_Cal_date_format'])
);
}
$template->assign_block_vars('mini_cal_events', array(
'MINI_CAL_EVENT_DATE' => $cal_date,
'S_MINI_CAL_EVENT' => $row['topic_title'],
'U_MINI_CAL_EVENT' => append_sid( $phpbb_root_path . "viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $row['topic_id'] )
)
);
}
}
else
{
// no events :(
$template->assign_block_vars('mini_cal_no_events', array());
}
$db->sql_freeresult($result);
}
}
/***************************************************************************
getMiniCalSearchSql
version: 1.0.0
parameters: $search_id - the type of search we're looking for
$search_date - the date passed to the search
returns: an sql string
***************************************************************************/
function getMiniCalSearchSql($search_date)
{
$s_yy = intval(substr($search_date, 0, 4));
$s_mm = intval(substr($search_date, 4, 2));
$s_dd = intval(substr($search_date, 6, 2));
$search_date = mktime(0,0,0, $s_mm, $s_dd, $s_yy);
$nix_tomorrow = mktime (0,0,0, $s_mm, $s_dd + 1, $s_yy);
$sql = "SELECT topic_first_post_id as post_id
FROM " . TOPICS_TABLE . "
WHERE (topic_calendar_time + topic_calendar_duration) >= $search_date AND topic_calendar_time < $nix_tomorrow";
return $sql;
}
/***************************************************************************
getMiniCalSearchURL
version: 1.0.0
parameters: $search_date - the date passed to the search
returns: an url string
***************************************************************************/
function getMiniCalSearchURL($search_date)
{
global $phpEx;
$s_yy = intval(substr($search_date, 0, 4));
$s_mm = intval(substr($search_date, 4, 2));
$s_dd = intval(substr($search_date, 6, 2));
$search_date = mktime(0,0,0, $s_mm, $s_dd, $s_yy);
//$url = append_sid($phpbb_root_path . "search.$phpEx?search_id=mini_cal_events&amp;d=" . $search_date);
$url = append_sid($phpbb_root_path . "calendar_scheduler.$phpEx?d=" . $search_date);
return $url;
}
/***************************************************************************
getMiniCalPostForumsList
version: 1.0.0
parameters: $mini_cal_post_auth - a comma seperated list of forms with post rights
returns: adds a forums select list to the template output
***************************************************************************/
function getMiniCalPostForumsList($mini_cal_post_auth)
{
getPostForumsList($mini_cal_post_auth);
}
$template->assign_vars(array(
'U_MINI_CAL_CALENDAR' => append_sid($phpbb_root_path . 'calendar.' . $phpEx),
'U_MINI_CAL_ADD_EVENT' => append_sid($phpbb_root_path . 'posting.' . $phpEx . '?mode=newtopic&f=' . MINI_CAL_EVENTS_FORUM )
)
);
?>

7
root/portal/index.html Normal file
View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -0,0 +1,96 @@
<hr class="dashed" />
<h3>sample block design</h3>
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<div class="content">
<h2>{ TITLE }</h2>
{ CONTENT }<br />{ CONTENT }
</div>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{ TITLE }</h3>
{ CONTENT }<br />{ CONTENT }
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{ TITLE }</h3>
{ CONTENT }<hr />{ CONTENT }
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{ TITLE }</h3>
{ CONTENT }<hr class="dashed" />{ CONTENT }
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{ TITLE }</h3>
<ul class="linklist">
<li>
left side
</li>
<li class="rightside">
right side
</li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />
<div class="navbar">
<div class="inner"><span class="corners-top"><span></span></span>
{ CONTENT }<br />{ CONTENT }
<span class="corners-bottom"><span></span></span></div>
</div>
<br style="clear:both" />
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{ TITLE }</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal">
{ CONTENT }<br />{ CONTENT }
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<hr class="dashed" />

View File

@@ -0,0 +1,17 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_ACTIVE_TOPIC}</h3>
<!-- BEGIN active_topics -->
<a href="{active_topics.U_VIEW_TOPIC}" title="{active_topics.FULL_TITLE}"><strong>{active_topics.TITLE}</strong></a><br />
{active_topics.DATE}<br />
{L_POSTED_BY}: {active_topics.POSTER}<br />
<!-- END lactive_topics -->
<hr />
<a href="search.php?search_id=active_topics">{ALL_ACTIVE_TOPIC}</a>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,12 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_SPONSOR}</h3>
<div style="text-align: center;">
-insert ads codes here-
</div>
<br />
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,12 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_SPONSOR}</h3>
<div style="text-align: center;">
-insert ads codes here-
</div>
<br />
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,35 @@
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_LATEST_ANNOUNCEMENTS}</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal" style="border-left:0px">
<!-- BEGIN announcements_row -->
<!-- IF announcements_row.S_NO_TOPICS -->
<span class="gensmall" style="text-align: center; margin: 0 0 0 5px;"><strong>{L_NO_ANNOUNCEMENTS}</strong></span>
<!-- ELSE -->
<div class="postbody postbody_portal" style="width: 100%">
<h4 class="first"><span style="margin: 0 0 0 5px"><!-- IF announcements_row.S_UNREAD_INFO -->{NEWEST_POST_IMG}<!-- ELSE -->{READ_POST_IMG}<!-- ENDIF --> {announcements_row.ATTACH_ICON_IMG} <!-- IF announcements_row.S_POLL --> <strong>{L_POLL}: </strong><!-- ENDIF --><a href="{announcements_row.U_VIEW_COMMENTS}"><strong>{announcements_row.TITLE}</strong></a></span></h4>
<ul class="linklist">
<li><span style="margin: 0 0 0 5px">{L_POSTED_BY}: <strong><a href="{announcements_row.U_USER_PROFILE}">{announcements_row.POSTER}</a></strong></span></li>
<li class="rightside"><span style="margin: 0 5px 0 0;">{announcements_row.TIME}</span></li>
</ul>
<br />
<div class="content"><div style="float: left; margin: 0 0 0 5px"> {announcements_row.TEXT}</div></div><br />
<span style="float: left; margin: 0 0 0 5px">{L_TOPIC_VIEWS}: {announcements_row.TOPIC_VIEWS} &nbsp;&bull;&nbsp; <a href="{announcements_row.U_VIEW_COMMENTS}" title="{L_VIEW_COMMENTS}">{L_COMMENTS}: {announcements_row.REPLIES}</a> &nbsp;&bull;&nbsp; <a href="{announcements_row.U_POST_COMMENT}">{L_POST_REPLY}</a></span>
<span style="float: right; margin: 0 5px 5px 0">{announcements_row.OPEN}<a href="{announcements_row.U_READ_FULL}">{announcements_row.L_READ_FULL}</a>{announcements_row.CLOSE}</span>
</div>
<div class="back2top"><span style="float: right; margin: 0 5px 0 0"><a href="#wrap" class="top" title="{L_BACK_TO_TOP}">{L_BACK_TO_TOP}</a></span></div>
<!-- IF announcements_row.S_NOT_LAST --><hr /><!-- ENDIF -->
<!-- ENDIF -->
<!-- END announcements_row -->
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,41 @@
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_LATEST_ANNOUNCEMENTS}</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li>
<dl>
<dd class="posts_portal" style="border-left:0px">
<ul class="news">
<!-- BEGIN announcements_row -->
<!-- IF announcements_row.S_NO_TOPICS -->
<li>
<span class="gensmall" style="text-align: center; margin: 0 0 0 5px;"><strong>{L_NO_ANNOUNCEMENTS}</strong></span>
</li>
<!-- ELSE -->
<li>
<span style="float: left; margin: 0 0 0 5px;"><img src="{T_THEME_PATH}/images/arrow_right.gif" alt=""/>
<!-- IF announcements_row.S_UNREAD_INFO -->{NEWEST_POST_IMG}<!-- ELSE -->{READ_POST_IMG}<!-- ENDIF --> {announcements_row.ATTACH_ICON_IMG} <!-- IF announcements_row.S_POLL --> <strong>{L_POLL}: </strong><!-- ENDIF -->
<a href="{announcements_row.U_VIEW_COMMENTS}" title="{announcements_row.TITLE}"><strong style="font-size:1.1em;">{announcements_row.TITLE}</strong></a></span>
<span style="float: right; margin: 0 5px 0 0;">{L_POST_BY_AUTHOR}: <strong><a href="{announcements_row.U_USER_PROFILE}">{announcements_row.POSTER}</a></strong></span>
<br style="clear:both" />
<span style="float: left; margin: 0 0 0 14px;">
<a href="{announcements_row.U_VIEW_COMMENTS}" title="{L_VIEW_COMMENTS}"><span style="font-size:0.9em;"><em>{L_COMMENTS}: {announcements_row.REPLIES}</em></span></a>
<span style="font-size:0.9em;"><em>{L_TOPIC_VIEWS}: {announcements_row.TOPIC_VIEWS}</em></span>
</span>
<span style="float: right; margin: 0 5px 0 0;">{L_POSTED_ON_DATE} <strong>{announcements_row.TIME}</strong></span>
<!-- IF announcements_row.S_NOT_LAST --><hr style="margin: 0px 0px 3px 0px;" /><!-- ENDIF -->
</li>
<!-- ENDIF -->
<!-- END announcements_row -->
</ul>
</dd>
</dl>
</li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,19 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_ATTACHMENTS}</h3>
<span style="float:left;"><strong>{L_FILENAME}</strong></span><br />
<!-- <span style="float:right;padding-right:10px;"><strong>{L_FILESIZE}</strong></span><br /> -->
<!-- BEGIN attach -->
<span style="float:left;" class="gensmall"><img src="portal/images/icon_topic_attach.gif" alt="" />&nbsp;<a href="viewtopic.php?p={attach.POST_MSG_ID}#p{attach.POST_MSG_ID}" ><strong>{attach.REAL_FILENAME}</strong></a></span><br style="clear:both" />
<!-- <span style="float:right;padding-right:10px;" class="gensmall">{attach.FILESIZE}</span><br style="clear:both" /> -->
<span style="float:left;padding-right:10px;">{L_FILESIZE}:</span><span style="float:right;padding-right:10px;" class="gensmall"><strong>{attach.FILESIZE}</strong></span><br style="clear:both" />
<span style="float:left;padding-right:10px;">{L_DOWNLOADS}:</span><span style="float:right;padding-right:10px;" class="gensmall"><strong>{attach.DOWNLOAD_COUNT}</strong></span><br style="clear:both" />
<hr />
<!-- END attach -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,13 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_BIRTHDAYS}</h3>
<!-- IF BIRTHDAY_LIST -->
<strong>{L_CONGRATULATIONS}: {BIRTHDAY_LIST}</strong>
<!-- ELSE -->
{L_NO_BIRTHDAYS}
<!-- ENDIF -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,30 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_BOARD_STYLE}</h3>
<script type="text/javascript">
<!--
// borrowed from forumimages.com !!
function jumpMenu(targ, selObj, restore)
{
eval(targ + ".location='" + selObj.options[selObj.selectedIndex].value + "'");
if (restore) selObj.selectedIndex = 0;
}
//-->
</script>
<form method="get" name="jumpbox" action="portal.php" onsubmit="if(document.jumpbox.f.value == -1){return false;}">
<select name="demo" onchange="jumpMenu('self',this,0)" class="input">
<option selected="selected" disabled="disabled">{L_STYLE_CHOOSE}</option>
<!-- BEGIN styles-->
<option value="{styles.U_STYLE}">{styles.STYLE_NAME}</option>
<!-- END styles -->
</select>
</form>
<br />
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,15 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_CLOCK}</h3>
<div style="text-align: center;">
<object type="application/x-shockwave-flash" data="portal/images/clock.swf" width="160" height="70">
<param name="wmode" value="transparent" />
<param name="movie" value="portal/images/clock.swf" />
</object>
</div>
<br />
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,29 @@
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_DONATION}</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal" style="border-left:0px">
<table width="100%" cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
<strong>{SITENAME}</strong> {L_DONATION_TEXT}
<br /><br />
{L_PAY_MSG}
<br />
</td>
<td style="width: 100px;" align="center">
<!-- INCLUDE portal/block/donation/paypal.html -->
</td>
</tr>
</table>
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,10 @@
<!-- $Id$ //-->
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_DONATION}</h3>
<!-- INCLUDE portal/block/donation/paypal.html -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -0,0 +1,38 @@
<!-- $Id$ //-->
<!-- reference and all paypal codes
https://www.paypal.com/cgi-bin/webscr?cmd=p/pdn/howto_checkout-outside
https://www.paypal.com/cgi-bin/webscr?cmd=p/sell/mc/mc_wa-outside
//-->
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<div style="text-align: center;">
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="{PAY_ACC}" />
<input type="hidden" name="item_name" value="{L_PAY_ITEM}" />
<input type="hidden" name="no_note" value="1" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="no_shipping" value="2" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="hidden" name="tax" value="0" />
EUR
<!--
ISO 8859-1 character set overview
http://www.htmlhelp.com/reference/charset/
//-->
<select name="amount">
<option value="1.00">1.00</option>
<option value="2.00">2.00</option>
<option value="3.00">3.00</option>
<option value="4.00">4.00</option>
<option value="5.00">5.00</option>
<option value="10.00">10.00</option>
<option value="20.00">20.00</option>
<option value="25.00">25.00</option>
<option value="50.00">50.00</option>
<option value="100.00">100.00</option>
</select>
<br />
<input type="image" src="portal/images/paypal.gif" style="border:0px; background-color:transparent; padding-top:6px" />
</div>
</form>

View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

View File

@@ -0,0 +1,11 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{LAST_VISITED_BOTS}</h3>
<!-- BEGIN last_visited_bots -->
<span class="genmed">{last_visited_bots.BOT_NAME}</span> <br /> <span class="gensmall">{last_visited_bots.LAST_VISIT_DATE}</span><hr />
<!-- END last_visited_bots -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,14 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_LATEST_MEMBERS}</h3>
<span style="float:left;"><strong>{L_USERNAME}</strong></span>
<span style="float:right;padding-right:10px;"><strong>{L_JOINED}</strong></span><br />
<!-- BEGIN latest_members -->
<span style="float:left;"><img src="portal/images/member.gif" height="15" width="15" alt="new" /> <a href="{latest_members.U_USERNAME}"><span<!-- IF latest_members.USERNAME_COLOR -->{latest_members.USERNAME_COLOR}<!-- ENDIF -->>{latest_members.USERNAME}</span></a></span>
<span style="float:right;padding-right:10px;">{latest_members.JOINED}</span><br style="clear:both" />
<!-- END latest_members -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,21 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_THE_TEAM}</h3>
<strong>{L_ADMINISTRATORS}</strong><br />
<!-- BEGIN admin -->
<img src="portal/images/member.gif" height="15" width="15" alt="Admin" /> <strong>{admin.USERNAME_FULL}</strong><br />
<!-- BEGINELSE -->
{L_NO_ADMINISTRATORS_P}<br /><br />
<!-- END admin -->
<strong>{L_MODERATORS}</strong><br />
<!-- BEGIN mod -->
<img src="portal/images/member.gif" height="15" width="15" alt="Moderator" /> <strong>{mod.USERNAME_FULL}</strong><br />
<!-- BEGINELSE -->
{L_NO_MODERATORS_P}
<!-- END mod -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,10 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_LINK_US}</h3>
{LINK_US_TXT}<br /><br />
<input type="text" tabindex="1" size="28" value="{U_LINK_US}" class="inputbox autowidth" /><br />
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,16 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_LINKS}</h3>
<div class="panel" style="margin-bottom: 0px;">
<ul class="ul-link">
<li><a href="http://www.phpbb.de" title="Deutsche phpBB Supportseite">phpbb.de</a></li>
<li><a href="http://www.board3.de" title="Home of the board3 Portal">board3</a></li>
<li><a href="http://www.flying-bits.org" title="Hier findest du die Mods von nickvergessen">www.flying-bits.org</a></li>
<li><a href="http://www.phpbb3portal.com" title="phpbb3portal.com">phpbb3portal.com</a></li>
</ul>
</div>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,30 @@
<form action="{S_LOGIN_ACTION}" method="post">
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3><a href="{U_LOGIN_LOGOUT}">{L_LOGIN_LOGOUT}</a></h3>
<span class="genmed">{L_USERNAME}:</span><br />
<input type="text" tabindex="1" name="username" id="username" size="20" maxlength="40" value="" class="inputbox autowidth" /><br /><br />
<span class="genmed">{L_PASSWORD}:</span><br />
<input type="password" tabindex="2" id="password" name="password" size="20" maxlength="25" class="inputbox autowidth" />
<!-- IF S_DISPLAY_FULL_LOGIN -->
<br /><br />
<!-- IF S_AUTOLOGIN_ENABLED -->
<input type="checkbox" class="radio" name="autologin" tabindex="3" /> <span class="gensmall">{L_UM_LOG_ME_IN}</span><br />
<!-- ENDIF -->
<!--
<input type="checkbox" class="radio" name="viewonline" tabindex="4" /> <span class="gensmall">{L_UM_HIDE_ME}</span><br />
-->
<!-- ENDIF -->
<br />
<input type="hidden" name="redirect" value="{U_PORTAL}" />
<input type="submit" name="login" tabindex="5" value="{L_LOGIN}" class="button1" />
<span class="corners-bottom"><span></span></span>
</div>
</div>
</form>
<br style="clear:both" />

View File

@@ -0,0 +1,39 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_M_MENU}</h3>
<div id="navigation" style="padding-top:0px">
<strong>{L_M_CONTENT}</strong>
<ul>
<li><a href="{U_INDEX}">{L_INDEX}</a></li>
<li><a href="{U_SEARCH}">{L_SEARCH}</a></li>
<!-- IF not S_USER_LOGGED_IN -->
<li><a href="{U_REGISTER}">{L_REGISTER}</a></li>
<!-- ENDIF -->
<li><a href="{U_MEMBERLIST}">{L_MEMBERLIST}</a></li>
<li><a href="{U_TEAM}">{L_THE_TEAM}</a></li>
<!-- IF U_MCP -->
<li><a href="{U_MCP}">{L_MCP}</a></li>
<!-- ENDIF -->
<!-- IF U_ACP -->
<li><a href="{U_ACP}">{L_M_ACP}</a></li>
<!-- ENDIF -->
</ul>
<br />
<strong>{L_M_HELP}</strong>
<ul>
<li><a href="{U_FAQ}">{L_FAQ}</a></li>
<li><a href="faq.php?mode=bbcode">{L_M_BBCODE}</a></li>
<li><a href="ucp.php?mode=terms">{L_M_TERMS}</a></li>
<li><a href="ucp.php?mode=privacy">{L_M_PRV}</a></li>
</ul>
</div>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,38 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_M_MENU}</h3>
<div id="navigationportal">
<strong>{L_M_CONTENT}</strong>
<ul>
<li><a href="{U_INDEX}">{L_INDEX}</a></li>
<li><a href="{U_SEARCH}">{L_SEARCH}</a></li>
<!-- IF not S_USER_LOGGED_IN -->
<li><a href="{U_REGISTER}">{L_REGISTER}</a></li>
<!-- ENDIF -->
<!-- IF not S_IS_BOT and S_USER_LOGGED_IN -->
<li><a href="{U_MEMBERLIST}">{L_MEMBERLIST}</a></li>
<li><a href="{U_TEAM}">{L_THE_TEAM}</a></li>
<!-- ENDIF -->
<!-- IF U_MCP -->
<li><a href="{U_MCP}">{L_MCP}</a></li>
<!-- ENDIF -->
<!-- IF U_ACP -->
<li><a href="{U_ACP}">{L_M_ACP}</a></li>
<!-- ENDIF -->
</ul>
<br />
<strong>{L_M_HELP}</strong>
<ul>
<li><a href="{U_FAQ}">{L_FAQ}</a></li>
<li><a href="faq.php?mode=bbcode">{L_M_BBCODE}</a></li>
<li><a href="ucp.php?mode=terms">{L_M_TERMS}</a></li>
<li><a href="ucp.php?mode=privacy">{L_M_PRV}</a></li>
</ul>
</div>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,44 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_MINI_CAL_CALENDAR}</h3>
<table width="100%" cellspacing="1">
<tr>
<td align="left" colspan="2">{U_PREV_MONTH}</td>
<td colspan="3" align="center"><span class="genmed">{L_MINI_CAL_MONTH}</span></td>
<td align="right" colspan="2">{U_NEXT_MONTH}</td>
</tr>
<tr>
<td style="width: 14%;"><span class="gensmall" style="color:#0000FF">{L_MINI_CAL_SUN}</span></td>
<td style="width: 14%;"><span class="gensmall" style="color:#0000FF">{L_MINI_CAL_MON}</span></td>
<td style="width: 14%;"><span class="gensmall" style="color:#0000FF">{L_MINI_CAL_TUE}</span></td>
<td style="width: 14%;"><span class="gensmall" style="color:#0000FF">{L_MINI_CAL_WED}</span></td>
<td style="width: 14%;"><span class="gensmall" style="color:#0000FF">{L_MINI_CAL_THU}</span></td>
<td style="width: 14%;"><span class="gensmall">{L_MINI_CAL_FRI}</span></td>
<td style="width: 14%;"><span class="gensmall" style="color:#FF0000">{L_MINI_CAL_SAT}</span></td>
</tr>
<!-- BEGIN mini_cal_row -->
<tr>
<!-- BEGIN mini_cal_days -->
<td class="row1" align="center"><span class="gensmall">{mini_cal_row.mini_cal_days.MINI_CAL_DAY}</span></td>
<!-- END mini_cal_days -->
</tr>
<!-- END mini_cal_row -->
</table>
<hr />
<!-- IF .mini_cal_holiday -->
<table class="tablebg" width="100%" cellspacing="1">
<!-- BEGIN mini_cal_holiday -->
<tr>
<td class="row1" align="left"><span class="gensmall">{mini_cal_holiday.MINI_CAL_HOLIDAYS}</span></td>
</tr>
<!-- END mini_cal_holiday -->
</table>
<!-- ENDIF -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,35 @@
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_LATEST_NEWS}</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal" style="border-left:0px">
<!-- BEGIN news_row -->
<!-- IF news_row.S_NO_TOPICS -->
<span class="gensmall" style="text-align: center; margin: 0 0 0 5px;"><strong>{L_NO_NEWS}</strong></span>
<!-- ELSE -->
<div class="postbody postbody_portal" style="width: 100%">
<h4 class="first"><span style="margin: 0 0 0 5px"><!-- IF news_row.S_UNREAD_INFO -->{NEWEST_POST_IMG}<!-- ELSE -->{READ_POST_IMG}<!-- ENDIF --> {news_row.ATTACH_ICON_IMG} <!-- IF news_row.S_POLL --><strong>{L_POLL}: </strong><!-- ENDIF --><a href="{news_row.U_VIEW_COMMENTS}"><strong>{news_row.TITLE}</strong></a></span></h4>
<ul class="linklist">
<li><span style="margin: 0 0 0 5px">{L_POSTED_BY}: <strong><a href="{news_row.U_USER_PROFILE}">{news_row.POSTER}</a></strong></span></li>
<li class="rightside"><span style="margin: 0 5px 0 0;">{news_row.TIME}</span></li>
</ul>
<br />
<div class="content"><div style="float: left; margin: 0 0 0 5px">{news_row.TEXT}</div></div><br />
<span style="float: left; margin: 0 0 0 5px">{L_TOPIC_VIEWS}: {news_row.TOPIC_VIEWS} &nbsp;&bull;&nbsp; <a href="{news_row.U_VIEW_COMMENTS}" title="{L_VIEW_COMMENTS}">{L_COMMENTS}: {news_row.REPLIES}</a> &nbsp;&bull;&nbsp; <a href="{news_row.U_POST_COMMENT}">{L_POST_REPLY}</a></span>
<span style="float: right; margin: 0 5px 5px 0">{news_row.OPEN}<a href="{news_row.U_READ_FULL}">{news_row.L_READ_FULL}</a>{news_row.CLOSE}</span>
</div>
<div class="back2top"><span style="float: right; margin: 0 5px 0 0"><a href="#wrap" class="top" title="{L_BACK_TO_TOP}">{L_BACK_TO_TOP}</a></span></div>
<!-- IF news_row.S_NOT_LAST --><hr /><!-- ENDIF -->
<!-- ENDIF -->
<!-- END news_row -->
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,21 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_FRIENDS}</h3>
<strong style="color:green">{L_FRIENDS_ONLINE}</strong><br />
<!-- BEGIN friends_online -->
<img src="portal/images/member.gif" /> {friends_online.USERNAME_FULL}<br /><br />
<!-- BEGINELSE -->
{L_NO_FRIENDS_ONLINE}<br /><br />
<!-- END friends_online -->
<strong style="color:red">{L_FRIENDS_OFFLINE}</strong><br />
<!-- BEGIN friends_offline -->
<img src="portal/images/member.gif" /> {friends_offline.USERNAME_FULL}<br />
<!-- BEGINELSE -->
{L_NO_FRIENDS_OFFLINE}
<!-- END friends_offline -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,47 @@
<div class="forabg"><span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_POLL}</dt></dl></li>
</ul>
<form method="post" action="{S_POLL_ACTION}">
<div class="panel" style="margin-bottom: 0px;"><span class="corners-top"><span></span></span>
<h3>{POLL_QUESTION}</h3>
<div class="content">
<p class="author">{L_POLL_LENGTH}<!-- IF S_CAN_VOTE and L_POLL_LENGTH --><br /><!-- ENDIF --><!-- IF S_CAN_VOTE -->{L_MAX_VOTES}<!-- ENDIF --></p>
<fieldset class="polls">
<!-- BEGIN poll_option -->
<dl class="<!-- IF poll_option.POLL_OPTION_VOTED -->voted<!-- ENDIF -->"<!-- IF poll_option.POLL_OPTION_VOTED --> title="{L_POLL_VOTED_OPTION}"<!-- ENDIF -->>
<dt><!-- IF S_CAN_VOTE --><label for="vote_{poll_option.POLL_OPTION_ID}">{poll_option.POLL_OPTION_CAPTION}</label><!-- ELSE -->{poll_option.POLL_OPTION_CAPTION}<!-- ENDIF --></dt>
<!-- IF S_CAN_VOTE --><dd style="width: auto;"><!-- IF S_IS_MULTI_CHOICE --><input type="checkbox" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}"<!-- IF poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF -->/><!-- ELSE --><input type="radio" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}"<!-- IF poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF --> /><!-- ENDIF --></dd><!-- ENDIF -->
<!-- IF S_DISPLAY_RESULTS --><dd class="resultbar"><div class="<!-- IF poll_option.POLL_OPTION_PCT < 20 -->pollbar1<!-- ELSEIF poll_option.POLL_OPTION_PCT < 40 -->pollbar2<!-- ELSEIF poll_option.POLL_OPTION_PCT < 60 -->pollbar3<!-- ELSEIF poll_option.POLL_OPTION_PCT < 80 -->pollbar4<!-- ELSE -->pollbar5<!-- ENDIF -->" style="width:{poll_option.POLL_OPTION_PERCENT};">{poll_option.POLL_OPTION_RESULT}</div></dd>
<dd><!-- IF poll_option.POLL_OPTION_RESULT == 0 -->{L_NO_VOTES}<!-- ELSE -->{poll_option.POLL_OPTION_PERCENT}<!-- ENDIF --></dd><!-- ENDIF -->
</dl>
<!-- END poll_option -->
<!-- IF S_DISPLAY_RESULTS -->
<dl>
<dt>&nbsp;</dt>
<dd class="resultbar">{L_TOTAL_VOTES} : {TOTAL_VOTES}<br /><br /><a href="{U_VIEW_RESULTS}">{L_JUMP_TO_POST}</a></dd>
</dl>
<!-- ENDIF -->
<!-- IF S_CAN_VOTE -->
<dl style="border-top: none;">
<dt>&nbsp;</dt>
<dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
</dl>
<!-- ENDIF -->
<!-- IF not S_DISPLAY_RESULTS -->
<dl style="border-top: none;">
<dt>&nbsp;</dt>
<dd class="resultbar"><a href="{U_VIEW_RESULTS}">{L_VIEW_RESULTS}</a></dd>
</dl>
<!-- ENDIF -->
</fieldset>
</div>
<span class="corners-bottom"><span></span></span>
</div>
{S_HIDDEN_FIELDS}
</form>
<span class="corners-bottom"><span></span></span></div>
<br style="clear:both" />

View File

@@ -0,0 +1,28 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_RND_MEMBER}</h3>
<!-- BEGIN random_member -->
<span style="float:left;font-size:12px;">
<img src="portal/images/member.gif" height="15" width="15" alt="{random_member.USERNAME}" /> <a href="{random_member.U_VIEW_PROFILE}"><!-- IF random_member.USER_COLOR --><span style="color: {random_member.USER_COLOR}; font-weight: bold;"><!-- ELSE --><span><!-- ENDIF -->{random_member.USERNAME}</span></a>
</span>
<span style="float:right;"></span>
<!-- //IF random_member.AVATAR_IMG --><br /><br /><a href="{random_member.U_VIEW_PROFILE}">{random_member.AVATAR_IMG}</a><!-- //ENDIF -->
<!-- IF random_member.RANK_TITLE --><br /><small>{random_member.RANK_TITLE}</small><br /><!-- ENDIF -->
<!-- IF random_member.RANK_IMG -->{random_member.RANK_IMG}<br /><!-- ENDIF -->
<span style="float:left;">{L_RND_JOIN}:</span><span style="float:right;padding-right:10px;">{random_member.JOINED}</span><br />
<span style="float:left;">{L_RND_POSTS}:</span><span style="float:right;padding-right:10px;">{random_member.USER_POSTS}</span><br />
<!-- IF random_member.USER_OCC -->
<span style="float:left;">{L_RND_OCC}:</span><span style="float:right;padding-right:10px;">{random_member.USER_OCC}</span><br />
<!-- ENDIF -->
<!-- IF random_member.USER_FROM -->
<span style="float:left;">{L_RND_FROM}:</span><span style="float:right;padding-right:10px;">{random_member.USER_FROM}</span><br />
<!-- ENDIF -->
<!-- IF random_member.U_WWW -->
<span style="float:left;"><a href="{random_member.U_WWW}" title="{random_member.U_WWW}" target="_blank">{L_RND_WWW}</a></span><span style="float:right;"></span><br />
<!-- ENDIF -->
<!-- END random_member -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,54 @@
<!-- IF .latest_announcements or .latest_hot_topics or .latest_topics -->
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_RECENT_NEWS}</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal" style="border-left:0px">
<table width="100%">
<tr>
<!-- IF .latest_announcements --><td class="row1"><strong>{L_RECENT_ANN}</strong></td><!-- ENDIF -->
<!-- IF .latest_hot_topics --><td class="row1"><strong>{L_RECENT_HOT_TOPIC}</strong></td><!-- ENDIF -->
<!-- IF .latest_topics --><td class="row1"><strong>{L_RECENT_TOPIC}</strong></td><!-- ENDIF -->
</tr>
<tr>
<!-- IF .latest_announcements -->
<td class="row1" style="width: 33%;" valign="top">
<small>
<!-- BEGIN latest_announcements -->
<a href="{latest_announcements.U_VIEW_TOPIC}" title="{latest_announcements.FULL_TITLE}">{latest_announcements.TITLE}</a><br />
<!-- END latest_announcements -->
</small>
</td>
<!-- ENDIF -->
<!-- IF .latest_hot_topics -->
<td class="row1" style="width: 33%;" valign="top">
<small>
<!-- BEGIN latest_hot_topics -->
<a href="{latest_hot_topics.U_VIEW_TOPIC}" title="{latest_hot_topics.FULL_TITLE}">{latest_hot_topics.TITLE}</a><br />
<!-- END latest_hot_topics -->
</small>
</td>
<!-- ENDIF -->
<!-- IF .latest_topics -->
<td class="row1" style="width: 33%;" valign="top">
<small>
<!-- BEGIN latest_topics -->
<a href="{latest_topics.U_VIEW_TOPIC}" title="{latest_topics.FULL_TITLE}">{latest_topics.TITLE}</a><br />
<!-- END latest_topics -->
</small>
</td>
<!-- ENDIF -->
</tr>
</table>
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />
<!-- ENDIF -->

View File

@@ -0,0 +1,79 @@
<script type="text/javascript">
<!--
function qsearch_onSubmit()
{
qs_enginename = document.getElementById('qsearch_select').value;
qs_keywords = document.getElementById('searchfield').value;
switch( qs_enginename )
{
case 'site':
break;
case 'author':
window.open('search.php?author=' + qs_keywords, '_self', '');
return false;
case 'google':
window.open('http://www.google.com/search?q=' + qs_keywords, '_google', '');
return false;
case 'yahoo':
window.open('http://search.yahoo.com/search?p=' + qs_keywords, '_yahoo', '');
return false;
case 'msnlive':
window.open('http://search.live.com/results.aspx?q=' + qs_keywords, '_msnlive', '');
return false;
case 'altavista':
window.open('http://www.altavista.com/web/results?itag=ody&q=' + qs_keywords + '&kgs=0&kls=0', '_altavista', '');
return false;
case 'lycos':
window.open('http://search.lycos.com/?query=' + qs_keywords, '_lycos', '');
return false;
case 'odp':
window.open('http://search.dmoz.org/cgi-bin/search?search=' + qs_keywords, '_odp', '');
return false;
default:
if( (i = qsearch_findEngine(qs_enginename)) >= 0 )
{
window.open(qsearch_engines[i].url + qs_keywords, '_blank', '');
return false;
}
break;
}
return true;
}
//-->
</script>
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_SEARCH}</h3>
<form id="qsearch_form" method="post" action="{U_SEARCH}" onsubmit="return qsearch_onSubmit();">
<p>
<input type="text" tabindex="6" name="keywords" id="searchfield" size="22" maxlength="40" class="inputbox autowidth" />
</p>
<p>
<select id="qsearch_select">
<optgroup label="{L_SH_SITE}">
<option value="site" style="background-color: #EEEEEE;">{L_SH_POSTS}</option>
<option value="author" style="background-color: #EEEEEE;">{L_SH_AUTHOR}</option>
</optgroup>
<optgroup label="{L_SH_ENGINE}">
<option value="google" style="background-color: #FEF2D6;">google</option>
<option value="yahoo" style="background-color: #FEF2D6;">yahoo</option>
<option value="msnlive" style="background-color: #FEF2D6;">msnlive</option>
<option value="altavista" style="background-color: #FEF2D6;">altavista</option>
<option value="lycos" style="background-color: #FEF2D6;">lycos</option>
<option value="odp" style="background-color: #FEF2D6;">open directory</option>
</optgroup>
</select>
<input type="hidden" name="search_fields" value="all" />
<input type="hidden" name="show_results" value="topics" />
<input type="submit" value="{L_SH}" class="button2" />
</p>
</form>
<p><a href="{U_SEARCH}">{L_SH_ADV}</a>
<span class="corners-bottom"><span></span></span>
</p>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,35 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_STATISTICS}</h3>
<!-- IF S_USER_LOGGED_IN -->
<!--
<strong>{L_ST_NEW}</strong><br />
{L_ST_NEW_POSTS} <strong>{S_NEW_POSTS}</strong><br />
{L_ST_NEW_TOPICS} <strong>{S_NEW_TOPIC}</strong><br />
{L_ST_NEW_ANNS} <strong>{S_NEW_ANN}</strong><br />
{L_ST_NEW_STICKYS} <strong>{S_NEW_SCT}</strong><br /><br />
-->
<!-- ENDIF -->
<strong>{L_ST_TOP}</strong><br />
{TOTAL_POSTS}<br />
{TOTAL_TOPICS}<br />
{L_ST_TOP_ANNS} <strong>{S_ANN}</strong><br />
{L_ST_TOP_STICKYS} <strong>{S_SCT}</strong><br />
{L_ST_TOT_ATTACH} <strong>{S_TOT_ATTACH}</strong><br />
<hr />
{TOPICS_PER_DAY}<br />
{POSTS_PER_DAY}<br />
{USERS_PER_DAY}<br />
{TOPICS_PER_USER}<br />
{POSTS_PER_USER}<br />
{POSTS_PER_TOPIC}<br />
<hr />
{TOTAL_USERS}<br />
{NEWEST_USER}
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,14 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_TOP_POSTER}</h3>
<span style="float:left;"><strong>{L_USERNAME}</strong></span>
<span style="float:right;padding-right:10px;"><strong>{L_POSTS}</strong></span><br />
<!-- BEGIN top_poster -->
<span style="float:left;"><img src="portal/images/member.gif" height="15" width="15" alt="member" /> <a href="{top_poster.U_USERNAME}"><span<!-- IF top_poster.USERNAME_COLOR -->{top_poster.USERNAME_COLOR}<!-- ENDIF -->>{top_poster.USERNAME}</span></a></span>
<span style="float:right; padding-right:10px;"><a href="{top_poster.S_SEARCH_ACTION}">{top_poster.POSTER_POSTS}</a></span><br style="clear:both" />
<!-- END top_poster -->
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,23 @@
<div class="panel">
<div class="inner">
<span class="corners-top"><span></span></span>
<h3>{L_USER_MENU}</h3>
<div style="font-size:1.1em;">
<div style="text-align: center;">
<a href="{U_VIEW_PROFILE}"><!-- IF USER_COLOR --><span style="color: {USER_COLOR}; font-weight: bold;"><!-- ELSE --><span><!-- ENDIF -->{USERNAME}</span></a><br /><br />
<a href="{U_PROFILE}"><!-- IF AVATAR_IMG -->{AVATAR_IMG}<!-- ELSE --><img src="{T_THEME_PATH}/images/no_avatar.gif" alt="" /><!-- ENDIF --></a>
<!-- IF RANK_TITLE --><br /><small>{RANK_TITLE}</small><!-- ENDIF -->
<!-- IF RANK_IMG --><br />{RANK_IMG}<!-- ENDIF -->
</div>
<hr />
<a href="{U_NEW_POSTS}">{L_NEW_POSTS}</a><br />
<a href="{U_SELF_POSTS}">{L_SELF_POSTS}</a><br />
<a href="{U_UM_BOOKMARKS}">{L_UM_BOOKMARKS}</a><br />
<a href="{U_UM_MAIN_SUBSCRIBED}">{L_UM_MAIN_SUBSCRIBED}</a><br />
<a href="{U_PRIVATEMSGS}">{PRIVATE_MESSAGE_INFO}</a><hr />
<a href="{U_LOGIN_LOGOUT}">{L_LOGIN_LOGOUT}</a>
</div>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,18 @@
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_WELCOME}</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal" style="border-left:0px">
<span style="float: left; margin: 0 5px 0 5px;">{PORTAL_WELCOME_INTRO}</span><br />
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,21 @@
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt><!-- IF U_VIEWONLINE --><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a><!-- ELSE -->{L_WHO_IS_ONLINE}<!-- ENDIF --></dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal" style="border-left:0px">
<!-- IF S_DISPLAY_ONLINE_LIST -->
<p style="font-size: 90%; margin: 0 5px 0 5px;">{TOTAL_USERS_ONLINE} ({L_ONLINE_EXPLAIN})<br />{RECORD_USERS}<br /> <br />{LOGGED_IN_USER_LIST}
<!-- IF LEGEND --><br /><em>{L_LEGEND}: {LEGEND}</em><!-- ENDIF --></p>
<!-- ENDIF -->
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br />

View File

@@ -0,0 +1,20 @@
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{L_WORDGRAPH}</dt></dl></li>
</ul>
<ul class="topiclist forums">
<li><dl>
<dd class="posts_portal" style="border-left:0px">
<!-- BEGIN wordgraph -->
<a href="{wordgraph.WORD_SEARCH_URL}"><span style="font-size: {wordgraph.WORD_FONT_SIZE}px; margin: 0 0 0 3px;">{wordgraph.WORD}</span></a>
<!-- END wordgraph -->
</dd>
</dl></li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<br style="clear:both" />

View File

@@ -0,0 +1,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
</head>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More