Вход Регистрация
Файл: CMS/core/modules/users_friends.php
Строк: 428
<?php

if (!defined('CMS')) { die('Access Denied!'); }

$actions = array('friends' => 'Мои друзья', 'friends_requests' => 'Заявки', 'friends_proposals' => 'Предложения');

$types = array(
               
1 => array('Друг', 'Подруга'),
               
2 => array('Лучший друг', 'Лучшая подруга'),
               
3 => array('Одноклассник', 'Одноклассница'),
               
4 => array('Однокурсник', 'Однокурсница'),
               
5 => array('Коллега', 'Коллега'),
               
6 => array('Брат', 'Сестра'),
               
7 => array('Отец', 'Мать'),
               
8 => array('Супруг', 'Супруга'),
               
9 => array('Родственник', 'Родственница'),
);

/* Действия пользователя */
if ($is_logged && $uz == $log) {

    
$error = '';

    if (!empty(
$_REQUEST['add_ok'])) {

      
$add_ok = check($_REQUEST['add_ok']);

      if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

        if (
$add_ok <> $log) {

          
$row = $db->selectRow("SELECT * FROM ?_users WHERE `users_login` = ? LIMIT 1;", $add_ok);

          if (!empty(
$row)) {

            
$frend_exst = $db->selectCell("SELECT `id` FROM ?_friends WHERE `users_login` = ? AND `friends_login` = ? LIMIT 1;", $log, $add_ok);

            if (empty(
$frend_exst)) {

              
$ignor_exst = $db->selectCell("SELECT `ignore_id` FROM ?_users_ignor_list 
                                             WHERE `ignore_user` = ? AND `ignore_name` = ? LIMIT 1;"
, $add_ok, $log);

              if (empty(
$ignor_exst)) {

                
$data = $db->selectRow("SELECT * FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_ok);

                if (!empty(
$data)) {

                  
$db->query("INSERT INTO ?_friends (`users_login`, `friends_login`, `time`, `level`) 
                              VALUES (?, ?, ?, ?);"
, $add_ok, $log, SITE_TIME, $data['level']);

                  
$db->query("INSERT INTO ?_friends (`users_login`, `friends_login`, `time`, `level`) 
                              VALUES (?, ?, ?, ?);"
, $log, $add_ok, SITE_TIME, $data['level']);

                  
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $add_ok);

                  
$priv = 'Пользователь [b]' . nickname($log) . '[/b] подтвердил предложение дружбы с вами!';

                  
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`)
                              VALUES (?, ?, ?, ?);"
, $add_ok, $log, $priv, SITE_TIME);
 
                  
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $add_ok, $log);

                  
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_ok);

                  
$db->query("OPTIMIZE TABLE ?_friends, ?_friends_new");

                  
$inSes->addMessage('Пользователь успешно добавлен в список ваших друзей!', 'ok');

                  
gen_red('friends');
                }
                else 
$error = 'Ошибка! Заявка необнаружена!';
              }
              else 
$error = 'Ошибка! Данный пользователь занес вас в свой игнор-лист!';
            }
            else 
$error = 'Ошибка! Данный пользователь уже есть в списке ваших друзей!';
          }
          else 
$error = 'Ошибка! Пользователя с данным логином не существует!';
        }
        else 
$error = 'Ошибка! Запрещено добавлять самого себя!';
      }
      else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
    }


    if (!empty(
$_REQUEST['add_no'])) {

      
$add_no = check($_REQUEST['add_no']);

      if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

        
$row = $db->selectRow("SELECT * FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_no);

        if (!empty(
$row)) {

          
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $add_no);

          
$priv = 'Пользователь [b]' . nickname($log) . '[/b] отклонил предложение дружбы с вами!';

          
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`) 
                      VALUES (?, ?, ?, ?);"
, $add_no, $log, $priv, SITE_TIME);

          
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $add_no, $log);

          
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_no);

          
$db->query("OPTIMIZE TABLE ?_friends, ?_friends_new");

          
$inSes->addMessage('В предложении дружбы успешно отказано!', 'ok');

          
gen_red('friends');

        }
        else 
$error = 'Ошибка! Заявка необнаружена!';
      }
      else 
$error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
    }


    if (!empty(
$_POST['del'])) {

      
$del = intar($_POST['del']);

      if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

        if ( @
count($del) > 0) {

          
$del = implode(',', $del);

          
$rows = $db->select("SELECT * FROM ?_friends WHERE `id` IN (" . $del . ") AND `users_login` = ?;", $log);

          if (!empty(
$rows)) {

            
$priv = 'Пользователь [b]' . nickname($log) . '[/b] удалил вас из списка своих друзей!';

            foreach(
$rows as $row) {

              
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $row['friends_login']);

              
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`) 
                          VALUES (?, ?, ?, ?);"
, $row['friends_login'], $log, $priv, SITE_TIME);

              
$db->query("DELETE FROM ?_friends WHERE `users_login` = ? AND `friends_login` = ?;", $row['friends_login'], $log);
            }

            
$db->query("DELETE FROM ?_friends WHERE `id` IN (" . $del . ") AND `users_login` = ?;", $log);
          }

          
$db->query("OPTIMIZE TABLE ?_friends, ?_friends_new");

          
$inSes->addMessage('Выбранные пользователи успешно удалены из списка ваших друзей!', 'ok');

          
gen_red('friends');
        }
        else 
$error = 'Ошибка! Не выбраны пользователи для удаления!';
      }
      else 
$error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
    }


    if (!empty(
$_GET['del_friends'])) {

      
$user = check($_GET['del_friends']);

      if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

        
$row = $db->selectRow("SELECT * FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $user, $log);

        if (!empty(
$row)) {

          
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $user, $log);

          
$inSes->addMessage('Предложение успешно удалено!', 'ok');

          
gen_red('friends_proposals', '', RND);
        }
        else 
$error = 'Ошибка! Предложение необнаружено!';
      }
      else 
$error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
    }

    if (!empty(
$error)) $inSes->addMessage($error, 'error');
}

$onpage = !empty($config['user_list']) ? num($config['user_list']) : 10;

if (
$page > 1) $from = ($page - 1) * $onpage; else $from = 0;

$counts = $db->selectRow("SELECT COUNT(`id`) AS `friends`,
                         (SELECT COUNT(`id`) FROM ?_friends_new WHERE `user_login` = ?) AS `friends_requests`,
                         (SELECT COUNT(`id`) FROM ?_friends_new WHERE `frend_login` = ?) AS `friends_proposals`
                          FROM ?_friends WHERE `users_login` = ? LIMIT 1;"
, $uz, $uz, $uz);

if (
$is_logged && $uz == $log) {

    
$show = array();

    foreach(
$actions as $key => $val) {

        
$cnt = !empty($counts[$key]) ? num($counts[$key]) : 0;

        if (!empty(
$mod) && $mod == $key) $show[$key] = '<b>' . $val . ' (' . $cnt . ')</b>';
        else 
$show[] = $show[$key] = '<a href="' . gen_uri($key) . '">' . $val . '</a> (' . $cnt . ')';

   }

   
$users_menu = '<div class="b">' . implode(' / ', array_unique($show)) . '</div>';

}
else 
$users_menu = '';

switch(
$mod):

case 
'add_friends':

  if (
$is_logged) {

    if (!empty(
$_REQUEST['user'])) {

      
$user = check($_REQUEST['user']);

      if (
$user <> $log) {

        
$row = $db->selectRow("SELECT * FROM ?_users WHERE `users_login` = ? LIMIT 1;", $user);

        if (!empty(
$row)) {

          
$frend_exst = (int) $db->selectCell("SELECT `id` FROM ?_friends WHERE `users_login` = ? AND `friends_login` = ? LIMIT 1;", $log, $user);

          if (
$frend_exst < 1) {

            
$new_frend_exst = (int) $db->selectCell("SELECT `id` FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $user, $log);

            if (
$new_frend_exst < 1) {

              
$ignor_exst = (int) $db->selectCell("SELECT `ignore_id` FROM ?_users_ignor_list 
                                                   WHERE `ignore_user` = ? AND `ignore_name` = ? LIMIT 1;"
, $user, $log);

              if (
$ignor_exst < 1) {

                
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;

                if (!empty(
$_POST['submit'])) {

                  if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    
$msg = !empty($_POST['msg']) ? $_POST['msg'] : '';
                    
$type = !empty($_POST['type']) ? num($_POST['type']) : 1;

                    if ( 
cms_strlen($msg) < 1000) {

                      if (
array_key_exists($type,$types)) {

                          
$db->query("INSERT INTO ?_friends_new (`user_login`, `frend_login`, `time`, `message`,`level`) VALUES (?, ?, ?, ?, ?);", $user, $log, SITE_TIME, $msg, $type);
                          
$img   = ($sex == 1) ? 'qlt_woman.png' : 'qlt_man.png';
                          
$priv  = '<img src="' . $config['site_url'] . '/images/icons/' . $img . '" alt="" /> ';
                          
$priv .= 'Пользователь [b]' . nickname($log) . '[/b] предлаггает Вам дружбу!<br />';
                          
$priv .= !empty($msg) ? 'Комментарий: ' . $msg . '<br />': '';
                          
$priv .= '[add_ok=' . $log . ']Принять[/add_ok] / ';
                          
$priv .= '[add_no=' . $log . ']Отклонить[/add_no]';

                          
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $user);

                          
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`)
                                      VALUES (?, ?, ?, ?);"
, $user, $log, $priv, SITE_TIME);

                          
$inSes->addMessage('Предложение дружить успешно отправлено!', 'ok');

                          
gen_red('friends', '', RND);

                      }
                      else 
