/** * The actualiser to set sound effects. * * @return tempcode The UI */ function _set_effects() { $title = get_page_title('CHAT_SET_EFFECTS'); breadcrumb_set_parents(array(array('_SELF:_SELF:misc', do_lang_tempcode('CHAT_LOBBY')))); require_code('uploads'); // Find all our suffixes to check for $buddy_count = $GLOBALS['SITE_DB']->query_value('chat_buddies', 'COUNT(*)', array('member_likes' => get_member())); $suffixes = array(); if ($buddy_count < 200) { $buddies = $GLOBALS['SITE_DB']->query_select('chat_buddies', array('member_liked'), array('member_likes' => get_member())); $suffixes = array(''); foreach ($buddies as $buddy) { if (is_null($GLOBALS['FORUM_DRIVER']->get_username($buddy['member_liked']))) { continue; } $suffixes[] = '_' . strval($buddy['member_liked']); } } $current_settings = collapse_2d_complexity('s_effect_id', 's_url', $GLOBALS['SITE_DB']->query_select('chat_sound_effects', array('s_url', 's_effect_id'), array('s_member' => get_member()))); // Process data foreach ($suffixes as $suffix) { $effects = get_effect_set($suffix != ''); foreach ($effects as $effect) { if (is_null($effect)) { continue; } if (post_param('select_' . $effect . $suffix) == '-1' && is_null(post_param('hidFileID_upload_' . $effect . $suffix, NULL)) && isset($_FILES['upload_' . $effect . $suffix]) && !is_uploaded_file($_FILES['upload_' . $effect . $suffix]['tmp_name'])) { $url = '-1'; } else { $url_bits = get_url('select_' . $effect . $suffix, 'upload_' . $effect . $suffix, 'uploads/personal_sound_effects', 0, OCP_UPLOAD_MP3); $url = $url_bits[0]; } // Delete existing upload, if appropriate if (array_key_exists($effect . $suffix, $current_settings) && substr($current_settings[$effect . $suffix], 0, 31) == 'uploads/personal_sound_effects/' && $current_settings[$effect . $suffix] != $url) { @unlink(get_custom_file_base() . '/' . filter_naughty($current_settings[$effect . $suffix])); } // Delete existing setting $GLOBALS['SITE_DB']->query_delete('chat_sound_effects', array('s_member' => get_member(), 's_effect_id' => $effect . $suffix)); if ($url != '-1') { // Add new setting $GLOBALS['SITE_DB']->query_insert('chat_sound_effects', array('s_member' => get_member(), 's_effect_id' => $effect . $suffix, 's_url' => $url)); } } } $redirect = post_param('redirect', NULL); if (is_null($redirect)) { return inform_screen($title, do_lang_tempcode('SUCCESS')); } else { require_code('site2'); assign_refresh($redirect, 0.0); return do_template('REDIRECT_SCREEN', array('_GUID' => '6bcc5c60f9b75e9dca719a5db8d24491', 'URL' => $redirect, 'TITLE' => $title, 'TEXT' => do_lang_tempcode('SUCCESS'))); } }
/** * Get a list of template mappings for the current member, between sound effect IDs and the URLs to the mp3 fiels. * * @param boolean Whether to use full URLs in the mappings. * @param ?MEMBER Get settings overridden for this specific member (NULL: global settings). * @param boolean Get global settings and settings overridden for all members (if this is true we'd expect $for_member to be NULL). * @return array The template mappings. */ function get_effect_settings($full_urls = false, $for_member = NULL, $all_members = false) { $effects = get_effect_set(!is_null($for_member)); global $EFFECT_SETTINGS_ROWS; if (is_null($EFFECT_SETTINGS_ROWS)) { $EFFECT_SETTINGS_ROWS = collapse_2d_complexity('s_effect_id', 's_url', $GLOBALS['SITE_DB']->query_select('chat_sound_effects', array('s_url', 's_effect_id'), array('s_member' => get_member()))); } $effect_settings = array(); if ($all_members) { foreach (array_keys($EFFECT_SETTINGS_ROWS) as $effect_id) { $matches = array(); if (!array_key_exists($effect_id, $effects) && preg_match('#^(.*)\\_(\\d+)$#', $effect_id, $matches) != 0 && array_key_exists($matches[1], $effects)) { $effects[$effect_id] = $matches[1]; } } } foreach ($effects as $effect => $base_effect_code) { if (is_null($base_effect_code)) { continue; } if (is_null($for_member)) { if (array_key_exists($effect, $EFFECT_SETTINGS_ROWS)) { $member_setting = $EFFECT_SETTINGS_ROWS[$effect]; } else { if (true) { $member_setting = 'data_custom/sounds/' . $effect . '.mp3'; if (!file_exists(get_custom_file_base() . '/' . $member_setting)) { $member_setting = 'data/sounds/' . $effect . '.mp3'; } if (!file_exists(get_file_base() . '/' . $member_setting)) { $member_setting = ''; } } else { $member_setting = ''; } } } else { if (array_key_exists($effect . '_' . strval($for_member), $EFFECT_SETTINGS_ROWS)) { $member_setting = $EFFECT_SETTINGS_ROWS[$effect . '_' . strval($for_member)]; } else { $member_setting = '-1'; } } $effect_settings[$effect] = array('KEY' => $effect, 'VALUE' => ($full_urls && $member_setting != '' ? (substr($member_setting, 0, 12) == 'data_custom/' ? get_custom_base_url() : get_base_url()) . '/' : '') . $member_setting, 'EFFECT_TITLE' => do_lang('CHAT_EFFECT_' . $base_effect_code)); } return $effect_settings; }