if ($starttime) {
        $data = C::t('portal_topic')->fetch_all_topicid_by_dateline($starttime);
    }
    helper_output::xml($data ? implode(',', array_keys($data)) : '');
} elseif ($operation == 'catids') {
    $starttime = strtotime($_GET['starttime']);
    $data = array();
    if ($starttime) {
        loadcache('portalcategory');
        foreach ($_G['cache']['portalcategory'] as $key => $value) {
            if ($value['lastpublish'] >= $starttime) {
                $data[$key] = $key;
            }
        }
    }
    helper_output::xml($data ? implode(',', $data) : '');
} elseif ($operation == 'makehtmlsetting') {
    if (!submitcheck('makehtmlsetting')) {
        $setting = $_G['setting'];
        showformheader("makehtml&operation=makehtmlsetting");
        showtableheader('', 'nobottom', 'id="makehtml"' . ($_GET['operation'] != 'makehtmlsetting' ? ' style="display: none"' : ''));
        showsetting('setting_functions_makehtml', 'settingnew[makehtml][flag]', $setting['makehtml']['flag'], 'radio', 0, 1);
        showsetting('setting_functions_makehtml_extendname', 'settingnew[makehtml][extendname]', $setting['makehtml']['extendname'] ? $setting['makehtml']['extendname'] : 'html', 'text');
        showsetting('setting_functions_makehtml_articlehtmldir', 'settingnew[makehtml][articlehtmldir]', $setting['makehtml']['articlehtmldir'], 'text');
        $dirformat = array('settingnew[makehtml][htmldirformat]', array(array(0, dgmdate(TIMESTAMP, '/Ym/')), array(1, dgmdate(TIMESTAMP, '/Ym/d/')), array(2, dgmdate(TIMESTAMP, '/Y/m/')), array(3, dgmdate(TIMESTAMP, '/Y/m/d/'))));
        showsetting('setting_functions_makehtml_htmldirformat', $dirformat, $setting['makehtml']['htmldirformat'], 'select');
        showsetting('setting_functions_makehtml_topichtmldir', 'settingnew[makehtml][topichtmldir]', $setting['makehtml']['topichtmldir'], 'text');
        showsetting('setting_functions_makehtml_indexname', 'settingnew[makehtml][indexname]', $setting['makehtml']['indexname'] ? $setting['makehtml']['indexname'] : 'index', 'text');
        showtagfooter('tbody');
        showtablefooter();
        showsubmit('makehtmlsetting', 'submit');
function dshowmessage($message, $url_forward = '', $values = array(), $extraparam = array(), $custom = 0)
{
    global $_G, $show_message;
    $_G['messageparam'] = func_get_args();
    if (empty($_G['inhookscript']) && defined('CURMODULE')) {
        hookscript(CURMODULE, $_G['basescript'], 'messagefuncs', array('param' => $_G['messageparam']));
    }
    if ($extraparam['break']) {
        return;
    }
    $_G['inshowmessage'] = true;
    $param = array('header' => false, 'timeout' => null, 'refreshtime' => null, 'closetime' => null, 'locationtime' => null, 'alert' => null, 'return' => false, 'redirectmsg' => 0, 'msgtype' => 1, 'showmsg' => true, 'showdialog' => false, 'login' => false, 'handle' => false, 'extrajs' => '', 'striptags' => true);
    $navtitle = lang('core', 'title_board_message');
    if ($custom) {
        $alerttype = 'alert_info';
        $show_message = $message;
        include template('common/showmessage');
        dexit();
    }
    define('CACHE_FORBIDDEN', TRUE);
    $_G['setting']['msgforward'] = @dunserialize($_G['setting']['msgforward']);
    $handlekey = $leftmsg = '';
    if (defined('IN_MOBILE')) {
        unset($extraparam['showdialog']);
        unset($extraparam['closetime']);
        unset($extraparam['extrajs']);
        if (!$url_forward && dreferer() && IN_MOBILE == 1) {
            $url_forward = $referer = dreferer();
        }
        if (!empty($url_forward) && strpos($url_forward, 'mobile') === false) {
            $url_forward_arr = explode("#", $url_forward);
            if (strpos($url_forward_arr[0], '?') !== false) {
                $url_forward_arr[0] = $url_forward_arr[0] . '&mobile=' . IN_MOBILE;
            } else {
                $url_forward_arr[0] = $url_forward_arr[0] . '?mobile=' . IN_MOBILE;
            }
            $url_forward = implode("#", $url_forward_arr);
        }
    }
    if (empty($_G['inajax']) && (!empty($_GET['quickforward']) || $_G['setting']['msgforward']['quick'] && empty($extraparam['clean_msgforward']) && $_G['setting']['msgforward']['messages'] && @in_array($message, $_G['setting']['msgforward']['messages']))) {
        $param['header'] = true;
    }
    $_GET['handlekey'] = !empty($_GET['handlekey']) && preg_match('/^\\w+$/', $_GET['handlekey']) ? $_GET['handlekey'] : '';
    if (!empty($_G['inajax'])) {
        $handlekey = $_GET['handlekey'] = !empty($_GET['handlekey']) ? dhtmlspecialchars($_GET['handlekey']) : '';
        $param['handle'] = true;
    }
    if (!empty($_G['inajax'])) {
        $param['msgtype'] = empty($_GET['ajaxmenu']) && (empty($_POST) || !empty($_GET['nopost'])) ? 2 : 3;
    }
    if ($url_forward) {
        $param['timeout'] = true;
        if ($param['handle'] && !empty($_G['inajax'])) {
            $param['showmsg'] = false;
        }
    }
    foreach ($extraparam as $k => $v) {
        $param[$k] = $v;
    }
    if (array_key_exists('set', $extraparam)) {
        $setdata = array('1' => array('msgtype' => 3));
        if ($setdata[$extraparam['set']]) {
            foreach ($setdata[$extraparam['set']] as $k => $v) {
                $param[$k] = $v;
            }
        }
    }
    $timedefault = intval($param['refreshtime'] === null ? $_G['setting']['msgforward']['refreshtime'] : $param['refreshtime']);
    if ($param['timeout'] !== null) {
        $refreshsecond = !empty($timedefault) ? $timedefault : 3;
        $refreshtime = $refreshsecond * 1000;
    } else {
        $refreshtime = $refreshsecond = 0;
    }
    if ($param['login'] && $_G['uid'] || $url_forward) {
        $param['login'] = false;
    }
    $param['header'] = $url_forward && $param['header'] ? true : false;
    if ($_GET['ajaxdata'] === 'json') {
        $param['header'] = '';
    }
    if ($param['header']) {
        header("HTTP/1.1 301 Moved Permanently");
        dheader("location: " . str_replace('&', '&', $url_forward));
    }
    $url_forward_js = addslashes(str_replace('\\', '%27', $url_forward));
    if ($param['location'] && !empty($_G['inajax'])) {
        include template('common/header_ajax');
        echo '<script type="text/javascript" reload="1">window.location.href=\'' . $url_forward_js . '\';</script>';
        include template('common/footer_ajax');
        dexit();
    }
    $_G['hookscriptmessage'] = $message;
    $_G['hookscriptvalues'] = $values;
    $vars = explode(':', $message);
    if (count($vars) == 2) {
        $show_message = lang('plugin/' . $vars[0], $vars[1], $values);
    } else {
        $show_message = lang('message', $message, $values);
    }
    if (isset($_GET['ajaxdata'])) {
        if ($_GET['ajaxdata'] === 'json') {
            helper_output::json(array('message' => $show_message, 'data' => $values));
        } else {
            if ($_GET['ajaxdata'] === 'html') {
                helper_output::html($show_message);
            }
        }
    }
    if ($_G['connectguest']) {
        $param['login'] = false;
        $param['alert'] = 'info';
        if (defined('IN_MOBILE')) {
            if ($message == 'postperm_login_nopermission_mobile') {
                $show_message = lang('plugin/qqconnect', 'connect_register_mobile_bind_error');
            }
            $show_message = str_replace(lang('forum/misc', 'connectguest_message_mobile_search'), lang('forum/misc', 'connectguest_message_mobile_replace'), $show_message);
        } else {
            $show_message = str_replace(lang('forum/misc', 'connectguest_message_search'), lang('forum/misc', 'connectguest_message_replace'), $show_message);
        }
        if ($message == 'group_nopermission') {
            $show_message = lang('plugin/qqconnect', 'connectguest_message_complete_or_bind');
        }
    }
    if ($param['msgtype'] == 2 && $param['login']) {
        dheader('location: member.php?mod=logging&action=login&handlekey=' . $handlekey . '&infloat=yes&inajax=yes&guestmessage=yes');
    }
    $show_jsmessage = str_replace("'", "\\'", $param['striptags'] ? strip_tags($show_message) : $show_message);
    if ((!$param['showmsg'] || $param['showid']) && !defined('IN_MOBILE')) {
        $show_message = '';
    }
    $allowreturn = !$param['timeout'] && !$url_forward && !$param['login'] || $param['return'] ? true : false;
    if ($param['alert'] === null) {
        $alerttype = $url_forward ? preg_match('/\\_(succeed|success)$/', $message) ? 'alert_right' : 'alert_info' : ($allowreturn ? 'alert_error' : 'alert_info');
    } else {
        $alerttype = 'alert_' . $param['alert'];
    }
    $extra = '';
    if ($param['showid']) {
        $extra .= 'if($(\'' . $param['showid'] . '\')) {$(\'' . $param['showid'] . '\').innerHTML = \'' . $show_jsmessage . '\';}';
    }
    if ($param['handle']) {
        $valuesjs = $comma = $subjs = '';
        foreach ($values as $k => $v) {
            $v = daddslashes($v);
            if (is_array($v)) {
                $subcomma = '';
                foreach ($v as $subk => $subv) {
                    $subjs .= $subcomma . '\'' . $subk . '\':\'' . $subv . '\'';
                    $subcomma = ',';
                }
                $valuesjs .= $comma . '\'' . $k . '\':{' . $subjs . '}';
            } else {
                $valuesjs .= $comma . '\'' . $k . '\':\'' . $v . '\'';
            }
            $comma = ',';
        }
        $valuesjs = '{' . $valuesjs . '}';
        if ($url_forward) {
            $extra .= 'if(typeof succeedhandle_' . $handlekey . '==\'function\') {succeedhandle_' . $handlekey . '(\'' . $url_forward_js . '\', \'' . $show_jsmessage . '\', ' . $valuesjs . ');}';
        } else {
            $extra .= 'if(typeof errorhandle_' . $handlekey . '==\'function\') {errorhandle_' . $handlekey . '(\'' . $show_jsmessage . '\', ' . $valuesjs . ');}';
        }
    }
    if ($param['closetime'] !== null) {
        $param['closetime'] = $param['closetime'] === true ? $timedefault : $param['closetime'];
    }
    if ($param['locationtime'] !== null) {
        $param['locationtime'] = $param['locationtime'] === true ? $timedefault : $param['locationtime'];
    }
    if ($handlekey) {
        if ($param['showdialog']) {
            $modes = array('alert_error' => 'alert', 'alert_right' => 'right', 'alert_info' => 'notice');
            $extra .= 'hideWindow(\'' . $handlekey . '\');showDialog(\'' . $show_jsmessage . '\', \'' . $modes[$alerttype] . '\', null, ' . ($param['locationtime'] !== null ? 'function () { window.location.href =\'' . $url_forward_js . '\'; }' : 'null') . ', 0, null, null, null, null, ' . ($param['closetime'] ? $param['closetime'] : 'null') . ', ' . ($param['locationtime'] ? $param['locationtime'] : 'null') . ');';
            $param['closetime'] = null;
            $st = '';
            if ($param['showmsg']) {
                $show_message = '';
            }
        }
        if ($param['closetime'] !== null) {
            $extra .= 'setTimeout("hideWindow(\'' . $handlekey . '\')", ' . $param['closetime'] * 1000 . ');';
        }
    } else {
        $st = $param['locationtime'] !== null ? 'setTimeout("window.location.href =\'' . $url_forward_js . '\';", ' . $param['locationtime'] * 1000 . ');' : '';
    }
    if (!$extra && $param['timeout'] && !defined('IN_MOBILE')) {
        $extra .= 'setTimeout("window.location.href =\'' . $url_forward_js . '\';", ' . $refreshtime . ');';
    }
    $show_message .= $extra ? '<script type="text/javascript" reload="1">' . $extra . $st . '</script>' : '';
    $show_message .= $param['extrajs'] ? $param['extrajs'] : '';
    include template('common/showmessage');
    dexit();
}