Скорость интернета пользователя

dimka3210

Пользователь
#1
Ну, если честно, то и не знаю у кого мод получился легче. Тот что с тп1 пришёл или мой. По крайней мере мне почему то кажется что мой. А там посмотрим. Хотел уложиться в пару строчек, а оказалось что набыдлокодил аж 100. Ну да ладно, приступим что ли).
# Author: dimka3210.
# Date: 18/12/2011
# Time install: ~ 7 min.
# Number of affected files: 8

Начнём мы пожалуй с лангов.
lang_main.php
PHP:
// Мод скорость пользователя
$lang['NOT_DEFINED'] = "Не опреледено";
$lang['DOWNLOADSPEED'] = "Загрузка";
$lang['UPLOADSPEED'] = "Отдача";
viewtopic.tpl
HTML:
<!-- IF postrow.USER_SPEED_UP --><p class="posts"><em>{L_UPLOADSPEED}:</em> {postrow.USER_SPEED_UP}</p><!-- ENDIF -->
        <!-- IF postrow.USER_SPEED_DOWN --><p class="posts"><em>{L_DOWNLOADSPEED}:</em> {postrow.USER_SPEED_DOWN}</p><!-- ENDIF -->
viewtopic.php
найти 'EDITED_MESSAGE' => $l_edited_by, и после него вставить
PHP:
'USER_SPEED_UP'        => get_speed_cache($postrow[$i]['user_speed_up']),
        'USER_SPEED_DOWN'    => get_speed_cache($postrow[$i]['user_speed_down']),
Найти
PHP:
$sql = "
    [PHP]SELECT
      u.username, u.user_id, u.user_posts, u.user_from,
      u.user_regdate, u.user_rank, u.user_sig,
      u.user_avatar, u.user_avatar_type,
      u.user_opt,
В строку после u.user_opt, добавить u.user_speed_up, u.user_speed_down,
usercp_register.php
найти строку $tp_data['USER_GENDER'] = build_select('user_gender', array_flip($lang['GENDER_SELECT']), $pr_data['user_gender']);
break;
после неё добавить
PHP:
    // Скорость отдачи в профиле.
    case 'user_speed_up':
        $speed = isset($_POST['user_speed_up']) ? (int) $_POST['user_speed_up'] : $pr_data['user_speed_up'];
        if ($submit && $speed != $pr_data['user_speed_up'])
        {
            $pr_data['user_speed_up'] = $speed;
            $db_data['user_speed_up'] = $speed;
        }
        $tp_data['USER_SPEED_UP']    = user_speed_selected('user_speed_up');
        break;
    // Скорость закачки в профиле.
    case 'user_speed_down':
        $speed = isset($_POST['user_speed_down']) ? (int) $_POST['user_speed_down'] : $pr_data['user_speed_down'];
        if ($submit && $speed != $pr_data['user_speed_down'])
        {
            $pr_data['user_speed_down'] = $speed;
            $db_data['user_speed_down'] = $speed;
        }
        $tp_data['USER_SPEED_DOWN']    = user_speed_selected('user_speed_down');
        break;
    // END CODE FROM DIMKA3210
и чуть выше найти массив $profile_fields и добавить в него пару ячеек
PHP:
'user_speed_up'    => true,
            'user_speed_down'  => true,
usercp_register.tpl
найти строку <!-- IF $bb_cfg['gender'] -->
<tr>
<td>{L_GENDER}:</td>
<td>{USER_GENDER}</td>
</tr>
<!-- ENDIF -->
после неё добвить
HTML:
<tr>
    <td>{L_UPLOADSPEED}:</td>
    <td>
    {USER_SPEED_UP}
    </td>
</tr>
<tr>
    <td>{L_DOWNLOADSPEED}:</td>
    <td>
    {USER_SPEED_DOWN}
    </td>
</tr>
function.php
найти function make_jumpbox ($selected = 0)
перед добавить
PHP:
    function user_speed($id){
        $sql = "SELECT `speed_id`, `speed_str` FROM `bb_users_speed` WHERE `speed_id` = " . $id;
    $result = DB()->fetch_row($sql);
    return $result['speed_str'];
}    // end user_speed
    function user_speed_selected($mode){
        global $userdata, $lang;
        $v = '<select name="' . $mode . '">';
        $sql = "SELECT * FROM bb_users_speed";
        $result = DB()->sql_query($sql);
        $v .= '<option value="0">Не определено</option>';
            for($i = 0; $i < mysql_num_rows($result); $i++){
                $row = mysql_fetch_row($result);
                $selected = ($userdata[$mode] == $row[0]) ? " selected " : false;
                $v .= "<option value=\"{$row[0]}\"{$selected}>{$row[1]}</option>\n";
            } // end for
        $v .= '</select>';
    return $v;
}    //end user_speed_selected
    function get_speed_cache($mode){
global $lang;
        if(empty($mode))
            return $lang['NOT_DEFINED'];
    if(!CACHE('bb_cache')->get('user_speed')){
        $sql = "SELECT * FROM bb_users_speed";
            $result = DB()->fetch_rowset($sql);
        CACHE('bb_cache')->set('user_speed', $result, 1200);
        } //end if
    $speed = CACHE('bb_cache')->get('user_speed');
    $m1 = $mode-1;
        $return = $speed[$m1]['speed_str'];
        return $return;
}    // end get_speed_cache
usercp_viewprofile.tpl
HTML:
<tr>
                <th>{L_UPLOADSPEED}</th>
                <td><b>{SPEED_USER_UP}</b></td>
            </tr>
            <tr>
                <th>{L_DOWNLOADSPEED}:</th>
                <td><b>{SPEED_USER_DOWN}</b></td>
            </tr>
