ALTER TABLE `bb_users` DROP `user_next_birthday_greeting`; Начиная с этой версии запустить TorrentPier II можно с PHP не ниже версии 5.3 !!! Исправлена ошибка, при которой можно было получить доступ к файлам в обход трекера Исправлена ошибка, при которой можно было запустить html код на некоторых страницах трекера Исправлена ошибка, при которой мог удалиться DL лист пользователей на сайте Исправлена ошибка, приводящая к падению сайта при генерировании кеша Исправлена чистка кеша, когда скрипт очищал не все объекты кеша Исправлена ошибка работы с фреймами в администраторском разделе Исправлено отображение списка форумов при скрытии категорий на главной странице Полностью переписана работа модуля "Позвать скачавших", а также добавлена опция отключения приема писем от нее Обновлена страница настроек Добавлен обновленный список текущих закачек в профиле Добавлено уведомление для пользователей используещих старые браузеры Добавлена заглушка, чтобы сторонние пользователя не могли получить доступ к списку картинок на фтп Добавлена опция позволяющая отключить компиляцию кеша шаблонов страниц Изменены имена администраторских и пользовательских настроек. Теперь это выглядит так: 'dis_*' => ЗАПРЕТЫ 'user_*' => НАСТРОЙКИ Также испралена куча незначительных ошибок и багов из списка присылаемых пользователями git-svn-id: https://torrentpier2.googlecode.com/svn/trunk@589 a8ac35ab-4ca4-ca47-4c2d-a49a94f06293
This commit is contained in:
pherum83@gmail.com 2014-06-19 19:23:41 +00:00
commit c37b6bca24
45 changed files with 1139 additions and 1324 deletions

View file

