Beispiel #1
0
 /**
  * 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')));
     }
 }
Beispiel #2
0
/**
 * 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;
}