Example #1
0
function fetch_event($eid, $exid, $admin = false)
{
    global $xoopsDB;
    $stc = $admin ? "" : "AND status=" . STAT_NORMAL;
    $fields = "e.eid, cdate, title, summary, body, optfield,\nIF(expersons IS NULL, persons, expersons) persons, edate opendate,\nIF(exdate,exdate,edate) edate, IF(x.reserved,x.reserved,o.reserved) reserved, \nclosetime, reservation, uid, status, style, counter, topicid, \nexid, exdate, strict, autoaccept, notify, optvars";
    $result = $xoopsDB->query("SELECT {$fields} FROM " . EGTBL . ' e LEFT JOIN ' . OPTBL . ' o ON e.eid=o.eid LEFT JOIN ' . EXTBL . " x ON e.eid=eidref AND exid={$exid}\n  WHERE e.eid={$eid} {$stc}");
    $data = $xoopsDB->fetchArray($result);
    if (!empty($data['optvars'])) {
        eguide_form_options(unserialize_vars($data['optvars']));
    }
    return $data;
}
Example #2
0
function get_form_attribute($defs, $labels = '', $prefix = "cc")
{
    $labs = unserialize_vars($labels);
    $num = 0;
    $result = array();
    $types = array('text', 'checkbox', 'radio', 'textarea', 'select', 'hidden', 'const', 'mail', 'file', 'date');
    foreach (cc_csv_parse($defs) as $opts) {
        if (empty($opts)) {
            continue;
        }
        if (preg_match('/^#/', $opts[0])) {
            $result[] = array('comment' => substr(join(',', $opts), 1));
            continue;
        }
        $name = array_shift($opts);
        if (preg_match('/=(.*)$/', $name, $d)) {
            // use alternative label
            $label = $d[1];
            $name = preg_replace('/=(.*)$/', '', $name);
        } else {
            $label = isset($labs[$name]) ? $labs[$name] : $name;
        }
        $type = 'text';
        $comment = '';
        $attr = array();
        if (count($opts) && in_array($opts[0], $types)) {
            $type = array_shift($opts);
        }
        if (preg_match('/\\*$/', $name)) {
            // syntax convention
            $attr['check'] = 'require';
            $name = preg_replace('/\\s*\\*$/', '', $name);
            if (defined('_MD_REQUIRE_MARK')) {
                $label = preg_replace('/\\s*\\*$/', _MD_REQUIRE_MARK, $label);
            }
        }
        while (isset($opts[0]) && (preg_match('/^(' . OPTION_NUM_ATTRS . ')=(\\d+)$/', $opts[0], $d) || preg_match('/^(' . OPTION_STR_ATTRS . ')=(.+)$/', $opts[0], $d))) {
            array_shift($opts);
            $attr[$d[1]] = $d[2];
        }
        $options = array();
        $defs = array();
        if (count($opts)) {
            while (count($opts) && !preg_match('/^\\s*#/', $opts[0])) {
                $v = array_shift($opts);
                $sv = preg_split('/=/', $v, 2);
                if (count($sv) > 1) {
                    $k = strip_tags($sv[0]);
                    $sk = preg_replace('/\\+$/', '', $k);
                    // real value
                    if ($k != $sk) {
                        $defs[] = $sk;
                    }
                    // defaults
                    $options[$sk] = $sv[1];
                } else {
                    $k = strip_tags($v);
                    $sk = preg_replace('/\\+$/', '', $k);
                    // real value
                    if ($k != $sk) {
                        $defs[] = $sk;
                    }
                    // defaults
                    $options[$sk] = preg_replace('/\\+$/', '', $v);
                }
            }
            if (count($opts)) {
                $opts[0] = preg_replace('/^\\s*#/', '', $opts[0]);
                $comment = join(',', $opts);
            }
        }
        if ($type == 'radio') {
            $defs = $defs ? $defs[0] : '';
        } elseif ($type != 'checkbox') {
            $defs = eval_user_value(join(',', $options));
        }
        if ($type == 'date') {
            if (empty($defs)) {
                $defs = formatTimestamp(time(), 'Y-m-d');
            }
        } else {
            // widget specific attrs
            static $wattr = array('textarea' => array('rows', 'cols'), 'file' => array('accept_type', 'accept_ext'));
            if (isset($wattr[$type])) {
                foreach ($wattr[$type] as $aname) {
                    $attr[$aname] = get_attr_value($attr, $aname);
                }
            } else {
                $attr['size'] = get_attr_value($attr, 'size');
            }
        }
        $fname = $prefix . ++$num;
        $result[$name] = array('name' => $name, 'label' => $label, 'field' => $fname, 'options' => $options, 'type' => $type, 'comment' => $comment, 'attr' => $attr, 'default' => $defs);
    }
    return $result;
}
Example #3
0
    class myFormDhtmlTextArea extends XoopsFormDhtmlTextArea
    {
        function _renderSmileys()
        {
        }
    }
    $summary = isset($data['summary']) ? $data['summary'] : '';
    $textarea = new myFormDhtmlTextArea('', 'summary', $summary, 10, 60);
    $nlab = eguide_form_options('label_persons');
    if ($nlab) {
        $nlab = sprintf(_MD_RESERV_LABEL_DESC, $nlab);
    }
    $edate = $data['edate'];
    $xoopsTpl->assign(array('input_edate' => datefield('edate', $edate), 'input_edatetime' => timefield('edate', $edate), 'edatetime' => formatTimestamp($edate, 'H:i'), 'input_expire' => $input_expire, 'input_category' => $input_category, 'input_extent' => $input_extent, 'input_status' => $input_status, 'extent_sets' => $extent_sets, 'label_desc' => $nlab, 'summary_textarea' => $textarea->render(), 'input_style' => select_list('style', $edit_style, $data['style']), 'edata' => $data));
    if ($data['optvars']) {
        $optvars = unserialize_vars($data['optvars']);
        $xoopsTpl->assign('optvars', $optvars);
        foreach (explode("\n", _EG_OPTDEFS) as $item) {
            list($fname) = explode("=", $item);
            unset($optvars[$fname]);
        }
        $others = "";
        foreach ($optvars as $k => $v) {
            $others .= "{$k}={$v}\n";
        }
        $xoopsTpl->assign('opt_others', $others);
    }
    $xoopsTpl->assign(array('input_edate' => datefield('edate', $edate), 'input_edatetime' => timefield('edate', $edate), 'edatetime' => formatTimestamp($edate, 'H:i'), 'input_expire' => $input_expire, 'input_category' => $input_category, 'input_extent' => $input_extent, 'input_status' => $input_status, 'extent_sets' => $extent_sets, 'label_desc' => $nlab, 'summary_textarea' => $textarea->render(), 'input_style' => select_list('style', $edit_style, $data['style'])));
}
$paths = array();
if ($eid) {
Example #4
0
function build_form($formid = 0)
{
    global $xoopsDB, $xoopsUser, $myts, $fields, $xoopsConfig, $xoopsModuleConfig, $xoopsTpl;
    include_once dirname(dirname(__FILE__)) . "/language/" . $xoopsConfig['language'] . '/main.php';
    if (isset($_POST['formid'])) {
        $data = array();
        $fields[] = 'priuid';
        $fields[] = 'cgroup';
        foreach ($fields as $name) {
            $data[$name] = $myts->stripSlashesGPC($_POST[$name]);
        }
        $data['optvars'] = post_optvars();
        $data['grpperm'] = $_POST['grpperm'];
        $formid = intval($_POST['formid']);
        // form preview
        get_attr_value($data['optvars']);
        // set default values
        $items = get_form_attribute($data['defs']);
        assign_form_widgets($items);
        if ($_POST['preview']) {
            echo "<h2>" . _PREVIEW . " : " . htmlspecialchars($data['title'], ENT_QUOTES) . "</h2>\n";
            echo "<div class='preview'>\n";
            $data['action'] = '';
            $data['check_script'] = "";
            $data['items'] =& $items;
            if (empty($xoopsTpl)) {
                $xoopsTpl = new XoopsTpl();
            }
            $out = $xoopsTpl->fetch('db:' . render_form($data, 'form'));
            echo preg_replace('/type=["\']submit["\']/', 'type="submit" disabled="disabled"', $out);
            echo "</div>\n<hr size='5'/>\n";
        }
    } elseif ($formid) {
        $res = $xoopsDB->query('SELECT * FROM ' . FORMS . " WHERE formid={$formid}");
        $data = $xoopsDB->fetchArray($res);
        $data['grpperm'] = explode('|', trim($data['grpperm'], '|'));
    } else {
        $data = array('title' => '', 'description' => '', 'defs' => '', 'store' => 1, 'custom' => 0, 'weight' => 0, 'active' => 1, 'priuid' => $xoopsUser->getVar('uid'), 'cgroup' => XOOPS_GROUP_ADMIN, 'optvars' => '', 'grpperm' => array(XOOPS_GROUP_USERS));
    }
    $form = new XoopsThemeForm($formid ? _AM_FORM_EDIT : _AM_FORM_NEW, 'myform', 'index.php');
    $form->addElement(new XoopsFormHidden('formid', $formid));
    $form->addElement(new XoopsFormText(_AM_FORM_TITLE, 'title', 35, 80, $data['title']), true);
    if (!empty($data['mtime'])) {
        $form->addElement(new XoopsFormLabel(_AM_FORM_MTIME, formatTimestamp($data['mtime'])));
    }
    $desc = new XoopsFormElementTray(_AM_FORM_DESCRIPTION, "<br/>");
    $description = $data['description'];
    $editor = get_attr_value(null, 'use_fckeditor');
    if ($editor) {
        $desc->addElement(new XoopsFormTextArea('', 'description', $description, 10, 60));
    } else {
        $desc->addElement(new XoopsFormDhtmlTextArea('', 'description', $description, 10, 60));
    }
    if (!$editor) {
        $button = new XoopsFormButton('', 'ins_tpl', _AM_INS_TEMPLATE);
        $button->setExtra("onClick=\"myform.description.value += defsToString();\"");
        $desc->addElement($button);
    }
    $error = check_form_tags($data['custom'], $data['defs'], $description);
    if ($error) {
        $desc->addElement(new XoopsFormLabel('', "<div style='color:red;'>{$error}</div>"));
    }
    $form->addElement($desc);
    $custom = new XoopsFormSelect(_AM_FORM_CUSTOM, 'custom', $data['custom']);
    $custom->setExtra(' onChange="myform.ins_tpl.disabled = (this.value==0||this.value==4);"');
    $custom_type = unserialize_vars(_AM_CUSTOM_DESCRIPTION);
    if ($editor) {
        unset($custom_type[0]);
    }
    $custom->addOptionArray($custom_type);
    $form->addElement($custom);
    $grpperm = new XoopsFormSelectGroup(_AM_FORM_ACCEPT_GROUPS, 'grpperm', true, $data['grpperm'], 4, true);
    $grpperm->setDescription(_AM_FORM_ACCEPT_GROUPS_DESC);
    $form->addElement($grpperm);
    $defs_tray = new XoopsFormElementTray(_AM_FORM_DEFS);
    $defs_tray->addElement(new XoopsFormTextArea('', 'defs', $data['defs'], 10, 60));
    $defs_tray->addElement(new XoopsFormLabel('', '<div id="itemhelper" style="display:none; white-space:nowrap;">
  ' . _AM_FORM_LAB . ' <input name="xelab" size="10">
  <input type="checkbox" name="xereq" title="' . _AM_FORM_REQ . '">
  <select name="xetype">
    <option value="text">text</option>
    <option value="checkbox">checkbox</option>
    <option value="radio">radio</option>
    <option value="textarea">textarea</option>
    <option value="select">select</option>
    <option value="const">const</option>
    <option value="hidden">hidden</option>
    <option value="mail">mail</option>
    <option value="file">file</option>
  </select>
  <input name="xeopt" size="30" />
  <button onClick="return addFieldItem();">' . _AM_FORM_ADD . '</button>
</div>'));
    $defs_tray->setDescription(_AM_FORM_DEFS_DESC);
    $form->addElement($defs_tray);
    $member_handler =& xoops_gethandler('member');
    $groups = $member_handler->getGroupList(new Criteria('groupid', XOOPS_GROUP_ANONYMOUS, '!='));
    $groups = $member_handler->getGroupList(new Criteria('groupid', XOOPS_GROUP_ANONYMOUS, '!='));
    $options = array();
    foreach ($groups as $k => $v) {
        $options[-$k] = sprintf(_CC_FORM_PRIM_GROUP, $v);
    }
    $options[0] = _AM_FORM_PRIM_NONE;
    $priuid = new MyFormSelect(_AM_FORM_PRIM_CONTACT, 'priuid', $data['priuid']);
    $priuid->addOptionArray($options);
    $priuid->addOptionUsers($data['cgroup']);
    $priuid->setDescription(_AM_FORM_PRIM_DESC);
    $form->addElement($priuid);
    $cgroup = new XoopsFormSelect('', 'cgroup', $data['cgroup']);
    $cgroup->setExtra(' onChange="setSelectUID(\'priuid\', 0);"');
    $cgroup->addOption(0, _AM_FORM_CGROUP_NONE);
    $groups = $member_handler->getGroupList(new Criteria('groupid', XOOPS_GROUP_ANONYMOUS, '!='));
    $cgroup->addOptionArray($groups);
    $cgroup_tray = new XoopsFormElementTray(_AM_FORM_CONTACT_GROUP);
    $cgroup_tray->addElement($cgroup);
    $cgroup_tray->addElement(new XoopsFormLabel('', '<noscript><input type="submit" name="chggrp" id="chggrp" value="' . _AM_CHANGE . '"/></noscript>'));
    $form->addElement($cgroup_tray);
    $store = new XoopsFormSelect(_AM_FORM_STORE, 'store', $data['store']);
    $store->addOptionArray(unserialize_vars(_CC_STORE_MODE, 1));
    $form->addElement($store);
    $form->addElement(new XoopsFormRadioYN(_AM_FORM_ACTIVE, 'active', $data['active']));
    $form->addElement(new XoopsFormText(_AM_FORM_WEIGHT, 'weight', 2, 8, $data['weight']));
    $items = get_form_attribute(_CC_OPTDEFS, _AM_OPTVARS_LABEL, 'optvar');
    $vars = unserialize_vars($data['optvars']);
    $others = "";
    foreach ($items as $k => $item) {
        $name = $item['name'];
        if (isset($vars[$name])) {
            $items[$k]['default'] = $vars[$name];
            unset($vars[$name]);
        }
    }
    $val = "";
    foreach ($vars as $i => $v) {
        $val .= "{$i}={$v}\n";
    }
    $items[$k]['default'] = $val;
    assign_form_widgets($items);
    $varform = "";
    foreach ($items as $item) {
        $br = $item['type'] == "textarea" ? "<br/>" : "";
        $class = $item['default'] ? ' class="changed"' : '';
        $varform .= "<div><span{$class}>" . $item['label'] . "</span>: {$br}" . $item['input'] . "</div>";
    }
    $ck = empty($data['optvars']) ? "" : " checked='checked'";
    $optvars = new XoopsFormLabel(_AM_FORM_OPTIONS, "<script type='text/javascript'>document.write(\"<input type='checkbox' id='optshow' onChange='toggle(this);'{$ck}/> " . _AM_OPTVARS_SHOW . "\");</script><div id='optvars'" . ($ck ? '' : ' style="display:none;"') . ">{$varform}</div>");
    $form->addElement($optvars);
    $submit = new XoopsFormElementTray('');
    $submit->addElement(new XoopsFormButton('', 'formdefs', _SUBMIT, 'submit'));
    $submit->addElement(new XoopsFormButton('', 'preview', _PREVIEW, 'submit'));
    $form->addElement($submit);
    echo "<a name='form'></a><style>.changed {font-weight: bold;}</style>";
    $form->display();
    if ($editor) {
        $base = XOOPS_URL . "/common/fckeditor";
        global $xoopsTpl;
        echo "<script type='text/javascript' src='{$base}/fckeditor.js'></script>\n";
        $editor = "var ccFCKeditor = new FCKeditor('description', '100%', '350', '{$editor}');\nccFCKeditor.BasePath = '{$base}/';\nccFCKeditor.ReplaceTextarea();";
    }
    echo '<script language="JavaScript">' . $priuid->renderSupportJS(false) . '
// display only JavaScript enable
xoopsGetElementById("itemhelper").style.display = "block";
' . $editor . '
function toggle(a) {
    xoopsGetElementById("optvars").style.display = a.checked?"block":"none";
}
togle(xoopsGetElementById("optshow"));

function addFieldItem() {
    var myform = window.document.myform;
    var item=myform.xelab.value;
    if (item == "") {
	alert("' . _AM_FORM_LABREQ . '");
	myform.xelab.focus();
	return false;
    }
    if (myform.xereq.checked) item += "*";
    var ty = myform.xetype.value;
    var ov = myform.xeopt.value;
    item += ","+ty;
    if (ty != "text" && ty != "textarea" && ty != "file" && ty != "mail" && ov == "") {
	alert(ty+": ' . _AM_FORM_OPTREQ . '");
	myform.xeopt.focus();
	return false;
    }
    if (ov != "") item += ","+ov;
    opts = myform.defs;
    if (opts.value!="" && !opts.value.match(/[\\n\\r]$/)) item = "\\n"+item;
    opts.value += item;
    myform.xelab.value = ""; // clear old value
    myform.xeopt.value = "";
    return false; // always return false
}
function defsToString() {
    value = window.document.myform.defs.value;
    ret = "";
    lines = value.split("\\n");
    conf = "' . _MD_CONF_LABEL . '";
    for (i in lines) {
       lab = lines[i].replace(/,.*$/, "");
       if (lab.match(/^\\s*#/)) {
           ret += "[desc]<div>"+lines[i].replace(/^\\s*#/, "")+"</div>[/desc]\\n";
       } else if (lab != "") {
           ret += "<div>"+lab+": {"+lab.replace(/\\*?$/,"")+"}</div>\\n";
           if (lines[i].match(/^[^,]+,\\s*mail/i)) {
              lab = conf.replace(/%s/, lab);
              ret += "[desc]<div>"+lab+": {"+lab.replace(/\\*?$/,"")+"}</div>[/desc]\\n";
           }
       }
    }
    return "<form {FORM_ATTR}>\\n"+ret+
      "<p>{SUBMIT} {BACK}</p>\\n</form>\\n{CHECK_SCRIPT}";
}

fvalue = document.myform.custom.value;
document.myform.ins_tpl.disabled = (fvalue==0 || fvalue==4);
</script>
';
}
Example #5
0
<?php

// Export event reservations in Excel/XML format
// $Id: export.php,v 1.6 2010/03/19 03:50:16 nobu Exp $
include 'header.php';
include_once XOOPS_ROOT_PATH . '/class/template.php';
$_GET['op'] = '';
// only for poster
include 'perm.php';
$eid = intval($_GET['eid']);
$result = $xoopsDB->query("SELECT optfield,optvars FROM " . OPTBL . " WHERE eid={$eid}");
list($optfield, $optvars) = $xoopsDB->fetchRow($result);
eguide_form_options(unserialize_vars($optvars));
$fields = "e.eid, cdate, title, closetime,\nIF(expersons IS NULL,persons, expersons) persons, expersons,\nIF(exdate,exdate,edate) edate, \nIF(x.reserved,x.reserved,o.reserved) reserved,\nreservation, uid, status, style, counter, catid, catname, catimg, exid, exdate";
$now = time();
$cond = 'status=' . STAT_NORMAL;
//$cond .= " AND IF(exdate,exdate,edate)>$now";
$cond .= " AND e.eid={$eid}";
if (isset($_GET['sub'])) {
    $cond .= " AND x.exid=" . intval($_GET['sub']);
}
$result = $xoopsDB->query('SELECT ' . $fields . ' FROM ' . EGTBL . ' e LEFT JOIN ' . OPTBL . ' o ON e.eid=o.eid LEFT JOIN ' . CATBL . ' ON topicid=catid LEFT JOIN ' . EXTBL . " x ON e.eid=eidref WHERE {$cond} ORDER BY edate");
if (isset($_GET['line'])) {
    $max_rows = intval($_GET['line']);
    $max_sect = max(1, intval(40 / $max_rows));
} elseif ($xoopsDB->getRowsNum($result) == 1) {
    // only one page
    $max_sect = 1;
    $max_rows = eguide_form_options('excel_max_rows', 0);
    // max line output
} else {
Example #6
0
    $result = $xoopsDB->query("SELECT exdate FROM " . EXTBL . " WHERE exid={$exid}");
    list($edate) = $xoopsDB->fetchRow($result);
} else {
    $extents = get_extents($eid, true);
}
$title = eventdate($edate) . " " . htmlspecialchars($head['title']);
$poster = new XoopsUser($head['uid']);
if (empty($op)) {
    $op = 'view';
}
$print = $op == 'print';
// make optional field and countable list.
if ($eid) {
    $result = $xoopsDB->query("SELECT optfield,optvars FROM " . OPTBL . " WHERE eid={$eid}");
    $opts = $xoopsDB->fetchArray($result);
    eguide_form_options(unserialize_vars($opts['optvars']));
    $item = array();
    foreach (explode("\n", preg_replace('/\\r/', '', $opts['optfield'])) as $ln) {
        // comment line
        if (preg_match('/^\\s*#/', $ln) || preg_match('/^\\s*$/', $ln)) {
            continue;
        }
        $fld = explode(",", $ln);
        $lab = preg_replace('/^!\\s*/', '', preg_replace('/[\\*#]$/', "", array_shift($fld)));
        $type = isset($fld[0]) ? strtolower($fld[0]) : false;
        if ($type == "checkbox" || $type == "radio" || $type == "select") {
            $mc[$lab] = $type;
            // it's countable
        }
        $item[] = $lab;
    }