$inSes->addMessage('', 'error');
                    }
                    else 
$inSes->addMessage('Ошибка! Слишком <u>длиннннный</u> комментарий!');
                  }
                  else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
                }

                
show_header('Предложение дружбы');
                echo 
$users_menu . '<div class="b"><span class="blink">*</span> ';
                echo 
'Пользователь ' . users_anketa($user) . ' должен будет потвердить, что вы с ним друзья!<br /></div>';
                
$form = new cmsForm('?rnd=' . $_SESSION['token'], 'post');
                
$show = array();
                foreach(
$types as $key => $val) $show[$key] = $val[$sex];
                
$form->addRadio('', 'type', request('type',1), $show);
                
$form->addCode('<br />');
                
$form->addTextarea('Комментарий:', 'msg', request('msg'));
                
$form->addHidden('user', $user);
                echo 
$form->Submit('Отправить заявку', 'submit');
                unset(
$form);

              }
              else {
                
$inSes->addMessage('Ошибка! Данный пользователь занес вас в свой игнор-лист!');
                
gen_red('friends', '', RND);
              }
            }
            else {
              
$inSes->addMessage('Ошибка! Заявка уже была отправлена данному пользователю!');
              
gen_red('friends', '', RND);
            }
          }
          else {
            
$inSes->addMessage('Ошибка! Данный пользователь уже есть в списке ваших друзей!');
            
gen_red('friends', '', RND);
          }
        }
        else {
          
$inSes->addMessage('Ошибка! Пользователя с данным логином не существует!');
          
gen_red('friends', '', RND);
        }
      }
      else {
        
$inSes->addMessage('Ошибка! Запрещено добавлять самого себя!');
        
gen_red('friends', '', RND);
      }
    }
    else {
      
show_header('Предложение дружбы');
      
show_error('Ошибка! Вы не ввели имя друга!');
    }
  }
  else {
    
show_header('Предложение дружбы');
    
show_login('Вы не авторизованы, для добавления друзей, необходимо');
  }

  echo 
