Файл: groupcp.php
Строк: 295
<?php
/***************************************************************************
 *                            groupcp.php
 *                            -------------------
 *      Разработка модуля: Anv@r.all 2011 год.
 ***************************************************************************/
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_GROUPCP);
init_userprefs($userdata);
if ( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GROUPS_URL]) )
{
    $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? intval($HTTP_POST_VARS[POST_GROUPS_URL]) : intval($HTTP_GET_VARS[POST_GROUPS_URL]);
}
else
{
    $group_id = '';
}
if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
    $mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
}
else
{
    $mode = '';
}
if ( isset($HTTP_POST_VARS[POST_POST_URL]) || isset($HTTP_GET_VARS[POST_POST_URL]))
{
    $shout_id = ( intval($HTTP_POST_VARS[POST_POST_URL]) ) ? intval($HTTP_POST_VARS[POST_POST_URL]) : intval($HTTP_GET_VARS[POST_POST_URL]);
}
else
{
        $shout_id = '';
}
$sid = ( isset($HTTP_POST_VARS['sid']) ) ? $HTTP_POST_VARS['sid'] : '';
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
$start = ($start < 0) ? 0 : $start;
$cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : FALSE;
$confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : FALSE;
$group_sql = ($group_id == '') ? "ORDER BY g.group_id DESC LIMIT " . $start . ", 10" : "AND g.group_id = $group_id";
$sql = "SELECT g.*, u.user_id, u.username 
        FROM " . GROUPS_TABLE . " g, " . USERS_TABLE . " u    
    WHERE g.group_moderator = u.user_id
    AND g.group_single_user <> " . TRUE . "    
    $group_sql";
    
if ( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Error getting group information', '', __LINE__, __FILE__, $sql);
}             
$group_list = array();
while ($row = $db->sql_fetchrow($result))
{
    $group_list[] = $row;
}
$db->sql_freeresult($result);
$group_list_count = count($group_list);
if ($group_id != '')
{   
        $sql = "SELECT g.group_id, g.group_moderator, g.group_logo, ug.user_id
                FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug
        WHERE g.group_id = " . $group_id . "
        AND g.group_id = ug.group_id";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, 'Error groups information', '', __LINE__, __FILE__, $sql);
    }
    $group_info = $db->sql_fetchrow($result);                                 
        $db->sql_freeresult($result); 
                
        if ( $group_info['group_id'] == '' )
        {
             message_die(GENERAL_MESSAGE, $lang['Group_not_exist']);
        }     
        
        $sql = "SELECT ug.group_id, ug.user_pending, u.user_id, u.username, u.user_posts, u.user_regdate, u.user_avatar, u.user_avatar_type, u.user_allowavatar  
            FROM " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u
            WHERE ug.user_id = u.user_id
            AND ug.group_id = '" . $group_info['group_id'] . "'
            ORDER BY u.user_regdate LIMIT 4";
        if ( !($result = $db->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR, 'Error getting group information', '', __LINE__, __FILE__, $sql);
        }             
        $user_group = array();
        while ($row = $db->sql_fetchrow($result))
        {
            $user_group[] = $row;
        }
        $db->sql_freeresult($result);       
        $user_group_count = count($user_group);  
                
        $sql = "SELECT s.*, u.username, u.user_posts, u.user_nic_color 
                FROM " . GROUP_SHOUTBOX_TABLE . " s, " . USERS_TABLE . " u
        WHERE s.shout_user_id = u.user_id 
        AND s.group_id = '" . $group_info['group_id'] . "'
        ORDER BY s.shout_session_time DESC 
        LIMIT $start, 4";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, 'Could not get shoutbox information', '', __LINE__, __FILE__, $sql);
    }
    $shout_group = array();
        while ($row = $db->sql_fetchrow($result))
        {
            $shout_group[] = $row;
        }       
        $db->sql_freeresult($result);
    $count_shout_group = count($shout_group);
        
    $sql = "SELECT COUNT(shout_id) as total 
        FROM " . GROUP_SHOUTBOX_TABLE . "
        WHERE group_id = " . $group_info['group_id'];            
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, 'Could not get shoutbox stat information', '', __LINE__, __FILE__, $sql);
    }
    $totals = $db->sql_fetchrow($result);
    $totals = $totals['total'];    
    $pagination = ($totals > 4) ? generate_pagination("groupcp.$phpEx?g=" . $group_info['group_id'] . "&", $totals, 4, $start) : '';
    
        require_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);
        $template->assign_block_vars('shout', array());    
           
        if ( $userdata['session_logged_in'] ) 
        {               
                 $submit = (isset($HTTP_POST_VARS['submit']) && isset($HTTP_POST_VARS['message'])) ? 1 : 0;
                 $message = (isset($HTTP_POST_VARS['message'])) ? trim($HTTP_POST_VARS['message']) : '';
                 if ($shout_id != '') 
                 {
                          $sql = "SELECT shout_id, shout_user_id, shout_username, shout_text 
                                  FROM " . GROUP_SHOUTBOX_TABLE . "
                          WHERE shout_id = " . $shout_id;            
                      if ( !($result = $db->sql_query($sql)) )
                      {
                          message_die(GENERAL_ERROR, 'Could not get shoutbox stat information', '', __LINE__, __FILE__, $sql);
                      }
                      $shout_info = $db->sql_fetchrow($result);                         
                    }
                 if ($shout_info['shout_user_id'] == $userdata['user_id'] || $userdata['user_id'] == $group_info['group_moderator']  || $userdata['user_level'] == ADMIN)
         {
                  $create_level = '1'; 
         }                        
                 if ((isset($HTTP_POST_VARS['submit']) && isset($HTTP_POST_VARS['message'])) && !empty($message))
                 {
                      if (isset($HTTP_POST_VARS['submit']) && !empty($message))
                      {
                          require_once($phpbb_root_path . 'includes/functions_post.'.$phpEx);
                          $bbcode_uid = make_bbcode_uid();
                          $message = prepare_message(trim($message), $html_on, $bbcode_on, $smilies_on, $bbcode_uid);                                                    
                                                                             
                          if ( $shout_info['shout_id'] != '' && $create_level != '' && $mode == 'edit')
                          {
                                  $sql = "UPDATE " . GROUP_SHOUTBOX_TABLE . " SET 
                                                 group_id = " . $group_info['group_id'] . ", 
                                                 shout_username = '" . $shout_info['shout_username'] . "', 
                                                 shout_user_id = " . $shout_info['shout_user_id'] . ",                                                 
                                                 shout_text = '" . str_replace("'", "''", $message) . "', 
                                                 shout_bbcode_uid = '$bbcode_uid' 
                                      WHERE shout_id = " . $shout_info['shout_id'] . " LIMIT 1";
                          }        
                          else
                          {
                                  $sql = "INSERT INTO " . GROUP_SHOUTBOX_TABLE . " (group_id, shout_username, shout_user_id, shout_session_time, shout_ip, shout_text, enable_bbcode, enable_html, enable_smilies, shout_bbcode_uid ) 
                                  VALUES (" . $group_info['group_id'] . ", '" . $userdata['username'] . "', '" . $userdata['user_id'] . "', '" . time() . "', '$user_ip', '$message', 1, 0, 1, '" . $bbcode_uid . "')";
                          }
                          if (!$result = $db->sql_query($sql)) 
                          {
                              message_die(GENERAL_ERROR, 'Error inserting shout.', '', __LINE__, __FILE__, $sql);
                          }
                          else
                          {
                              $template->assign_vars(array(
                                     'META' => '<meta http-equiv="refresh" content="2;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_id) . '">')
                                  );
                                  $error_message = '<br />Сообщение успешно добавлено/изменено<br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_id) . '">', '</a>');                                                              
                          }
                          message_die(GENERAL_MESSAGE, $error_message);
                      }
                 } 
                 else if ( $shout_info['shout_id'] != '' && $mode == 'delete' )
                 {
                      if ($userdata['user_id'] != $group_info['group_moderator'] || $userdata['user_level'] != ADMIN ) 
                      {
                               message_die(GENERAL_MESSAGE, $lang['Reached_on_error']);
                      }
                      if ( !$confirm )
                      {
                          $s_hidden_fields = '<input type="hidden" name="confirm" value="true" />';
                          $s_hidden_fields .= '<input type="hidden" name="mode" value="delete" />';
                          $s_hidden_fields .= '<input type="hidden" name="' . POST_POST_URL . '" value="' . $shout_info['shout_id'] . '" />';
                         
                          include($phpbb_root_path . 'includes/page_header.'.$phpEx);
                          $template->set_filenames(array(
                             'confirm_body' => 'confirm_body.tpl')
                          );
        
                          $template->assign_vars(array(
                              'MESSAGE_TITLE' => $lang['Information'],
                              'MESSAGE_TEXT' => $lang['Guest_delete_coment'],
                              'L_YES' => $lang['Yes'],
                              'L_NO' => $lang['Yes'],
                              'S_CONFIRM_ACTION' => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_info['group_id']),
                              'S_HIDDEN_FIELDS' => $s_hidden_fields)
                          );
                         $template->pparse('confirm_body');
                         include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
                      } 
                      else
                      {     
                         $sql = "DELETE FROM " . GROUP_SHOUTBOX_TABLE . " 
                             WHERE shout_id = '" . $shout_info['shout_id'] . "'
                             AND group_id = " . $group_info['group_id'];
                         if (!$result = $db->sql_query($sql)) 
                         {
                             message_die(GENERAL_ERROR, 'Error removing shout.', '', __LINE__, __FILE__, $sql);
                         }
                         else
                         {                     
                             message_die(GENERAL_MESSAGE, 'Пост успешно удален!<br/>' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_id) . '">', '</a>'));
                         }
                  } 
                 }
                 else if ( $shout_info['shout_id'] != '' && $mode=='quote' )
             {
                 if(!empty($shout_info['shout_username']))
                 {
                      $message = $shout_info['shout_username'] . ',';
                 }
                 else
                 {
                      $message = '';
                 }
             } 
             else if ( $shout_info['shout_id'] != '' && $create_level != '' && $mode == 'edit' )
             {
                 if(!empty($shout_info['shout_text']))
                 {
                      $message = $shout_info['shout_text'];
                 }
                 else
                 {
                      $message = '';
                 }
             }
             $ermessage = $lang['No_post_mode'];                              
                 $template->assign_block_vars('shout.quick', array(
                        'MESSAGE' => $message)
                 ); 
        }    
                    
}
else
{
        $sql =  "SELECT COUNT(*) as total FROM " . GROUPS_TABLE . " WHERE group_single_user <> " . TRUE . "";
        $result = $db->sql_query($sql);
        if( $result )
        { 
               $row = $db->sql_fetchrow($result);
           $num = $row['total'];           
        }
        $db->sql_freeresult($result); 
        
        $template->assign_block_vars('groups', array());
        $pagination = generate_pagination("groupcp.$phpEx?mode=start", $num, 10, $start). '';
}
define('SHOW_ONLINE', true);
       
