예제 #1
0
function threadsort_optiondata($pid, $sortid, $sortoptionarray, $templatearray)
{
    global $_G;
    $_G['forum_optiondata'] = $_G['forum_typetemplate'] = $_G['forum_option'] = $_G['forum_memberinfo'] = $searchcontent = array();
    $id = $_G['tid'];
    if ($id) {
        $query = DB::query("SELECT optionid, value, expiration FROM " . DB::table('forum_typeoptionvar') . " WHERE tid='{$id}'");
        while ($option = DB::fetch($query)) {
            $_G['forum_optiondata'][$option['optionid']] = $option['value'];
            $_G['forum_optiondata']['expiration'] = $option['expiration'];
        }
    }
    $_G['forum_optiondata']['expiration'] = $_G['forum_optiondata']['expiration'] ? dgmdate($_G['forum_optiondata']['expiration'], 'd') : '';
    foreach ($sortoptionarray as $optionid => $option) {
        if ($id) {
            $_G['forum_optionlist'][$optionid]['unchangeable'] = $sortoptionarray[$optionid]['unchangeable'] ? 'readonly' : '';
            if ($sortoptionarray[$optionid]['type'] == 'radio') {
                $_G['forum_optionlist'][$optionid]['value'] = array($_G['forum_optiondata'][$optionid] => 'checked="checked"');
            } elseif ($sortoptionarray[$optionid]['type'] == 'select') {
                $_G['forum_optionlist'][$optionid]['value'] = array($_G['forum_optiondata'][$optionid] => 'selected="selected"');
            } elseif ($sortoptionarray[$optionid]['type'] == 'checkbox') {
                foreach (explode("\t", $_G['forum_optiondata'][$optionid]) as $value) {
                    $_G['forum_optionlist'][$optionid]['value'][$value] = array($value => 'checked="checked"');
                }
            } elseif ($sortoptionarray[$optionid]['type'] == 'image') {
                $_G['forum_optionlist'][$optionid]['value'] = unserialize($_G['forum_optiondata'][$optionid]);
            } else {
                $_G['forum_optionlist'][$optionid]['value'] = $_G['forum_optiondata'][$optionid];
            }
            if (!isset($_G['forum_optiondata'][$optionid])) {
                DB::query("INSERT INTO " . DB::table('forum_typeoptionvar') . " (sortid, tid, fid, optionid)\r\n\t\t\t\tVALUES ('{$sortid}', '{$id}', '{$_G['fid']}', '{$optionid}')");
            }
        }
        if ($templatearray['post']) {
            $_G['forum_option'][$option['identifier']]['title'] = $option['title'];
            $_G['forum_option'][$option['identifier']]['unit'] = $option['unit'];
            $_G['forum_option'][$option['identifier']]['description'] = $option['description'];
            $_G['forum_option'][$option['identifier']]['required'] = $option['required'] ? '*' : '';
            $_G['forum_option'][$option['identifier']]['tips'] = '<span id="check' . $option['identifier'] . '"></span>';
            $showoption = gettypetemplate($option, $_G['forum_optionlist'][$optionid], $optionid);
            $_G['forum_option'][$option['identifier']]['value'] = $showoption[$option['identifier']]['value'];
            $searchcontent['title'][] = '/{(' . $option['identifier'] . ')}/e';
            $searchcontent['value'][] = '/\\[(' . $option['identifier'] . ')value\\]/e';
            $searchcontent['unit'][] = '/\\[(' . $option['identifier'] . ')unit\\]/e';
            $searchcontent['description'][] = '/\\[(' . $option['identifier'] . ')description\\]/e';
            $searchcontent['required'][] = '/\\[(' . $option['identifier'] . ')required\\]/e';
            $searchcontent['tips'][] = '/\\[(' . $option['identifier'] . ')tips\\]/e';
        }
    }
    if ($templatearray['post']) {
        $typetemplate = $templatearray['post'];
        foreach ($searchcontent as $key => $content) {
            $typetemplate = preg_replace($searchcontent[$key], "showoption('\\1', '{$key}')", stripslashes($typetemplate));
        }
        $_G['forum_typetemplate'] = $typetemplate;
    }
}
function threadsort_optiondata($pid, $sortid, $sortoptionarray, $templatearray)
{
    global $_G;
    $_G['forum_optiondata'] = $_G['forum_typetemplate'] = $_G['forum_option'] = $_G['forum_memberinfo'] = $searchcontent = array();
    $id = $_G['tid'];
    if ($id) {
        foreach (C::t('forum_typeoptionvar')->fetch_all_by_tid_optionid($id) as $option) {
            $_G['forum_optiondata'][$option['optionid']] = $option['value'];
            $_G['forum_optiondata']['expiration'] = $option['expiration'];
        }
    }
    $_G['forum_optiondata']['expiration'] = $_G['forum_optiondata']['expiration'] ? dgmdate($_G['forum_optiondata']['expiration'], 'd') : '';
    foreach ($sortoptionarray as $optionid => $option) {
        if ($id) {
            $_G['forum_optionlist'][$optionid]['unchangeable'] = $sortoptionarray[$optionid]['unchangeable'] ? 'disabled' : '';
            if ($sortoptionarray[$optionid]['type'] == 'radio') {
                $_G['forum_optionlist'][$optionid]['value'] = array($_G['forum_optiondata'][$optionid] => 'checked="checked"');
            } elseif ($sortoptionarray[$optionid]['type'] == 'select') {
                $_G['forum_optionlist'][$optionid]['value'] = $_G['forum_optiondata'][$optionid] ? array($_G['forum_optiondata'][$optionid] => 'selected="selected"') : '';
            } elseif ($sortoptionarray[$optionid]['type'] == 'checkbox') {
                foreach (explode("\t", $_G['forum_optiondata'][$optionid]) as $value) {
                    $_G['forum_optionlist'][$optionid]['value'][$value] = array($value => 'checked="checked"');
                }
            } elseif ($sortoptionarray[$optionid]['type'] == 'image') {
                $_G['forum_optionlist'][$optionid]['value'] = dunserialize($_G['forum_optiondata'][$optionid]);
            } elseif ($sortoptionarray[$optionid]['type'] == 'face') {
                $_G['forum_optionlist'][$optionid]['value'] = dunserialize($_G['forum_optiondata'][$optionid]);
            } else {
                $_G['forum_optionlist'][$optionid]['value'] = $_G['forum_optiondata'][$optionid];
            }
            if (!isset($_G['forum_optiondata'][$optionid])) {
                C::t('forum_typeoptionvar')->insert(array('sortid' => $sortid, 'tid' => $id, 'fid' => $_G['fid'], 'optionid' => $optionid));
            }
        }
        if ($templatearray['post']) {
            $_G['forum_option'][$option['identifier']]['title'] = $option['title'];
            $_G['forum_option'][$option['identifier']]['unit'] = $option['unit'];
            $_G['forum_option'][$option['identifier']]['description'] = $option['description'];
            $_G['forum_option'][$option['identifier']]['required'] = $option['required'] ? '*' : '';
            $_G['forum_option'][$option['identifier']]['tips'] = '<span id="check' . $option['identifier'] . '"></span>';
            $showoption = gettypetemplate($option, $_G['forum_optionlist'][$optionid], $optionid);
            $_G['forum_option'][$option['identifier']]['value'] = $showoption[$option['identifier']]['value'];
            $searchcontent['title'][] = '/{(' . $option['identifier'] . ')}/e';
            $searchcontent['value'][] = '/\\[(' . $option['identifier'] . ')value\\]/e';
            $searchcontent['value'][] = '/{(' . $option['identifier'] . ')_value}/e';
            $searchcontent['unit'][] = '/\\[(' . $option['identifier'] . ')unit\\]/e';
            $searchcontent['unit'][] = '/{(' . $option['identifier'] . ')_unit}/e';
            $searchcontent['description'][] = '/\\[(' . $option['identifier'] . ')description\\]/e';
            $searchcontent['description'][] = '/{(' . $option['identifier'] . ')_description}/e';
            $searchcontent['required'][] = '/\\[(' . $option['identifier'] . ')required\\]/e';
            $searchcontent['required'][] = '/{(' . $option['identifier'] . ')_required}/e';
            $searchcontent['tips'][] = '/\\[(' . $option['identifier'] . ')tips\\]/e';
            $searchcontent['tips'][] = '/{(' . $option['identifier'] . ')_tips}/e';
        }
    }
    if ($templatearray['post']) {
        $typetemplate = $templatearray['post'];
        foreach ($searchcontent as $key => $content) {
            $typetemplate = preg_replace($searchcontent[$key], "showoption('\\1', '{$key}')", stripslashes($typetemplate));
        }
        $_G['forum_typetemplate'] = $typetemplate;
    }
}