示例#1
0
 /**
  * The main user interface for choosing a chat room to moderate.
  *
  * @return tempcode	The UI.
  */
 function chat_choose_room()
 {
     if (has_actual_page_access(get_member(), 'admin_chat')) {
         require_lang('menus');
         $also_url = build_url(array('page' => 'admin_chat'), get_module_zone('admin_chat'));
         attach_message(do_lang_tempcode('ALSO_SEE_CMS', escape_html($also_url->evaluate())), 'inform');
     }
     $title = get_page_title('CHAT_MOD_PANEL');
     $introtext = do_lang_tempcode('CHAT_PANEL_INTRO');
     breadcrumb_set_self(do_lang_tempcode('CHOOSE'));
     $start = get_param_integer('start', 0);
     $max = get_param_integer('max', 50);
     $sortables = array('room_name' => do_lang_tempcode('ROOM_NAME'), 'messages' => do_lang_tempcode('MESSAGES'));
     $test = explode(' ', either_param('sort', 'room_name DESC'));
     if (count($test) == 1) {
         $test[1] = 'DESC';
     }
     list($sortable, $sort_order) = $test;
     if (strtoupper($sort_order) != 'ASC' && strtoupper($sort_order) != 'DESC' || !array_key_exists($sortable, $sortables)) {
         log_hack_attack_and_exit('ORDERBY_HACK');
     }
     global $NON_CANONICAL_PARAMS;
     $NON_CANONICAL_PARAMS[] = 'sort';
     require_code('templates_results_table');
     $fields_title = results_field_title(array(do_lang_tempcode('ROOM_NAME'), do_lang_tempcode('ROOM_OWNER'), do_lang_tempcode('ROOM_LANG'), do_lang_tempcode('MESSAGES')), $sortables, 'sort', $sortable . ' ' . $sort_order);
     $max_rows = $GLOBALS['SITE_DB']->query_value('chat_rooms', 'COUNT(*)', array('is_im' => 0));
     $sort_clause = $sortable == 'room_name' ? 'ORDER BY room_name ' . $sort_order : '';
     $rows = $GLOBALS['SITE_DB']->query_select('chat_rooms', array('*'), array('is_im' => 0), $sort_clause, $max, $start);
     if ($sortable == 'messages') {
         usort($rows, array('Module_cms_chat', '_sort_chat_browse_rows'));
         if ($sort_order == 'DESC') {
             $rows = array_reverse($rows);
         }
     }
     $fields = new ocp_tempcode();
     foreach ($rows as $row) {
         $has_mod_access = has_specific_permission(get_member(), 'edit_lowrange_content', 'cms_chat', array('chat', $row['id'])) || $row['room_owner'] == get_member() && has_specific_permission(get_member(), 'moderate_my_private_rooms');
         if (!handle_chatroom_pruning($row) && $has_mod_access) {
             $url = build_url(array('page' => '_SELF', 'type' => 'room', 'id' => $row['id']), '_SELF');
             $messages = $GLOBALS['SITE_DB']->query_value('chat_messages', 'COUNT(*)', array('room_id' => $row['id']));
             $username = $GLOBALS['FORUM_DRIVER']->get_username($row['room_owner']);
             if (is_null($username)) {
                 $username = '';
             }
             //do_lang('UNKNOWN');
             $fields->attach(results_entry(array(hyperlink($url, escape_html($row['room_name'])), escape_html($username), escape_html($row['room_language']), escape_html(integer_format($messages)))));
         }
     }
     if ($fields->is_empty()) {
         inform_exit(do_lang_tempcode('NO_CATEGORIES'));
     }
     $results_table = results_table(do_lang_tempcode('ROOMS'), $start, 'start', $max, 'max', $max_rows, $fields_title, $fields, $sortables, $sortable, $sort_order, 'sort');
     return do_template('CHAT_MODERATE_SCREEN', array('_GUID' => 'c59cb6c8409d0e678b05628d92e423db', 'TITLE' => $title, 'INTRODUCTION' => $introtext, 'CONTENT' => $results_table, 'LINKS' => array()));
 }
