—————————————————
Название: Парковка аккаунта + запрет скачивания
Автор: Craken
Адаптировал под TPII: Gemini_13 <gemini_13@torba.su>
Описание: Мод добавляет возможность припарковать аккаунт на сайте в случае длительного отъезда. Если аккаунт припаркован, то во время чистки он не будет удален, но справедливости ради на аккаунт наложен запрет скачивания.
Сложность установки: Легкая
Время установки: ~ 5 минут
Адаптирован под версию TPII: R550
Файлы к редактированию:
— tracker.php
— viewforum.php
— attach_mod/displaying_torrent.php
— includes/cron/jobs/prune_inactive_users.php
— includes/ucp/usercp_register.php
— includes/ucp/usercp_viewprofile.php
— language/lang_russian/lang_main.php
— templates/default/usercp_register.tpl
— templates/default/usercp_viewprofile.tpl
Addon:
— Отключение возможности писать у припаркованных аккаунтов
— Отключение модуля ЛС у припаркованных аккаунтов
—————————————————
Копирование и выкладывание модификаций на сторонних ресурсах без указания ссылки запрещено.
# ---- [ SQL ] ------------------- ALTER TABLE `bb_users` ADD `user_park_profile` TINYINT(1) NOT NULL DEFAULT '0'; # ---- [ Открыть ] ------------------- tracker.php # ---- [ Найти ] ------------------- 'TOR_FROZEN' => (!IS_AM) ? isset($bb_cfg['tor_frozen'][$tor['tor_status']]) : '', # ---- [ Заменить на ] ------------------- 'TOR_FROZEN' => (!IS_AM) ? (isset($bb_cfg['tor_frozen'][$tor['tor_status']]) || $userdata['user_park_profile']) : '', # ---- [ Открыть ] ------------------- viewforum.php # ---- [ Найти ] ------------------- 'TOR_FROZEN' => isset($topic['tor_status']) ? ((!IS_AM) ? isset($bb_cfg['tor_frozen'][$topic['tor_status']]) : '') : '', # ---- [ Заменить на ] ------------------- 'TOR_FROZEN' => isset($topic['tor_status']) ? ((!IS_AM) ? (isset($bb_cfg['tor_frozen'][$topic['tor_status']]) || $userdata['user_park_profile']) : '') : '', # ---- [ Открыть ] ------------------- attach_mod/displaying_torrent.php # ---- [ Найти ] ------------------- '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_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']) || $userdata['user_park_profile']) ? true : '' : '', # ---- [ Открыть ] ------------------- includes/cron/jobs/prune_inactive_users.php # ---- [ Найти ] ------------------- if ($not_activated_days = intval($bb_cfg['user_not_activated_days_keep'])) { $sql = " SELECT user_id FROM ". BB_USERS ." WHERE user_active = 0 AND user_lastvisit = 0 AND user_regdate < ". (TIMENOW - 86400*$not_activated_days) ." AND user_id NOT IN($excluded_users) LIMIT $users_per_cycle "; foreach (DB()->fetch_rowset($sql) as $row) { $not_activated_users[] = $row['user_id']; } } if ($not_active_days = intval($bb_cfg['user_not_active_days_keep'])) { $sql = " SELECT user_id FROM ". BB_USERS ." WHERE user_active = 1 AND user_posts = 0 AND user_lastvisit < ". (TIMENOW - 86400*$not_active_days) ." AND user_id NOT IN($excluded_users) LIMIT $users_per_cycle "; foreach (DB()->fetch_rowset($sql) as $row) { $not_active_users[] = $row['user_id']; } } # ---- [ Заменить на ] ------------------- if ($not_activated_days = intval($bb_cfg['user_not_activated_days_keep'])) { $sql = " SELECT user_id FROM ". BB_USERS ." WHERE user_active = 0 AND user_park_profile = 0 AND user_lastvisit = 0 AND user_regdate < ". (TIMENOW - 86400*$not_activated_days) ." AND user_id NOT IN($excluded_users) LIMIT $users_per_cycle "; foreach (DB()->fetch_rowset($sql) as $row) { $not_activated_users[] = $row['user_id']; } } if ($not_active_days = intval($bb_cfg['user_not_active_days_keep'])) { $sql = " SELECT user_id FROM ". BB_USERS ." WHERE user_active = 1 AND user_park_profile = 0 AND user_posts = 0 AND user_lastvisit < ". (TIMENOW - 86400*$not_active_days) ." AND user_id NOT IN($excluded_users) LIMIT $users_per_cycle "; foreach (DB()->fetch_rowset($sql) as $row) { $not_active_users[] = $row['user_id']; } } # ---- [ Открыть ] ------------------- includes/ucp/usercp_register.php # ---- [ Найти ] ------------------- $pr_data = array( 'user_id' => GUEST_UID, 'username' => '', 'user_password' => '', 'user_email' => '', # ---- [ Вставить после ] ------------------- 'user_park_profile'=> 0, # ---- [ Найти ] ------------------- // field => can_edit $profile_fields = array( 'user_active' => IS_ADMIN, 'username' => (IS_ADMIN || $bb_cfg['allow_namechange']), 'user_password' => true, 'user_email' => true, // должен быть после user_password 'user_lang' => true, # ---- [ Вставить после ] ------------------- 'user_park_profile'=> true, # ---- [ Найти ] ------------------- /** * Язык (edit, reg) */ case 'user_lang': $user_lang = isset($_POST['user_lang']) ? (string) $_POST['user_lang'] : $pr_data['user_lang']; if ($submit && ($user_lang != $pr_data['user_lang'] || $mode == 'register')) { $pr_data['user_lang'] = $user_lang; $db_data['user_lang'] = $user_lang; } break; # ---- [ Вставить после ] ------------------- /** * Парковка аккаунта (edit) */ case 'user_park_profile': $user_park_profile = isset($_POST['user_park_profile']) ? (int) $_POST['user_park_profile'] : $pr_data['user_park_profile']; if ($submit && ($user_park_profile != $pr_data['user_park_profile'] || $mode == 'register')) { $pr_data['user_park_profile'] = $user_park_profile; $db_data['user_park_profile'] = $user_park_profile; } break; # ---- [ Найти ] ------------------- 'USER_TIMEZONE' => $pr_data['user_timezone'], # ---- [ Вставить после ] ------------------- 'PARK_PROFILE' => $pr_data['user_park_profile'], # ---- [ Открыть ] ------------------- includes/ucp/usercp_viewprofile.php # ---- [ Найти ] ------------------- if ($user_rank = $profiledata['user_rank'] AND isset($ranks[$user_rank])) { $rank_image = ($ranks[$user_rank]['rank_image']) ? '<img src="'. $ranks[$user_rank]['rank_image'] .'" alt="" title="" border="0" />' : ''; $poster_rank = $ranks[$user_rank]['rank_title']; } # ---- [ Вставить после ] ------------------- $park_status = $profiledata['user_park_profile'] ? $lang['YES'] : $lang['NO']; $template->assign_vars(array( 'STATUS_PARK' => $park_status, )); # ---- [ Открыть ] ------------------- language/lang_russian/lang_main.php # ---- [ Вставить в конец ] ------------------- // Парковка аккаунта $lang['PARK_CONTROL'] ='Парковка аккаунта'; $lang['PARK_WARNING'] ='Припарковав аккаунт Вы не сможете скачивать!'; $lang['PARK_PROFILE_STATUS'] ='Аккаунт припаркован'; $lang['PARK_PROFILE_STATUS_WHOTE'] ='<h5>Что такое "Парковка Аккаунта"?</h5>'; # ---- [ Открыть ] ------------------- templates/default/usercp_register.tpl # ---- [ Найти ] ------------------- <!-- IF not ADM_EDIT --> <tr> <td>{L_AUTOLOGIN}:</td> <td><a href="{U_RESET_AUTOLOGIN}">{L_RESET_AUTOLOGIN}</a><h6>{L_RESET_AUTOLOGIN_EXPL}</h6></td> </tr> <!-- ENDIF --> # ---- [ Вставить после ] ------------------- <tr> <td>{L_PARK_CONTROL}: <h6><a target="blank" href="viewtopic.php?t=123">{L_PARK_PROFILE_STATUS_WHOTE}</a></h6></td> <td> <label><input type="radio" name="user_park_profile" value="1" <!-- IF PARK_PROFILE -->checked="checked"<!-- ENDIF --> />{L_YES}</label> <label><input type="radio" name="user_park_profile" value="0" <!-- IF not PARK_PROFILE -->checked="checked"<!-- ENDIF --> />{L_NO}</label> <h6>{L_PARK_WARNING}</h6> </td> </tr> # ---- [ Открыть ] ------------------- templates/default/usercp_viewprofile.tpl # ---- [ Найти ] ------------------- <p class="small mrg_4"> <!-- IF IS_ADMIN --> {RANK_SELECT} <script type="text/javascript"> $('#rank-sel').bind('change', function(){ ajax.change_user_rank( {PROFILE_USER_ID}, $(this).val() ); }); </script> <div id="rank-msg" class="mrg_6"></div> <!-- ELSE IF POSTER_RANK --> {POSTER_RANK} <!-- ENDIF --> </p> # ---- [ Вставить до ] ------------------- <h4 class="cat border bw_TB">{L_PARK_PROFILE_STATUS}: {STATUS_PARK}</h4> # ---- [ Конец ] -------------------