1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Modification Модерация пользователей

Discussion in 'Разработки' started by berdyev, Jul 19, 2012.

  1. berdyev Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    339
    Likes Received:
    104
    My version of SE:
    3.15
    My version of phpFox:
    3.0.1
    My version of Oxwall:
    1.3.0
    Данный плагин я назвал "Модерация пользователей" и сделал собственно я его по просьбе Alpert108.

    [IMG]
    [IMG]

    Как показано на картинках выше, после того как пользователь зарегистрируется, у него в профиле автоматически будет выводится таблица "Непроверенный пользователь". Проверить, и тем самым сменить табличку на "Проверенный пользователь" вы сможете сами, прямо из профиля.

    И так, приступим. Для начала скачайте это:
    http://source.berdyev.ru/files/icons.rar

    Распакуйте, и киньте иконки в /images/icons через FTP.

    Далее, сделайте запрос в БД:

    Code:
    ALTER TABLE se_users
      ADD verify_berdyev int NOT NULL default '0';
    [IMG]
    Сделали? Молодцы! Двигаемся дальше.
    Открываем profile.tpl:

    Находим:

    Code:
    <td class='profile_rightside'>
    {* BEGIN RIGHT COLUMN *}
    (Там их две, мы воспользуемся второй)
    После нее (Жмем ENTER) вставляем:

    Code:
    {* Непроверенный пользователь *}
    {if $owner->user_info.verify_berdyev ==0}
      <div class="verify_berdyev_on">
      <img src="/images/icons/unverify.gif">&nbsp;<b>Непроверенный пользователь</b>
      </div>
      <p>&nbsp;</p>
      {/if}
     
    {* Проверенный пользователь *}
    {if $owner->user_info.verify_berdyev ==1}
      <div class="verify_berdyev_off">
      <img src="/images/icons/verify.gif">&nbsp;<b>Проверенный пользователь</b>
      </div>
      <p>&nbsp;</p>
      {/if}
    Открываем styles.css и в самом конце вставляем:

    Code:
    .verify_berdyev_on {
    background: #FCFCFC;
    border: 1px solid #ECCB35;
    padding: 8px 25px;
    width:300px;
    text-align: center;
    font-size:12px;
    }
    .verify_berdyev_on div {
    font-size: 12px; font-color:#909090;
    }
     
    .verify_berdyev_off {
    background: #FCFCFC;
    border: 1px solid #50B94A;
    padding: 8px 25px;
    width:300px;
    text-align: center;
    font-size:12px;
    }
    .verify_berdyev_off div {
    font-size: 12px; font-color:#909090;
    Больше чем пол пути пройдено! Двигаемся дальше. В конце profile.php вставляем (до include footer):

    Code:
    // Добавляем Убираем таблицу. Команда доступна пользователю с id1
     
      if( $user->user_info['user_id'] == 1)
    {
    if (isset($_GET['verify'])) {
        $verify = intval($_GET['verify']);
        $query = "UPDATE se_users set verify_berdyev='0' where (user_id='$verify')";
      mysql_query($query) or die(mysql_error());
      header("Location: profile.php?user=".$owner->user_info['user_id']."");
      }
     
      if (isset($_GET['unverify'])) {
        $unban = intval($_GET['unverify']);
        $query = "UPDATE se_users set verify_berdyev='1' where (user_id='$unverify')";
      mysql_query($query) or die(mysql_error());
      header("Location: profile.php?user=".$owner->user_info['user_id']."");
      }
      }
    Как мы видим, ставить и убирать таблички может только пользователь с id1. Если у вас включена система никнеймов, измените ['user_id'] == 1 на ['user_name'] == ваш_ник.

    Так, и на последок давайте сделаем кнопочки в профиле.
    Открываем profile.tpl и находим:

    Code:
    <div id='addfriend_{$owner->user_info.user_id}'{if $is_friend == TRUE || $is_friend_pending != 0} style='display: none;'{/if}>


    и до этого ^ кода вставить (выше):

    Code:
    {if $owner->user_info.verify_berdyev ==1}
    <a href="profile.php?verify={$owner->user_info.user_id}&user={$owner->user_info.user_username}"><img src="./images/icons/unverify.gif" class="icon" border="0">Вернуть табличку</a>
    {else}
    <a href="profile.php?unverify={$owner->user_info.user_id}&user={$owner->user_info.user_username}"><img src="./images/icons/verify.gif" class="icon" border="0">Проверить пользователя</a>
    {/if}
    Вуаля! Обновляем страницу и все готово!
    Демонстрацию "хака" вы можете просмотреть по адресу: http://source.berdyev.ru/

    Для вас старался @berdyev (Ата Бердыев) специально для SocEngine.
    Спасибо!


    Если вам понравилась модификация, ставьте "лайки" или просто говорите спасибо :3 Не обходите тему стороной.
  2. gboger User


    Offline
    Message Count:
    29
    Likes Received:
    1
    My version of SE:
    3.17
    My version of phpFox:
    2.0.0
    My version of Oxwall:
    1.0.2
    все сделал по инструкции нажимаю проверить пользователя и ничего(((
  3. berdyev Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    339
    Likes Received:
    104
    My version of SE:
    3.15
    My version of phpFox:
    3.0.1
    My version of Oxwall:
    1.3.0
    Исходник profile.php кинь
    Alpert108 and newuser like this.
  4. specok User


    Offline
    Message Count:
    102
    Likes Received:
    1
    My version of SE:
    3.18
    Тоже самое

    точнее страница обновляется и все(
  5. specok User


    Offline
    Message Count:
    102
    Likes Received:
    1
    My version of SE:
    3.18
    автор ответь по теме плз. очень нужна помощь. поддерживай свой хак пожалуйста.
  6. berdyev Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    339
    Likes Received:
    104
    My version of SE:
    3.15
    My version of phpFox:
    3.0.1
    My version of Oxwall:
    1.3.0
    У тех, у кого не работает. Замените код в profile.php на этот:

    Code:
    <?php
     
    /* $Id: profile.php 42 2009-01-29 04:55:14Z john $ */
     
    $page = "profile";
    include "header.php";
     
    // DISPLAY ERROR PAGE IF USER IS NOT LOGGED IN AND ADMIN SETTING REQUIRES REGISTRATION
    if($user->user_exists == 0 && $setting['setting_permission_profile'] == 0)
    {
      $page = "error";
      $smarty->assign('error_header', 639);
      $smarty->assign('error_message', 656);
      $smarty->assign('error_submit', 641);
      include "footer.php";
    }
     
    // DISPLAY ERROR PAGE IF NO OWNER
    if($owner->user_exists == 0)
    {
      $page = "error";
      $smarty->assign('error_header', 639);
      $smarty->assign('error_message', 828);
      $smarty->assign('error_submit', 641);
      include "footer.php";
    }
     
    // GET VIEW AND VARS
    if(isset($_POST['v'])) { $v = $_POST['v']; } elseif(isset($_GET['v'])) { $v = $_GET['v']; } else { $v = "profile"; }
    if(isset($_POST['search'])) { $search = $_POST['search']; } elseif(isset($_GET['search'])) { $search = $_GET['search']; } else { $search = ""; }
    if(isset($_POST['m'])) { $m = $_POST['m']; } elseif(isset($_GET['m'])) { $m = $_GET['m']; } else { $m = 0; }
    if(isset($_POST['p'])) { $p = $_POST['p']; } elseif(isset($_GET['p'])) { $p = $_GET['p']; } else { $p = 1; }
     
    // VALIDATE VIEW VAR
    if($v != "profile" && $v != "friends" && $v != "comments" && !array_key_exists($v, $global_plugins)) { $v = "profile"; }
     
    // GET PRIVACY LEVEL
    $privacy_max = $owner->user_privacy_max($user);
    $allowed_to_view = ($privacy_max & $owner->user_info['user_privacy']);
    $is_profile_private = !$allowed_to_view;
     
    // CHECK IF USER IS ALLOWED TO COMMENT
    $allowed_to_comment = ($privacy_max & $owner->user_info['user_comments']);
     
     
    // UPDATE PROFILE VIEWS IF PROFILE VISIBLE
    if($is_profile_private == 0 && $user->user_info['user_id'] != $owner->user_info['user_id'])
    {
      $profile_viewers = "";
      if( $owner->user_info['user_saveviews'] )
      {
        $view_query = $database->database_query("SELECT profileview_viewers FROM se_profileviews WHERE profileview_user_id='{$owner->user_info['user_id']}'");
        if($database->database_num_rows($view_query) == 1)
        {
          $views = $database->database_fetch_assoc($view_query);
          $profile_viewers = $views['profileview_viewers'];
        }
        if( $user->user_exists )
        {
          $profile_viewers_array = explode(",", $profile_viewers);
          if( in_array($user->user_info['user_id'], $profile_viewers_array) )
          {
            array_splice($profile_viewers_array, array_search($user->user_info['user_id'], $profile_viewers_array), 1);
          }
          $profile_viewers_array[] = $user->user_info['user_id'];
          krsort($profile_viewers_array);
          $profile_viewers = implode(",", array_filter($profile_viewers_array));
        }
      }
      $database->database_query("INSERT INTO se_profileviews (profileview_user_id, profileview_views, profileview_viewers) VALUES ('{$owner->user_info['user_id']}', '1', '{$profile_viewers}') ON DUPLICATE KEY UPDATE profileview_views=profileview_views+1, profileview_viewers='{$profile_viewers}'");
    }
     
     
    // DELETE COMMENT NOTIFICATIONS IF VIEWING COMMENT PAGE
    if( $v == "comments" && $user->user_info['user_id'] == $owner->user_info['user_id'])
    {
      $database->database_query("DELETE FROM se_notifys WHERE notify_user_id='{$owner->user_info['user_id']}' AND notify_notifytype_id='3' AND notify_object_id='{$owner->user_info['user_id']}'");
    }
     
    // GET PROFILE COMMENTS
    $comment = new se_comment('profile', 'user_id', $owner->user_info['user_id']);
    $total_comments = $comment->comment_total();
     
    // GET PROFILE FIELDS
    $field = new se_field("profile", $owner->profile_info);
    $field->cat_list(0, 1, 0, "profilecat_id='{$owner->user_info['user_profilecat_id']}'", "", "");
     
     
     
    // SET WHERE CLAUSE FOR FRIEND LIST
    if($search != "")
    {
      $is_where = 1;
      $where = "(se_users.user_username LIKE '%$search%' OR CONCAT(se_users.user_fname, ' ', se_users.user_lname) LIKE '%$search%' OR se_users.user_email LIKE '%$search%')";
    }
    else
    {
      $is_where = 0;
      $where = "";
    }
     
    if($m == 1 && $user->user_exists == 1)
    {
      if($where != "") { $where .= " AND "; }
      $where .= "(SELECT TRUE FROM se_friends AS t1 WHERE t1.friend_user_id1='{$user->user_info['user_id']}' AND t1.friend_user_id2=se_friends.friend_user_id2)";
    }
     
    // DECIDE WHETHER TO SHOW DETAILS
    $connection_types = explode("<!>", trim($setting['setting_connection_types']));
    $show_details = ( count($connection_types) && $setting['setting_connection_other'] && $setting['setting_connection_explain'] );
     
    // GET TOTAL FRIENDS
    $total_friends = $owner->user_friend_total(0, 1, $is_where, $where);
     
    // MAKE FRIEND PAGES AND GET FRIEND ARRAY
    $friends_per_page = 10;
    if($v == "friends") { $p_friends = $p; } else { $p_friends = 1; }
    $page_vars_friends = make_page($total_friends, $friends_per_page, $p_friends);
    $friends = $owner->user_friend_list($page_vars_friends[0], $friends_per_page, 0, 1, "se_users.user_username", $where, $show_details);
     
    // GET MASTER TOTAL OF FRIENDS
    $total_friends_all = $owner->user_friend_total(0);
     
    // GET MASTER TOTAL OF ALL MUTUAL FRIENDS
    $total_friends_mut = $owner->user_friend_total(0, 1, 0, "(SELECT TRUE FROM se_friends AS t1 WHERE t1.friend_user_id1='{$user->user_info['user_id']}' AND t1.friend_user_id2=se_friends.friend_user_id2)");
     
     
    // GET CUSTOM PROFILE STYLE IF ALLOWED
    if( $owner->level_info['level_profile_style'] && !$is_profile_private )
    {
      $profilestyle_info = $database->database_fetch_assoc($database->database_query("SELECT profilestyle_css FROM se_profilestyles WHERE profilestyle_user_id='{$owner->user_info['user_id']}' LIMIT 1"));
      $global_css = $profilestyle_info[profilestyle_css];
    }
    elseif( $owner->level_info['level_profile_style_sample'] && !$is_profile_private )
    {
      $profilestyle_info = $database->database_fetch_assoc($database->database_query("SELECT stylesample_css FROM se_profilestyles LEFT JOIN se_stylesamples ON se_profilestyles.profilestyle_stylesample_id=se_stylesamples.stylesample_id WHERE profilestyle_user_id='{$owner->user_info['user_id']}' LIMIT 1"));
      $global_css = $profilestyle_info['stylesample_css'];
    }
     
     
    // ENSURE CONECTIONS ARE ALLOWED FOR THIS USER AND THAT OWNER HAS NOT BLOCKED USER
    $is_friend = $user->user_friended($owner->user_info['user_id']);
    if( $user->user_friended($owner->user_info['user_id'], 0))
    {
      $is_friend_pending = 2;
    }
    elseif( $owner->user_friended($user->user_info['user_id'], 0) )
    {
      $is_friend_pending = 1;
    }
    else
    {
      $is_friend_pending = 0;
    }
     
    $friendship_allowed = 1;
    switch($setting['setting_connection_allow'])
    {
      case "3":
        // ANYONE CAN INVITE EACH OTHER TO BE FRIENDS
        break;
      case "2":
        // CHECK IF IN SAME SUBNETWORK
        if($user->user_info['user_subnet_id'] != $owner->user_info['user_subnet_id']) { $friendship_allowed = 0; }
        break;
      case "1":
        // CHECK IF FRIEND OF FRIEND
        if($user->user_friend_of_friend($owner->user_info['user_id']) == FALSE) { $friendship_allowed = 0; }
        break;
      case "0":
        // NO ONE CAN INVITE EACH OTHER TO BE FRIENDS
        $friendship_allowed = 0;
        break;
    }
     
    if($owner->user_blocked($user->user_info['user_id'])) { $friendship_allowed = 0; }
    if($is_friend) { $friendship_allowed = 1; }
     
     
    // GET PHOTOS USER IS TAGGED IN
    $photo_query = "";
    ($hook = SE_Hook::exists('se_mediatag')) ? SE_Hook::call($hook, array()) : NULL;
    $total_photo_tags = $database->database_num_rows($database->database_query($photo_query));
     
     
    // DETERMINE IF USER IS ONLINE
    $online_users_array = online_users();
    if(in_array($owner->user_info['user_username'], $online_users_array[2])) { $is_online = 1; } else { $is_online = 0; }
     
    // GET PROFILE VIEWS
    $profile_views = 0;
    $view_query = $database->database_query("SELECT profileview_views, profileview_viewers FROM se_profileviews WHERE profileview_user_id='{$owner->user_info['user_id']}'");
    if($database->database_num_rows($view_query) == 1)
    {
      $views = $database->database_fetch_assoc($view_query);
      $profile_views = $views['profileview_views'];
    }
     
    // SET GLOBAL PAGE TITLE
    $global_page_title[0] = 509;
    $global_page_title[1] = $owner->user_displayname;
    $global_page_description[0] = 1158;
    $global_page_description[1] = $owner->user_displayname;
    $global_page_description[2] = strip_tags(implode(" - ", $field->field_values));
     
    // СМАЙЛЫ
    $asconf['smiles'] = "bad,biggrin,blum,blush,cray,crazy,dance,
    diablo,dirol,drinks,fool,good,kiss_mini,man_in_love,music,nea,pardon,
    rofl,rolleyes,sad,
    scratch_one-s_head,shok,shout,smile,unknw,wacko2,wink,yahoo,angel";
    $i = 0;
    $smilies = explode(",", $asconf['smiles']);
            foreach($smilies as $smile) {
                $i++; $smile = trim($smile);
                $outsmile .= "<img class=\"smileys\" src=\"./templates/images/smiles/$smile.gif\" alt=\"$smile\" onclick=\"javascript:document.getElementById('comment_body') .value += ' :$smile:'\" />"; }
     
    // ASSIGN VARIABLES AND INCLUDE FOOTER
    $smarty->assign('v', $v);
    $smarty->assign('profile_views', $profile_views);
    $smarty->assign('cats', $field->cats);
    $smarty->assign('is_profile_private', $is_profile_private);
    $smarty->assign('allowed_to_comment', $allowed_to_comment);
    $smarty->assign('total_comments', $total_comments);
    $smarty->assign('total_photo_tags', $total_photo_tags);
    $smarty->assign('m', $m);
    $smarty->assign('search', $search);
    $smarty->assign('friends', $friends);
    $smarty->assign('total_friends', $total_friends);
    $smarty->assign('total_friends_all', $total_friends_all);
    $smarty->assign('total_friends_mut', $total_friends_mut);
    $smarty->assign('maxpage_friends', $page_vars_friends[2]);
    $smarty->assign('p_start_friends', $page_vars_friends[0]+1);
    $smarty->assign('p_end_friends', $page_vars_friends[0]+count($friends));
    $smarty->assign('p_friends', $page_vars_friends[1]);
    $smarty->assign('is_friend', $is_friend);
    $smarty->assign('asmiles', $outsmile);
    $smarty->assign('is_friend_pending', $is_friend_pending);
    $smarty->assign('friendship_allowed', $friendship_allowed);
    $smarty->assign('is_online', $is_online);
    $smarty->assign('actions', $actions->actions_display(0, $setting['setting_actions_actionsonprofile'], "se_actions.action_user_id='{$owner->user_info['user_id']}'"));
     
    if( $user->user_info['user_id'] == 1)
    {
    if (isset($_GET['verify'])) {
        $verify = intval($_GET['verify']);
        $query = "UPDATE se_users set verify_berdyev='0' where (user_id='$verify')";
      mysql_query($query) or die(mysql_error());
      header("Location: profile.php?user=".$owner->user_info['user_id']."");
      }
     
      if (isset($_GET['unverify'])) {
        $unban = intval($_GET['unverify']);
        $query = "UPDATE se_users set verify_berdyev='1' where (user_id='$unverify')";
      mysql_query($query) or die(mysql_error());
      header("Location: profile.php?user=".$owner->user_info['user_id']."");
      }
      }
     
    include "footer.php";
    ?>

    gboger,
    specok,
    Alpert108 and newuser like this.
  7. Alpert108 User


    Offline
    Message Count:
    132
    Likes Received:
    14
    My version of SE:
    3.20
    berdyev, спасибо огромное!!!!!
    Баш на баш, пиши в ЛС чем смогу, тем и помогу!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    berdyev likes this.
  8. berdyev Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    339
    Likes Received:
    104
    My version of SE:
    3.15
    My version of phpFox:
    3.0.1
    My version of Oxwall:
    1.3.0
    Всегда пожалуйста ;)
    Окей :3
  9. berdyev Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    339
    Likes Received:
    104
    My version of SE:
    3.15
    My version of phpFox:
    3.0.1
    My version of Oxwall:
    1.3.0
    Обновление:

    Замените:

    Code:
    {if $owner->user_info.verify_berdyev ==1}
    <a href="profile.php?verify={$owner->user_info.user_id}&user={$owner->user_info.user_username}"><img src="./images/icons/unverify.gif" class="icon" border="0">Вернуть табличку</a>
    {else}
    <a href="profile.php?unverify={$owner->user_info.user_id}&user={$owner->user_info.user_username}"><img src="./images/icons/verify.gif" class="icon" border="0">Проверить пользователя</a>
    {/if}
    на:

    Code:
    {if $user->user_info.user_id == 1}
          {if $owner->user_info.verify_berdyev ==1}
    <a href="profile.php?verify={$owner->user_info.user_id}&user={$owner->user_info.user_username}"><img src="./images/icons/unverify.gif" class="icon" border="0">Вернуть табличку</a>
    {else}
    <a href="profile.php?unverify={$owner->user_info.user_id}&user={$owner->user_info.user_username}"><img src="./images/icons/verify.gif" class="icon" border="0">Проверить пользователя</a>
    {/if}{/if}
    А то текст с ссылкой на вернуть или убрать страничку был виден всем.
    Alpert108 likes this.
  10. gboger User


    Offline
    Message Count:
    29
    Likes Received:
    1
    My version of SE:
    3.17
    My version of phpFox:
    2.0.0
    My version of Oxwall:
    1.0.2
    у меня не работает вместо имен уменя просто цифры и ничего у всех не проверенный пользователь

Share This Page

All rights reserved SocEngine.ru ©