示例#2
0
 /**
  * Standard aed_module list function.
  *
  * @return tempcode		The selection list
  */
 function nice_get_entries()
 {
     $rows = $GLOBALS['SITE_DB']->query_select('chat_rooms', array('*'), array('is_im' => 0), 'ORDER BY room_name DESC', 500);
     if (count($rows) == 500) {
         warn_exit(do_lang_tempcode('TOO_MANY_TO_CHOOSE_FROM'));
     }
     $fields = new ocp_tempcode();
     foreach ($rows as $row) {
         if (!handle_chatroom_pruning($row)) {
             $fields->attach(form_input_list_entry(strval($row['id']), false, $row['room_name']));
         }
     }
     return $fields;
 }
示例#3
0
 /**
  * The UI to choose a chat room.
  *
  * @return tempcode		The UI
  */
 function chat_lobby()
 {
     require_javascript('javascript_ajax_people_lists');
     // Who are we viewing the lobby of?
     $member_id = get_param_integer('member_id', get_member());
     if (!is_guest($member_id)) {
         enforce_personal_access($member_id);
     }
     // Starting an IM? The IM will popup by AJAX once the page loads, because it's in the system now
     $enter_im = get_param_integer('enter_im', NULL);
     if (!is_null($enter_im) && !is_guest()) {
         $test = $GLOBALS['SITE_DB']->query('SELECT * FROM ' . get_table_prefix() . 'chat_rooms WHERE is_im=1 AND allow_list LIKE \'' . db_encode_like('%' . strval($enter_im) . '%') . '\'');
         $found_one = false;
         foreach ($test as $t) {
             if (check_chatroom_access($t, true, $enter_im) && check_chatroom_access($t, true, get_member())) {
                 $found_one = true;
             }
         }
         if (!$found_one) {
             require_code('chat2');
             add_chatroom('', $GLOBALS['FORUM_DRIVER']->get_username(get_member()), get_member(), strval(get_member()) . ',' . strval($enter_im), '', '', '', user_lang(), 1);
         }
     }
     // And empty IM conversations
     $old_dead_ims = $GLOBALS['SITE_DB']->query('SELECT r.* FROM ' . get_table_prefix() . 'chat_rooms r JOIN ' . get_table_prefix() . 'chat_events e ON e.e_room_id=r.id AND ' . db_string_equal_to('e.e_type_code', 'JOIN_IM') . ' LEFT JOIN ' . get_table_prefix() . 'chat_messages m ON m.room_id=r.id WHERE r.is_im=1 AND e_date_and_time<' . strval(time() - CHAT_EVENT_PRUNE) . ' AND m.id IS NULL');
     foreach ($old_dead_ims as $old) {
         require_code('chat2');
         delete_chatroom($old['id']);
     }
     // Prune chat events
     $GLOBALS['SITE_DB']->query('DELETE FROM ' . $GLOBALS['SITE_DB']->get_table_prefix() . 'chat_events WHERE e_date_and_time<' . strval(time() - CHAT_EVENT_PRUNE));
     enter_chat_lobby();
     // Generic stuff: Title, feed URL
     $title = get_page_title('CHAT_LOBBY');
     $GLOBALS['FEED_URL'] = find_script('backend') . '?mode=chat&filter=';
     // Rooms
     $rows = $GLOBALS['SITE_DB']->query_select('chat_rooms', array('*'), array('is_im' => 0), 'ORDER BY room_name DESC', 200);
     if (count($rows) == 200) {
         $rows = $GLOBALS['SITE_DB']->query_select('chat_rooms', array('*'), array('is_im' => 0, 'allow_list' => ''), 'ORDER BY room_name DESC', 200);
     }
     $fields = new ocp_tempcode();
     foreach ($rows as $myrow) {
         // Check to see if we are on the room's allow list, if we aren't, don't display the room :D
         $showroom = check_chatroom_access($myrow, true, $member_id);
         if (!handle_chatroom_pruning($myrow) && $showroom) {
             $users = get_chatters_in_room($myrow['id']);
             $usernames = get_chatters_in_room_tpl($users);
             //$url=build_url(array('page'=>'_SELF','mode'=>$mode,'type'=>'room','id'=>$myrow['id']),'_SELF');
             $url = build_url(array('page' => '_SELF', 'type' => 'room', 'id' => $myrow['id']), '_SELF');
             $room_link = do_template('CHAT_ROOM_LINK', array('PRIVATE' => $myrow['allow_list'] != '' || $myrow['allow_list_groups'] != '', 'ID' => strval($myrow['id']), 'NAME' => $myrow['room_name'], 'USERNAMES' => $usernames, 'URL' => $url));
             $fields->attach($room_link);
         }
     }
     // Extra links
     if (has_actual_page_access($member_id, 'cms_chat')) {
         $modlink = hyperlink(build_url(array('page' => 'cms_chat'), get_module_zone('cms_chat')), do_lang_tempcode('CHAT_MOD_PANEL'));
     } else {
         $modlink = new ocp_tempcode();
     }
     if (!is_guest()) {
         $blocking_link = hyperlink(build_url(array('page' => '_SELF', 'type' => 'blocking_interface'), '_SELF'), do_lang_tempcode('MEMBER_BLOCKING'));
     } else {
         $blocking_link = new ocp_tempcode();
     }
     if (has_specific_permission($member_id, 'create_private_room') && !is_guest()) {
         $private_room = hyperlink(build_url(array('page' => '_SELF', 'type' => 'private'), '_SELF'), do_lang_tempcode('CREATE_PRIVATE_ROOM'));
     } else {
         $private_room = new ocp_tempcode();
     }
     // Buddy list and IM
     if ($member_id == get_member() && !is_guest()) {
         $post_url_add_buddy = build_url(array('page' => '_SELF', 'type' => 'buddy_add', 'redirect' => get_self_url(true)), '_SELF');
         $post_url_remove_buddies = build_url(array('page' => '_SELF', 'type' => 'buddy_remove', 'redirect' => get_self_url(true)), '_SELF');
     } else {
         $post_url_add_buddy = new ocp_tempcode();
         $post_url_remove_buddies = new ocp_tempcode();
     }
     $online_url = $GLOBALS['FORUM_DRIVER']->online_members_url();
     $can_im = has_specific_permission(get_member(), 'start_im');
     $buddies = array();
     $buddy_rows = $GLOBALS['SITE_DB']->query_select('chat_buddies', array('*'), array('member_likes' => $member_id), 'ORDER BY date_and_time', 100);
     $buddy_active = get_chatters_in_room(NULL);
     global $SESSION_CACHE;
     $users_online_time_seconds = CHAT_ACTIVITY_PRUNE;
     foreach ($buddy_rows as $buddy) {
         if (array_key_exists($buddy['member_liked'], $buddy_active) && !member_blocked(get_member(), $buddy['member_liked'])) {
             $online_text = do_lang_tempcode('ACTIVE');
         } else {
             $online_text = member_is_online($buddy['member_liked']) ? do_lang_tempcode('ONLINE') : do_lang_tempcode('OFFLINE');
         }
         $username = array_key_exists($buddy['member_liked'], $buddy_active) ? $buddy_active[$buddy['member_liked']] : $GLOBALS['FORUM_DRIVER']->get_username($buddy['member_liked']);
         if (!is_null($username)) {
             $member_profile_url = $GLOBALS['FORUM_DRIVER']->member_profile_url($buddy['member_liked'], true, true);
             $buddies[] = array('DATE_AND_TIME_RAW' => strval($buddy['date_and_time']), 'DATE_AND_TIME' => get_timezoned_date($buddy['date_and_time'], false), 'MEMBER_PROFILE_LINK' => $member_profile_url, 'MEMBER_ID' => strval($buddy['member_liked']), 'USERNAME' => $username, 'ONLINE_TEXT' => $online_text);
         }
     }
     $messages_php = find_script('messages');
     $im_area_template = do_template('CHAT_LOBBY_IM_AREA', array('_GUID' => 'cd230527da03caa596135f74647b2ca7', 'MESSAGES_PHP' => $messages_php, 'ROOM_ID' => '__room_id__'));
     $make_buddy_url = build_url(array('page' => '_SELF', 'type' => 'buddy_add', 'member_id' => '__id__'), '_SELF');
     $block_member_url = build_url(array('page' => '_SELF', 'type' => 'blocking_add', 'member_id' => '__id__'), '_SELF');
     $profile_url = $GLOBALS['FORUM_DRIVER']->member_profile_url(-100, true, true);
     if (is_object($profile_url)) {
         $profile_url = $profile_url->evaluate();
     }
     $profile_url = str_replace('-100', '__id__', $profile_url);
     $im_participant_template = do_template('CHAT_LOBBY_IM_PARTICIPANT', array('_GUID' => '9a36efe3a449dabac6ef9866d1f6f48a', 'PROFILE_URL' => $profile_url, 'ID' => '__id__', 'ROOM_ID' => '__room_id__', 'USERNAME' => '__username__', 'ONLINE' => '__online__', 'AVATAR_URL' => '__avatar_url__', 'MAKE_BUDDY_URL' => $make_buddy_url, 'BLOCK_MEMBER_URL' => $block_member_url));
     if (!is_guest()) {
         $seteffectslink = hyperlink(build_url(array('page' => '_SELF', 'type' => 'set_effects'), '_SELF'), do_lang_tempcode('CHAT_SET_EFFECTS'), true);
     } else {
         $seteffectslink = new ocp_tempcode();
     }
     $message = new ocp_tempcode();
     $message->attach(do_lang_tempcode('WELCOME_CHAT_LOBBY', $private_room->is_empty() ? new ocp_tempcode() : do_lang_tempcode('WELCOME_CHAT_LOBBY_PRIVATE_ROOMS'), $can_im ? do_lang_tempcode('WELCOME_CHAT_LOBBY_USE_IM') : new ocp_tempcode(), $can_im ? do_lang_tempcode(get_option('sitewide_im') == '1' ? 'WELCOME_CHAT_LOBBY_USE_IM2_SITEWIDE' : 'WELCOME_CHAT_LOBBY_USE_IM2_NO_SITEWIDE') : new ocp_tempcode()));
     if (has_actual_page_access(get_member(), 'admin_chat')) {
         $add_room_url = build_url(array('page' => 'admin_chat', 'type' => 'ad'), get_module_zone('admin_chat'));
     } else {
         $add_room_url = new ocp_tempcode();
     }
     return do_template('CHAT_LOBBY_SCREEN', array('_GUID' => 'f82ddfd0dccbd25752dd05a1d87429e2', 'ADD_ROOM_URL' => $add_room_url, 'MESSAGE' => $message, 'CHAT_SOUND' => get_chat_sound_tpl(), 'IM_PARTICIPANT_TEMPLATE' => $im_participant_template, 'IM_AREA_TEMPLATE' => $im_area_template, 'BUDDIES' => $buddies, 'CAN_IM' => $can_im, 'ONLINE_URL' => $online_url, 'URL_ADD_BUDDY' => $post_url_add_buddy, 'URL_REMOVE_BUDDIES' => $post_url_remove_buddies, 'TITLE' => $title, 'ROOMS' => $fields, 'PRIVATE_ROOM' => $private_room, 'MOD_LINK' => $modlink, 'BLOCKING_LINK' => $blocking_link, 'SETEFFECTS_LINK' => $seteffectslink));
 }