'<div class="b">' . icon('return.png');
  echo 
' <a href="' . gen_uri('friends') . '">Мои друзья</a><br /></div>';

break;
case 
'friends_requests':

    if (
$is_logged) {

        
show_header('Мои заявки');

        echo 
$users_menu;

        
$rows = $db->selectPage( $total, "SELECT `f`.*, `u`.`users_gender`
                                          FROM ?_friends_new `f` LEFT JOIN ?_users `u`
                                          ON `f`.`frend_login` = `u`.`users_login`
                                          WHERE `f`.`user_login` = ? ORDER BY `f`.`time` DESC 
                                          LIMIT ?d, ?d"
, $log, $from, $onpage);

        if (!empty(
$rows) && $total > 0) {

            
$ok  = '<img src="/images/icons/add.png" class="icon" alt"" /> ';
            
$no  = '<img src="/images/icons/delete.png" class="icon" alt"" /> ';

            foreach(
$rows as $row) {
 
                
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;
                
$who = $types[$row['level']][$sex];

                echo 
'<div class="b">';
                echo 
user_visit_icon($row['frend_login'], $row['users_gender']);
                echo 
' <b>' . users_anketa($row['frend_login']) . '</b> <small>(' . $who . '</small> ';
                
//echo user_online($row['frend_login']) . ' ';
                //echo user_title($row['frend_login']) . '<br /> ';
                
echo ' <small>/ ' . get_date($row['time']) . ')</small><br />';

                if (!empty(
$row['message'])) {

                    echo 
'<i><small>Комментарий заявки:</small></i><br />' . bb_code($row['message']) . '<br/>';
                }

                echo 
$ok . ' <a href="?add_ok=' . $row['frend_login'] . '&amp;rnd=' . $_SESSION['token'] . '">Принять</a> ';
                echo 
$no . ' <a href="?add_no=' . $row['frend_login'] . '&amp;rnd=' . $_SESSION['token'] . '">Отклонить</a>';
                echo 
'</div>';
            }

            echo 
show_pages('friends_requests', '', 'p');
        }
        else {

            
show_error('Список заявок пуст!');
        }
    }
    else {

        
show_header('Друзья пользователя ' . nickname($uz));
        
show_login('Вы не авторизованы, для добавления друзей, необходимо');
    }

