Друзья 1.0.0

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

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

    Возможности:
    • Добавление друзей
    • Удаление друзей
    • Работа на AJAX без перезагрузки страницы
    Инструкция по установке:
    PHP:
    В БД добавить:

    Код:
    CREATE TABLE IF NOT EXISTS `bb_friends` (
      `
    user_idmediumint(8unsigned NOT NULL DEFAULT '0',
      `
    friends_idmediumint(8unsigned NOT NULL DEFAULT '0'
    ENGINE=MyISAM DEFAULT CHARSET=utf8;

    и

    Код
    :
    INSERT INTO `bb_friendsVALUES (`user_id`, `friends_id`);

    Закинуть файл:

    friends.php (в папку /ajax)
    ***************
    Открыть ajax.php*****************

    Найти:
    'change_tor_status' => array('user'),

    После вставить:
    'friends'           => array('user'),

    Найти:
    function 
    index_data()
        {
            require(
    AJAX_DIR .'index_data.php');
        }
      
    После вставить:
    function 
    friends()
        {
            require(
    AJAX_DIR .'friends.php');
        }
      


    ***************
    Открыть usercp_viewprofile.php*****************
    Найти:
    $template->assign_vars(array(
            
    'EDITABLE_TPLS'    => true,
            
    'AJAX_USER_OPT'    => $ajax_user_opt,
            
    'EMAIL_ADDRESS'    => htmlCHR($profiledata['user_email']),
        ));
    }

    После вставить:
    if(
    $bb_cfg['friends'])
    {
        
    $count DB()->fetch_row("SELECT COUNT(friends_id) AS friends FROM bb_friends WHERE user_id = "$profiledata['user_id']);
        if(
    $profile_user_id$friends DB()->fetch_row("SELECT * FROM bb_friends WHERE user_id = "$userdata['user_id'] ." AND friends_id = "$profiledata['user_id']);

        
    $template->assign_vars(array(
            
    'FRIENDS'   => $count['friends'],
            
    'MY_FRIEND' => $friends,
        ));
    }




    ***************
    Открыть usercp_viewprofile.tpl*****************


    Найти:
    ajax.callback.index_data = function(data) {
        $(
    '#traf-stats-tbl').html(data.html);
        $(
    '#bt_user_ratio').html(data.user_ratio);
        $(
    '#traf-stats-span').hide();
        $(
    '#traf-stats-tbl').show();
        $(
    '#bt_user_ratio').show();
    }
    </
    script>
    <!-- ENDIF -->

    После вставить:
    <
    script type="text/javascript">
    ajax.friends = function(mode) {
        
    ajax.exec({
            
    action  'friends',
            
    mode    mode,
            
    user_id : {PROFILE_USER_ID}
        });
    }
    ajax.callback.friends = function(data) {
        $(
    '#friends').html(data.html);
    }
    </
    script>

      
    Найти:
    <
    tr id="ratio-expl" style="display: none;">
            <
    td colspan="2" class="med tCenter">
            ( {
    L_UPLOADED} <class="seedmed">{UP_TOTAL}</b> + {L_RELEASED} <class="seedmed">{RELEASED}</b> + {L_BONUS} <class="seedmed">{UP_BONUS}</b> ) / {L_DOWNLOADED} <class="leechmed">{DOWN_TOTAL}</b>
            </
    td>
    </
    tr>

    После вставить:
    <!-- IF 
    $bb_cfg['friends'] -->
        <
    tr>
            <
    th class="vBottom"></th>
            <
    td>
            <
    b><class="gen" href="#" onclick="ajax.friends('list'); return false;"></a></b>
            <
    span id="friends"></span>
            </
    td>              
        </
    tr>          
    <!-- ENDIF -->

    В нужное для Вас место ставим вывод количества друзей:
    <
    tr>
            <
    th>Друзей:</th>
            <
    td id="u_thanks" class="gen">
            <
    b>{FRIENDS}</b>
            </
    td>
    </
    tr>

    В нужное для Вас место ставим кнопки для добавления в друзья:

    <
    class="med" href="#" onclick="ajax.friends('list'); return false;"><input type="submit" value="Список друзей" class="main gen" /></a>
            <!-- IF 
    MY_FRIEND -->
    <
    class="med" href="#" onclick="ajax.friends('del'); return false;"><input type="submit" value="Удалить из друзей" class="main gen" /></a>
            <!-- ELSE -->
    <
    class="med" href="#" onclick="ajax.friends('add'); return false;"><input type="submit" value="Добавить в друзья" class="main gen" /></a>
             <!-- ENDIF -->
           
             
    В main.css
           
           
    .xenOverlay {  displaynonewidth690pxz-index10000; }
    .
    xenOverlay > .section, .xenOverlay > .sectionMain {  backgroundtransparentmargin0px; }
    .
    xenOverlay .section, .xenOverlay .sectionMain border10px solid rgba(6464640.506); border-radius5px;
      
    box-shadow0px 15px 20px rgba(0000.506);
      
    padding0px;
    }
    .
    xenOverlay .section .heading, .xenOverlay .sectionMain .heading {  border-radius0pxmargin-bottom0px; }
    .
    heading color#F0F7FC; margin: 0px; }
    .heading, .xenForm .formHeader {
      
    background-color#000000;
      
    color#EFEFEF;
      
    font-size11pt;
      
    font-weight700;
      
    margin-bottom3px;
      
    padding5px 10px;
    }
    .
    xenOverlay .section .subHeading, .xenOverlay .sectionMain .subHeading margin-top0px; }
    .
    subHeading {
      
    backgroundurl("http://tracker/templates/default/images/category-23px-light.png"500repeat-#EAEAEA;
      
    border-bottom1px solid #E4E4E4;
      
    border-top1px solid #E4E4E4;
      
    color#6D3F03;
      
    font-size11px;
      
    margin3px auto 0px;
      
    padding5px 10px;
    }
    .
    pairsInline dl, .pairsInline dt, .pairsInline dd displayinline; }
    .
    pairs dt, .pairsInline dt, .pairsJustified dt color#969696; }
    .pairsInline dl, .pairsInline dt, .pairsInline dd displayinline; }
    dldtddolli margin0pxpadding0px;}
    .
    subHeading a color#6D3F03; font-size: 11px; line-height: 1.27; }
    .xenOverlay .overlayScroll max-height400pxoverflowauto; }
    .
    memberListItem overflowhidden; }
    .
    primaryContent background-color#EFEFEF; border-bottom: 1px solid #E4E4E4; padding: 10px; }
    .memberListItem .avatars, .memberListItem .icon floatleft; }
    .
    avatars .img {
      
    background-position2px 2px;
      
    background-repeatno-repeat;
      
    displayblock;
      
    overflowhidden;
      
    text-indent1000px;
      
    white-spacenowrap;
      
    word-wrapnormal;
    }
    .
    avatars .img.{  height48pxwidth48px; }
    .
    memberListItem .extra floatrightfont-size11px; }
    .
    memberListItem .member margin-left65px; }
    .
    memberListItem h3.username font-weight700margin-bottom3px; }
    .
    memberListItem .userInfo font-size11pxmargin-bottom3px; }
    .
    dimmeda.dimmed, .dimmed a {color#646464; }
    .sectionFooter overflowhidden; }
    .
    sectionFooter {
      
    background-color#000000;
      
    color#000000;
      
    font-size11px;
      
    line-height16px;
      
    padding4px 10px;
    }
    .
    xenOverlay .overlayOnly displayblock !important; }
    .
    xenOverlay .sectionFooter .button, .xenOverlay .sectionFooter .buttonContainer floatright; }
    .
    button {
      
    cursorpointer;
      
    displayinline-block;
      
    font-stylenormal;
      
    line-height13px;
    }
           
           
             
    В config.php
           
             $bb_cfg
    ['friends'] = true;

    Изображения

    1. Снимок.PNG
    zxc нравится это.