$page_title = $lang['Group_Control_Panel'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
    'body' => 'community/community_index_body.tpl')
);
$create_link = ($userdata['session_logged_in'] == 1 && $userdata['user_posts'] >= 500) ? '<a href="group_config.'.$phpEx.'" class="buttom">' . $lang['New_group'] . '</a>' : '';
if($group_id != '' && $mode == 'edit')
{
         $s_groupcp_action =  append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_id . "&" . POST_POST_URL . "=" . $shout_id . "&mode=edit");
}
else
{
         $s_groupcp_action = append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_id);
}   
      
$template->assign_vars(array(
        'L_GROUP_TYPE' => $lang['Group_type'],
        'L_GROUPS' => $lang['Non_logged_in_groups'],
    'L_ALL_GROUPS' => $lang['Group_Information'],
        'L_GROUP_MODERATOR' => $lang['Group_moderator'],
        'L_JOINED' => $lang['Joined'], 
        'CREATE_LINK' => $create_link,
    'GROUP_MEMBERSHIP_DETAILS' => $lang['Group_member_details'],
    'GROUP_LOGO' => ($group_info['group_logo'] != '') ? '<div><img src="images/group_logo/' . $group_info['group_logo'] . '" alt="" /></div>' : '',
    'S_GROUPCP_CHAT_ACTION' => $s_groupcp_action,
    'TOTAL' => $num,
    'PAGINATION' => $pagination)
);
for($i = 0; $i < $group_list_count; $i++)
{
         if ( $group_list[$i]['group_id'] != '' )
         {                                
          $group_id = $group_list[$i]['group_id'];          
          if  ( $group_list[$i]['group_type'] != GROUP_HIDDEN || $userdata['user_id'] == $group_list[$i]['group_moderator'] || $userdata['user_level'] == ADMIN )
          {                                  
              $group_type = ($group_list[$i]['group_type'] == GROUP_OPEN) ? $lang['Group_open'] : $lang['Group_closed'];
              $group_edit = ($userdata['user_id'] == $group_info['group_moderator'] || $userdata['user_level'] == ADMIN ) ? append_sid("group_config.$phpEx?" . POST_GROUPS_URL . "=" . $group_id . "&sid=" . $userdata['session_id']) : '';
              $row_class = ( !($i % 2) ) ? 'row_easy' : 'row_hard';              
              $template->assign_block_vars('switch_groups_remaining', array(
                       'ROW_CLASS' => $row_class,
                       'GROUP_TYPE' => $group_type,
                       'GROUP_URL' => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $group_id . "&sid=" . $userdata['session_id']),
                       'GROUP_NAME' => $group_list[$i]['group_name'],
                       'GROUP_DESC' => $group_list[$i]['group_description'],
                       'GROUP_MOD' => $group_list[$i]['username'],
                       'GROUP_EDIT' => ($group_edit != '' ) ? '<a href="' . $group_edit . '" class="buttom">Редактировать</a>' : '', 
                       'GROUP_LOGO' => ($group_list[$i]['group_logo'] != '') ? '<img src="images/group_logo/' . $group_list[$i]['group_logo'] . '" alt="" />' : 'no logo') 
              );                        
                  if ( $userdata['session_logged_in'] ) 
                          {                      
                               $memberships = $lang['Non_member_groups'] . '<br/><a href=' . append_sid("group_user.$phpEx?" . POST_GROUPS_URL . "=" . $group_id . "&sid=" . $userdata['session_id']) . '>' . $lang['Group_member_join'] . '</a>';
                               $sql = "SELECT user_pending 
                                       FROM " . USER_GROUP_TABLE . "
                                   WHERE group_id = " . $group_id . "
                                   AND user_id = " . $userdata['user_id'];
                               if ( !($result = $db->sql_query($sql)) )
                               {
                                   message_die(GENERAL_ERROR, 'Error pending user information', '', __LINE__, __FILE__, $sql);
                               }                      
                                   while ($row = $db->sql_fetchrow($result))
                                   {
                                       $memberships = ( $row['user_pending'] ) ? $lang['Memberships_pending'] : $lang['Current_memberships'];                                                                                                               
                                   }
                                   $template->assign_block_vars('switch_groups_remaining.joined', array(
                                       'GROUP_PENDING' => $memberships)
                               );
                          }
                 } 
         }
         else
         {
                  $template->assign_block_vars('switch_no_groups', array(
                          'NO_GROUPS' => $lang['No_groups_exist'])
                  );
         }                 
}
if ($group_info['group_id'] != '')
{                         
        $template->assign_block_vars('group', array(
               'L_GROUP_MEMBERS' => $lang['Group_Members'],
               'U_GROUP_MEMBERS' => append_sid("group_user.$phpEx?" . POST_GROUPS_URL . "=" . $group_id . "&sid=" . $userdata['session_id']))
    );         
        for ($i = 0; $i < $user_group_count; $i++)
        {
                $user_avatar = '';
            if ( $user_group[$i]['user_avatar_type'] && $user_group[$i]['user_id'] != ANONYMOUS && $user_group[$i]['user_allowavatar'] )
            {
                switch( $user_group[$i]['user_avatar_type'] )
                {
               case USER_AVATAR_UPLOAD:
                $user_avatar = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $user_group[$i]['user_avatar'] . '" alt="" width="70" height="70"/>' : '';
                break;
               case USER_AVATAR_REMOTE:
                $user_avatar = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $user_group[$i]['user_avatar'] . '" alt="" width="70" height="70"/>' : '';
                break;
               case USER_AVATAR_GALLERY:
                $user_avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $user_group[$i]['user_avatar'] . '" alt="" width="70" height="70"/>' : '';
                break;
                }
            }
            $user_posts = $user_group[$i]['user_posts'];
            $user_regdate = create_date($board_config['default_dateformat'], $user_group[$i]['user_regdate'], $board_config['board_timezone']);
            $temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_group[$i]['user_id']);
            $users = '<a href="' . $temp_url . '">' . $user_group[$i]['username'] . '</a>';                                     
                $row_class = ( !($i % 2) ) ? 'row_easy' : 'row_hard';
                $template->assign_block_vars('group.user', array(
                         'ROW_CLASS' => $row_class,
                     'USER' => $users,
                     'USER_POSTS' => $user_posts,                                     
                     'USER_AVATAR' => $user_avatar,
                     'USER_REGDATE' => $user_regdate)
            );
        }        
    for ($i = 0; $i < $count_shout_group; $i++)
    {
        $poster = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '='  . $shout_group[$i]['shout_user_id']) . '" style="color: ' . $shout_group[$i]['user_nic_color'] . '">' . $shout_group[$i]['username'] . '</a>';        
        $quote = ( $userdata['session_logged_in'] ) ? '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . '=' . $shout_group[$i]['group_id'] . '&' . POST_POST_URL . '=' . $shout_group[$i]['shout_id']) . '&mode=quote">Отв</a>' : '';
        
        if ( $userdata['user_id'] == $group_info['group_moderator']  ||  $userdata['user_level'] == ADMIN )
            {
                $delete = '|<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . '=' . $shout_group[$i]['group_id'] . '&' . POST_POST_URL . '=' . $shout_group[$i]['shout_id']) . '&mode=delete">' . $lang['Delete_post'] . '</a>';
        }
        else
            {
                    $delete = '';
            }   
            if ( $userdata['user_id'] == $shout_group[$i]['shout_user_id'] || $userdata['user_id'] == $group_info['group_moderator']  ||  $userdata['user_level'] == ADMIN )
            {
                $edit = '|<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . '=' . $shout_group[$i]['group_id'] . '&' . POST_POST_URL . '=' . $shout_group[$i]['shout_id']) . '&mode=edit">' . $lang['Edit_delete_post'] . '</a>';
        }
        else
            {
                    $edit = '';
            }      
        
        $bbcode_uid = $shout_group[$i]['shout_bbcode_uid'];        
        $shout_text = $shout_group[$i]['shout_text'];
        $shout_text = make_clickable($shout_text);
        $shout_text = smilies_pass($shout_text);
        $shout_text = ($bbcode_uid != '') ? bbencode_second_pass($shout_text, $bbcode_uid) : '';
               
        $shout_text = str_replace("n", "n<br />n", $shout_text);
                $nomer_posta = $i + $start + 1;
                $row_class = ( !($i % 2) ) ? 'row_easy' : 'row_hard';             
        
        $template->assign_block_vars('shout.shoutrow', array(
             'ROW_CLASS' => $row_class,
             'NUMBER' => $nomer_posta,
             'SHOUT_TEXT' => $shout_text,
             'TIME' => create_date($board_config['default_dateformat'], $shout_group[$i]['shout_session_time'], $board_config['board_timezone']),
             'POSTER' => $poster,
             'USER_POSTS' => $shout_group[$i]['user_posts'],
                         'QUOTE' => $quote,
                         'EDIT' => $edit,
             'DELETE' => $delete)
        );                                                            
    }                 
}
 
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>