@ -1339,7 +1339,6 @@ CREATE TABLE IF NOT EXISTS `bb_users` (
`avatar_ext_id` tinyint(4) NOT NULL,
`user_gender` tinyint(1) NOT NULL DEFAULT '0',
`user_birthday` date NOT NULL DEFAULT '0000-00-00',
`user_next_birthday_greeting` int(11) NOT NULL DEFAULT '0',
`user_email` varchar(255) NOT NULL DEFAULT '',
`user_skype` varchar(32) NOT NULL DEFAULT '',
`user_twitter` varchar(15) NOT NULL DEFAULT '',
@ -1365,9 +1364,9 @@ CREATE TABLE IF NOT EXISTS `bb_users` (
-- Дамп данных таблицы `bb_users`
--
INSERT INTO `bb_users` VALUES (-1, 0, 'Guest', 'd41d8cd98f00b204e9800998ecf8427e', 0, 0, '0', 0, '0', 0, 0, 0.00, '', 0, 0, 0, 0, 0, '', 0, 0, 0, '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 'default');
INSERT INTO `bb_users` VALUES (2, 1, 'admin', 'c3284d0f94606de1fd2af172aba15bf3', 0, 0, '0', 0, '0', 1, 1, 4.00, '', 0, 0, 0, 304, 1, '', 0, 0, 0, 'admin@admin.com', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 'default');
INSERT INTO `bb_users` VALUES (-746, 0, 'bot', 'd41d8cd98f00b204e9800998ecf8427e', 0, 0, '0', 0, '0', 0, 0, 0.00, '', 0, 0, 0, 144, 0, '', 0, 0, 0, 'bot@bot.bot', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 'default');
INSERT INTO `bb_users` VALUES (-1, 0, 'Guest', 'd41d8cd98f00b204e9800998ecf8427e', 0, 0, '0', 0, '0', 0, 0, 0.00, '', 0, 0, 0, 0, 0, '', 0, 0, '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 'default');
INSERT INTO `bb_users` VALUES (2, 1, 'admin', 'c3284d0f94606de1fd2af172aba15bf3', 0, 0, '0', 0, '0', 1, 1, 4.00, '', 0, 0, 0, 304, 1, '', 0, 0, 'admin@admin.com', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 'default');
INSERT INTO `bb_users` VALUES (-746, 0, 'bot', 'd41d8cd98f00b204e9800998ecf8427e', 0, 0, '0', 0, '0', 0, 0, 0.00, '', 0, 0, 0, 144, 0, '', 0, 0, 'bot@bot.bot', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 'default');
-- --------------------------------------------------------

View file

@ -13,23 +13,14 @@
************************************
Устанавливаем права доступа на данные папки 777, на файлы внутри этих папок (кроме .htaccess) 666:
- ajax
- ajax/html
- cache
- cache/filecache
- cache/filecache/bb_cache
- cache/filecache/bb_cap_sid
- cache/filecache/bb_login_err
- cache/filecache/bb_poll_data
- cache/filecache/datastore
- cache/filecache/session_cache
- cache/filecache/tr_cache
- files
- files/thumbs
- images
- images/avatars
- images/captcha
- images/logo
- images/ranks
- images/smiles
- log
@ -47,7 +38,6 @@ magic_quotes_gpc = Off
************************************
php5-tidy
php5-sqlite
************************************
** Необходимый запуск cron.php **

View file

@ -194,25 +194,25 @@ elseif (isset($_GET['pane']) && $_GET['pane'] == 'right')
if( count($onlinerow_reg) )
{
$registered_users = 0;
$registered_users = $hidden_users = 0;
for($i=0, $cnt=count($onlinerow_reg); $i < $cnt; $i++)
{
if( !inarray($onlinerow_reg[$i]['user_id'], $reg_userid_ary) )
if (!in_array($onlinerow_reg[$i]['user_id'], $reg_userid_ary))
{
$reg_userid_ary[] = $onlinerow_reg[$i]['user_id'];
$username = $onlinerow_reg[$i]['username'];
if( !bf($onlinerow_reg[$i]['user_opt'], 'user_opt', 'allow_viewonline'))
if (bf($onlinerow_reg[$i]['user_opt'], 'user_opt', 'user_viewonline'))
{
$registered_users++;
$hidden = FALSE;
$hidden_users++;
$hidden = TRUE;
}
else
{
@$hidden_users++;
$hidden = TRUE;
$registered_users++;
$hidden = FALSE;
}
$row_class = 'row1';

View file

@ -87,7 +87,6 @@ class ajax_common
'gen_passkey' => array('user'),
'change_torrent' => array('user'),
'change_tor_status' => array('user'),
'view_profile' => array('user'),
'view_post' => array('guest'),
'view_torrent' => array('guest'),
@ -396,11 +395,6 @@ class ajax_common
require(AJAX_DIR . 'index_data.php');
}
function view_profile()
{
require(AJAX_DIR . 'view_profile.php');
}
function avatar()
{
require(AJAX_DIR . 'avatar.php');

View file

@ -65,7 +65,7 @@ switch($mode)
if (empty($this->request['confirmed']))
{
$msg = $lang['TOR_STATUS_OF'] ." {$lang['TOR_STATUS_NAME'][$tor['tor_status']]}\n\n";
$msg .= ($username = get_username($tor['checked_user_id'])) ? $lang['TOR_STATUS_CHANGED'] . html_entity_decode($username) .", ". delta_time($tor['checked_time']) . $lang['BACK'] ."\n\n" : "";
$msg .= ($username = get_username($tor['checked_user_id'])) ? $lang['TOR_STATUS_CHANGED'] . html_entity_decode($username) .", ". delta_time($tor['checked_time']) . $lang['TOR_BACK'] ."\n\n" : "";
$msg .= $lang['PROCEED'] .'?';
$this->prompt_for_confirm($msg);
}
@ -73,7 +73,7 @@ switch($mode)
change_tor_status($attach_id, $new_status);
$this->response['status'] = $bb_cfg['tor_icons'][$new_status] .' <b> '. $lang['TOR_STATUS_NAME'][$new_status]. '</b> &middot; '. profile_url($userdata) .' &middot; <i>'. delta_time(TIMENOW) . $lang['BACK']. '</i>';
$this->response['status'] = $bb_cfg['tor_icons'][$new_status] .' <b> '. $lang['TOR_STATUS_NAME'][$new_status]. '</b> &middot; '. profile_url($userdata) .' &middot; <i>'. delta_time(TIMENOW) . $lang['TOR_BACK']. '</i>';
if ($bb_cfg['tor_comment'] && (($comment && $comment != $lang['COMMENT']) || in_array($new_status, $bb_cfg['tor_reply'])))
{

View file

@ -57,43 +57,28 @@ switch ($field)
case 'user_birthday':
if (!$bb_cfg['birthday_enabled']) $this->ajax_die($lang['MODULE_OFF']);
$data = explode('-', $value);
$b_day = (isset($data[2])) ? (int) $data[2] : '';
$b_md = (isset($data[1])) ? (int) $data[1] : '';
$b_year = (isset($data[0])) ? (int) $data[0] : '';
$birthday_date = date_parse($value);
if ($b_day || $b_md || $b_year)
if (!empty($birthday_date['year']))
{
if ((bb_date(TIMENOW, 'Y', 'false') - $b_year) > $bb_cfg['birthday_max_age'])
{
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_HIGH'], $bb_cfg['birthday_max_age']));
}
elseif ((bb_date(TIMENOW, 'Y', 'false') - $b_year) < $bb_cfg['birthday_min_age'])
{
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_LOW'], $bb_cfg['birthday_min_age']));
}
if (!checkdate($b_md, $b_day, $b_year))
if (strtotime($value) >= TIMENOW)
{
$this->ajax_die($lang['WRONG_BIRTHDAY_FORMAT']);
}
else
elseif (bb_date(TIMENOW, 'Y', 'false') - $birthday_date['year'] > $bb_cfg['birthday_max_age'])
{
$value = "$b_year-$b_md-$b_day";
$next_birthday_greeting = (date('md') < $b_md . (($b_day <= 9) ? '0' : '') . $b_day) ? date('Y') : date('Y')+1;
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_HIGH'], $bb_cfg['birthday_max_age']));
}
}
else
elseif (bb_date(TIMENOW, 'Y', 'false') - $birthday_date['year'] < $bb_cfg['birthday_min_age'])
{
$value = '';
$next_birthday_greeting = 0;
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_LOW'], $bb_cfg['birthday_min_age']));
}
}
DB()->query("UPDATE $table SET user_next_birthday_greeting = $next_birthday_greeting WHERE user_id = $user_id LIMIT 1");
$this->response['new_value'] = $this->request['value'];
break;
case 'user_icq':
$value = (int) $value;
if ($value && !preg_match('#^\d{6,15}$#', $value))
{
$this->ajax_die($lang['ICQ_ERROR']);
@ -131,7 +116,7 @@ switch ($field)
{
$this->ajax_die($lang['INVALID_DATE'] . $this->request['value']);
}
$this->response['new_value'] = bb_date($value);
$this->response['new_value'] = bb_date($value, 'Y-m-d H:i', 'false');
break;
case 'u_up_total':

View file

@ -19,7 +19,7 @@ switch($mode)
{
foreach($stats['birthday_week_list'] as $week)
{
$html[] = profile_url($week) .' <span class="small">('. birthday_age($week['age']) .')</span>';
$html[] = profile_url($week) .' <span class="small">('. birthday_age($week['user_birthday']) .')</span>';
}
$html = sprintf($lang['BIRTHDAY_WEEK'], $bb_cfg['birthday_check_day'], join(', ', $html));
}
@ -36,7 +36,7 @@ switch($mode)
{
foreach($stats['birthday_today_list'] as $today)
{
$html[] = profile_url($today) .' <span class="small">('. birthday_age($today['age'], 1) .')</span>';
$html[] = profile_url($today) .' <span class="small">('. birthday_age($today['user_birthday']) .')</span>';
}
$html = $lang['BIRTHDAY_TODAY'] . join(', ', $html);
}

View file

@ -10,20 +10,13 @@ switch ($mode)
{
case 'clear_cache':
$gc_cache = array(
'bb_cache',
'tr_cache',
'session_cache',
'bb_cap_sid',
'bb_login_err',
'bb_poll_data',
);
// foreach ($bb_cfg['cache']['engines'] as $cache_name => $cache_val)
foreach ($gc_cache as $cache_name)
foreach ($bb_cfg['cache']['engines'] as $cache_name => $cache_val)
{
if (!in_array('db_sqlite', $cache_val))
{
CACHE($cache_name)->rm();
}
}
$this->response['cache_html'] = '<span class="seed bold">'. $lang['ALL_CACHE_CLEARED'] .'</span>';

View file

@ -67,7 +67,7 @@ switch($this->request['type'])
break;
case 'reply';
if (bf($userdata['user_opt'], 'user_opt', 'allow_post'))
if (bf($userdata['user_opt'], 'user_opt', 'dis_post'))
{
$this->ajax_die(strip_tags($lang['RULES_REPLY_CANNOT']));
}
@ -113,7 +113,7 @@ switch($this->request['type'])
case 'edit':
case 'editor':
if (bf($userdata['user_opt'], 'user_opt', 'allow_post_edit'))
if (bf($userdata['user_opt'], 'user_opt', 'dis_post_edit'))
{
$this->ajax_die($lang['POST_EDIT_CANNOT']);
}
@ -226,7 +226,7 @@ switch($this->request['type'])
$this->ajax_die('empty topic_id');
}
if (bf($userdata['user_opt'], 'user_opt', 'allow_post'))
if (bf($userdata['user_opt'], 'user_opt', 'dis_post'))
{
$this->ajax_die(strip_tags($lang['RULES_REPLY_CANNOT']));
}

View file

@ -1,167 +0,0 @@
<?php
if (!defined('IN_AJAX')) die(basename(__FILE__));
global $user, $bb_cfg, $tr_cfg, $lang, $userdata;
$mode = (string) $this->request['mode'];
switch ($mode)
{
case 'active_torrents':
$user_id = (int) $this->request['user_id'];
if (!$user_id) $this->ajax_die($lang['NO_USER_ID_SPECIFIED']);
$user_info = get_userdata($user_id);
if (!bf($user_info['user_opt'], 'user_opt', 'allow_dls') && !IS_AM && $user_id != $userdata['user_id']) $this->ajax_die($lang['CUR_ACTIVE_DLS_DISALLOWED']);
$excluded_forums_csv = $user->get_excluded_forums(AUTH_VIEW);
$not_auth_forums_sql = ($excluded_forums_csv) ? "
AND f.forum_id NOT IN($excluded_forums_csv)
AND f.forum_parent NOT IN($excluded_forums_csv)
" : '';
$dl = '&nbsp;';
if(IS_AM || $user_id == $userdata['user_id'])
{
$dl_link = "search.php?dlu=$user_id&amp;";
$dl = '
<a href="'. $dl_link .'dlw=1" class="med">'. $lang['SEARCH_DL_WILL_DOWNLOADS'] .'</a>
::
<a href="'. $dl_link .'dld=1" class="med">'. $lang['SEARCH_DL_DOWN'] .'</a>
::
<a href="'. $dl_link .'dlc=1" class="med">'. $lang['SEARCH_DL_COMPLETE'] .'</a>
::
<a href="'. $dl_link .'dla=1" class="med">'. $lang['SEARCH_DL_CANCEL'] .'</a>
';
}
$sql = "
SELECT
f.forum_id, f.forum_name,
t.topic_title,
tor.tor_type, tor.size,
trs.seeders, trs.leechers,
tr.*
FROM ". BB_FORUMS ." f, ". BB_TOPICS ." t, ". BB_BT_TRACKER ." tr, ". BB_BT_TORRENTS ." tor, ". BB_BT_TRACKER_SNAP ." trs
WHERE tr.user_id = $user_id
AND tr.topic_id = tor.topic_id
AND trs.topic_id = tor.topic_id
AND tor.topic_id = t.topic_id
AND t.forum_id = f.forum_id
$not_auth_forums_sql
GROUP BY tr.topic_id
ORDER BY tr.releaser DESC, tr.seeder DESC, f.forum_name ASC, t.topic_title ASC";
if (!$result = DB()->sql_query($sql))
{
$this->ajax_die('Could not query users torrent profile information', '', __LINE__, __FILE__, $sql);
}
$r = $s = $l = $releasing_count = $seeding_count = $leeching_count = 0;
if ($rowset = DB()->sql_fetchrowset($result))
{
$html = '';
for ($i=0; $i<count($rowset); $i++)
{
$is_gold = '';
if ($tr_cfg['gold_silver_enabled'])
{
if ($rowset[$i]['tor_type'] == TOR_TYPE_GOLD)
{
$is_gold = '<img src="images/tor_gold.gif" width="16" height="15" title="'.$lang['GOLD'].'" />&nbsp;';
}
elseif ($rowset[$i]['tor_type'] == TOR_TYPE_SILVER)
{
$is_gold = '<img src="images/tor_silver.gif" width="16" height="15" title="'.$lang['SILVER'].'" />&nbsp;';
}
}
$topic_title = ($rowset[$i]['update_time']) ? wbr($rowset[$i]['topic_title']) : '<s>'. wbr($rowset[$i]['topic_title']) .'</s>';
$topic_seeders = '<span class="seedmed"><b>'. $rowset[$i]['seeders'] .'</b></span>';
$topic_leechers = '<span class="leechmed"><b>'. $rowset[$i]['leechers'] .'</b></span>';
$topic_speed_up = ($rowset[$i]['speed_up']) ? humn_size($rowset[$i]['speed_up'], 0, 'KB') .'/s' : '-';
$compl_perc_html = '';
$colspan = 'colspan="2" ';
if ($rowset[$i]['releaser'])
{
$r = $r + $rowset[$i]['size'];
$type = $type = '<td class="row1 tCenter dlComplete lh_150 pad_4 nowrap">'. $lang['RELEASER'] .'</td>';
$releasing_count++;
}
elseif ($rowset[$i]['seeder'])
{
$s = $s + $rowset[$i]['size'];
$type = $type = '<td class="row1 tCenter dlComplete lh_150 pad_4 nowrap">'. $lang['SEEDER'] .'</td>';
$seeding_count++;
}
else
{
$l = $l + $rowset[$i]['size'];
$type = '<td class="row1 tCenter dlDown lh_150 pad_4 nowrap">'. $lang['LEECHER'] .'</td>';
$compl_size = ($rowset[$i]['remain'] && $rowset[$i]['size'] && $rowset[$i]['size'] > $rowset[$i]['remain']) ? ($rowset[$i]['size'] - $rowset[$i]['remain']) : 0;
$compl_perc = ($compl_size) ? floor($compl_size * 100 / $rowset[$i]['size']) : 0;
$colspan = '';
$compl_perc_html = '<td class="tCenter med"><b>'. $compl_perc .'%</b></td>';
$leeching_count++;
}
$html .= '
<tr class="row1">
'. $type .'
<td class="tCenter pad_4"><a class="gen" href="viewforum.php?'. POST_FORUM_URL .'='. $rowset[$i]['forum_id'] .'">'. htmlCHR($rowset[$i]['forum_name']) .'</a></td>
<td class="pad_4"><a class="med" href="viewtopic.php?'. POST_TOPIC_URL .'='. $rowset[$i]['topic_id'] .'&amp;spmode=full#leechers">'. $is_gold .'<b>'. $topic_title .'</b></a></td>
'. $compl_perc_html .'
<td '. $colspan .'class="tCenter pad_4">
<div>
<p>'. $topic_seeders .'<span class="med"> | </span>'. $topic_leechers .'</p>
<p style="padding-top: 2px" class="seedsmall">'. $topic_speed_up .'</p>
</div>
</td>
</tr>
';
}
$releasing_count = ($releasing_count) ? $releasing_count .' ('. humn_size($r) .')' : 0;
$seeding_count = ($seeding_count) ? $seeding_count .' ('. humn_size($s) .')' : 0;
$leeching_count = ($leeching_count) ? $leeching_count .' ('. humn_size($l) .')' : 0;
}
else
{
$html = '
<tr class="row1">
<td colspan="4" class="tCenter pad_4">'. $lang['NONE'] .'</td>
</tr>
';
}
$this->response['active_torrents'] = '
<a name="torrent"></a>
<div class="spacer_8"></div>
<h1 class="pagetitle tCenter">'. $lang['CUR_ACTIVE_DLS'] .'</h1>
<div class="bold tCenter">'. $lang['RELEASING'] .': <span class="dlComplete">'. $releasing_count .'</span> :: '. $lang['SEEDING'] .': <span class="dlComplete">' . $seeding_count .'</span> :: '. $lang['LEECHING'] .': <span class="dlDown">' . $leeching_count .'</span></div>
<div class="spacer_8"></div>
<div class="fon2">
<table class="forumline">
<tr>
<th><b class="tbs-text">'. $lang['TYPE'] .'</b></th>
<th><b class="tbs-text">'. $lang['FORUM'] .'</b></th>
<th><b class="tbs-text">'. $lang['TOPICS'] .'</b></th>
<th colspan="2"><b class="tbs-text">'. $lang['TORRENT'] .'</b></th>
</tr>
'. $html .'
<tr class="row2 tCenter">
<td class="catBottom pad_6" colspan="5">
'. $dl .'
</td>
</tr>
</table>
</div>
';
break;
}

View file

@ -219,7 +219,7 @@ if ($tor_reged && $tor_info)
'TOR_FROZEN' => (!IS_AM) ? (isset($bb_cfg['tor_frozen'][$tor_info['tor_status']]) && !(isset($bb_cfg['tor_frozen_author_download'][$tor_info['tor_status']]) && $userdata['user_id'] == $tor_info['poster_id'])) ? true : '' : '',
'TOR_STATUS_TEXT' => $lang['TOR_STATUS_NAME'][$tor_info['tor_status']],
'TOR_STATUS_ICON' => $bb_cfg['tor_icons'][$tor_info['tor_status']],
'TOR_STATUS_BY' => ($tor_info['checked_user_id'] && $is_auth['auth_mod']) ? ('<span title="'. bb_date($tor_info['checked_time'], 'd-M-Y H:i') .'"> &middot; '. profile_url($tor_info) .' &middot; <i>'. delta_time($tor_info['checked_time']) . $lang['TOR_BACK'] .'</i></span>') : '',
'TOR_STATUS_BY' => ($tor_info['checked_user_id'] && $is_auth['auth_mod']) ? ('<span title="'. bb_date($tor_info['checked_time']) .'"> &middot; '. profile_url($tor_info) .' &middot; <i>'. delta_time($tor_info['checked_time']) . $lang['TOR_BACK'] .'</i></span>') : '',
'TOR_STATUS_SELECT' => build_select('sel_status', array_flip($lang['TOR_STATUS_NAME']), TOR_APPROVED),
'TOR_STATUS_REPLY' => $bb_cfg['tor_comment'] && !IS_GUEST && in_array($tor_info['tor_status'], $bb_cfg['tor_reply']) && $userdata['user_id'] == $tor_info['poster_id'] && $t_data['topic_status'] != TOPIC_LOCKED,
//end torrent status mod
@ -599,5 +599,5 @@ $template->assign_vars(array(
'SEED_EXIST' => ($seeders || defined('SEEDER_EXIST')),
'LEECH_EXIST' => ($leechers || defined('LEECHER_EXIST')),
'TOR_HELP_LINKS' => $bb_cfg['tor_help_links'],
'CALL_SEED' => ($bb_cfg['callseed'] && $tor_reged && !isset($bb_cfg['tor_no_tor_act'][$tor_info['tor_status']])),
'CALL_SEED' => ($bb_cfg['callseed'] && $tor_reged && !isset($bb_cfg['tor_no_tor_act'][$tor_info['tor_status']]) && $seed_count < 3 && $tor_info['call_seed_time'] < (TIMENOW - 86400)),
));

View file

@ -8,134 +8,87 @@ require(BB_ROOT . 'common.php');
// Init userdata
$user->session_start(array('req_login' => true));
set_die_append_msg();
require(INC_DIR .'bbcode.php');
function topic_info($topic_id)
{
$sql = " SELECT tor.poster_id, tor.forum_id, tor.attach_id, t.topic_title, f.forum_name
FROM ". BB_BT_TORRENTS ." tor , ". BB_TOPICS ." t, ". BB_FORUMS ." f
WHERE tor.topic_id = $topic_id
AND t.topic_id = tor.topic_id
AND f.forum_id = tor.forum_id
LIMIT 1";
$row = DB()->fetch_row($sql);
$t = array(
"topic_title" => $row['topic_title'],
"forum_title" => $row['forum_name'],
"attach_id" => $row['attach_id'],
"topic_poster" => $row['poster_id'],
"forum_id" => $row['forum_id'],
);
return $t;
}
function call_seed($topic_id, $t_info, $to_user_id)
{
global $userdata, $lang, $msg_error;
$sql = "UPDATE ". BB_BT_TORRENTS ." SET call_seed_time=". TIMENOW ." WHERE topic_id = $topic_id";
if (!DB()->sql_query($sql)) {
$msg_error = "TIME";
return;
}
$subj = sprintf ($lang['CALLSEED_SUBJ'], $t_info['topic_title']);
$text = sprintf ($lang['CALLSEED_TEXT'], $topic_id, $t_info['forum_title'], $t_info['topic_title'], $t_info['attach_id']);
$subj = DB()->escape($subj);
$text = DB()->escape($text);
send_pm($to_user_id, $subj, $text, $userdata['user_id']);
}
$u_id = array();
$topic_id = request_var('t', 0);
$t_info = topic_info($topic_id);
$forum_id = $t_info['forum_id'];
$msg_error = "OK";
$sql = "SELECT call_seed_time FROM ". BB_BT_TORRENTS ." WHERE topic_id = $topic_id LIMIT 1";
if($row = DB()->fetch_row($sql))
{
$pr_time = $row['call_seed_time'];
$pause = 86400; //1 day
$cp = TIMENOW - $pr_time;
$pcp = $pause - $cp;
if($cp <= $pause)
{
$cur_pause_hour = floor($pcp/3600);
$cur_pause_min = floor($pcp/60);
$msg_error = "SPAM";
}
}
else
{
message_die(GENERAL_ERROR, 'Topic does not callseed time', '', __LINE__, __FILE__);
}
// check have_seed
if ($msg_error == "OK")
{
$sql = "SELECT seeders, leechers FROM ". BB_BT_TRACKER_SNAP ." WHERE topic_id = $topic_id LIMIT 1";
$row = DB()->fetch_row($sql);
if ($row['seeders'] <= 2)
{
$sql = "SELECT user_id FROM ". BB_BT_DLSTATUS ." WHERE topic_id = $topic_id AND user_id NOT IN ({$userdata['user_id']}, ". EXCLUDED_USERS_CSV .")";
foreach(DB()->fetch_rowset($sql) as $row)
{
$u_id[] = $row['user_id'];
}
if (!in_array($t_info['topic_poster'], $u_id))
{
$u_id[] = $t_info['topic_poster'];
}
array_unique($u_id);
foreach($u_id as $i=>$user_id)
{
if ($msg_error != "OK") break;
call_seed($topic_id, $t_info, $user_id);
}
}
else
{
$seeders = $row['seeders'];
$leechers = $row['leechers'];
$msg_error = "HAVE_SEED";
}
}
$msg = '';
meta_refresh(TOPIC_URL . $topic_id, 8);
switch($msg_error) {
case "OK":
$msg .= $lang['CALLSEED_MSG_OK'];
break;
case "SPAM":
$msg .= sprintf ($lang['CALLSEED_MSG_SPAM'], $cur_pause_hour, $cur_pause_min);
break;
case "MSG":
$msg .= $lang['CALLSEED_MSG_MSG'];
break;
case "MSG_TEXT":
$msg .= $lang['CALLSEED_MSG_MSG_TEXT'];
break;
case "POPUP":
$msg .= $lang['CALLSEED_MSG_POPUP'];
break;
case "TIME":
$msg .= $lang['CALLSEED_MSG_TIME'];
break;
case "HAVE_SEED":
$msg .= sprintf ($lang['CALLSEED_HAVE_SEED'], $seeders, $leechers);
break;
}
$topic_id = (int) request_var('t', 0);
$t_data = topic_info($topic_id);
$forum_id = $t_data['forum_id'];
set_die_append_msg($forum_id, $topic_id);
bb_die($msg);
if ($t_data['seeders'] > 2)
{
bb_die(sprintf($lang['CALLSEED_HAVE_SEED'], $t_data['seeders']));
}
elseif ($t_data['call_seed_time'] > (TIMENOW - 86400))
{
$time_left = delta_time($t_data['call_seed_time'] + 86400, TIMENOW, 'days');
bb_die(sprintf($lang['CALLSEED_MSG_SPAM'], $time_left));
}
$ban_user_id = array();
$sql = DB()->fetch_rowset("SELECT ban_userid FROM ". BB_BANLIST ." WHERE ban_userid != 0");
foreach ($sql as $row)
{
$ban_user_id[] = ','. $row['ban_userid'];
}
$ban_user_id = join('', $ban_user_id);
$user_list = DB()->fetch_rowset("
SELECT DISTINCT dl.user_id, u.user_opt, tr.user_id as active_dl
FROM ". BB_BT_DLSTATUS ." dl
LEFT JOIN ". BB_USERS ." u ON(u.user_id = dl.user_id)
LEFT JOIN ". BB_BT_TRACKER ." tr ON(tr.user_id = dl.user_id)
WHERE dl.topic_id = $topic_id
AND dl.user_status IN (". DL_STATUS_COMPLETE.", ". DL_STATUS_DOWN.")
AND dl.user_id NOT IN ({$userdata['user_id']}, ". EXCLUDED_USERS_CSV . $ban_user_id .")
AND u.user_active = 1
GROUP BY dl.user_id
");
$subject = sprintf($lang['CALLSEED_SUBJECT'], $t_data['topic_title']);
$message = sprintf($lang['CALLSEED_TEXT'], make_url(TOPIC_URL . $topic_id), $t_data['topic_title'], make_url(DOWNLOAD_URL . $t_data['attach_id']));
if ($user_list)
{
foreach ($user_list as $row)
{
if (!empty($row['active_dl'])) continue;
if (bf($row['user_opt'], 'user_opt', 'user_callseed'))
{
send_pm($row['user_id'], $subject, $message, BOT_UID);
}
}
}
else
{
send_pm($t_data['poster_id'], $subject, $message, BOT_UID);
}
DB()->query("UPDATE ". BB_BT_TORRENTS ." SET call_seed_time = ". TIMENOW ." WHERE topic_id = $topic_id LIMIT 1");
meta_refresh(TOPIC_URL . $topic_id);
bb_die($lang['CALLSEED_MSG_OK']);
function topic_info ($topic_id)
{
global $lang;
$sql = "
SELECT
tor.poster_id, tor.forum_id, tor.attach_id, tor.call_seed_time,
t.topic_title, sn.seeders
FROM ". BB_BT_TORRENTS ." tor
LEFT JOIN ". BB_TOPICS ." t USING(topic_id)
LEFT JOIN ". BB_BT_TRACKER_SNAP ." sn USING(topic_id)
WHERE tor.topic_id = $topic_id
";
if (!$torrent = DB()->fetch_row($sql))
{
message_die(GENERAL_ERROR, $lang['TOPIC_POST_NOT_EXIST']);
}
return $torrent;
}

View file

@ -14,6 +14,8 @@ if (empty($_SERVER['SERVER_NAME'])) $_SERVER['SERVER_NAME'] = '';
if (!defined('BB_ROOT')) define('BB_ROOT', './');
if (!defined('IN_FORUM') && !defined('IN_TRACKER')) define('IN_FORUM', true);
header('X-Frame-Options: SAMEORIGIN');
// Get initial config
require(BB_ROOT .'config.php');

View file

@ -55,8 +55,8 @@ $domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $do
// Increase number of revision after update
$bb_cfg['tp_version'] = '2.6 (RC)';
$bb_cfg['tp_release_date'] = '18-06-2014';
$bb_cfg['tp_release_state'] = 'R588';
$bb_cfg['tp_release_date'] = '19-06-2014';
$bb_cfg['tp_release_state'] = 'R589';
// Database
$charset = 'utf8';
@ -111,7 +111,6 @@ $bb_cfg['cache']['engines'] = array(
'bb_login_err' => array('filecache', array()),
'bb_poll_data' => array('filecache', array()),
);
// Datastore
// Available datastore types: memcache, sqlite, redis, eaccelerator, apc, xcache (default filecache)
$bb_cfg['datastore_type'] = 'filecache';
@ -556,7 +555,7 @@ $bb_cfg['gen_forums_allowed_ext'] = array('zip', 'rar'); // для о
$bb_cfg['avatars'] = array(
'allowed_ext' => array('gif','jpg','jpeg','png'), // разрешенные форматы файлов
'bot_avatar' => 'gallery/bot.gif', // аватара бота
'max_size' => 512*1024, // размер аватары в байтах
'max_size' => 50*1024, // размер аватары в байтах
'max_height' => 100, // высота аватара в px
'max_width' => 100, // ширина аватара в px
'no_avatar' => 'gallery/noavatar.png', // дефолтная аватара

View file

@ -1,3 +1,5 @@
php_flag engine off
RemoveHandler .php .php5 .php4 .php3 .phtml .pl .asp
AddType text/plain .php .php .htm .html .phtml .pl .asp
Options -Indexes

View file

@ -21,7 +21,7 @@ function generate_user_info(&$row, $date_format, $group_mod, &$from, &$posts, &$
$posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0;
$pm = ($bb_cfg['text_buttons']) ? '<a class="txtb" href="'. (PM_URL . "?mode=post&amp;". POST_USERS_URL ."=".$row['user_id']) .'">'. $lang['SEND_PM_TXTB'] .'</a>' : '<a href="' . (PM_URL . "?mode=post&amp;". POST_USERS_URL ."=".$row['user_id']) .'"><img src="' . $images['icon_pm'] . '" alt="' . $lang['SEND_PRIVATE_MESSAGE'] . '" title="' . $lang['SEND_PRIVATE_MESSAGE'] . '" border="0" /></a>';
if (bf($row['user_opt'], 'user_opt', 'viewemail') || $group_mod)
if (bf($row['user_opt'], 'user_opt', 'user_viewemail') || $group_mod)
{
$email_uri = ($bb_cfg['board_email_form']) ? ("profile.php?mode=email&amp;". POST_USERS_URL ."=".$row['user_id']) : 'mailto:'. $row['user_email'];
$email = '<a class="editable" href="'. $email_uri .'">'. $row['user_email'] .'</a>';

0
upload/images/index.html Normal file
View file

View file

@ -2,16 +2,9 @@
if (!defined('BB_ROOT')) die(basename(__FILE__));
$gc_cache = array(
'bb_cache',
'tr_cache',
'session_cache',
'bb_cap_sid',
'bb_login_err',
'bb_poll_data',
);
global $cron_runtime_log
foreach ($gc_cache as $cache_name)
foreach ($bb_cfg['cache']['engines'] as $cache_name => $cache_val)
{
if (method_exists(CACHE($cache_name), 'gc'))
{

View file

@ -2,45 +2,6 @@
if (!defined('BB_ROOT')) die(basename(__FILE__));
define('BUF_DLSTATUS_TABLE', 'tmp_buf_dlstatus');
// Move new dl-status records to main table
DB()->query("
CREATE TEMPORARY TABLE ". BUF_DLSTATUS_TABLE ." (
user_id mediumint(9) NOT NULL default '0',
topic_id mediumint(8) unsigned NOT NULL default '0',
user_status tinyint(1) NOT NULL default '0',
PRIMARY KEY (user_id, topic_id)
) ENGINE = MyISAM
");
DB()->query("
INSERT INTO ". BUF_DLSTATUS_TABLE ."
(user_id, topic_id, user_status)
SELECT
user_id, topic_id, user_status
FROM
". BB_BT_DLSTATUS ."
WHERE
last_modified_dlstatus < DATE_SUB(NOW(), INTERVAL 1 DAY)
");
DB()->query("
REPLACE INTO ". BB_BT_DLSTATUS ."
(user_id, topic_id, user_status)
SELECT
user_id, topic_id, user_status
FROM ". BUF_DLSTATUS_TABLE ."
");
DB()->query("
DELETE dl
FROM ". BUF_DLSTATUS_TABLE ." buf
INNER JOIN ". BB_BT_DLSTATUS ." dl USING(user_id, topic_id)
");
DB()->query("DROP TEMPORARY TABLE ". BUF_DLSTATUS_TABLE);
// Delete staled dl-status records
$keeping_dlstat = array(
DL_STATUS_WILL => (int) $bb_cfg['dl_will_days_keep'],

View file

@ -38,52 +38,53 @@ if ($bb_cfg['tor_stats'])
// gender stat
if ($bb_cfg['gender'])
{
$sql = DB()->fetch_rowset("SELECT user_gender FROM ". BB_USERS ." WHERE user_id NOT IN(". EXCLUDED_USERS_CSV .")");
$data['male'] = $data['female'] = $data['unselect'] = 0;
$male = DB()->fetch_row("SELECT COUNT(user_id) AS male FROM ". BB_USERS ." WHERE user_gender = ". MALE ." AND user_id NOT IN(". EXCLUDED_USERS_CSV .")");
$female = DB()->fetch_row("SELECT COUNT(user_id) AS female FROM ". BB_USERS ." WHERE user_gender = ". FEMALE ." AND user_id NOT IN(". EXCLUDED_USERS_CSV .")");
$unselect = DB()->fetch_row("SELECT COUNT(user_id) AS unselect FROM ". BB_USERS ." WHERE user_gender = 0 AND user_id NOT IN(". EXCLUDED_USERS_CSV .")");
foreach ($sql as $row)
{
if($row['user_gender'] == MALE) $data['male']++;
if($row['user_gender'] == FEMALE) $data['female']++;
if(!$row['user_gender']) $data['unselect']++;
}
$data['male'] = $male['male'];
$data['female'] = $female['female'];
$data['unselect'] = $unselect['unselect'];
}
// birthday stat
if ($bb_cfg['birthday_check_day'] && $bb_cfg['birthday_enabled'])
{
$sql = DB()->fetch_rowset("SELECT user_id, username, user_birthday, user_rank FROM ". BB_USERS ." WHERE user_id NOT IN(". EXCLUDED_USERS_CSV .") AND user_birthday != '0000-00-00' AND user_active = 1 ORDER BY user_level DESC, username");
$this_year = bb_date(TIMENOW, 'Y', 'false');
$date_today = bb_date(TIMENOW, 'Ymd', 'false');
$date_forward = bb_date(TIMENOW + ($bb_cfg['birthday_check_day']*86400), 'Ymd', 'false');
$sql = DB()->fetch_rowset("SELECT user_id, username, user_rank , user_birthday
FROM ". BB_USERS ."
WHERE user_id NOT IN(". EXCLUDED_USERS_CSV .")
AND user_birthday IS not NULL
AND user_active = 1
ORDER BY user_level DESC, username
");
$date_today = bb_date(TIMENOW, 'md', 'false');
$date_forward = bb_date(TIMENOW + ($bb_cfg['birthday_check_day']*86400), 'md', 'false');
$birthday_today_list = $birthday_week_list = array();
foreach ($sql as $row)
{
$user_birthday = date('md', strtotime($row['user_birthday']));
$user_birthday2 = $this_year . $user_birthday;
if ($user_birthday2 < $date_today) $user_birthday2 += 10000;
if ($user_birthday2 > $date_today && $user_birthday2 <= $date_forward)
if ($user_birthday > $date_today && $user_birthday <= $date_forward)
{
// user are having birthday within the next days
$birthday_week_list[] = array(
'user_id' => $row['user_id'],
'username' => $row['username'],
'user_rank' => $row['user_rank'],
'age' => $row['user_birthday'],
'user_birthday' => $row['user_birthday'],
);
}
elseif ($user_birthday2 == $date_today)
elseif ($user_birthday == $date_today)
{
//user have birthday today
$birthday_today_list[] = array(
'user_id' => $row['user_id'],
'username' => $row['username'],
'user_rank' => $row['user_rank'],
'age' => $row['user_birthday'],
'user_birthday' => $row['user_birthday'],
);
}
}

View file

@ -127,7 +127,7 @@ class ads_common
global $bb_cfg;
$this->ad_blocks =& $bb_cfg['ad_blocks'];
$this->active_ads = !empty($bb_cfg['active_ads']) ? unserialize($bb_cfg['active_ads']) : array();
$this->active_ads = !empty($bb_cfg['active_ads']) ? @unserialize($bb_cfg['active_ads']) : array();
}
/**
@ -258,21 +258,23 @@ $bf['forum_perm'] = array(
);
$bf['user_opt'] = array(
'viewemail' => 0, // Показывать e-mail
'allow_sig' => 1, // Запрет на подпись
'allow_avatar' => 2, // Запрет на аватар
'allow_pm' => 3, // Запрет на отправку ЛС
'allow_viewonline' => 4, // Скрывать пребывание пользователя
'notify' => 5, // Сообщать об ответах в отслеживаемых темах
'notify_pm' => 6, // Сообщать о новых ЛС
'allow_passkey' => 7, // Запрет на добавление passkey, он же запрет на скачивание торрентов
'hide_porn_forums' => 8, // Скрывать pron форумы
'allow_gallery' => 9, // Неиспользуемое (запрет использования галереи)
'hide_ads' => 10, // Запрет на показ рекламы
'allow_topic' => 11, // Запрет на создание новых тем
'allow_post' => 12, // Запрет на отправку сообщений
'allow_post_edit' => 13, // Запрет на редактирование сообщений
'allow_dls' => 14, // Запрет на список текущих закачек в профиле
# 'dis_opt_name' => ЗАПРЕТЫ используемые администраторами для пользователей
# 'user_opt_name' => НАСТРОЙКИ используемые пользователями
'user_viewemail' => 0, // Показывать e-mail
'dis_sig' => 1, // Запрет на подпись
'dis_avatar' => 2, // Запрет на аватар
'dis_pm' => 3, // Запрет на отправку ЛС
'user_viewonline' => 4, // Скрывать пребывание пользователя
'user_notify' => 5, // Сообщать об ответах в отслеживаемых темах
'user_notify_pm' => 6, // Сообщать о новых ЛС
'dis_passkey' => 7, // Запрет на добавление passkey, он же запрет на скачивание торрентов
'user_porn_forums' => 8, // Скрывать pron форумы
'user_callseed' => 9, // Позвать скачавших
'user_hide_ads' => 10, // Запрет на показ рекламы
'dis_topic' => 11, // Запрет на создание новых тем
'dis_post' => 12, // Запрет на отправку сообщений
'dis_post_edit' => 13, // Запрет на редактирование сообщений
'user_dls' => 14, // Скрывать список текущих закачек в профиле
);
function bit2dec ($bit_num)
@ -1618,90 +1620,13 @@ function bb_date ($gmepoch, $format = false, $tz = null)
return ($bb_cfg['translate_dates']) ? strtr(strtoupper($date), $lang['DATETIME']) : $date;
}
// Birthday
// Add function mkrealdate for Birthday MOD
// the originate php "mktime()", does not work proberly on all OS, especially when going back in time
// before year 1970 (year 0), this function "mkrealtime()", has a mutch larger valid date range,
// from 1901 - 2099. it returns a "like" UNIX timestamp divided by 86400, so
// calculation from the originate php date and mktime is easy.
// mkrealdate, returns the number of day (with sign) from 1.1.1970.
function mkrealdate ($day, $month, $birth_year)
{
// define epoch
$epoch = 0;
// range check months
if ($month < 1 || $month > 12) return "error";
// range check days
switch ($month)
{
case 1: if ($day > 31) return "error"; break;
case 2: if ($day > 29) return "error";
$epoch = $epoch+31; break;
case 3: if ($day > 31) return "error";
$epoch = $epoch+59; break;
case 4: if ($day > 30) return "error" ;
$epoch = $epoch+90; break;
case 5: if ($day > 31) return "error";
$epoch = $epoch+120; break;
case 6: if ($day > 30) return "error";
$epoch = $epoch+151; break;
case 7: if ($day > 31) return "error";
$epoch = $epoch+181; break;
case 8: if ($day > 31) return "error";
$epoch = $epoch+212; break;
case 9: if ($day > 30) return "error";
$epoch = $epoch+243; break;
case 10: if ($day > 31) return "error";
$epoch = $epoch+273; break;
case 11: if ($day > 30) return "error";
$epoch = $epoch+304; break;
case 12: if ($day > 31) return "error";
$epoch = $epoch+334; break;
}
$epoch = $epoch+$day;
$epoch_Y = sqrt(($birth_year-1970)*($birth_year-1970));
$leapyear = round((($epoch_Y+2) / 4)-.5);
if (($epoch_Y+2)%4 == 0)
{// curent year is leapyear
$leapyear--;
if ($birth_year > 1970 && $month >= 3) $epoch = $epoch+1;
if ($birth_year < 1970 && $month < 3) $epoch = $epoch-1;
}
else if ($month == 2 && $day > 28) return "error";//only 28 days in feb.
//year
if ($birth_year > 1970)
{
$epoch = $epoch + $epoch_Y*365-1 + $leapyear;
}
else
{
$epoch = $epoch - $epoch_Y*365-1 - $leapyear;
}
return $epoch;
}
// Add function realdate for Birthday MOD
// the originate php "date()", does not work proberly on all OS, especially when going back in time
// before year 1970 (year 0), this function "realdate()", has a mutch larger valid date range,
// from 1901 - 2099. it returns a "like" UNIX date format (only date, related letters may be used, due to the fact that
// the given date value should already be divided by 86400 - leaving no time information left)
// a input like a UNIX timestamp divided by 86400 is expected, so
// calculation from the originate php date and mktime is easy.
// e.g. realdate ("m d Y", 3) returns the string "1 3 1970"
// UNIX users should replace this function with the below code, since this should be faster
//
function realdate ($date, $format = "Ymd")
function birthday_age ($date)
{
global $bb_cfg;
if (!$date) return;
return bb_date($date*86400 + 1, $format, 0);
}
function birthday_age ($date, $list = 0)
{
if (!$date) return;
return delta_time(mktime(11, 0, 0, date('m', strtotime($date)), date('d', strtotime($date)), (date('Y', strtotime($date)) - $list)));
$tz = TIMENOW + (3600 * $bb_cfg['board_timezone']);
return delta_time(strtotime($date, $tz));
}
//
@ -2881,18 +2806,11 @@ function send_pm ($user_id, $subject, $message, $poster_id = BOT_UID)
$poster_ip = USER_IP;
}
DB()->sql_query("INSERT INTO ". BB_PRIVMSGS ." (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip)
VALUES (". PRIVMSGS_NEW_MAIL .", '$subject', {$poster_id}, $user_id, ". TIMENOW .", '$poster_ip')");
DB()->query("INSERT INTO ". BB_PRIVMSGS ." (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip) VALUES (". PRIVMSGS_NEW_MAIL .", '$subject', {$poster_id}, $user_id, ". TIMENOW .", '$poster_ip')");
$pm_id = DB()->sql_nextid();
DB()->sql_query("INSERT INTO " . BB_PRIVMSGS_TEXT . " (privmsgs_text_id, privmsgs_text)
VALUES ($pm_id, '$message')");
DB()->sql_query("UPDATE ". BB_USERS ." SET
user_new_privmsg = user_new_privmsg + 1,
user_last_privmsg = ". TIMENOW .",
user_newest_pm_id = $pm_id
WHERE user_id = $user_id");
DB()->query("INSERT INTO " . BB_PRIVMSGS_TEXT . " (privmsgs_text_id, privmsgs_text) VALUES ($pm_id, '$message')");
DB()->query("UPDATE ". BB_USERS ." SET user_new_privmsg = user_new_privmsg + 1, user_last_privmsg = ". TIMENOW .", user_newest_pm_id = $pm_id WHERE user_id = $user_id");
}
function profile_url ($data)
@ -2930,7 +2848,7 @@ function profile_url ($data)
return $profile;
}
function get_avatar ($user_id, $ext_id, $allow_avatar = true, $size = true)
function get_avatar ($user_id, $ext_id, $allow_avatar = true, $size = true, $height = '', $width = '')
{
global $bb_cfg;
@ -2939,15 +2857,21 @@ function get_avatar ($user_id, $ext_id, $allow_avatar = true, $size = true)
// TODO
}
$user_avatar = '<img src="'. $bb_cfg['avatars']['upload_path'] . $bb_cfg['avatars']['no_avatar'] .'" alt="'. $user_id .'" "/>';
$height = ($height != '') ? 'height="'. $height .'"' : '';
$width = ($width != '') ? 'width="'. $width .'"' : '';
$user_avatar = '<img src="'. $bb_cfg['avatars']['upload_path'] . $bb_cfg['avatars']['no_avatar'] .'" alt="'. $user_id .'" '. $height .' '. $width .' />';
if ($user_id == BOT_UID && $bb_cfg['avatars']['bot_avatar'])
{
$user_avatar = '<img src="'. $bb_cfg['avatars']['upload_path'] . $bb_cfg['avatars']['bot_avatar'] .'" alt="'. $user_id .'" />';
$user_avatar = '<img src="'. $bb_cfg['avatars']['upload_path'] . $bb_cfg['avatars']['bot_avatar'] .'" alt="'. $user_id .'" '. $height .' '. $width .' />';
}
elseif ($allow_avatar && $ext_id)
{
$user_avatar = '<img src="'. $bb_cfg['avatars']['upload_path'] . get_avatar_path($user_id, $ext_id) .'" alt="'. $user_id .'" />';
if (file_exists($bb_cfg['avatars']['upload_path'] . get_avatar_path($user_id, $ext_id)))
{
$user_avatar = '<img src="'. $bb_cfg['avatars']['upload_path'] . get_avatar_path($user_id, $ext_id) .'" alt="'. $user_id .'" '. $height .' '. $width .' />';
}
}
return $user_avatar;

View file

@ -396,7 +396,7 @@ function send_torrent_with_passkey ($filename)
message_die(GENERAL_ERROR, $lang['PASSKEY_ERR_TOR_NOT_REG']);
}
if (bf($userdata['user_opt'], 'user_opt', 'allow_passkey') && !IS_GUEST)
if (bf($userdata['user_opt'], 'user_opt', 'dis_passkey') && !IS_GUEST)
{
message_die(GENERAL_ERROR, 'Could not add passkey');
}
@ -511,7 +511,7 @@ function generate_passkey ($user_id, $force_generate = false)
}
if ($row = DB()->sql_fetchrow($result))
{
if (bf($row['user_opt'], 'user_opt', 'allow_passkey'))
if (bf($row['user_opt'], 'user_opt', 'dis_passkey'))
{
message_die(GENERAL_MESSAGE, $lang['NOT_AUTHORISED']);
}

View file

@ -1,6 +1,7 @@
<?php
if (!defined('BB_ROOT')) die(basename(__FILE__));
if (PHP_VERSION < '5.3') die('TorrentPier II requires PHP version 5.3+. Your PHP version '. PHP_VERSION);
if (!defined('BB_SCRIPT')) define('BB_SCRIPT', 'undefined');
if (!defined('BB_CFG_LOADED')) trigger_error('bb_cfg not loaded', E_USER_ERROR);

View file

@ -170,7 +170,7 @@ $template->assign_vars(array(
'SHOW_ADS' => (!$logged_in || isset($bb_cfg['show_ads_users'][$user->id]) || (!IS_AM && $user->show_ads)),
'USER_HIDE_CAT' => (BB_SCRIPT == 'index'),
'USER_RUS' => ($userdata['user_lang'] != 'english') ? true : false,
'USER_LANG' => $userdata['user_lang'],
'INCLUDE_BBCODE_JS' => !empty($page_cfg['include_bbcode_js']),
'USER_OPTIONS_JS' => (IS_GUEST) ? '{}' : bb_json_encode($user->opt_js),
@ -206,8 +206,8 @@ $template->assign_vars(array(
'SESSION_USER_ID' => $userdata['user_id'],
'POINTS' => $userdata['user_points'],
'THIS_USER' => profile_url($userdata),
'THIS_AVATAR' => get_avatar($userdata['user_id'], $userdata['avatar_ext_id'], !bf($userdata['user_opt'], 'user_opt', 'allow_avatar')),
'AVATAR_DISALLOWED' => bf($userdata['user_opt'], 'user_opt', 'allow_avatar'),
'THIS_AVATAR' => get_avatar($userdata['user_id'], $userdata['avatar_ext_id'], !bf($userdata['user_opt'], 'user_opt', 'dis_avatar')),
'AVATAR_DISALLOWED' => bf($userdata['user_opt'], 'user_opt', 'dis_avatar'),
'SHOW_LOGIN_LINK' => !defined('IN_LOGIN'),
'AUTOLOGIN_DISABLED' => !$bb_cfg['allow_autologin'],
'S_LOGIN_ACTION' => LOGIN_URL,

View file

@ -755,7 +755,7 @@ class user_common
$excluded[] = $not_auth;
}
if (bf($this->opt, 'user_opt', 'hide_porn_forums'))
if (bf($this->opt, 'user_opt', 'user_porn_forums'))
{
global $datastore;
@ -789,7 +789,7 @@ class user_common
{
global $datastore, $bb_cfg;
if ($bb_cfg['show_ads'] && !bf($this->opt, 'user_opt', 'hide_ads') && !defined('IN_ADMIN') && !defined('IN_AJAX'))
if ($bb_cfg['show_ads'] && !bf($this->opt, 'user_opt', 'user_hide_ads') && !defined('IN_ADMIN') && !defined('IN_AJAX'))
{
$datastore->enqueue('ads');
$this->show_ads = true;

View file

@ -117,7 +117,7 @@ class Template
*/
function Template($root = '.')
{
global $lang;
global $bb_cfg, $lang;
// setting pointer "vars"
$this->vars = &$this->_tpldata['.'][0];
@ -126,6 +126,7 @@ class Template
$this->root = $root;
$this->tpl = basename($root);
$this->lang =& $lang;
$this->use_cache = $bb_cfg['xs_use_cache'];
}
/**

View file

@ -39,10 +39,8 @@ switch ($mode)
* Регистрация
*/
case 'register':
if (!$can_register)
{
redirect('index.php');
}
if (!$can_register) redirect('index.php');
if (!IS_ADMIN)
{
// Ограничение по ip
@ -75,6 +73,7 @@ switch ($mode)
'user_email' => true,
'user_timezone' => true,
'user_lang' => true,
'user_opt' => true,
);
$pr_data = array(
@ -93,10 +92,7 @@ switch ($mode)
* Редактирование профиля
*/
case 'editprofile':
if (IS_GUEST)
{
login_redirect();
}
if (IS_GUEST) login_redirect();
// field => can_edit
$profile_fields = array(
@ -137,7 +133,6 @@ switch ($mode)
user_id,
user_rank,
user_level,
user_email,
$profile_fields_sql
FROM ". BB_USERS ."
WHERE user_id = $pr_user_id
@ -326,11 +321,11 @@ foreach ($profile_fields as $field => $can_edit)
* Пол (edit, reg)
*/
case 'user_gender':
$gender = isset($_POST['user_gender']) ? (int) $_POST['user_gender'] : $pr_data['user_gender'];
if ($submit && $gender != $pr_data['user_gender'])
$user_gender = isset($_POST['user_gender']) ? (int) $_POST['user_gender'] : $pr_data['user_gender'];
if ($submit && $user_gender != $pr_data['user_gender'])
{
$pr_data['user_gender'] = $gender;
$db_data['user_gender'] = $gender;
$pr_data['user_gender'] = $user_gender;
$db_data['user_gender'] = $user_gender;
}
$tp_data['USER_GENDER'] = build_select('user_gender', array_flip($lang['GENDER_SELECT']), $pr_data['user_gender']);
break;
@ -339,38 +334,32 @@ foreach ($profile_fields as $field => $can_edit)
* Возраст (edit)
*/
case 'user_birthday':
$user_birthday = ($pr_data['user_birthday'] != '0000-00-00') ? strtotime($pr_data['user_birthday']) : false;
$user_birthday = isset($_POST['user_birthday']) ? (string) $_POST['user_birthday'] : $pr_data['user_birthday'];
$b_day = (isset($_POST['b_day'])) ? (int) $_POST['b_day'] : (($user_birthday) ? date('j', $user_birthday) : 0);
$b_md = (isset($_POST['b_md'])) ? (int) $_POST['b_md'] : (($user_birthday) ? date('n', $user_birthday) : 0);
$b_year = (isset($_POST['b_year'])) ? (int) $_POST['b_year'] : (($user_birthday) ? date('Y', $user_birthday) : 0);
if ($b_day || $b_md || $b_year)
if ($submit && $user_birthday != $pr_data['user_birthday'])
{
if (!checkdate($b_md, $b_day, $b_year))
$birthday_date = date_parse($user_birthday);
if (!empty($birthday_date['year']))
{
if (strtotime($user_birthday) >= TIMENOW)
{
$errors[] = $lang['WRONG_BIRTHDAY_FORMAT'];
$birthday = '';
$next_birthday_greeting = 0;
}
else
elseif (bb_date(TIMENOW, 'Y', 'false') - $birthday_date['year'] > $bb_cfg['birthday_max_age'])
{
$birthday = "$b_year-$b_md-$b_day";
$next_birthday_greeting = (date('md') < $b_md . (($b_day <= 9) ? '0' : '') . $b_day) ? date('Y') : date('Y') + 1;
$errors[] = sprintf($lang['BIRTHDAY_TO_HIGH'], $bb_cfg['birthday_max_age']);
}
}
else
elseif (bb_date(TIMENOW, 'Y', 'false') - $birthday_date['year'] < $bb_cfg['birthday_min_age'])
{
$birthday = '';
$next_birthday_greeting = 0;
$errors[] = sprintf($lang['BIRTHDAY_TO_LOW'], $bb_cfg['birthday_min_age']);
}
}
if ($submit && $birthday != $pr_data['user_birthday'])
{
$pr_data['user_birthday'] = $birthday;
$db_data['user_birthday'] = $birthday;
$db_data['user_next_birthday_greeting'] = $next_birthday_greeting;
$pr_data['user_birthday'] = $user_birthday;
$db_data['user_birthday'] = $user_birthday;
}
$tp_data['USER_BIRTHDAY'] = $pr_data['user_birthday'];
break;
/**
@ -378,24 +367,29 @@ foreach ($profile_fields as $field => $can_edit)
*/
case 'user_opt':
$user_opt = $pr_data['user_opt'];
$reg_mode = ($mode == 'register');
$update_user_opt = array(
'viewemail' => true,
'allow_viewonline' => true,
'notify' => true,
'notify_pm' => true,
'hide_porn_forums' => true,
'allow_dls' => true,
# 'user_opt_name' => ($reg_mode) ? #reg_setting : #in_login_change
'user_viewemail' => ($reg_mode) ? false : true,
'user_viewonline' => ($reg_mode) ? false : true,
'user_notify' => ($reg_mode) ? true : true,
'user_notify_pm' => ($reg_mode) ? true : true,
'user_porn_forums' => ($reg_mode) ? false : true,
'user_dls' => ($reg_mode) ? false : true,
'user_callseed' => ($reg_mode) ? true : true,
);
foreach ($update_user_opt as $opt => $can_change_opt)
{
if ($submit && $can_change_opt && isset($_POST[$opt]))
if ($submit && (isset($_POST[$opt]) && $can_change_opt || $reg_mode))
{
setbit($user_opt, $bf['user_opt'][$opt], !empty($_POST[$opt]));
$change_opt = ($reg_mode) ? $can_change_opt : !empty($_POST[$opt]);
setbit($user_opt, $bf['user_opt'][$opt], $change_opt);
}
$tp_data[strtoupper($opt)] = bf($user_opt, 'user_opt', $opt);
}
if ($submit && $user_opt != $pr_data['user_opt'])
if ($submit && ($user_opt != $pr_data['user_opt'] || $reg_mode))
{
$pr_data['user_opt'] = $user_opt;
$db_data['user_opt'] = (int) $user_opt;
@ -406,7 +400,7 @@ foreach ($profile_fields as $field => $can_edit)
* Avatar (edit)
*/
case 'avatar_ext_id':
if ($submit && !bf($pr_data['user_opt'], 'user_opt', 'allow_avatar'))
if ($submit && !bf($pr_data['user_opt'], 'user_opt', 'dis_avatar'))
{
if (isset($_POST['delete_avatar']))
{
@ -430,6 +424,7 @@ foreach ($profile_fields as $field => $can_edit)
}
}
}
$tp_data['AVATARS_MAX_SIZE'] = humn_size($bb_cfg['avatars']['max_size']);
break;
/**
@ -527,6 +522,7 @@ foreach ($profile_fields as $field => $can_edit)
$tp_data['USER_OCC'] = $pr_data['user_occ'];
break;
/**
* Интересы
*/
@ -558,6 +554,7 @@ foreach ($profile_fields as $field => $can_edit)
$tp_data['USER_SKYPE'] = $pr_data['user_skype'];
break;
/**
* Twitter
*/
@ -605,33 +602,6 @@ foreach ($profile_fields as $field => $can_edit)
}
}
if ($bb_cfg['birthday_enabled'] && $mode != 'register')
{
$days = array($lang['DELTA_TIME']['INTERVALS']['mday'][0] => 0);
for ($i = 1; $i <= 31; $i++)
{
$days[$i] = $i;
}
$s_birthday = build_select('b_day', $days, $b_day);
$months = array($lang['DELTA_TIME']['INTERVALS']['mon'][0] => 0);
for ($i = 1; $i <= 12; $i++)
{
$month = bb_date(mktime(0, 0, 0, ($i+1), 0, 0), 'F');
$months[$month] = $i;
}
$s_birthday .= build_select('b_md', $months, $b_md);
$year = bb_date(TIMENOW, 'Y', 'false');
$years = array($lang['DELTA_TIME']['INTERVALS']['year'][0] => 0);
for ($i = $year-$bb_cfg['birthday_max_age']; $i <= $year - $bb_cfg['birthday_min_age']; $i++)
{
$years[$i] = $i;
}
$s_birthday .= build_select('b_year', $years, $b_year);
$tp_data['BIRTHDAY'] = $s_birthday;
}
// submit
if ($submit && !$errors)
{
@ -795,10 +765,10 @@ $template->assign_vars(array(
'USER_TIMEZONE' => $pr_data['user_timezone'],
'AVATAR_EXPLAIN' => sprintf($lang['AVATAR_EXPLAIN'], $bb_cfg['avatars']['max_width'], $bb_cfg['avatars']['max_height'], (round($bb_cfg['avatars']['max_size'] / 1024))),
'AVATAR_DISALLOWED' => bf($pr_data['user_opt'], 'user_opt', 'allow_avatar'),
'AVATAR_DISALLOWED' => bf($pr_data['user_opt'], 'user_opt', 'dis_avatar'),
'SIGNATURE_EXPLAIN' => sprintf($lang['SIGNATURE_EXPLAIN'], $bb_cfg['max_sig_chars']),
'SIG_DISALLOWED' => bf($pr_data['user_opt'], 'user_opt', 'allow_sig'),
'SIG_DISALLOWED' => bf($pr_data['user_opt'], 'user_opt', 'dis_sig'),
'PR_USER_ID' => $pr_data['user_id'],
'U_RESET_AUTOLOGIN' => LOGIN_URL . "?logout=1&amp;reset_autologin=1&amp;sid={$userdata['session_id']}",

View file

@ -45,7 +45,7 @@ if (IS_ADMIN)
$rank_select = build_select('rank-sel', $rank_select, $user_rank);
}
if (bf($profiledata['user_opt'], 'user_opt', 'viewemail') || $profiledata['user_id'] == $userdata['user_id'] || IS_AM)
if (bf($profiledata['user_opt'], 'user_opt', 'user_viewemail') || $profiledata['user_id'] == $userdata['user_id'] || IS_AM)
{
$email_uri = ($bb_cfg['board_email_form']) ? 'profile.php?mode=email&amp;'. POST_USERS_URL .'='. $profiledata['user_id'] : 'mailto:'. $profiledata['user_email'];
$email = '<a class="editable" href="'. $email_uri .'">'. $profiledata['user_email'] .'</a>';
@ -80,7 +80,7 @@ $profile_user_id = ($profiledata['user_id'] == $userdata['user_id']);
$signature = ($bb_cfg['allow_sig'] && $profiledata['user_sig']) ? $profiledata['user_sig'] : '';
if(bf($profiledata['user_opt'], 'user_opt', 'allow_sig'))
if(bf($profiledata['user_opt'], 'user_opt', 'dis_sig'))
{
if($profile_user_id)
{
@ -110,38 +110,35 @@ $template->assign_vars(array(
'EMAIL' => $email,
'WWW' => $profiledata['user_website'],
'ICQ' => $profiledata['user_icq'],
'LAST_VISIT_TIME' => ($profiledata['user_lastvisit']) ? (bf($profiledata['user_opt'], 'user_opt', 'allow_viewonline') && !IS_ADMIN) ? $lang['HIDDEN_USER'] : bb_date($profiledata['user_lastvisit'], 'Y-m-d H:i', 'false') : $lang['NEVER'],
'LAST_ACTIVITY_TIME' => ($profiledata['user_session_time']) ? (bf($profiledata['user_opt'], 'user_opt', 'allow_viewonline') && !IS_ADMIN) ? $lang['HIDDEN_USER'] : bb_date($profiledata['user_session_time'], 'Y-m-d H:i', 'false') : $lang['NEVER'],
'ALLOW_DLS' => bf($profiledata['user_opt'], 'user_opt', 'allow_dls'),
'LOCATION' => $profiledata['user_from'],
'LAST_VISIT_TIME' => ($profiledata['user_lastvisit']) ? (bf($profiledata['user_opt'], 'user_opt', 'user_viewonline') && !IS_ADMIN) ? $lang['HIDDEN_USER'] : bb_date($profiledata['user_lastvisit'], 'Y-m-d H:i', 'false') : $lang['NEVER'],
'LAST_ACTIVITY_TIME' => ($profiledata['user_session_time']) ? (bf($profiledata['user_opt'], 'user_opt', 'user_viewonline') && !IS_ADMIN) ? $lang['HIDDEN_USER'] : bb_date($profiledata['user_session_time'], 'Y-m-d H:i', 'false') : $lang['NEVER'],
'USER_ACTIVE' => $profiledata['user_active'],
'LOCATION' => $profiledata['user_from'],
'OCCUPATION' => $profiledata['user_occ'],
'INTERESTS' => $profiledata['user_interests'],
'SKYPE' => $profiledata['user_skype'],
'TWITTER' => $profiledata['user_twitter'],
'USER_POINTS' => $profiledata['user_points'],
'GENDER' => ($bb_cfg['gender'] && $profiledata['user_gender']) ? $lang['GENDER_SELECT'][$profiledata['user_gender']] : '',
'BIRTHDAY' => ($bb_cfg['birthday_enabled'] && $profiledata['user_birthday'] != '0000-00-00') ? date('Y-m-d', strtotime($profiledata['user_birthday'])) : '',
'BIRTHDAY' => ($bb_cfg['birthday_enabled'] && $profiledata['user_birthday'] != '0000-00-00') ? $profiledata['user_birthday'] : '',
'AGE' => ($bb_cfg['birthday_enabled'] && $profiledata['user_birthday'] != '0000-00-00') ? birthday_age($profiledata['user_birthday']) : '',
'L_VIEWING_PROFILE' => sprintf($lang['VIEWING_USER_PROFILE'], $profiledata['username']),
'L_MY_PROFILE' => sprintf($lang['VIEWING_MY_PROFILE'], 'profile.php?mode=editprofile'),
'U_SEARCH_USER' => "search.php?search_author=1&amp;uid={$profiledata['user_id']}",
'U_SEARCH_TOPICS' => "search.php?uid={$profiledata['user_id']}&amp;myt=1",
'U_SEARCH_RELEASES' => "tracker.php?rid={$profiledata['user_id']}#results",
'AVATAR_IMG' => get_avatar($profiledata['user_id'], $profiledata['avatar_ext_id'], !bf($profiledata['user_opt'], 'user_opt', 'allow_avatar')),
'AVATAR_DISALLOWED' => bf($profiledata['user_opt'], 'user_opt', 'allow_avatar'),
'S_PROFILE_ACTION' => 'profile.php',
'AVATAR_IMG' => get_avatar($profiledata['user_id'], $profiledata['avatar_ext_id'], !bf($profiledata['user_opt'], 'user_opt', 'dis_avatar')),
'AVATAR_DISALLOWED' => bf($profiledata['user_opt'], 'user_opt', 'dis_avatar'),
'SIGNATURE' => $signature,
'SHOW_PASSKEY' => (IS_ADMIN || $profile_user_id),
'SHOW_ROLE' => (IS_AM || $profile_user_id || $profiledata['user_active']),
'GROUP_MEMBERSHIP' => false,
'TRAF_STATS' => !(IS_AM || $profile_user_id),
'U_MANAGE' => (IS_ADMIN) ? "profile.php?mode=editprofile&amp;u={$profiledata['user_id']}" : 'profile.php?mode=editprofile',
));
if (IS_ADMIN)
@ -190,6 +187,12 @@ else if (IS_MOD)
));
}
// Show users torrent-profile
if (IS_AM || $profile_user_id || !bf($profiledata['user_opt'], 'user_opt', 'user_dls'))
{
require(INC_DIR .'ucp/usercp_viewtorrent.php');
}
// Ajax bt_userdata
if (IS_AM || $profile_user_id)
{
@ -205,37 +208,33 @@ else
if (IS_ADMIN)
{
$template->assign_vars(array(
'EDITABLE_TPLS' => true,
'U_PERMISSIONS' => "admin/admin_ug_auth.php?mode=user&amp;u={$profiledata['user_id']}",
));
$ajax_user_opt = bb_json_encode(array(
'allow_avatar' => bf($profiledata['user_opt'], 'user_opt', 'allow_avatar'),
'allow_sig' => bf($profiledata['user_opt'], 'user_opt', 'allow_sig'),
'allow_passkey' => bf($profiledata['user_opt'], 'user_opt', 'allow_passkey'),
'allow_pm' => bf($profiledata['user_opt'], 'user_opt', 'allow_pm'),
'allow_post' => bf($profiledata['user_opt'], 'user_opt', 'allow_post'),
'allow_post_edit' => bf($profiledata['user_opt'], 'user_opt', 'allow_post_edit'),
'allow_topic' => bf($profiledata['user_opt'], 'user_opt', 'allow_topic'),
'dis_avatar' => bf($profiledata['user_opt'], 'user_opt', 'dis_avatar'),
'dis_sig' => bf($profiledata['user_opt'], 'user_opt', 'dis_sig'),
'dis_passkey' => bf($profiledata['user_opt'], 'user_opt', 'dis_passkey'),
'dis_pm' => bf($profiledata['user_opt'], 'user_opt', 'dis_pm'),
'dis_post' => bf($profiledata['user_opt'], 'user_opt', 'dis_post'),
'dis_post_edit' => bf($profiledata['user_opt'], 'user_opt', 'dis_post_edit'),
'dis_topic' => bf($profiledata['user_opt'], 'user_opt', 'dis_topic'),
));
$template->assign_vars(array(
'EDITABLE_TPLS' => true,
'AJAX_USER_OPT' => $ajax_user_opt,
'EMAIL_ADDRESS' => htmlCHR($profiledata['user_email']),
'U_MANAGE' => "profile.php?mode=editprofile&amp;u={$profiledata['user_id']}",
'U_PERMISSIONS' => "admin/admin_ug_auth.php?mode=user&amp;u={$profiledata['user_id']}",
));
}
$user_restrictions = array();
if (bf($profiledata['user_opt'], 'user_opt', 'allow_avatar')) $user_restrictions[] = $lang['HIDE_AVATARS'];
if (bf($profiledata['user_opt'], 'user_opt', 'allow_sig')) $user_restrictions[] = $lang['SHOW_CAPTION'];
if (bf($profiledata['user_opt'], 'user_opt', 'allow_passkey')) $user_restrictions[] = $lang['DOWNLOAD_TORRENT'];
if (bf($profiledata['user_opt'], 'user_opt', 'allow_pm')) $user_restrictions[] = $lang['SEND_PM'];
if (bf($profiledata['user_opt'], 'user_opt', 'allow_post')) $user_restrictions[] = $lang['SEND_MESSAGE'];
if (bf($profiledata['user_opt'], 'user_opt', 'allow_post_edit')) $user_restrictions[] = $lang['EDIT_POST'];
if (bf($profiledata['user_opt'], 'user_opt', 'allow_topic')) $user_restrictions[] = $lang['NEW_THREADS'];
if (bf($profiledata['user_opt'], 'user_opt', 'dis_avatar')) $user_restrictions[] = $lang['HIDE_AVATARS'];
if (bf($profiledata['user_opt'], 'user_opt', 'dis_sig')) $user_restrictions[] = $lang['SHOW_CAPTION'];
if (bf($profiledata['user_opt'], 'user_opt', 'dis_passkey')) $user_restrictions[] = $lang['DOWNLOAD_TORRENT'];
if (bf($profiledata['user_opt'], 'user_opt', 'dis_pm')) $user_restrictions[] = $lang['SEND_PM'];
if (bf($profiledata['user_opt'], 'user_opt', 'dis_post')) $user_restrictions[] = $lang['SEND_MESSAGE'];
if (bf($profiledata['user_opt'], 'user_opt', 'dis_post_edit')) $user_restrictions[] = $lang['EDIT_POST'];
if (bf($profiledata['user_opt'], 'user_opt', 'dis_topic')) $user_restrictions[] = $lang['NEW_THREADS'];
$template->assign_var('USER_RESTRICTIONS', join('</li><li>', $user_restrictions));

View file

@ -0,0 +1,162 @@
<?php
if (!defined('IN_PROFILE')) die(basename(__FILE__));
$releasing = $seeding = $leeching = array();
$releasing_count = $seeding_count = $leeching_count = 0;
// Auth
$excluded_forums_csv = $user->get_excluded_forums(AUTH_VIEW);
$not_auth_forums_sql = ($excluded_forums_csv) ? "
AND f.forum_id NOT IN($excluded_forums_csv)
AND f.forum_parent NOT IN($excluded_forums_csv)
" : '';
$sql = DB()->fetch_rowset("
SELECT
f.forum_id, f.forum_name, t.topic_title,
tor.tor_type, tor.size,
sn.seeders, sn.leechers, tr.*
FROM ". BB_FORUMS ." f, ". BB_TOPICS ." t, ". BB_BT_TRACKER ." tr, ". BB_BT_TORRENTS ." tor, ". BB_BT_TRACKER_SNAP ." sn
WHERE tr.user_id = {$profiledata['user_id']}
AND tr.topic_id = tor.topic_id
AND sn.topic_id = tor.topic_id
AND tor.topic_id = t.topic_id
AND t.forum_id = f.forum_id
$not_auth_forums_sql
GROUP BY tr.topic_id
ORDER BY f.forum_name, t.topic_title
");
foreach ($sql as $rowset)
{
if ($rowset['releaser'])
{
$releasing[] = $rowset;
}
elseif ($rowset['seeder'])
{
$seeding[] = $rowset;
}
else
{
$leeching[] = $rowset;
}
}
if ($releasing)
{
foreach ($releasing as $i => $row)
{
$is_gold = '';
if ($tr_cfg['gold_silver_enabled'])
{
if ($row['tor_type'] == TOR_TYPE_GOLD)
{
$is_gold = '<img src="images/tor_gold.gif" width="16" height="15" title="'. $lang['GOLD'] .'" />&nbsp;';
}
elseif ($row['tor_type'] == TOR_TYPE_SILVER)
{
$is_gold = '<img src="images/tor_silver.gif" width="16" height="15" title="'. $lang['SILVER'] .'" />&nbsp;';
}
}
$topic_title = wbr($row['topic_title']);
$template->assign_block_vars('released', array(
'ROW_CLASS' => !($i % 2) ? 'row1' : 'row2',
'FORUM_NAME' => htmlCHR($row['forum_name']),
'TOPIC_TITLE' => ($row['update_time']) ? $topic_title : "<s>$topic_title</s>",
'U_VIEW_FORUM' => FORUM_URL . $row['forum_id'],
'U_VIEW_TOPIC' => TOPIC_URL . $row['topic_id'],
'TOR_TYPE' => $is_gold,
'TOPIC_SEEDERS' => ($row['seeders']) ? $row['seeders'] : 0,
'TOPIC_LEECHERS' => ($row['leechers']) ? $row['leechers'] : 0,
'SPEED_UP' => ($row['speed_up']) ? humn_size($row['speed_up'], 0, 'KB') .'/s' : '-',
));
$releasing_count++;
}
}
if ($seeding)
{
foreach ($seeding as $i => $row)
{
$is_gold = '';
if ($tr_cfg['gold_silver_enabled'])
{
if ($row['tor_type'] == TOR_TYPE_GOLD)
{
$is_gold = '<img src="images/tor_gold.gif" width="16" height="15" title="'. $lang['GOLD'] .'" />&nbsp;';
}
elseif ($row['tor_type'] == TOR_TYPE_SILVER)
{
$is_gold = '<img src="images/tor_silver.gif" width="16" height="15" title="'. $lang['SILVER'] .'" />&nbsp;';
}
}
$topic_title = wbr($row['topic_title']);
$template->assign_block_vars('seed', array(
'ROW_CLASS' => !($i % 2) ? 'row1' : 'row2',
'FORUM_NAME' => htmlCHR($row['forum_name']),
'TOPIC_TITLE' => ($row['update_time']) ? $topic_title : "<s>$topic_title</s>",
'U_VIEW_FORUM' => FORUM_URL . $row['forum_id'],
'U_VIEW_TOPIC' => TOPIC_URL . $row['topic_id'],
'TOR_TYPE' => $is_gold,
'TOPIC_SEEDERS' => ($row['seeders']) ? $row['seeders'] : 0,
'TOPIC_LEECHERS' => ($row['leechers']) ? $row['leechers'] : 0,
'SPEED_UP' => ($row['speed_up']) ? humn_size($row['speed_up'], 0, 'KB') .'/s' : '-',
));
$seeding_count++;
}
}
if ($leeching)
{
foreach ($leeching as $i => $row)
{
$is_gold = '';
if ($tr_cfg['gold_silver_enabled'])
{
if ($row['tor_type'] == TOR_TYPE_GOLD)
{
$is_gold = '<img src="images/tor_gold.gif" width="16" height="15" title="'.$lang['GOLD'].'" />&nbsp;';
}
elseif ($row['tor_type'] == TOR_TYPE_SILVER)
{
$is_gold = '<img src="images/tor_silver.gif" width="16" height="15" title="'.$lang['SILVER'].'" />&nbsp;';
}
}
$compl_size = ($row['remain'] && $row['size'] && $row['size'] > $row['remain']) ? ($row['size'] - $row['remain']) : 0;
$compl_perc = ($compl_size) ? floor($compl_size * 100 / $row['size']) : 0;
$topic_title = wbr($row['topic_title']);
$template->assign_block_vars('leech', array(
'ROW_CLASS' => !($i % 2) ? 'row1' : 'row2',
'FORUM_NAME' => htmlCHR($row['forum_name']),
'TOPIC_TITLE' => ($row['update_time']) ? $topic_title : "<s>$topic_title</s>",
'U_VIEW_FORUM' => FORUM_URL . $row['forum_id'],
'U_VIEW_TOPIC' => TOPIC_URL . $row['topic_id'],
'COMPL_PERC' => $compl_perc,
'TOR_TYPE' => $is_gold,
'TOPIC_SEEDERS' => ($row['seeders']) ? $row['seeders'] : 0,
'TOPIC_LEECHERS' => ($row['leechers']) ? $row['leechers'] : 0,
'SPEED_DOWN' => ($row['speed_down']) ? humn_size($row['speed_down'], 0, 'KB') .'/s' : '-',
));
$leeching_count++;
}
}
$template->assign_vars(array(
'SHOW_SEARCH_DL' => IS_AM || $profile_user_id,
'USERNAME' => $profiledata['username'],
'L_RELEASINGS' => "{$lang['RELEASING']}: ". (($releasing_count) ? "<b>$releasing_count</b>" : '0'),
'L_SEEDINGS' => "{$lang['SEEDING']}: ". (($seeding_count) ? "<b>$seeding_count</b>" : '0'),
'L_LEECHINGS' => "{$lang['LEECHING']}: ". (($leeching_count) ? "<b>$leeching_count</b>" : '0'),
'USER_DLS' => $releasing_count || $seeding_count || $leeching_count,
));

View file

@ -168,8 +168,7 @@ if (!$cat_forums = CACHE('bb_cache')->get($cache_name))
$cat_forums[$cat_id]['f'][$forum_id] = $row;
}
CACHE('bb_cache')->set($cache_name, $cat_forums, 180);
unset($row);
unset($forums);
unset($row, $forums);
$datastore->rm('cat_forums');
}
@ -194,7 +193,7 @@ if (!empty($mod))
{
foreach ($group_ids as $group_id)
{
$moderators[$forum_id][] = '<a href="'. (GROUP_URL . $group_id) .'">'. $mod['name_groups'][$group_id] .'</a>';
$moderators[$forum_id][] = '<a href="'. GROUP_URL . $group_id .'">'. $mod['name_groups'][$group_id] .'</a>';
}
}
}
@ -202,44 +201,8 @@ if (!empty($mod))
unset($mod);
$datastore->rm('moderators');
if (!$forums_count = count($cat_forums) AND $viewcat)
{
redirect("index.php");
}
$template->assign_vars(array(
'SHOW_FORUMS' => $forums_count,
'PAGE_TITLE' => ($viewcat) ? $cat_title_html[$viewcat] : $lang['HOME'],
'NO_FORUMS_MSG' => ($only_new) ? $lang['NO_NEW_POSTS'] : $lang['NO_FORUMS'],
'TOTAL_TOPICS' => sprintf($lang['POSTED_TOPICS_TOTAL'], $stats['topiccount']),
'TOTAL_POSTS' => sprintf($lang['POSTED_ARTICLES_TOTAL'], $stats['postcount']),
'TOTAL_USERS' => sprintf($lang['REGISTERED_USERS_TOTAL'], $stats['usercount']),
'TOTAL_GENDER' => ($bb_cfg['gender']) ? sprintf($lang['USERS_TOTAL_GENDER'], $stats['male'], $stats['female'], $stats['unselect']) : '',
'NEWEST_USER' => sprintf($lang['NEWEST_USER'], profile_url($stats['newestuser'])),
// Tracker stats
'TORRENTS_STAT' => ($bb_cfg['tor_stats']) ? sprintf($lang['TORRENTS_STAT'], $stats['torrentcount'], humn_size($stats['size'])) : '',
'PEERS_STAT' => ($bb_cfg['tor_stats']) ? sprintf($lang['PEERS_STAT'], $stats['peers'], $stats['seeders'], $stats['leechers']) : '',
'SPEED_STAT' => ($bb_cfg['tor_stats']) ? sprintf($lang['SPEED_STAT'], humn_size($stats['speed']) .'/s') : '',
'SHOW_MOD_INDEX' => $bb_cfg['show_mod_index'],
'FORUM_IMG' => $images['forum'],
'FORUM_NEW_IMG' => $images['forum_new'],
'FORUM_LOCKED_IMG' => $images['forum_locked'],
'SHOW_ONLY_NEW_MENU' => true,
'ONLY_NEW_POSTS_ON' => ($only_new == ONLY_NEW_POSTS),
'ONLY_NEW_TOPICS_ON' => ($only_new == ONLY_NEW_TOPICS),
'U_SEARCH_NEW' => "search.php?new=1",
'U_SEARCH_SELF_BY_MY' => "search.php?uid={$userdata['user_id']}&amp;o=1",
'U_SEARCH_LATEST' => "search.php?search_id=latest",
'U_SEARCH_UNANSWERED' => "search.php?search_id=unanswered",
'SHOW_LAST_TOPIC' => $show_last_topic,
));
// Build index page
$forums_count = 0;
foreach ($cat_forums as $cid => $c)
{
$template->assign_block_vars('h_c', array(
@ -252,7 +215,7 @@ foreach ($cat_forums as $cid => $c)
'H_C_AL_MESS' => ($hide_cat_opt && !$showhide) ? true : false
));
if (!$showhide && isset($hide_cat_user[$cid]))
if (!$showhide && isset($hide_cat_user[$cid]) && !$viewcat)
{
continue;
}
@ -260,7 +223,7 @@ foreach ($cat_forums as $cid => $c)
$template->assign_block_vars('c', array(
'CAT_ID' => $cid,
'CAT_TITLE' => $cat_title_html[$cid],
'U_VIEWCAT' => "index.php?c=$cid",
'U_VIEWCAT' => CAT_URL . $cid,
));
foreach ($c['f'] as $fid => $f)
@ -271,6 +234,7 @@ foreach ($cat_forums as $cid => $c)
}
$is_sf = $f['forum_parent'];
$forums_count++;
$new = is_unread($f['last_post_time'], $f['last_topic_id'], $f['forum_id']) ? '_new' : '';
$folder_image = ($is_sf) ? $images["icon_minipost{$new}"] : $images["forum{$new}"];
@ -316,6 +280,38 @@ foreach ($cat_forums as $cid => $c)
}
}
$template->assign_vars(array(
'SHOW_FORUMS' => $forums_count,
'PAGE_TITLE' => ($viewcat) ? $cat_title_html[$viewcat] : $lang['HOME'],
'NO_FORUMS_MSG' => ($only_new) ? $lang['NO_NEW_POSTS'] : $lang['NO_FORUMS'],
'TOTAL_TOPICS' => sprintf($lang['POSTED_TOPICS_TOTAL'], $stats['topiccount']),
'TOTAL_POSTS' => sprintf($lang['POSTED_ARTICLES_TOTAL'], $stats['postcount']),
'TOTAL_USERS' => sprintf($lang['REGISTERED_USERS_TOTAL'], $stats['usercount']),
'TOTAL_GENDER' => ($bb_cfg['gender']) ? sprintf($lang['USERS_TOTAL_GENDER'], $stats['male'], $stats['female'], $stats['unselect']) : '',
'NEWEST_USER' => sprintf($lang['NEWEST_USER'], profile_url($stats['newestuser'])),
// Tracker stats
'TORRENTS_STAT' => ($bb_cfg['tor_stats']) ? sprintf($lang['TORRENTS_STAT'], $stats['torrentcount'], humn_size($stats['size'])) : '',
'PEERS_STAT' => ($bb_cfg['tor_stats']) ? sprintf($lang['PEERS_STAT'], $stats['peers'], $stats['seeders'], $stats['leechers']) : '',
'SPEED_STAT' => ($bb_cfg['tor_stats']) ? sprintf($lang['SPEED_STAT'], humn_size($stats['speed']) .'/s') : '',
'SHOW_MOD_INDEX' => $bb_cfg['show_mod_index'],
'FORUM_IMG' => $images['forum'],
'FORUM_NEW_IMG' => $images['forum_new'],
'FORUM_LOCKED_IMG' => $images['forum_locked'],
'SHOW_ONLY_NEW_MENU' => true,
'ONLY_NEW_POSTS_ON' => ($only_new == ONLY_NEW_POSTS),
'ONLY_NEW_TOPICS_ON' => ($only_new == ONLY_NEW_TOPICS),
'U_SEARCH_NEW' => "search.php?new=1",
'U_SEARCH_SELF_BY_MY' => "search.php?uid={$userdata['user_id']}&amp;o=1",
'U_SEARCH_LATEST' => "search.php?search_id=latest",
'U_SEARCH_UNANSWERED' => "search.php?search_id=unanswered",
'SHOW_LAST_TOPIC' => $show_last_topic,
));
// Set tpl vars for bt_userdata
if ($bb_cfg['bt_show_dl_stat_on_index'] && !IS_GUEST)
{
@ -386,7 +382,7 @@ if ($bb_cfg['birthday_check_day'] && $bb_cfg['birthday_enabled'])
continue;
}
$week_list[] = profile_url($week) .' <span class="small">('. birthday_age($week['age']) .')</span>';
$week_list[] = profile_url($week) .' <span class="small">('. birthday_age($week['user_birthday']) .')</span>';
}
$week_all = ($week_all) ? '&nbsp;<a class="txtb" href="#" onclick="ajax.exec({action: \'index_data\', mode: \'birthday_week\'}); return false;" title="'. $lang['ALL'] .'">...</a>' : '';
$week_list = sprintf($lang['BIRTHDAY_WEEK'], $bb_cfg['birthday_check_day'], join(', ', $week_list)) . $week_all;
@ -404,7 +400,7 @@ if ($bb_cfg['birthday_check_day'] && $bb_cfg['birthday_enabled'])
continue;
}
$today_list[] = profile_url($today) .' <span class="small">('. birthday_age($today['age']) .')</span>';
$today_list[] = profile_url($today) .' <span class="small">('. birthday_age($today['user_birthday']) .')</span>';
}
$today_all = ($today_all) ? '&nbsp;<a class="txtb" href="#" onclick="ajax.exec({action: \'index_data\', mode: \'birthday_today\'}); return false;" title="'. $lang['ALL'] .'">...</a>' : '';
$today_list = $lang['BIRTHDAY_TODAY'] . join(', ', $today_list) . $today_all;
@ -420,9 +416,9 @@ if ($bb_cfg['birthday_check_day'] && $bb_cfg['birthday_enabled'])
// Allow cron
if (IS_AM)
{
if (@file_exists(CRON_RUNNING))
if (file_exists(CRON_RUNNING))
{
if (@file_exists(CRON_ALLOWED))
if (file_exists(CRON_ALLOWED))
{
unlink (CRON_ALLOWED);
}

View file

@ -508,6 +508,7 @@ $lang['OUTBOX_EXPL'] = '';
// Profiles/Registration
//
$lang['VIEWING_USER_PROFILE'] = 'Viewing profile :: %s';
$lang['VIEWING_MY_PROFILE'] = 'My profile [ <a href="%s">Settings / Change profile</a> ]';
$lang['DISABLED_USER'] = 'Account disabled';
$lang['MANAGE_USER'] = 'Administration';
@ -554,7 +555,7 @@ $lang['ALWAYS_NOTIFY_EXPLAIN'] = 'Sends an e-mail when someone replies to a topi
$lang['BOARD_LANG'] = 'Board Language';
$lang['GENDER'] = 'Gender';
$lang['GENDER_SELECT'] = array(
0 => 'Unselect',
0 => 'Unknown',
1 => 'Male',
2 => 'Female'
);
@ -600,7 +601,7 @@ $lang['RESET_AUTOLOGIN_EXPL'] = '';
$lang['AVATAR'] = 'Avatar';
$lang['AVATAR_EXPLAIN'] = 'Displays a small graphic image below your details in posts. Only one image can be displayed at a time, its width can be no greater than %d pixels, the height no greater than %d pixels, and the file size no more than %d KB.';
$lang['UPLOAD_AVATAR_FILE'] = 'Upload Avatar from your machine';
$lang['UPLOAD_AVATAR_FILE'] = 'Upload Avatar';
$lang['SELECT_AVATAR'] = 'Select avatar';
$lang['RETURN_PROFILE'] = 'Return to profile';
@ -1159,8 +1160,8 @@ $lang['SPEED_DOWN'] = 'Speed Down';
$lang['SEEDERS'] = 'Seeders';
$lang['LEECHERS'] = 'Leechers';
$lang['RELEASING'] = 'Self';
$lang['SEEDING'] = 'Seeding';
$lang['LEECHING'] = 'Leeching';
$lang['SEEDING'] = 'Seed';
$lang['LEECHING'] = 'Leech';
$lang['IS_REGISTERED'] = 'Registered';
$lang['MAGNET'] = 'Magnet';
@ -1315,9 +1316,7 @@ $lang['NOT_TORRENT'] = 'This file is not torrent';
$lang['ONLY_1_TOR_PER_POST'] = 'You can register only one torrent in one post';
$lang['ONLY_1_TOR_PER_TOPIC'] = 'You can register only one torrent in one topic';
$lang['VIEWING_USER_BT_PROFILE'] = 'Viewing torrent-profile :: %s'; // %s is username
$lang['CUR_ACTIVE_DLS'] = 'Currently active torrents';
$lang['CUR_ACTIVE_DLS_ERROR'] = 'User does not download and seeding';
$lang['CUR_ACTIVE_DLS_DISALLOWED'] = 'Browse the user denied active torrents';
$lang['CUR_ACTIVE_DLS'] = 'Active torrents';
$lang['TD_TRAF'] = 'Today';
$lang['YS_TRAF'] = 'Yesterday';
@ -1555,8 +1554,6 @@ $lang['NOTICE'] = '!ATTENTION!';
$lang['POWERED'] = 'UG93ZXJlZCBieSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3RvcnJlbnRwaWVyLm1lIj5Ub3JyZW50UGllciBJSTwvYT4gJmNvcHk7IE1laXRoYXIsIFRvcnJlbnRQaWVyIElJIFRlYW0=';
$lang['COPY'] = 'The site does not give electronic versions of products, and is engaged only in a collecting and cataloguing of the references sent and published at a forum by our readers. If you are the legal owner of any submitted material and do not wish that the reference to him{it} was in our catalogue, contact us and we shall immediately remove her. Files for an exchange on tracker are given by users of a site, and the administration does not bear the responsibility for their maintenance. The request to not fill in the files protected by copyrights, and also files of the illegal maintenance!';
$lang['CALLSEED'] = 'Downloaded the call';
// FILELIST
$lang['FILELIST'] = 'Filelist';
$lang['COLLAPSE'] = 'Collapse directory';
@ -1736,7 +1733,6 @@ $lang['INDEXER'] = "Reindex search";
$lang['FORUM_STYLE'] = 'Forum style';
$lang['LINKS_ARE_FORBIDDEN'] = 'Links are forbidden';
$lang['YOU_ARE_BEING_CHEATED'] = 'Looks like you are being cheated<br />Site is opened in frame. The current address is';
$lang['DONATION'] = 'Donation';
@ -2861,18 +2857,13 @@ $lang['BOT_TOPIC_MOVED_FROM_TO'] = 'Topic has been moved from forum [b]%s[/b] to
$lang['BOT_MESS_SPLITS'] = 'Topic has been split. New topic - [b]%s[/b][br][br]%s';
$lang['BOT_TOPIC_SPLITS'] = 'Topic has been split from [b]%s[/b][br][br]%s';
$lang['CALLSEED_SUBJ'] = 'Download help %s';
$lang['CALLSEED_TEXT'] = 'Hello!<br><br>Your help is needed in the release <a href="viewtopic.php?t=%s" target=_blank>%s :: %s </a><br>If you decide to help, but already deleted the torrent file, you can download it <a href="download.php?id=%s">this</a><br><br>I hope for your help!';
$lang['CALLSEED_MSG_OK'] = '<b>Message (PM) has been sent to all those who downloaded this release</b>';
$lang['CALLSEED_MSG_SPAM'] = '<b><font color=red>Request has already been once successfully sent</b> (Probably not you)</font>
<br><br>The next opportunity to send a request to be <b>%s</b> hours<!-- <b>%s</b> minute -->. <br>
Call you can download it only once in <b>day</b>';
$lang['CALLSEED_MSG_MSG'] = 'Error sending message';
$lang['CALLSEED_MSG_MSG_TEXT'] = 'Error saving text messages';
$lang['CALLSEED_MSG_POPUP'] = 'Error of popup';
$lang['CALLSEED_MSG_TIME'] = 'Unable to set the last query';
$lang['CALLSEED_HAVE_SEED'] = 'Topic does not require help (<b>Seeders:</b> %d, <b>Leechers:</b> %d)';
$lang['CALLSEED'] = 'Downloaded the call';
$lang['CALLSEED_EXPLAIN'] = 'Take notice with a request to return to the distribution?';
$lang['CALLSEED_SUBJECT'] = 'Download help %s';
$lang['CALLSEED_TEXT'] = 'Hello![br]Your help is needed in the release [url=%s]%s[/url][br]If you decide to help, but already deleted the torrent file, you can download it [url=%s]this[/url][br][br]I hope for your help!';
$lang['CALLSEED_MSG_OK'] = 'Message has been sent to all those who downloaded this release';
$lang['CALLSEED_MSG_SPAM'] = 'Request has already been once successfully sent (Probably not you)<br /><br />The next opportunity to send a request to be <b>%s</b>.';
$lang['CALLSEED_HAVE_SEED'] = 'Topic does not require help (<b>Seeders:</b> %d)';
$lang['LOG_ACTION']['LOG_TYPE'] = array(
'mod_topic_delete' => 'Topic:<br /> <b>deleted</b>',

View file

@ -149,7 +149,7 @@ $lang['POSTED_ARTICLES_ZERO_TOTAL'] = 'Наши пользователи не о
$lang['POSTED_ARTICLES_TOTAL'] = 'Наши пользователи оставили сообщений: <b>%s</b>'; // Number of posts
$lang['REGISTERED_USERS_ZERO_TOTAL'] = 'У нас нет зарегистрированных пользователей'; // # registered users
$lang['REGISTERED_USERS_TOTAL'] = 'Всего зарегистрированных пользователей: <b>%s</b>'; // # registered users
$lang['USERS_TOTAL_GENDER'] = 'Парней: <b>%d</b>, Девушек: <b>%d</b>, Не указан: <b>%d</b>';
$lang['USERS_TOTAL_GENDER'] = 'Парней: <b>%d</b>, Девушек: <b>%d</b>, Не указали: <b>%d</b>';
$lang['NEWEST_USER'] = 'Последний зарегистрированный пользователь: <b>%s</b>'; // username
// Tracker stats
@ -185,7 +185,7 @@ $lang['USER_WELCOME'] = 'Рады видеть вас, ';
//
$lang['HOME'] = 'Главная';
$lang['NO_POSTS'] = 'Нет сообщений';
$lang['NO_FORUMS'] = 'На этом сайте нет форумов';
$lang['NO_FORUMS'] = 'Нет доступных для показа форумов';
$lang['PRIVATE_MESSAGE'] = 'Личное сообщение';
$lang['PRIVATE_MESSAGES'] = 'Личные сообщения';
@ -509,6 +509,7 @@ $lang['OUTBOX_EXPL'] = 'В папке <b>Исходящие</b> находятс
// Profiles/Registration
//
$lang['VIEWING_USER_PROFILE'] = 'Профиль пользователя %s';
$lang['VIEWING_MY_PROFILE'] = 'Мой профиль [ <a href="%s">Настройки / Изменить профиль</a> ]';
$lang['DISABLED_USER'] = 'Пользователь деактивирован';
$lang['MANAGE_USER'] = 'Администрирование';
@ -556,7 +557,7 @@ $lang['ALWAYS_NOTIFY_EXPLAIN'] = 'Когда кто-нибудь ответит
$lang['BOARD_LANG'] = 'Язык';
$lang['GENDER'] = 'Пол';
$lang['GENDER_SELECT'] = array(
0 => 'Не определилось',
0 => 'Не указан',
1 => 'Мужской',
2 => 'Женский'
);
@ -590,7 +591,7 @@ $lang['PUBLIC_VIEW_EMAIL'] = 'Показывать мой адрес e-mail в
$lang['EMAIL_EXPLAIN'] = 'На этот адрес вам будет отправлено письмо для завершения регистрации';
$lang['CURRENT_PASSWORD'] = 'Текущий пароль';
$lang['NEW_PASSWORD'] = 'Новый пароль';
$lang['NEW_PASSWORD'] = "Новый пароль\n";
$lang['CONFIRM_PASSWORD'] = 'Подтвердите пароль';
$lang['CONFIRM_PASSWORD_EXPLAIN'] = 'Вы должны указать ваш текущий пароль, если хотите изменить его или поменять свой email.';
$lang['PASSWORD_IF_CHANGED'] = 'Указывайте пароль только если вы хотите его поменять';
@ -602,7 +603,7 @@ $lang['RESET_AUTOLOGIN_EXPL'] = 'включая все места, где вы
$lang['AVATAR'] = 'Аватара';
$lang['AVATAR_EXPLAIN'] = 'Показывает небольшое изображение под информацией о вас в сообщениях. Может быть показано только одно изображение, шириной не более %d пикселов, высотой не более %d пикселов и объемом не более %d кб.';
$lang['UPLOAD_AVATAR_FILE'] = 'Загрузить аватару с вашего компьютера';
$lang['UPLOAD_AVATAR_FILE'] = 'Загрузить аватару';
$lang['SELECT_AVATAR'] = 'Выберите аватару';
$lang['RETURN_PROFILE'] = 'Вернуться к профилю';
@ -1163,8 +1164,8 @@ $lang['SPEED_DOWN'] = 'Скорость скачивания';
$lang['SEEDERS'] = 'Сидов';
$lang['LEECHERS'] = 'Личеров';
$lang['RELEASING'] = 'Свои';
$lang['SEEDING'] = 'Раздает';
$lang['LEECHING'] = 'Качает';
$lang['SEEDING'] = 'Сидер';
$lang['LEECHING'] = 'Личер';
$lang['IS_REGISTERED'] = 'Зарегистрирован';
$lang['MAGNET'] = 'Magnet';
@ -1319,9 +1320,7 @@ $lang['NOT_TORRENT'] = 'Это не торрент-файл';
$lang['ONLY_1_TOR_PER_POST'] = 'Вы не можете зарегистрировать еще один торрент для этого сообщения';
$lang['ONLY_1_TOR_PER_TOPIC'] = 'Вы не можете зарегистрировать еще один торрент для этого топика';
$lang['VIEWING_USER_BT_PROFILE'] = 'Торрент-профиль'; // %s is username
$lang['CUR_ACTIVE_DLS'] = 'Текущие активные торренты';
$lang['CUR_ACTIVE_DLS_ERROR'] = 'Пользователь ничего не скачивает и не сидирует';
$lang['CUR_ACTIVE_DLS_DISALLOWED'] = 'Пользователь запретил просматривать его активные торренты';
$lang['CUR_ACTIVE_DLS'] = 'Активные раздачи';
$lang['TD_TRAF'] = 'Сегодня';
$lang['YS_TRAF'] = 'Вчера';
@ -1559,8 +1558,6 @@ $lang['NOTICE'] = '!ВНИМАНИЕ!';
$lang['POWERED'] = 'UG93ZXJlZCBieSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3RvcnJlbnRwaWVyLm1lIj5Ub3JyZW50UGllciBJSTwvYT4gJmNvcHk7IE1laXRoYXIsIFRvcnJlbnRQaWVyIElJIFRlYW0=';
$lang['COPY'] = 'Сайт не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете, чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами, и мы незамедлительно удалим ее. Файлы для обмена на трекере предоставлены пользователями сайта, и администрация не несет ответственности за их содержание. Просьба не заливать файлы, защищенные авторскими правами, а также файлы нелегального содержания!';
$lang['CALLSEED'] = 'Позвать скачавших';
// FILELIST
$lang['FILELIST'] = 'Список файлов';
$lang['COLLAPSE'] = 'Свернуть директории';
@ -1742,7 +1739,6 @@ $lang['INDEXER'] = "Переиндексировать поиск";
$lang['FORUM_STYLE'] = 'Стиль форума';
$lang['LINKS_ARE_FORBIDDEN'] = 'Ссылки запрещены';
$lang['YOU_ARE_BEING_CHEATED'] = 'Похоже, вас пытаются обмануть<br />Сайт открыт во фрейме. Текущий адрес';
$lang['DONATION'] = 'Помощь трекеру';
@ -2873,18 +2869,13 @@ $lang['BOT_TOPIC_MOVED_FROM_TO'] = 'Топик был перенесен из ф
$lang['BOT_MESS_SPLITS'] = 'Сообщения из этой темы были выделены в отдельный топик [b]%s[/b][br][br]%s';
$lang['BOT_TOPIC_SPLITS'] = 'Тема была выделена из [b]%s[/b][br][br]%s';
$lang['CALLSEED_SUBJ'] = 'Помогите скачать %s';
$lang['CALLSEED_TEXT'] = 'Здравствуйте!<br><br>Ваша помощь необходима в раздаче <a href="viewtopic.php?t=%s" target=_blank>%s :: %s </a><br>Если вы решили помочь, но уже удалили торрент-файл, можете скачать его <a href="download.php?id=%s">здесь</a><br><br>Надеюсь на вашу помощь!';
$lang['CALLSEED_MSG_OK'] = '<b>Сообщение (ЛС) успешно отправлено всем скачавшим данный релиз</b>';
$lang['CALLSEED_MSG_SPAM'] = '<b><font color=red>Запрос уже был однажды успешно отослан</b> (возможно не Вами)</font>
<br><br>Следующая возможность отослать запрос будет через <b>%s</b> часов<!-- <b>%s</b> минут -->. <br>
Позвать скачавших можно лишь один раз в <b>сутки</b>';
$lang['CALLSEED_MSG_MSG'] = 'Ошибка отправки сообщения';
$lang['CALLSEED_MSG_MSG_TEXT'] = 'Ошибка сохранения текста сообщения';
$lang['CALLSEED_MSG_POPUP'] = 'Ошибка работы всплывающего окна';
$lang['CALLSEED_MSG_TIME'] = 'Не удалось установить время последнего запроса';
$lang['CALLSEED_HAVE_SEED'] = 'Раздача не нуждается в помощи (<b>Сидеров:</b> %d, <b>Личеров:</b> %d)';
$lang['CALLSEED'] = 'Позвать скачавших';
$lang['CALLSEED_EXPLAIN'] = 'Принимать уведомления с просьбой вернуться на раздачу?';
$lang['CALLSEED_SUBJECT'] = 'Помогите скачать %s';
$lang['CALLSEED_TEXT'] = 'Здравствуйте![br]Ваша помощь необходима в раздаче [url=%s]%s[/url][br]Если Вы решили помочь, но уже удалили торрент-файл, Вы можете скачать его [url=%s]здесь[/url][br][br]Надеюсь на Вашу помощь!';
$lang['CALLSEED_MSG_OK'] = 'Сообщения успешно отправлены всем скачавшим данный релиз';
$lang['CALLSEED_MSG_SPAM'] = 'Запрос уже был отправлен (возможно не Вами)<br /><br />Следующая возможность отправить запрос будет через <b>%s</b>.';
$lang['CALLSEED_HAVE_SEED'] = 'Раздача не нуждается в помощи (<b>Сидеров:</b> %d)';
$lang['LOG_ACTION']['LOG_TYPE'] = array(
'mod_topic_delete' => 'Топик:<br /> <b>удален</b>',

View file

@ -148,7 +148,7 @@ $lang['POSTED_ARTICLES_ZERO_TOTAL'] = 'Наші користувачі не за
$lang['POSTED_ARTICLES_TOTAL'] = 'Наші користувачі залишили повідомлень: <b>%s</b>'; // Number of posts
$lang['REGISTERED_USERS_ZERO_TOTAL'] = 'У нас немає зареєстрованих користувачів'; // # registered users
$lang['REGISTERED_USERS_TOTAL'] = 'Всього зареєстрованих користувачів: <b>%s</b>'; // # registered users
$lang['USERS_TOTAL_GENDER'] = 'Хлопців: <b>%d</b>, Дівчат: <b>%d</b>, Не зазначено: <b>%d</b>';
$lang['USERS_TOTAL_GENDER'] = 'Хлопців: <b>%d</b>, Дівчат: <b>%d</b>, Не вказали: <b>%d</b>';
$lang['NEWEST_USER'] = 'Останній зареєстрований користувач: <b>%s</b>'; // username
// Tracker stats
@ -183,8 +183,7 @@ $lang['USER_WELCOME'] = 'Приємно бачити вас, ';
// Index page
//
$lang['HOME'] = 'Головна';
$lang['NO_POSTS'] = 'Немає повідомлень';
$lang['NO_FORUMS'] = 'На цьому сайті немає форумів';
$lang['NO_FORUMS'] = 'Немає доступних для показу форумів';
$lang['PRIVATE_MESSAGE'] = 'Приватне повідомлення';
$lang['PRIVATE_MESSAGES'] = 'Приватні повідомлення';
@ -508,6 +507,7 @@ $lang['OUTBOX_EXPL'] = 'В папці <b>Вихідні</b> знаходятьс
// Profiles/Registration
//
$lang['VIEWING_USER_PROFILE'] = 'Профіль користувача %s';
$lang['VIEWING_MY_PROFILE'] = 'Мій профіль [ <a href="%s">Налаштування / Змінити профіль</a> ]';
$lang['DISABLED_USER'] = 'Користувача деактивовано';
$lang['MANAGE_USER'] = 'Адміністрування';
@ -555,7 +555,7 @@ $lang['ALWAYS_NOTIFY_EXPLAIN'] = 'Коли хто-небудь відповіс
$lang['BOARD_LANG'] = 'Мова';
$lang['GENDER'] = 'Стать';
$lang['GENDER_SELECT'] = array(
0 => 'Не визначилося',
0 => 'Не вказаний',
1 => 'Чоловічий',
2 => 'Жіночий'
);
@ -589,7 +589,7 @@ $lang['PUBLIC_VIEW_EMAIL'] = 'Показувати мою адресу e-mail в
$lang['EMAIL_EXPLAIN'] = 'На цю адресу вам буде відіслано лист для завершення реєстрації';
$lang['CURRENT_PASSWORD'] = 'Поточний пароль';
$lang['NEW_PASSWORD'] = 'Новий пароль';
$lang['NEW_PASSWORD'] = "Новий пароль\n";
$lang['CONFIRM_PASSWORD'] = 'Підтвердіть пароль';
$lang['CONFIRM_PASSWORD_EXPLAIN'] = 'Ви повинні вказати ваш поточний пароль, якщо хочете змінити його або змінити свій email.';
$lang['PASSWORD_IF_CHANGED'] = 'Вказуйте свій пароль, якщо ви хочете його змінити';
@ -601,7 +601,7 @@ $lang['RESET_AUTOLOGIN_EXPL'] = 'включаючи всі місця, де ви
$lang['AVATAR'] = 'Аватар';
$lang['AVATAR_EXPLAIN'] = "Показує невелике зображення під інформацією про вас в повідомленнях. Може бути показано тільки одне зображення, шириною не більше %d пікселів, висотою не більше %d пікселів і об'ємом не більше %d кб.";
$lang['UPLOAD_AVATAR_FILE'] = "Завантажити аватару з вашого комп'ютера";
$lang['UPLOAD_AVATAR_FILE'] = "Завантажити аватару";
$lang['SELECT_AVATAR'] = 'Виберіть аватару';
$lang['RETURN_PROFILE'] = 'Повернутися до профілю';
@ -1161,8 +1161,8 @@ $lang['SPEED_DOWN'] = 'Швидкість завантаження';
$lang['SEEDERS'] = 'Сидів';
$lang['LEECHERS'] = 'Лічерів';
$lang['RELEASING'] = 'Свої';
$lang['SEEDING'] = 'Роздає';
$lang['LEECHING'] = 'Качає';
$lang['SEEDING'] = 'Сідер';
$lang['LEECHING'] = 'Лічер';
$lang['IS_REGISTERED'] = 'Зареєстрований';
$lang['MAGNET'] = 'Magnet';
@ -1317,9 +1317,7 @@ $lang['NOT_TORRENT'] = 'Це не торрент-файл';
$lang['ONLY_1_TOR_PER_POST'] = 'Ви не можете зареєструвати ще один торрент для цього повідомлення';
$lang['ONLY_1_TOR_PER_TOPIC'] = 'Ви не можете зареєструвати ще один торрент для цього топіка';
$lang['VIEWING_USER_BT_PROFILE'] = 'Торрент-профіль'; // %s username is
$lang['CUR_ACTIVE_DLS'] = 'Поточні активні торренти';
$lang['CUR_ACTIVE_DLS_ERROR'] = 'Користувач нічого не завантажує і не сидирует';
$lang['CUR_ACTIVE_DLS_DISALLOWED'] = 'Користувач заборонив переглядати його активні торренти';
$lang['CUR_ACTIVE_DLS'] = 'Активні роздачі';
$lang['TD_TRAF'] = 'Сьогодні';
$lang['YS_TRAF'] = 'Вчора';
@ -1557,8 +1555,6 @@ $lang['NOTICE'] = '!УВАГА!';
$lang['POWERED'] = 'UG93ZXJlZCBieSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3RvcnJlbnRwaWVyLm1lIj5Ub3JyZW50UGllciBJSTwvYT4gJmNvcHk7IE1laXRoYXIsIFRvcnJlbnRQaWVyIElJIFRlYW0=';
$lang['COPY'] = "Сайт не надає електронні версії творів, а займається лише колекціонуванням і каталогізацією посилань, що присилаються та публікуються на форумі нашими читачами. Якщо ви є правовласником якого-небудь представленого матеріалу і не бажаєте щоб посилання на нього знаходилася в нашому каталозі, зв'яжіться з нами і ми негайно видалимо її. Файли для обміну на трекері надані користувачами сайту, і адміністрація не несе відповідальності за їх зміст. Прохання не заливати файли, захищені авторськими правами, а також файли нелегального змісту!";
$lang['CALLSEED'] = 'Покликати, кто завантажил';
// FILELIST
$lang['FILELIST'] = 'Список файлів';
$lang['COLLAPSE'] = 'Згорнути директорії';
@ -1740,7 +1736,6 @@ $lang['INDEXER'] = "Переіндексувати пошук";
$lang['FORUM_STYLE'] = 'Стиль форуму';
$lang['LINKS_ARE_FORBIDDEN'] = 'Посилання заборонені';
$lang['YOU_ARE_BEING_CHEATED'] = 'Схоже, вас намагаються обдурити<br />Сайт відкритий у фреймі. Поточна адреса';
$lang['DONATION'] = 'Допомога трекеру';
@ -2871,18 +2866,13 @@ $lang['BOT_TOPIC_MOVED_FROM_TO'] = 'Топік був перенесений з
$lang['BOT_MESS_SPLITS'] = 'Повідомлення з цієї теми були виділені в окремий топік [b]%s[/b][br][br]%s';
$lang['BOT_TOPIC_SPLITS'] = 'Тема була виділена з [b]%s[/b][br][br]%s';
$lang['CALLSEED_SUBJ'] = 'Допоможіть завантажити %s';
$lang['CALLSEED_TEXT'] = 'Привіт!<br><br>Ваша допомога необхідна в роздачі <a href="viewtopic.php?t=%s" target=_blank>%s:% s </a><br>Якщо ви вирішили допомогти, але вже видалили торрент-файл, можете завантажити його <a href="download.php?id=%s">тут</a><br><br>Сподіваюся на вашу допомогу!';
$lang['CALLSEED_MSG_OK'] = '<b>Повідомлення (ОП) успішно відправлено всім скачавшим даний реліз</b>';
$lang['CALLSEED_MSG_SPAM'] = '<b><font color=red>Запит вже одного разу успішно надісланий</b> (можливо не Вами)</font>
<br><br>Наступна можливість відіслати запит буде через <b>%s</b> годин<!-- <b>%s</b> хвилин -->. <br>
Покликати тих, хто завантажив, можна лише один раз у <b>добу</b>';
$lang['CALLSEED_MSG_MSG'] = 'Помилка відправки повідомлення';
$lang['CALLSEED_MSG_MSG_TEXT'] = 'Помилка збереження тексту повідомлення';
$lang['CALLSEED_MSG_POPUP'] = 'Помилка роботи спливаючого вікна';
$lang['CALLSEED_MSG_TIME'] = 'Не вдалося встановити час останнього запиту';
$lang['CALLSEED_HAVE_SEED'] = 'Роздача не потребує допомоги (<b>Сидерів:</b> %d <b>Лічерів:</b> %d)';
$lang['CALLSEED'] = 'Покликати, кто завантажил';
$lang['CALLSEED_EXPLAIN'] = 'Приймати повідомлення з проханням повернутися на роздачу?';
$lang['CALLSEED_SUBJECT'] = 'Допоможіть завантажити %s';
$lang['CALLSEED_TEXT'] = 'Привіт![br]Ваша допомога необхідна в роздачі [url=%s]%s[/url][br]Якщо ви вирішили допомогти, але вже видалили торрент-файл, можете завантажити його [url=%s]здесь[/url][br][br]Сподіваюся на вашу допомогу!';
$lang['CALLSEED_MSG_OK'] = 'Повідомлення успішно відправлено всім скачавшим даний реліз';
$lang['CALLSEED_MSG_SPAM'] = 'Запит вже одного разу успішно надісланий (можливо не Вами)<br /><br />Наступна можливість відіслати запит буде через <b>%s</b>.';
$lang['CALLSEED_HAVE_SEED'] = 'Роздача не потребує допомоги (<b>Сидерів:</b> %d)';
$lang['LOG_ACTION']['LOG_TYPE'] = array(
'mod_topic_delete' => 'Топік:<br /> <b>видалений</b>',

View file

@ -171,7 +171,7 @@ if ($result = DB()->fetch_rowset($sql))
$posts = $row['user_posts'];
$pm = ($bb_cfg['text_buttons']) ? '<a class="txtb" href="'. (PM_URL . "?mode=post&amp;". POST_USERS_URL ."=$user_id") .'">'. $lang['SEND_PM_TXTB'] .'</a>' : '<a href="' . (PM_URL . "?mode=post&amp;". POST_USERS_URL ."=$user_id") .'"><img src="' . $images['icon_pm'] . '" alt="' . $lang['SEND_PRIVATE_MESSAGE'] . '" title="' . $lang['SEND_PRIVATE_MESSAGE'] . '" border="0" /></a>';
if (bf($row['user_opt'], 'user_opt', 'viewemail') || IS_AM)
if (bf($row['user_opt'], 'user_opt', 'user_viewemail') || IS_AM)
{
$email_uri = ($bb_cfg['board_email_form']) ? ("profile.php?mode=email&amp;". POST_USERS_URL ."=$user_id") : 'mailto:'. $row['user_email'];
$email = '<a class="editable" href="'. $email_uri .'">'. $row['user_email'] .'</a>';

View file

@ -49,7 +49,7 @@ switch ($mode)
{
case 'newtopic':
case 'new_rel':
if (bf($userdata['user_opt'], 'user_opt', 'allow_topic'))
if (bf($userdata['user_opt'], 'user_opt', 'dis_topic'))
{
bb_die($lang['RULES_POST_CANNOT']);
}
@ -69,7 +69,7 @@ switch ($mode)
case 'reply':
case 'quote':
if (bf($userdata['user_opt'], 'user_opt', 'allow_post'))
if (bf($userdata['user_opt'], 'user_opt', 'dis_post'))
{
bb_die($lang['RULES_REPLY_CANNOT']);
}
@ -77,7 +77,7 @@ switch ($mode)
break;
case 'editpost':
if (bf($userdata['user_opt'], 'user_opt', 'allow_post_edit'))
if (bf($userdata['user_opt'], 'user_opt', 'dis_post_edit'))
{
bb_die($lang['RULES_EDIT_CANNOT']);
}
@ -270,7 +270,7 @@ if ($submit || $refresh)
}
else
{
$notify_user = bf($userdata['user_opt'], 'user_opt', 'notify');
$notify_user = bf($userdata['user_opt'], 'user_opt', 'user_notify');
if (!IS_GUEST && $mode != 'newtopic' && !$notify_user)
{

View file

@ -991,7 +991,7 @@ else if ( $submit || $refresh || $mode != '' )
//
// Has admin prevented user from sending PM's?
//
if ( bf($userdata['user_opt'], 'user_opt', 'allow_pm') )
if (bf($userdata['user_opt'], 'user_opt', 'dis_pm'))
{
bb_die($lang['CANNOT_SEND_PRIVMSG']);
}
@ -1101,7 +1101,7 @@ else if ( $submit || $refresh || $mode != '' )
cache_rm_user_sessions ($to_userdata['user_id']);
if ( bf($to_userdata['user_opt'], 'user_opt', 'notify_pm') && !empty($to_userdata['user_email']) && $to_userdata['user_active'] && $bb_cfg['pm_notify_enabled'] )
if (bf($to_userdata['user_opt'], 'user_opt', 'user_notify_pm') && $to_userdata['user_active'] && $bb_cfg['pm_notify_enabled'])
{
require(INC_DIR .'emailer.class.php');
$emailer = new emailer($bb_cfg['smtp_delivery']);
@ -1116,7 +1116,7 @@ else if ( $submit || $refresh || $mode != '' )
'NAME_FROM' => $userdata['username'],
'MSG_SUBJECT' => html_entity_decode($privmsg_subject),
'SITENAME' => $bb_cfg['sitename'],
'U_INBOX' => make_url(PM_URL . "?folder=inbox&mode=read&p=". $privmsg_sent_id),
'U_INBOX' => make_url(PM_URL ."?folder=inbox&mode=read&p=$privmsg_sent_id"),
));
$emailer->send();
@ -1136,7 +1136,7 @@ else if ( $submit || $refresh || $mode != '' )
$to_username = (isset($_POST['username']) ) ? clean_username($_POST['username']) : '';
$privmsg_subject = ( isset($_POST['subject']) ) ? clean_title($_POST['subject']) : '';
$privmsg_message = ( isset($_POST['message']) ) ? trim($_POST['message']) : '';
$privmsg_message = ( isset($_POST['message']) ) ? prepare_message($_POST['message']) : '';
//
// Do mode specific things
@ -1269,7 +1269,7 @@ else if ( $submit || $refresh || $mode != '' )
//
// Has admin prevented user from sending PM's?
//
if ( bf($userdata['user_opt'], 'user_opt', 'allow_pm') && $mode != 'edit' )
if (bf($userdata['user_opt'], 'user_opt', 'dis_pm') && $mode != 'edit')
{
$message = ($lang['CANNOT_SEND_PRIVMSG']);
}
@ -1429,8 +1429,7 @@ else
'body' => 'privmsgs.tpl')
);
$orig_word = array();
$replacement_word = array();
$orig_word = $replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
//

View file

@ -79,7 +79,7 @@ body, th, td, font {
position: relative; width: 100%;
}
#page_content {
padding: 12px 4px 0; margin: 0 auto;
padding: 12px 10px 0; margin: 0 auto;
clear: both; position: relative;
}
#sidebar1 {}
@ -412,7 +412,7 @@ table.forumline {
.forumline th {
border: 1px solid #B7C0C5; border-width: 1px; border-top-color: #92A3A4;
padding: 6px 3px 4px; color: #000000; background-color: #CFD4D8;
font-size: 10px; text-transform: uppercase;
font-size: 9px !important; text-transform: uppercase;
}
.forumline td {
border: 1px solid #B7C0C5; border-width: 0 1px 1px;

View file

@ -46,13 +46,12 @@
<div id="forums_wrap">
<!-- IF SHOW_FORUMS -->
<!-- IF H_C_AL_MESS -->
<div class="row1 med tCenter pad_4 border bw_TRBL" style="margin: 4px 0;">{L_HIDE_CAT_MESS}</div>
<div class="spacer_6"></div>
<div class="spacer_2"></div>
<!-- ENDIF -->
<!-- IF SHOW_FORUMS -->
<!-- BEGIN c -->
<div class="category">
<h3 class="cat_title"><a href="{c.U_VIEWCAT}">{c.CAT_TITLE}</a></h3>
@ -142,7 +141,7 @@
<table class="forumline">
<tr><td class="row1 tCenter pad_8">{NO_FORUMS_MSG}</td></tr>
</table>
<div class="spacer_10"></div>
<div class="spacer_6"></div>
<!-- ENDIF -->

View file

@ -225,17 +225,6 @@ function go_to_page ()
<!-- ELSE -->
<!--======-->
<script type="text/javascript">
if (top != self) {
allowed_self = /^(translate\.googleusercontent\.com)$/;
if (!self.location.hostname.match(allowed_self)) {
$(function(){
$('body').html('<center><h1><br /><br />{L_YOU_ARE_BEING_CHEATED}&nbsp;'+ self.location.hostname +'</h1></center>');
});
}
}
</script>
<!--page_container-->
<div id="page_container">
<a name="top"></a>
@ -243,6 +232,15 @@ if (top != self) {
<!--page_header-->
<div id="page_header">
<div id="old-browser-warn" style="background: #FFF227; padding: 8px 0 10px; text-align: center; font-size: 14px; display: none; ">
<b>Вы используете устаревший браузер. Сайт может отображаться некорректно.</b>
</div>
<script>
if ( (typeof(window.opera) != "undefined" && window.opera.version() < 12) || (window.attachEvent && !window.addEventListener) /* IE < 9 */ ) {
document.getElementById('old-browser-warn').style.display = '';
}
</script>
<!--main_nav-->
<div id="main-nav" <!-- IF HAVE_NEW_PM -->class="new-pm"<!-- ENDIF --> style="height: 17px;">
<table width="100%" cellpadding="0" cellspacing="0">

View file

@ -92,7 +92,7 @@ ajax.callback.posts = function(data){
<input type="button" value="{L_LIST}" name="codeList" title="{L_LIST_TITLE}" style="width: 60px;"/>
<input type="button" value="1." name="codeOpt" title="{L_LIST_ITEM}" style="width: 30px;" />&nbsp;
<input type="button" value="{L_QUOTE_SEL}" name="quoteselected" title="{L_QUOTE_SELECTED}" onmouseout="bbcode.refreshSelection(false);" onmouseover="bbcode.refreshSelection(true);" onclick="bbcode.onclickQuoteSel();" />&nbsp;
<!-- IF USER_RUS -->
<!-- IF USER_LANG != 'en' -->
<input type="button" value="{L_TRANSLIT}" name="Translit" title="{L_TRANSLIT_TITLE}" style="width: 68px;" onclick="transliterate(document.post.message, this);" /> <a href="#" onclick="toggle_block('translit_opt'); return false"><span style="color: darkred"><b>?</b></span></a>
<!-- ENDIF -->
</div>
@ -105,7 +105,7 @@ ajax.callback.posts = function(data){
onkeyup = "storeCaret(this);"
>{MESSAGE}</textarea>
<!-- IF USER_RUS -->
<!-- IF USER_LANG != 'en' -->
<div id="translit_opt" class="mrg_4" style="display: none;">
<table cellspacing="0" class="translit_expl borderless bCenter">
<tr>

View file

@ -1,5 +1,20 @@
<style type="text/css">
.prof-tbl * { -moz-box-sizing: border-box; box-sizing: border-box; }
input[name="username"], input[name="user_email"], input[name="cur_pass"], input[name="new_pass"] {
width: 255px;
}
.prof-tbl td { padding: 4px 6px; }
.prof-title { text-align: right; }
.prof-tbl h6 { margin: 4px 0 4px 4px; color: #444444; line-height: 100%; display: inline-block; }
</style>
<script type="text/javascript">
$(function(){
var tab_idx = 100;
$('input,select,textarea', '#prof-form').not(':hidden').not(':disabled').each(function(){
$(this).attr({ tabindex: ++tab_idx });
});
});
ajax.callback.user_register = function(data){
$('#'+ data.mode).html(data.html);
};
@ -18,7 +33,7 @@ ajax.callback.user_register = function(data){
<p class="nav"><a href="{U_INDEX}">{T_INDEX}</a></p>
<form method="post" action="profile.php<!-- IF IS_ADMIN && PR_USER_ID -->?u={PR_USER_ID}<!-- ENDIF -->" class="tokenized" enctype="multipart/form-data">
<form id="prof-form" method="post" action="profile.php<!-- IF IS_ADMIN && PR_USER_ID -->?u={PR_USER_ID}<!-- ENDIF -->" class="tokenized" enctype="multipart/form-data">
<input type="hidden" name="mode" value="{MODE}" />
<input type="hidden" name="reg_agreed" value="1" />
<!-- IF NEW_USER --><input type="hidden" name="admin" value="1" /><!-- ENDIF -->
@ -35,41 +50,41 @@ document.write('<input type="hidden" name="user_timezone" value="'+tz+'" />');
<input type="hidden" name="user_timezone" value="{USER_TIMEZONE}" />
<!-- ENDIF -->
<table class="forumline usercp_register">
<table class="forumline prof-tbl">
<col class="row1" width="35%">
<col class="row2" width="65%">
<tbody class="pad_4">
<tr>
<th colspan="2">{L_REGISTRATION_INFO}</th>
</tr>
<tr class="row3 med">
<td class="bold" colspan="2">{L_ITEMS_REQUIRED}</td>
<tr>
<td class="row2 small tCenter" colspan="2">{L_ITEMS_REQUIRED}</td>
</tr>
<tr>
<td>{L_USERNAME}: *</td>
<td class="prof-title">{L_USERNAME}: *</td>
<td><!-- IF CAN_EDIT_USERNAME --><input id="username" onBlur="ajax.exec({ action: 'user_register', mode: 'check_name', username: $('#username').val()}); return false;" type="text" name="username" size="35" maxlength="25" value="{USERNAME}" /><!-- ELSE --><b>{USERNAME}</b><!-- ENDIF -->
<span id="check_name"></span></td>
</tr>
<tr>
<td>{L_EMAIL}: * <!-- IF EDIT_PROFILE --><!-- ELSE IF $bb_cfg['reg_email_activation'] --><h6>{L_EMAIL_EXPLAIN}</h6><!-- ENDIF --></td>
<td class="prof-title">{L_EMAIL}: * <!-- IF EDIT_PROFILE --><!-- ELSE IF $bb_cfg['reg_email_activation'] --><h6>{L_EMAIL_EXPLAIN}</h6><!-- ENDIF --></td>
<td><input id="email" onBlur="ajax.exec({ action: 'user_register', mode: 'check_email', email: $('#email').val()}); return false;" type="text" name="user_email" size="35" maxlength="40" value="{USER_EMAIL}" <!-- IF EDIT_PROFILE --><!-- IF $bb_cfg['emailer_disabled'] -->readonly="readonly" style="color: gray;"<!-- ENDIF --><!-- ENDIF --> />
<span id="check_email"></span></td>
</tr>
<!-- IF EDIT_PROFILE and not ADM_EDIT -->
<tr>
<td>{L_CURRENT_PASSWORD}: * <h6>{L_CONFIRM_PASSWORD_EXPLAIN}</h6></td>
<td class="prof-title">{L_CURRENT_PASSWORD}: * <h6>{L_CONFIRM_PASSWORD_EXPLAIN}</h6></td>
<td><input type="password" name="cur_pass" size="35" maxlength="32" value="" /></td>
</tr>
<!-- ENDIF -->
<tr>
<td><!-- IF EDIT_PROFILE -->{L_NEW_PASSWORD}: * <h6>{L_PASSWORD_IF_CHANGED}</h6><!-- ELSE -->{L_PASSWORD}: *<!-- ENDIF --></td>
<td class="prof-title"><!-- IF EDIT_PROFILE -->{L_NEW_PASSWORD}: * <h6>{L_PASSWORD_IF_CHANGED}</h6><!-- ELSE -->{L_PASSWORD}: *<!-- ENDIF --></td>
<td>
<input id="pass" type="<!-- IF SHOW_PASS -->text<!-- ELSE -->password<!-- ENDIF -->" name="new_pass" size="35" maxlength="32" value="" />&nbsp;
<span id="autocomplete" title="{L_AUTOCOMPLETE}">&#9668;</span> &nbsp;<i class="med">{L_PASSWORD_LONG}</i>
</td>
</tr>
<tr>
<td>{L_CONFIRM_PASSWORD}: * <!-- IF EDIT_PROFILE --><h6>{L_PASSWORD_CONFIRM_IF_CHANGED}</h6><!-- ENDIF --></td>
<td class="prof-title">{L_CONFIRM_PASSWORD}: * <!-- IF EDIT_PROFILE --><h6>{L_PASSWORD_CONFIRM_IF_CHANGED}</h6><!-- ENDIF --></td>
<td>
<input id="pass_confirm" onBlur="ajax.exec({ action: 'user_register', mode: 'check_pass', pass: $('#pass').val(), pass_confirm: $('#pass_confirm').val() }); return false;" type="<!-- IF SHOW_PASS -->text<!-- ELSE -->password<!-- ENDIF -->" name="cfm_pass" size="35" maxlength="32" value="" />
<span id="check_pass"></span>
@ -77,14 +92,14 @@ document.write('<input type="hidden" name="user_timezone" value="'+tz+'" />');
</tr>
<!-- IF CAPTCHA_HTML -->
<tr>
<td>{L_CONFIRM_CODE}:</td>
<td><span id="refresh_captcha">{CAPTCHA_HTML}</span> <img align="middle" src="./images/pic_loading.gif" title="{L_UPDATE}" onclick="ajax.exec({ action: 'user_register', mode: 'refresh_captcha'}); return false;" /></td>
<td class="prof-title">{L_CONFIRM_CODE}: *</td>
<td><span id="refresh_captcha">{CAPTCHA_HTML}</span> <img align="middle" src="{SITE_URL}images/pic_loading.gif" title="{L_UPDATE}" onclick="ajax.exec({ action: 'user_register', mode: 'refresh_captcha'}); return false;" /></td>
</tr>
<!-- ENDIF -->
<!-- IF EDIT_PROFILE -->
<!-- IF not ADM_EDIT -->
<tr>
<td>{L_AUTOLOGIN}:</td>
<td class="prof-title">{L_AUTOLOGIN}:</td>
<td><a href="{U_RESET_AUTOLOGIN}">{L_RESET_AUTOLOGIN}</a><h6>{L_RESET_AUTOLOGIN_EXPL}</h6></td>
</tr>
<!-- ENDIF -->
@ -93,42 +108,42 @@ document.write('<input type="hidden" name="user_timezone" value="'+tz+'" />');
</tr>
<!-- IF $bb_cfg['gender'] -->
<tr>
<td>{L_GENDER}:</td>
<td class="prof-title">{L_GENDER}:</td>
<td>{USER_GENDER}</td>
</tr>
<!-- ENDIF -->
<!-- IF BIRTHDAY -->
<!-- IF $bb_cfg['birthday_enabled'] -->
<tr>
<td>{L_BIRTHDAY}:</td>
<td>{BIRTHDAY}</td>
<td class="prof-title">{L_BIRTHDAY}:</td>
<td><input type="date" name="user_birthday" value="{USER_BIRTHDAY}" /></td>
</tr>
<!-- ENDIF -->
<tr>
<td>ICQ:</td>
<td class="prof-title">ICQ:</td>
<td><input type="text" name="user_icq" size="30" maxlength="15" value="{USER_ICQ}" /></td>
</tr>
<tr>
<td>{L_SKYPE}:</td>
<td class="prof-title">{L_SKYPE}:</td>
<td><input type="text" name="user_skype" size="30" maxlength="32" value="{USER_SKYPE}" /></td>
</tr>
<tr>
<td>{L_TWITTER}:</td>
<td class="prof-title">{L_TWITTER}:</td>
<td><input type="text" name="user_twitter" size="30" maxlength="15" value="{USER_TWITTER}" /></td>
</tr>
<tr>
<td>{L_WEBSITE}:</td>
<td class="prof-title">{L_WEBSITE}:</td>
<td><input type="text" name="user_website" size="50" maxlength="100" value="{USER_WEBSITE}" /></td>
</tr>
<tr>
<td>{L_OCCUPATION}:</td>
<td class="prof-title">{L_OCCUPATION}:</td>
<td><input type="text" name="user_occ" size="50" maxlength="100" value="{USER_OCC}" /></td>
</tr>
<tr>
<td>{L_INTERESTS}:</td>
<td class="prof-title">{L_INTERESTS}:</td>
<td><input type="text" name="user_interests" size="50" maxlength="150" value="{USER_INTERESTS}" /></td>
</tr>
<tr>
<td>{L_LOCATION}:</td>
<td class="prof-title">{L_LOCATION}:</td>
<td>
<div><input type="text" name="user_from" size="50" maxlength="100" value="{USER_FROM}" /></div>
</td>
@ -136,7 +151,7 @@ document.write('<input type="hidden" name="user_timezone" value="'+tz+'" />');
<!-- ENDIF -->
<!-- IF $bb_cfg['allow_change']['language'] -->
<tr>
<td>{L_BOARD_LANG}:</td>
<td class="prof-title">{L_BOARD_LANG}:</td>
<td>{LANGUAGE_SELECT}</td>
</tr>
<!-- ENDIF -->
@ -146,7 +161,7 @@ document.write('<input type="hidden" name="user_timezone" value="'+tz+'" />');
</tr>
<!-- IF TEMPLATES_SELECT -->
<tr>
<td>{L_FORUM_STYLE}</td>
<td class="prof-title">{L_FORUM_STYLE}</td>
<td>
<div style="margin: 3px 0;">
{TEMPLATES_SELECT}
@ -169,7 +184,7 @@ ajax.callback.posts = function(data){
</script>
<!-- ENDIF -->
<tr>
<td>{L_SIGNATURE}:<h6>{SIGNATURE_EXPLAIN}</h6></td>
<td class="prof-title">{L_SIGNATURE}:<h6>{SIGNATURE_EXPLAIN}</h6></td>
<!-- IF SIG_DISALLOWED -->
<td class="tCenter">{L_SIGNATURE_DISABLE}</td>
<!-- ELSE -->
@ -181,53 +196,60 @@ ajax.callback.posts = function(data){
</tr>
<tr>
<td>{L_PUBLIC_VIEW_EMAIL}:</td>
<td class="prof-title">{L_PUBLIC_VIEW_EMAIL}:</td>
<td>
<label><input type="radio" name="viewemail" value="1" <!-- IF VIEWEMAIL -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="viewemail" value="0" <!-- IF not VIEWEMAIL -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
<label><input type="radio" name="user_viewemail" value="1" <!-- IF USER_VIEWEMAIL -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="user_viewemail" value="0" <!-- IF not USER_VIEWEMAIL -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<tr>
<td>{L_HIDE_USER}:</td>
<td class="prof-title">{L_HIDE_USER}:</td>
<td>
<label><input type="radio" name="allow_viewonline" value="1" <!-- IF ALLOW_VIEWONLINE -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="allow_viewonline" value="0" <!-- IF not ALLOW_VIEWONLINE -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
<label><input type="radio" name="user_viewonline" value="1" <!-- IF USER_VIEWONLINE -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="user_viewonline" value="0" <!-- IF not USER_VIEWONLINE -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<tr>
<td>{L_DENY_VISITORS}:</td>
<td class="prof-title">{L_DENY_VISITORS}:</td>
<td>
<label><input type="radio" name="allow_dls" value="0" <!-- IF not ALLOW_DLS -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="allow_dls" value="1" <!-- IF ALLOW_DLS -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
<label><input type="radio" name="user_dls" value="1" <!-- IF USER_DLS -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="user_dls" value="0" <!-- IF not USER_DLS -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<tr>
<td>{L_ALWAYS_NOTIFY}:<h6>{L_ALWAYS_NOTIFY_EXPLAIN}</h6></td>
<td class="prof-title">{L_ALWAYS_NOTIFY}:<h6>{L_ALWAYS_NOTIFY_EXPLAIN}</h6></td>
<td>
<label><input type="radio" name="notify" value="1" <!-- IF NOTIFY -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="notify" value="0" <!-- IF not NOTIFY -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
<label><input type="radio" name="user_notify" value="1" <!-- IF USER_NOTIFY -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="user_notify" value="0" <!-- IF not USER_NOTIFY -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<!-- IF $bb_cfg['pm_notify_enabled'] -->
<tr>
<td>{L_NOTIFY_ON_PRIVMSG}:</td>
<td class="prof-title">{L_NOTIFY_ON_PRIVMSG}:</td>
<td>
<label><input type="radio" name="notify_pm" value="1" <!-- IF NOTIFY_PM -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="notify_pm" value="0" <!-- IF not NOTIFY_PM -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
<label><input type="radio" name="user_notify_pm" value="1" <!-- IF USER_NOTIFY_PM -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="user_notify_pm" value="0" <!-- IF not USER_NOTIFY_PM -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<!-- ENDIF -->
<tr>
<td>{L_HIDE_PORN_FORUMS}:</td>
<td class="prof-title">{L_CALLSEED}:<h6>{L_CALLSEED_EXPLAIN}</h6></td>
<td>
<label><input type="radio" name="hide_porn_forums" value="1" <!-- IF HIDE_PORN_FORUMS -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="hide_porn_forums" value="0" <!-- IF not HIDE_PORN_FORUMS -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
<label><input type="radio" name="user_callseed" value="1" <!-- IF USER_CALLSEED -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="user_callseed" value="0" <!-- IF not USER_CALLSEED -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<tr>
<td class="prof-title">{L_HIDE_PORN_FORUMS}:</td>
<td>
<label><input type="radio" name="user_porn_forums" value="1" <!-- IF USER_PORN_FORUMS -->checked="checked"<!-- ENDIF --> />{L_YES}</label>&nbsp;&nbsp;
<label><input type="radio" name="user_porn_forums" value="0" <!-- IF not USER_PORN_FORUMS -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<!-- IF SHOW_DATEFORMAT -->
<tr>
<td>{L_DATE_FORMAT}:<h6>{L_DATE_FORMAT_EXPLAIN}</h6></td>
<td class="prof-title">{L_DATE_FORMAT}:<h6>{L_DATE_FORMAT_EXPLAIN}</h6></td>
<td><input type="text" name="dateformat" value="{DATE_FORMAT}" maxlength="14" /></td>
</tr>
<!-- ENDIF -->
@ -241,11 +263,23 @@ ajax.callback.posts = function(data){
<!-- ELSE -->
<tr>
<td colspan="2">
<table class="borderless bCenter w80 med">
<table class="borderless bCenter med" style="width: 600px;">
<col class="w60">
<col class="w40">
<tr>
<td>Небольшое изображение под информацией о вас в сообщениях. Ширина не более {$bb_cfg['avatars']['max_width']} пикселов, высота не более {$bb_cfg['avatars']['max_height']} пикселов и объемом не более {$bb_cfg['avatars']['max_size']} байт</td>
<td>
Изображение под вашим именем в сообщениях<br />
Максимальные ШИРИНАхВЫСОТА {$bb_cfg['avatars']['max_width']}x{$bb_cfg['avatars']['max_height']} пикселов<br />
Максимальный объём {AVATARS_MAX_SIZE}<br />
<!-- IF $bb_cfg['avatars']['up_allowed'] -->
<div class="spacer_4"></div>
{L_UPLOAD_AVATAR_FILE}:
<input type="hidden" name="MAX_FILE_SIZE" value="{$bb_cfg['avatars']['max_size']}" />
<input type="file" name="avatar" />
<!-- ENDIF -->
</td>
<td class="tCenter nowrap">
<p>{L_CURRENT_IMAGE}</p>
<p class="mrg_6"><!-- IF AVATAR_URL_PATH --><img src="{AVATARS_URL}/{AVATAR_URL_PATH}" alt="avatar" /><!-- ELSE -->--<!-- ENDIF --></p>
<p><label><input type="checkbox" name="delete_avatar" <!-- IF not AVATAR_URL_PATH -->disabled="disabled"<!-- ENDIF --> /> {L_DELETE_IMAGE}</label></p>
</td>
@ -253,15 +287,6 @@ ajax.callback.posts = function(data){
</table>
</td>
</tr>
<!-- IF $bb_cfg['avatars']['up_allowed'] -->
<tr>
<td>{L_UPLOAD_AVATAR_FILE}:</td>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="{$bb_cfg['avatars']['max_size']}" />
<input type="file" name="avatar" size="40" />
</td>
</tr>
<!-- ENDIF -->
<!-- ENDIF / !AVATAR_DISALLOWED -->
<!-- ENDIF / EDIT_PROFILE -->

View file

@ -111,15 +111,22 @@ ajax.callback.manage_user = function(data) {
<!-- IF IS_AM -->
<script type="text/javascript">
ajax.ip_load = false;
ajax.mod_action = function(mode) {
if(!ajax.ip_load) {
ajax.exec({
action : 'mod_action',
mode : mode,
user_id : {PROFILE_USER_ID}
});
}
else
{
$('#ip_list').toggle();
}};
ajax.callback.mod_action = function(data) {
$('#ip_list').toggle().html(data.ip_list_html);
$('#ip_list').html(data.ip_list_html);
ajax.ip_load = true;
}
</script>
<script type="text/javascript">
@ -164,33 +171,24 @@ ajax.callback.gen_passkey = function(data){
</script>
<!-- ENDIF / SHOW_PASSKEY -->
<script type="text/javascript">
ajax.view_profile = function(mode) {
ajax.exec({
action : 'view_profile',
mode : mode,
user_id : {PROFILE_USER_ID}
});
}
ajax.callback.view_profile = function(data) {
$('#active_torrents').html(data.active_torrents);
}
</script>
<style type="text/css">
#traf-stats-tbl { width: 468px; background: #F9F9F9; border: 1px solid #A5AFB4; border-collapse: separate; }
#traf-stats-tbl th, #traf-stats-tbl td { padding: 2px 10px 3px; text-align: center; white-space: nowrap; font-size: 11px; }
#traf-stats-tbl th { padding: 2px <!-- IF $bb_cfg['seed_bonus_enabled'] -->11<!-- ELSE -->22<!-- ENDIF -->px 3px; }
.pagetitle a { font-size: 16px; }
</style>
<a name="editprofile"></a>
<h1 class="pagetitle">{L_VIEWING_PROFILE}</h1>
<h1 class="pagetitle"><!-- IF PROFILE_USER -->{L_MY_PROFILE}<!-- ELSE -->{L_VIEWING_PROFILE}<!-- ENDIF --></h1>
<div class="nav">
<p class="floatL"><a href="{U_INDEX}">{T_INDEX}</a></p>
<!-- IF IS_ADMIN -->
<p class="floatR">
<!-- IF IS_ADMIN || PROFILE_USER --><a href="{U_MANAGE}">{L_EDIT_PROFILE}</a><!-- ENDIF -->
<!-- IF IS_ADMIN --> &middot; <a href="{U_PERMISSIONS}">{L_PERMISSIONS}</a><!-- ENDIF -->
<a href="{U_MANAGE}">{L_PROFILE}</a> &middot;
<a href="{U_PERMISSIONS}">{L_PERMISSIONS}</a>
</p>
<!-- ENDIF -->
<div class="clear"></div>
</div>
@ -203,9 +201,9 @@ ajax.callback.view_profile = function(data) {
<div id="avatar-img" class="mrg_4 med">
<!-- IF AVATAR_IMG -->
<!-- IF not AVATAR_DISALLOWED or #IS_AM -->{AVATAR_IMG}<!-- ENDIF -->
<!-- IF not AVATAR_DISALLOWED or #IS_AM --><span id="avatar-img">{AVATAR_IMG}</span><!-- ENDIF -->
<!-- IF IS_ADMIN -->
<p id="avatar-adm" class="med mrg_4"><a href="#" onclick="if (window.confirm('Удалить аватар?')){ ajax.avatar('delete', {PROFILE_USER_ID}); } return false;" class="adm">[{L_DELETE}]</a></p>
<p id="avatar-adm" class="med mrg_4">[ <a href="#" onclick="if (window.confirm('Удалить аватар?')){ ajax.avatar('delete', {PROFILE_USER_ID}); } return false;" class="adm">{L_DELETE}</a> ]</p>
<!-- ENDIF -->
<!-- ELSE / !AVATAR_IMG -->{L_NOAVATAR}
<!-- ENDIF -->
@ -259,12 +257,12 @@ ajax.callback.view_profile = function(data) {
</tr>
<!-- ENDIF -->
<!-- IF TWITTER -->
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<tr>
<th>{L_TWITTER}:</th>
<td class="tLeft med" id="user_twitter">
<span class="editable">
<a href="http://twitter.com/{TWITTER}" class="twitter-follow-button" data-show-count="false" data-lang="ru">{L_READ} @{TWITTER}</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<a href="https://twitter.com/{TWITTER}" class="twitter-follow-button" data-show-count="false" data-lang="{USER_LANG}">{TWITTER}</a>
</span>
</td>
</tr>
@ -326,13 +324,13 @@ ajax.callback.view_profile = function(data) {
</fieldset>
<fieldset class="mrg_6"><legend>{L_BAN_USER}</legend>
<div class="tLeft" style="padding: 2px 6px 6px; display: block;" id="user-opt">
<label><input type="checkbox" name="allow_avatar"/>{L_HIDE_AVATARS}</label>
<label><input type="checkbox" name="allow_sig"/>{L_SHOW_CAPTION}</label>
<label><input type="checkbox" name="allow_passkey"/>{L_DOWNLOAD_TORRENT}</label>
<label><input type="checkbox" name="allow_pm"/>{L_SEND_PM}</label>
<label><input type="checkbox" name="allow_post"/>{L_SEND_MESSAGE}</label>
<label><input type="checkbox" name="allow_post_edit"/>{L_EDIT_POST}</label>
<label><input type="checkbox" name="allow_topic"/>{L_NEW_THREADS}</label>
<label><input type="checkbox" name="dis_avatar"/>{L_HIDE_AVATARS}</label>
<label><input type="checkbox" name="dis_sig"/>{L_SHOW_CAPTION}</label>
<label><input type="checkbox" name="dis_passkey"/>{L_DOWNLOAD_TORRENT}</label>
<label><input type="checkbox" name="dis_pm"/>{L_SEND_PM}</label>
<label><input type="checkbox" name="dis_post"/>{L_SEND_MESSAGE}</label>
<label><input type="checkbox" name="dis_post_edit"/>{L_EDIT_POST}</label>
<label><input type="checkbox" name="dis_topic"/>{L_NEW_THREADS}</label>
</div>
</fieldset>
<div id="user-opt-save" class="hidden tCenter">
@ -356,14 +354,13 @@ ajax.callback.view_profile = function(data) {
<td>
<b>{LAST_ACTIVITY_TIME}</b>
<!-- IF TRAF_STATS --><span id="traf-stats-span">[ <a href="#" id="traf-stats-btn" class="med" onclick="ajax.index_data('get_traf_stats'); return false;">{L_VIEWING_USER_BT_PROFILE}</a> ]</span><!-- ENDIF -->
[ <a href="#torrent" class="med" onclick="ajax.view_profile('active_torrents'); return false;">{L_CUR_ACTIVE_DLS}</a> ]
</td>
</tr>
<tr>
<th>{L_TOTAL_POSTS}:</th>
<td>
<p>
<b>{POSTS}</b>&nbsp;
<b>{POSTS}</b>
[ <a href="{U_SEARCH_USER}" class="med">{L_SEARCH_USER_POSTS}</a> ]
[ <a href="{U_SEARCH_TOPICS}" class="med">{L_SEARCH_USER_TOPICS}</a> ]
[ <a class="med" href="{U_SEARCH_RELEASES}">{L_SEARCH_RELEASES}</a> ]
@ -485,7 +482,8 @@ ajax.callback.view_profile = function(data) {
</td>
</tr>
</table><!--/user_details-->
</table>
<!--/user_details-->
<!-- IF IS_AM --><span id="ip_list"></span><!-- ENDIF -->
@ -505,20 +503,86 @@ ajax.callback.view_profile = function(data) {
</tr>
<!-- END switch_report_user -->
</table><!--/user_profile-->
</table>
<!--/user_profile-->
<div id="active_torrents"></div>
<a name="torrent"></a>
<div class="spacer_8"></div>
<!-- IF USER_DLS -->
<style type="text/css">
#dls-tbl u { display: none; }
.dls-type, .dls-f { padding: 4px; text-align: center; }
.dls-cnt { font-size: 16px; font-weight: normal; }
</style>
<script type="text/javascript">
$(function(){
$('#dls-tbl').tablesorter();
});
</script>
<!--bottom_info-->
<div class="bottom_info">
<h1 class="pagetitle tCenter">{L_CUR_ACTIVE_DLS} <span class="dls-cnt">({L_RELEASINGS}, {L_SEEDINGS}, {L_LEECHINGS})</span></h1>
<div class="spacer_6"></div>
<div class="sectionMain">
<table class="forumline tablesorter" id="dls-tbl">
<thead>
<tr>
<th class="{sorter: 'digit'}"><b class="tbs-text">{L_TYPE}</b></th>
<th class="{sorter: 'text'}" width="25%"><b class="tbs-text">{L_FORUM}</b></th>
<th class="{sorter: 'text'}" width="75%"><b class="tbs-text">{L_TOPICS}</b></th>
<th class="{sorter: false}">{L_TORRENT}</th>
</tr>
</thead>
<div id="timezone">
<p>{LAST_VISIT_DATE}</p>
<p>{CURRENT_TIME}</p>
<p>{S_TIMEZONE}</p>
</div>
<div class="clear"></div>
<!-- BEGIN released -->
<tr class="{released.ROW_CLASS}">
<td class="dls-type"><u>0</u><b class="seedmed">{L_RELEASING}</b></td>
<td class="dls-f"><a class="gen" href="{released.U_VIEW_FORUM}">{released.FORUM_NAME}</a></td>
<td class="pad_4"><a class="med tLink" href="{released.U_VIEW_TOPIC}">{released.TOR_TYPE}<b>{released.TOPIC_TITLE}</a></td>
<td class="tCenter med nowrap pad_2">
<p><b class="seedmed">{released.TOPIC_SEEDERS}</b> | <b class="leechmed">{released.TOPIC_LEECHERS}</b></p>
<p style="padding-top: 2px" class="seedsmall">{released.SPEED_UP}</p>
</td>
</tr>
<!-- END released -->
</div><!--/bottom_info-->
<!-- BEGIN seed -->
<tr class="{seed.ROW_CLASS}">
<td class="dls-type"><u>1</u><span class="seedmed">{L_SEEDING}</span></td>
<td class="dls-f"><a class="gen" href="{seed.U_VIEW_FORUM}">{seed.FORUM_NAME}</a></td>
<td class="pad_4"><a class="med tLink" href="{seed.U_VIEW_TOPIC}">{seed.TOR_TYPE}<b>{seed.TOPIC_TITLE}</b></a></td>
<td class="tCenter med nowrap pad_2">
<p><b class="seedmed">{seed.TOPIC_SEEDERS}</b> | <b class="leechmed">{seed.TOPIC_LEECHERS}</b></p>
<p style="padding-top: 2px" class="seedsmall">{seed.SPEED_UP}</p>
</td>
</tr>
<!-- END seed -->
<!-- BEGIN leech -->
<tr class="{leech.ROW_CLASS}">
<td class="dls-type"><u>2</u><span class="leechmed">{L_LEECHING}</span></td>
<td class="dls-f"><a class="gen" href="{leech.U_VIEW_FORUM}">{leech.FORUM_NAME}</a></td>
<td class="pad_4"><a class="med tLink" href="{leech.U_VIEW_TOPIC}">{leech.TOR_TYPE}<b>{leech.TOPIC_TITLE}</b></a></td>
<td class="tCenter med nowrap pad_2">
<p><b class="seedmed">{leech.TOPIC_SEEDERS}</b> | <b class="leechmed">{leech.TOPIC_LEECHERS}</b></p>
<p style="padding-top: 2px" class="seedsmall">{leech.SPEED_DOWN}</p>
</td>
</tr>
<!-- END leech -->
<tfoot>
<tr class="row2 tCenter">
<td colspan="4" class="catBottom pad_6">&nbsp;</td>
</tr>
</tfoot>
</table>
</div>
<br />
<!-- ELSE -->
<h1 class="pagetitle tCenter">{L_CUR_ACTIVE_DLS}: <span class="normal">{L_NO}</span></h1>
<!-- ENDIF -->
<!-- IF SHOW_SEARCH_DL -->
<div class="tCenter">
<a class="gen" href="{U_SEARCH}?dlu={PROFILE_USER_ID}&dlw=1">{L_SEARCH_DL_WILL_DOWNLOADS}</a> ::
<a class="gen" href="{U_SEARCH}?dlu={PROFILE_USER_ID}&dlc=1">{L_SEARCH_DL_COMPLETE_DOWNLOADS}</a>
</div>
<!-- ENDIF -->

View file

@ -132,7 +132,7 @@ if (!$forums = $datastore->get('cat_forums'))
$forums = $datastore->get('cat_forums');
}
if($forums['forum'][$forum_id]['allow_porno_topic'] && bf($userdata['user_opt'], 'user_opt', 'hide_porn_forums')) bb_die($lang['ERROR_PORNO_FORUM']);
if($forums['forum'][$forum_id]['allow_porno_topic'] && bf($userdata['user_opt'], 'user_opt', 'user_porn_forums')) bb_die($lang['ERROR_PORNO_FORUM']);
if (!$forum_data['forum_parent'] && isset($forums['f'][$forum_id]['subforums']) && $show_subforums)
{

View file

@ -46,19 +46,19 @@ $prev_ip = '';
$user_id = 0;
while ( $row = DB()->sql_fetchrow($result) )
while ($row = DB()->sql_fetchrow($result))
{
$view_online = false;
if ( $row['session_logged_in'] )
if ($row['session_logged_in'])
{
$user_id = $row['user_id'];
if ( $user_id != $prev_user )
if ($user_id != $prev_user)
{
$username = profile_url($row);
if ( bf($row['user_opt'], 'user_opt', 'allow_viewonline') )
if (bf($row['user_opt'], 'user_opt', 'user_viewonline'))
{
$view_online = IS_AM;
$hidden_users++;
@ -78,7 +78,7 @@ while ( $row = DB()->sql_fetchrow($result) )
}
else
{
if ( $row['session_ip'] != $prev_ip )
if ($row['session_ip'] != $prev_ip)
{
$username = $lang['GUEST'];
$view_online = true;
@ -92,7 +92,7 @@ while ( $row = DB()->sql_fetchrow($result) )
$prev_ip = $row['session_ip'];
$user_ip = hexdec(substr($prev_ip, 0, 2)) . '.' . hexdec(substr($prev_ip, 2, 2)) . '.' . hexdec(substr($prev_ip, 4, 2)) . '.' . hexdec(substr($prev_ip, 6, 2));
if ( $view_online )
if ($view_online)
{
$row_class = !($which_counter % 2) ? 'row1' : 'row2';

View file

@ -121,7 +121,7 @@ $forum_topic_data =& $t_data;
$topic_id = $t_data['topic_id'];
$forum_id = $t_data['forum_id'];
if($t_data['allow_porno_topic'] && bf($userdata['user_opt'], 'user_opt', 'hide_porn_forums')) bb_die($lang['ERROR_PORNO_FORUM']);
if($t_data['allow_porno_topic'] && bf($userdata['user_opt'], 'user_opt', 'user_porn_forums')) bb_die($lang['ERROR_PORNO_FORUM']);
if ($userdata['session_admin'] && !empty($_REQUEST['mod']))
{
@ -697,7 +697,7 @@ for($i = 0; $i < $total_posts; $i++)
$poster_avatar = '';
if ( !$user->opt_js['h_av'] && $poster_id != GUEST_UID )
{
$poster_avatar = get_avatar($postrow[$i]['user_id'], $postrow[$i]['avatar_ext_id'], !bf($postrow[$i]['user_opt'], 'user_opt', 'allow_avatar'));
$poster_avatar = get_avatar($postrow[$i]['user_id'], $postrow[$i]['avatar_ext_id'], !bf($postrow[$i]['user_opt'], 'user_opt', 'dis_avatar'));
}
$poster_rank = $rank_image = '';
@ -736,7 +736,7 @@ for($i = 0; $i < $total_posts; $i++)
$user_sig = ($bb_cfg['allow_sig'] && !$user->opt_js['h_sig'] && $postrow[$i]['user_sig']) ? $postrow[$i]['user_sig'] : '';
if (bf($postrow[$i]['user_opt'], 'user_opt', 'allow_sig'))
if (bf($postrow[$i]['user_opt'], 'user_opt', 'dis_sig'))
{
$user_sig = $lang['SIGNATURE_DISABLE'];
}
@ -918,7 +918,7 @@ if ($bb_cfg['show_quick_reply'])
if (!IS_GUEST)
{
$notify_user = bf($userdata['user_opt'], 'user_opt', 'notify');
$notify_user = bf($userdata['user_opt'], 'user_opt', 'user_notify');
$template->assign_vars(array(
'QR_NOTIFY_CHECKED' => ($notify_user) ? $notify_user && $is_watching_topic : $is_watching_topic,