usercp_viewprofile.php
после 'LOCATION' => $profiledata['user_from'],
добавить
PHP:
'SPEED_USER_UP'          => ($profiledata['user_speed_up']) ? user_speed($profiledata['user_speed_up']) : $lang['NOT_DEFINED'],
    'SPEED_USER_DOWN'      => ($profiledata['user_speed_down']) ? user_speed($profiledata['user_speed_down']) : $lang['NOT_DEFINED'],
теперь разберёмся с БД.
Код:
CREATE TABLE IF NOT EXISTS `bb_users_speed` (
  `speed_id` mediumint(3) NOT NULL AUTO_INCREMENT,
  `speed_str` varchar(30) NOT NULL,
  PRIMARY KEY (`speed_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=38 ;
INSERT INTO `bb_users_speed` (`speed_id`, `speed_str`) VALUES
(1, '100 Kb/s'),
(2, '200 Kb/s'),
(3, '300 Kb/s'),
(4, '400 Kb/s'),
(5, '500 Kb/s'),
(6, '600 Kb/s'),
(7, '700 Kb/s'),
(8, '800 Kb/s'),
(9, '900 Kb/s'),
(10, '1 Mb/s'),
(11, '2 Mb/s'),
(12, '3 Mb/s'),
(13, '4 Mb/s'),
(14, '5 Mb/s'),
(15, '6 Mb/s'),
(16, '7 Mb/s'),
(17, '8 Mb/s'),
(18, '9 Mb/s'),
(19, '10 Mb/s'),
(20, '20 Mb/s'),
(21, '30 Mb/s'),
(22, '40 Mb/s'),
(23, '50 Mb/s'),
(24, '60 Mb/s'),
(25, '70 Mb/s'),
(26, '80 Mb/s'),
(27, '90 Mb/s'),
(28, '100 Mb/s'),
(29, '200 Mb/s'),
(30, '300 Mb/s'),
(31, '400 Mb/s'),
(32, '500 Mb/s'),
(33, '600 Mb/s'),
(34, '700 Mb/s'),
(35, '800 Mb/s'),
(36, '900 Mb/s'),
(37, '1 Gb/s');
и 2 поля у пользователя

Код:
ALTER TABLE `bb_users` ADD `user_speed_up` INT( 3 ) NOT NULL DEFAULT '0' AFTER `user_gender`;
ALTER TABLE `bb_users` ADD `user_speed_down` INT( 3 ) NOT NULL DEFAULT '0' AFTER `user_speed_up`;
Ну вот и всё.


 

Вложения

Nightmare

Разработчик
#2
Думаю лучше было бы без таблички bb_users_speed обойтись, хоть все это и кешируется, к примеру в конфиге создать массив
PHP:
$bb_cfg['users_speed'][0]= '100 Kb/s';
или
PHP:
$bb_cfg['users_speed']= array('100 Kb/s', '200 Kb/s');
и тд вообщем, кому как удобнее.
 

Nightmare

Разработчик
#4
Ну кому как удобнее, даже если делать админку для этого мода, которая в принципе и не нужна, пихать это в табличку как-то, скажем так, затратно что ли)
 

Nightmare

Разработчик
#6
PHP:
 CACHE('bb_cache')->set('user_speed', $result, 1200);
...
$speed = CACHE('bb_cache')->get('user_speed');
тут мы снова получаем, что мы из файла их вытаскиваем )))
 

dimka3210

Пользователь
#9
))) Это как бы не принципиально, не все используют отличные от стандартных методы кеширования. Я подозреваю, что мало "админов" о них вообще знают)
тут не поспоришь. статистика плачевная сейчас в плане общего развития "админов".
 

Lange

Пользователь
#10
Notice: Undefined index: user_speed_up in C:\LanServer\SERVERdoc\home\main\www\viewtopic.php on line 1029 Notice: Undefined index: user_speed_down in C:\LanServer\SERVERdoc\home\main\www\viewtopic.php on line 1030
Нотисы выскакивают при просмотре темы.
--- добавлено: Dec 27, 2011 4:35 PM ---
PS Строки
'USER_SPEED_UP' => get_speed_cache($postrow[$i]['user_speed_up']),
'USER_SPEED_DOWN' => get_speed_cache($postrow[$i]['user_speed_down']),