Парковка аккаунта 1.0.0

Добавляет возможность парковки аккаунта на случай длительного отъезда.

  1. Exile
    Совместимость:
    не проверялся на совместимость
    Изменения в БД:
    требуются
    Автор:
    Gemini_13
    Общественное достояние:
    нет
    Описание: добавляет возможность парковки аккаунта на случай длительного отъезда.

    Если аккаунт припаркован, то во время чистки он не будет удален, но справедливости ради на аккаунт наложен запрет скачивания.
    Инструкция по установке:
    PHP:
    # ---- [ SQL ] -------------------
    ALTER TABLE `bb_usersADD `user_park_profileTINYINT(1NOT 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>&nbsp;&nbsp;
            <
    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
    # ---- [ Найти ] -------------------
            
    <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>
    # ---- [ Конец ] -------------------