break;
case 
'friends_proposals':

    if (
$is_logged) {

        
show_header('Мои предложения');

        echo 
$users_menu;

        
$rows = $db->selectPage( $total, "SELECT `f`.*, `u`.`users_gender`
                                          FROM ?_friends_new `f` LEFT JOIN ?_users `u`
                                          ON `f`.`user_login` = `u`.`users_login`
                                          WHERE `f`.`frend_login` = ? ORDER BY `f`.`time` DESC
                                          LIMIT ?d, ?d"
, $log, $from, $onpage);

        if (!empty(
$rows) && $total > 0) {

            foreach(
$rows as $row) {

                
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;
                
$who = $types[$row['level']][$sex];

                echo 
'<div class="b">';
                echo 
user_visit_icon($row['frend_login'], $row['users_gender']);
                echo 
' <b>' . users_anketa($row['user_login']) . '</b> <small>(' . $who . ' / ' . get_date($row['time']) . ')</small><br />';

                if (!empty(
$row['message'])) {

                    echo 
'<i><small>Ваш комментарий:</small></i><br />' . bb_code($row['message']) . '<br />';
                }

                echo 
'<img src="/images/icons/delete.png" class="icon" alt"" /> ';
                echo 
'<a href="?del_friends=' . $row['user_login'] . '&amp;rnd=' . $_SESSION['token'] . '">Отменить предложение</a>';
                echo 
'</div>';
            }

            echo 
show_pages('friends_requests', '', 'p');
        }
        else {

            
show_error('Список предложений пуст!');
        }
    }
    else {

        
show_header('Друзья пользователя ' . nickname($uz));
        
show_login('Вы не авторизованы, для добавления друзей, необходимо');
    }

break;
default:

    
show_header('Друзья пользователя ' . nickname($uz));

    echo 
$users_menu;

    if (!empty(
$id) && srrsy_key_exists($id,$types)) {

    }
    else 
$where = '';

    
$rows = $db->selectPage($total, "SELECT `f`.*, `u`.`users_gender`
                                     FROM ?_friends `f` LEFT JOIN ?_users `u`
                                     ON `f`.`friends_login` = `u`.`users_login`
                                     WHERE `f`.`users_login` = ?
                                     ORDER BY `f`.`time` DESC
                                     LIMIT ?d, ?d"
, $uz, $from, $onpage);

    if (!empty(
$rows) && $total > 0) {

        if (
$is_logged && $log == $uz) echo '<form action="?rnd=' . $_SESSION['token'] . '" method="post" name="friends">';

        foreach(
$rows as $row) {

            
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;
            
$who = $types[$row['level']][$sex];

            echo 
'<div class="b">';
            echo 
user_visit_icon($row['friends_login'], $row['users_gender']);
            echo 
' <b>' . users_anketa($row['friends_login']) . '</b> <small>(' . $who . ')</small> ';
            
//echo user_online($row['friends_login']) . '<br />';
            //echo user_title($row['friends_login']) . '<br />';
            
echo '<small>Подружились: ' . get_date($row['time']) . '</small><br />';

            if (
$log == $uz) {
                echo 
'<input type="checkbox" name="del[]" value="' . $row['id'] . '" /> ';
            }
            echo 
'<img src="' . IMAGES . 'icons/email.png" class="icon" alt="" /> ';
            echo 
'<a href="' . gen_uri('add_privat', '', 'user=' . $row['friends_login']) . '">Отправить сообщение</a>';
            echo 
'</div>';
        }

        echo 
show_pages('friends_requests', '', 'p');

        if (
$is_logged && $log == $uz) {
            echo 
'<div class="b">';
             echo 
'<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
             echo 
'<input type="submit" class="btns" value="Удалить выбранное" /></form><br /></div>';
        }

    }
    else 
show_error('Список друзей пуст!');

    if (
$is_logged && $log == $uz) {

        echo 
'<div class="b form"><form action="' . gen_uri('add_friends', '', 'rnd=' . $_SESSION['token']) . '" method="post">';
        echo 
'Логин юзера:<br /><input type="text" name="user" value="' . request('user') . '" />';
        echo 
'<input type="submit" class="btns" name="add_friends" value="Добавить" /></form></div>';
        echo <<<JSCRIPT

<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
    var frm = document.friends;
    if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    else{ frm.master_box.checked = true; }
    for (var i=0;i<frm.elements.length;i++) {
        var elmnt = frm.elements[i];
        if (elmnt.type=='checkbox') {
            if(frm.master_box.checked == true){ elmnt.checked=false; }
            else{ elmnt.checked=true; }
        }
    }
    //if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    //else{ frm.master_box.checked = true; }
}
-->
</script>

JSCRIPT;
    }

break;
endswitch;

?>
Онлайн: 3
Реклама