Commit 3f38cfee authored by Chris Graham's avatar Chris Graham
Browse files

Fixed MANTIS-4196 (Problems exporting members when certain usergroup subscriptions exist (etc))

parent f3d12cda
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -43,8 +43,7 @@ function member_get_csv_headings_extended()
    $headings = member_get_csv_headings();
    foreach ($cpfs as $i => $c) { // CPFs take precedence over normal fields of the same name
        $cpfs[$i]['_cf_name'] = get_translated_text($c['cf_name'], $GLOBALS['FORUM_DB']);
        $cpfs[$i]['_cf_name'] = str_replace(',', (get_charset() == 'utf-8') ? (chr(hexdec('ef')) . chr(hexdec('b9')) . chr(hexdec('90'))) : '', $cpfs[$i]['_cf_name']); // Normal commas break sort_maps_by
        $headings[$cpfs[$i]['_cf_name']] = $i;
        $headings[$cpfs[$i]['_cf_name']] = strval($i); // We specially recognise numeric names as a map back to a CPF ID
    }

    // Subscription types
@@ -55,12 +54,17 @@ function member_get_csv_headings_extended()
        $usergroup_subscription_rows = $GLOBALS['FORUM_DB']->query_select('f_usergroup_subs', array('id', 's_title'));
        foreach ($usergroup_subscription_rows as $usergroup_subscription_row) {
            $item_name = get_translated_text($usergroup_subscription_row['s_title'], $GLOBALS['FORUM_DB']);
            $headings[$item_name . ' (' . do_lang('SUBSCRIPTION_START_TIME') . ')'] = null;
            $headings[$item_name . ' (' . do_lang('SUBSCRIPTION_TERM_START_TIME') . ')'] = null;
            $headings[$item_name . ' (' . do_lang('SUBSCRIPTION_TERM_END_TIME') . ')'] = null;
            $headings[$item_name . ' (' . do_lang('SUBSCRIPTION_EXPIRY_TIME') . ')'] = null;
            $headings[$item_name . ' (' . do_lang('PAYMENT_GATEWAY') . ')'] = null;
            $headings[$item_name . ' (' . do_lang('STATUS') . ')'] = null;
            $heading_lang_strings = array(
                'SUBSCRIPTION_START_TIME',
                'SUBSCRIPTION_TERM_START_TIME',
                'SUBSCRIPTION_TERM_END_TIME',
                'SUBSCRIPTION_EXPIRY_TIME',
                'PAYMENT_GATEWAY',
                'STATUS',
            );
            foreach ($heading_lang_strings as $heading_lang_string) {
                $headings[$item_name . ' (' . do_lang($heading_lang_string) . ')'] = ':' . str_replace('/', '\\', $item_name . ' (' . do_lang($heading_lang_string) . ')'); // Forward slashes are assumed as delimiters
            }
            $subscription_types['USERGROUP' . strval($usergroup_subscription_row['id'])] = $item_name;
        }
    }
+15 −6
Original line number Diff line number Diff line
@@ -190,7 +190,7 @@ class Hook_task_download_member_csv

            if ($order_by != 'id') {
                // Sort
                sort_maps_by($data, $order_by);
                sort_maps_by($data, $order_by, false, false);
            }

            require_code('files2');
@@ -275,26 +275,31 @@ class Hook_task_download_member_csv
                foreach ($parts as $i => $part) {
                    switch (substr($part, 0, 1)) {
                        case '*': // language string
                            $at = get_translated_text($m[substr($part, 1)], $GLOBALS['FORUM_DB']);
                            $part = substr($part, 1);
                            $at = get_translated_text($m[$part], $GLOBALS['FORUM_DB']);
                            break;

                        case '!': // binary
                            $at = ($m[substr($part, 1)] == 1) ? 'Yes' : 'No'; // Hard-coded in English, because we need a multi-language standard
                            $part = substr($part, 1);
                            $at = ($m[$part] == 1) ? 'Yes' : 'No'; // Hard-coded in English, because we need a multi-language standard
                            break;

                        case '&': // timestamp
                            $at = date('Y-m-d', intval($m[substr($part, 1)]));
                            $part = substr($part, 1);
                            $at = date('Y-m-d', intval($m[$part]));
                            break;

                        case '#': // url
                            $at = $m[substr($part, 1)];
                            $part = substr($part, 1);
                            $at = $m[$part];
                            if ((url_is_local($at)) && ($at != '')) {
                                $at = get_complex_base_url($at) . '/' . $at;
                            }
                            break;

                        case '@': // append other groups
                            $at = isset($groups[$m[substr($part, 1)]]) ? $groups[$m[substr($part, 1)]] : '';
                            $part = substr($part, 1);
                            $at = isset($groups[$m[$part]]) ? $groups[$m[$part]] : '';

                            foreach ($member_groups as $g) {
                                if ($g['gm_member_id'] == $m['id']) {
@@ -305,6 +310,10 @@ class Hook_task_download_member_csv
                            }
                            break;

                        case ':':
                            $part = substr($part, 1);
                            // no break

                        default: // string
                            // Pseudo fields
                            /*switch ($part) {