Example #1
0
function edit()
{
    global $hMime, $start, $limit, $oAdminButton;
    if (!isset($_REQUEST['id'])) {
        redirect_header(XHELP_ADMIN_URL . "/mimetypes.php", 3, _AM_XHELP_MESSAGE_NO_ID);
    } else {
        $mime_id = intval($_REQUEST['id']);
    }
    $mimetype =& $hMime->get($mime_id);
    // Retrieve mimetype object
    if (!isset($_POST['edit_mime'])) {
        $session = Session::singleton();
        $mime_type = $session->get("xhelp_editMime_{$mime_id}");
        $mime_errors = $session->get("xhelp_editMimeErr_{$mime_id}");
        // Display header
        xoops_cp_header();
        echo $oAdminButton->renderButtons('mimetypes');
        //Display any form errors
        if (!$mime_errors === false) {
            xhelpRenderErrors($mime_errors, xhelpMakeURI(XHELP_ADMIN_URL . '/mimetypes.php', array('op' => 'clearEditSession', 'id' => $mime_id)));
        }
        if ($mime_type === false) {
            $mime_ext = $mimetype->getVar('mime_ext');
            $mime_name = $mimetype->getVar('mime_name', 'e');
            $mime_types = $mimetype->getVar('mime_types', 'e');
            $mime_admin = $mimetype->getVar('mime_admin');
            $mime_user = $mimetype->getVar('mime_user');
        } else {
            $mime_ext = $mime_type['mime_ext'];
            $mime_name = $mime_type['mime_name'];
            $mime_types = $mime_type['mime_types'];
            $mime_admin = $mime_type['mime_admin'];
            $mime_user = $mime_type['mime_user'];
        }
        // Display edit form
        echo "<form action='mimetypes.php?op=edit&amp;id=" . $mime_id . "' method='post'>";
        echo "<input type='hidden' name='limit' value='" . $limit . "' />";
        echo "<input type='hidden' name='start' value='" . $start . "' />";
        echo "<table width='100%' cellspacing='1' class='outer'>";
        echo "<tr><th colspan='2'>" . _AM_XHELP_MIME_MODIFYF . "</th></tr>";
        echo "<tr valign='top'>\r\n                  <td class='head'>" . _AM_XHELP_MIME_EXTF . "</td>\r\n                  <td class='even'><input type='text' name='mime_ext' id='mime_ext' value='{$mime_ext}' size='5' /></td>\r\n              </tr>";
        echo "<tr valign='top'>\r\n                  <td class='head'>" . _AM_XHELP_MIME_NAMEF . "</td>\r\n                  <td class='even'><input type='text' name='mime_name' id='mime_name' value='{$mime_name}' /></td>\r\n              </tr>";
        echo "<tr valign='top'>\r\n                  <td class='head'>" . _AM_XHELP_MIME_TYPEF . "</td>\r\n                  <td class='even'><textarea name='mime_types' id='mime_types' cols='60' rows='5'>{$mime_types}</textarea></td>\r\n              </tr>";
        echo "<tr valign='top'>\r\n                  <td class='head'>" . _AM_XHELP_MIME_ADMINF . "</td>\r\n                  <td class='even'>\r\n                      <input type='radio' name='mime_admin' value='1' " . ($mime_admin == 1 ? "checked='checked'" : '') . " />" . _XHELP_TEXT_YES . "\r\n                      <input type='radio' name='mime_admin' value='0' " . ($mime_admin == 0 ? "checked='checked'" : '') . " />" . _XHELP_TEXT_NO . "\r\n                  </td>\r\n              </tr>";
        echo "<tr valign='top'>\r\n                  <td class='head'>" . _AM_XHELP_MIME_USERF . "</td>\r\n                  <td class='even'>\r\n                      <input type='radio' name='mime_user' value='1' " . ($mime_user == 1 ? "checked='checked'" : '') . " />" . _XHELP_TEXT_YES . "\r\n                      <input type='radio' name='mime_user' value='0' " . ($mime_user == 0 ? "checked='checked'" : '') . " />" . _XHELP_TEXT_NO . "\r\n                  </td>\r\n              </tr>";
        echo "<tr valign='top'>\r\n                  <td class='head'></td>\r\n                  <td class='even'>\r\n                      <input type='submit' name='edit_mime' id='edit_mime' value='" . _AM_XHELP_BUTTON_UPDATE . "' class='formButton' />\r\n                      <input type='button' name='cancel' value='" . _AM_XHELP_BUTTON_CANCEL . "' onclick='history.go(-1)' class='formButton' />\r\n                  </td>\r\n              </tr>";
        echo "</table></form>";
        // end of edit form
        xhelpAdminFooter();
        xoops_cp_footer();
    } else {
        $mime_admin = 0;
        $mime_user = 0;
        if (isset($_POST['mime_admin']) && $_POST['mime_admin'] == 1) {
            $mime_admin = 1;
        }
        if (isset($_POST['mime_user']) && $_POST['mime_user'] == 1) {
            $mime_user = 1;
        }
        //Validate Mimetype entry
        if (strlen(trim($_POST['mime_ext'])) == 0) {
            $has_errors = true;
            $error['mime_ext'][] = _AM_XHELP_VALID_ERR_MIME_EXT;
        }
        if (strlen(trim($_POST['mime_name'])) == 0) {
            $has_errors = true;
            $error['mime_name'][] = _AM_XHELP_VALID_ERR_MIME_NAME;
        }
        if (strlen(trim($_POST['mime_types'])) == 0) {
            $has_errors = true;
            $error['mime_types'][] = _AM_XHELP_VALID_ERR_MIME_TYPES;
        }
        if ($has_errors) {
            $session = Session::singleton();
            $mime = array();
            $mime['mime_ext'] = $_POST['mime_ext'];
            $mime['mime_name'] = $_POST['mime_name'];
            $mime['mime_types'] = $_POST['mime_types'];
            $mime['mime_admin'] = $mime_admin;
            $mime['mime_user'] = $mime_user;
            $session->set('xhelp_editMime_' . $mime_id, $mime);
            $session->set('xhelp_editMimeErr_' . $mime_id, $error);
            header('Location: ' . xhelpMakeURI(XHELP_ADMIN_URL . '/mimetypes.php', array('op' => 'edit', 'id' => $mime_id), false));
        }
        $mimetype->setVar('mime_ext', $_POST['mime_ext']);
        $mimetype->setVar('mime_name', $_POST['mime_name']);
        $mimetype->setVar('mime_types', $_POST['mime_types']);
        $mimetype->setVar('mime_admin', $mime_admin);
        $mimetype->setVar('mime_user', $mime_user);
        if (!$hMime->insert($mimetype, true)) {
            redirect_header(XHELP_ADMIN_URL . "/mimetypes.php?op=edit&id={$mime_id}", 3, _AM_XHELP_MESSAGE_EDIT_MIME_ERROR);
        } else {
            _clearEditSessionVars($mime_id);
            header("Location: " . XHELP_ADMIN_URL . "/mimetypes.php?op=manage&limit={$limit}&start={$start}");
        }
    }
}
Example #2
0
function manageDepartments()
{
    global $xoopsModule, $oAdminButton, $aSortBy, $aOrderBy, $aLimitBy, $order, $limit, $start, $sort, $dept_search;
    $module_id = $xoopsModule->getVar('mid');
    $hGroups =& xoops_gethandler('group');
    $hGroupPerm =& xoops_gethandler('groupperm');
    if (isset($_POST['addDept'])) {
        $hasErrors = false;
        $errors = array();
        $groups = isset($_POST['groups']) ? $_POST['groups'] : array();
        $hDepartments =& xhelpGetHandler('department');
        //Department Name supplied?
        if (trim($_POST['newDept']) == '') {
            $hasErrors = true;
            $errors['newDept'][] = _AM_XHELP_MESSAGE_NO_DEPT;
        } else {
            //Department Name unique?
            $crit = new Criteria('department', $_POST['newDept']);
            if ($existingDepts = $hDepartments->getCount($crit)) {
                $hasErrors = true;
                $errors['newDept'][] = _XHELP_MESSAGE_DEPT_EXISTS;
            }
        }
        if ($hasErrors) {
            $session =& Session::singleton();
            //Store existing dept info in session, reload addition page
            $aDept = array();
            $aDept['newDept'] = $_POST['newDept'];
            $aDept['groups'] = $groups;
            $session->set('xhelp_addDepartment', $aDept);
            $session->set('xhelp_addDepartmentErrors', $errors);
            header('Location: ' . xhelpMakeURI(XHELP_ADMIN_URL . '/department.php', array('op' => 'manageDepartments'), false));
            exit;
        }
        $department =& $hDepartments->create();
        $department->setVar('department', $_POST['newDept']);
        if ($hDepartments->insert($department)) {
            $deptID = $department->getVar('id');
            foreach ($groups as $group) {
                // Add new group permissions
                $hGroupPerm->addRight(_XHELP_GROUP_PERM_DEPT, $deptID, $group, $module_id);
            }
            // Set as default department?
            if (isset($_POST['defaultDept']) && $_POST['defaultDept'] == 1) {
                xhelpSetMeta("default_department", $deptID);
            }
            $hStaff =& xhelpGetHandler('staff');
            $allDeptStaff =& $hStaff->getByAllDepts();
            if (count($allDeptStaff) > 0) {
                $hMembership =& xhelpGetHandler('membership');
                if ($hMembership->addStaffToDept($allDeptStaff, $department->getVar('id'))) {
                    $message = _XHELP_MESSAGE_ADD_DEPT;
                } else {
                    $message = _AM_XHELP_MESSAGE_STAFF_UPDATE_ERROR;
                }
            } else {
                $message = _XHELP_MESSAGE_ADD_DEPT;
            }
            // Add configoption for new department
            $hConfig =& xoops_gethandler('config');
            $hConfigOption =& xoops_gethandler('configoption');
            $crit = new Criteria('conf_name', 'xhelp_defaultDept');
            $config =& $hConfig->getConfigs($crit);
            if (count($config) > 0) {
                $newOption =& $hConfigOption->create();
                $newOption->setVar('confop_name', $department->getVar('department'));
                $newOption->setVar('confop_value', $department->getVar('id'));
                $newOption->setVar('conf_id', $config[0]->getVar('conf_id'));
                if (!$hConfigOption->insert($newOption)) {
                    redirect_header(XHELP_ADMIN_URL . "/department.php?op=manageDepartments", 3, _AM_XHELP_MSG_ADD_CONFIG_ERR);
                }
            }
            _clearAddSessionVars();
            header("Location: " . XHELP_ADMIN_URL . "/department.php?op=manageDepartments");
        } else {
            $message = _XHELP_MESSAGE_ADD_DEPT_ERROR . $department->getHtmlErrors();
        }
        $deptID = $department->getVar('id');
        /* Not sure if this is needed. Already exists in if block above (ej)
           foreach($groups as $group){
           $hGroupPerm->addRight(_XHELP_GROUP_PERM_DEPT, $deptID, $group, $module_id);
           }
           */
        redirect_header(XHELP_ADMIN_URL . '/department.php?op=manageDepartments', 3, $message);
    } else {
        $hDepartments =& xhelpGetHandler('department');
        if ($dept_search == false) {
            $crit = new Criteria('', '');
        } else {
            $crit = new Criteria('department', "%{$dept_search}%", 'LIKE');
        }
        $crit->setOrder($order);
        $crit->setSort($sort);
        $crit->setLimit($limit);
        $crit->setStart($start);
        $total = $hDepartments->getCount($crit);
        $departmentInfo =& $hDepartments->getObjects($crit);
        $nav = new XoopsPageNav($total, $limit, $start, 'start', "op=manageDepartments&amp;limit={$limit}");
        // Get list of all groups
        $crit = new Criteria('', '');
        $crit->setSort('name');
        $crit->setOrder('ASC');
        $groups =& $hGroups->getObjects($crit, true);
        $aGroups = array();
        foreach ($groups as $group_id => $group) {
            $aGroups[$group_id] = $group->getVar('name');
        }
        asort($aGroups);
        // Set groups in alphabetical order
        xoops_cp_header();
        echo $oAdminButton->renderButtons('manDept');
        $session =& Session::singleton();
        $sess_dept = $session->get('xhelp_addDepartment');
        $sess_errors = $session->get('xhelp_addDepartmentErrors');
        //Display any form errors
        if (!$sess_errors === false) {
            xhelpRenderErrors($sess_errors, xhelpMakeURI(XHELP_ADMIN_URL . '/department.php', array('op' => 'clearAddSession'), false));
        }
        if (!$sess_dept === false) {
            $fld_newDept = $sess_dept['newDept'];
            $fld_groups = $sess_dept['groups'];
        } else {
            $fld_newDept = '';
            $fld_groups = array();
        }
        echo "<form method='post' action='" . XHELP_ADMIN_URL . "/department.php?op=manageDepartments'>";
        echo "<table width='100%' cellspacing='1' class='outer'>\r\n              <tr><th colspan='2'><label for='newDept'>" . _AM_XHELP_LINK_ADD_DEPT . " </label></th></tr>";
        echo "<tr><td class='head' width='20%' valign='top'>" . _AM_XHELP_TEXT_NAME . "</td><td class='even'>";
        echo "<input type='text' id='newDept' name='newDept' class='formButton' value='{$fld_newDept}' /></td></tr>";
        echo "<tr><td class='head' width='20%' valign='top'>" . _AM_XHELP_TEXT_EDIT_DEPT_PERMS . "</td><td class='even'>";
        echo "<select name='groups[]' multiple='multiple'>";
        foreach ($aGroups as $group_id => $group) {
            if (in_array($group_id, $fld_groups, true)) {
                echo "<option value='{$group_id}' selected='selected'>{$group}</option>";
            } else {
                echo "<option value='{$group_id}'>{$group}</option>";
            }
        }
        echo "</select></td></tr>";
        echo "<tr><td class='head' width='20%' valign='top'>" . _AM_XHELP_TEXT_DEFAULT_DEPT . "?</td>\r\n                  <td class='even'><input type='checkbox' name='defaultDept' id='defaultDept' value='1' /></td></tr>";
        echo "<tr><td class='foot' colspan='2'><input type='submit' name='addDept' value='" . _AM_XHELP_BUTTON_SUBMIT . "' class='formButton' /></td></tr>";
        echo "</table><br />";
        echo "</form>";
        if ($total > 0) {
            // Make sure there are departments
            echo "<form action='" . XHELP_ADMIN_URL . "/department.php?op=manageDepartments' style='margin:0; padding:0;' method='post'>";
            echo "<table width='100%' cellspacing='1' class='outer'>";
            echo "<tr><td align='right'>" . _AM_XHELP_BUTTON_SEARCH . "\r\n                          <input type='text' name='dept_search' value='{$dept_search}'/>\r\n                        &nbsp;&nbsp;&nbsp;\r\n                        " . _AM_XHELP_TEXT_SORT_BY . "\r\n                          <select name='sort'>";
            foreach ($aSortBy as $value => $text) {
                $sort == $value ? $selected = "selected='selected'" : ($selected = '');
                echo "<option value='{$value}' {$selected}>{$text}</option>";
            }
            echo "</select>\r\n                        &nbsp;&nbsp;&nbsp;\r\n                          " . _AM_XHELP_TEXT_ORDER_BY . "\r\n                          <select name='order'>";
            foreach ($aOrderBy as $value => $text) {
                $order == $value ? $selected = "selected='selected'" : ($selected = '');
                echo "<option value='{$value}' {$selected}>{$text}</option>";
            }
            echo "</select>\r\n                          &nbsp;&nbsp;&nbsp;\r\n                          " . _AM_XHELP_TEXT_NUMBER_PER_PAGE . "\r\n                          <select name='limit'>";
            foreach ($aLimitBy as $value => $text) {
                $limit == $value ? $selected = "selected='selected'" : ($selected = '');
                echo "<option value='{$value}' {$selected}>{$text}</option>";
            }
            echo "</select>\r\n                          <input type='submit' name='dept_sort' id='dept_sort' value='" . _AM_XHELP_BUTTON_SUBMIT . "' />\r\n                      </td>\r\n                  </tr>";
            echo "</table></form>";
            echo "<table width='100%' cellspacing='1' class='outer'>\r\n                  <tr><th colspan='4'>" . _AM_XHELP_EXISTING_DEPARTMENTS . "</th></tr>\r\n                  <tr><td class='head'>" . _AM_XHELP_TEXT_ID . "</td><td class='head'>" . _AM_XHELP_TEXT_DEPARTMENT . "</td><td class='head'>" . _AM_XHELP_TEXT_DEFAULT . "</td><td class='head'>" . _AM_XHELP_TEXT_ACTIONS . "</td></tr>";
            if (isset($departmentInfo)) {
                $defaultDept = xhelpGetMeta("default_department");
                foreach ($departmentInfo as $dept) {
                    echo "<tr><td class='even'>" . $dept->getVar('id') . "</td><td class='even'>" . $dept->getVar('department') . "</td>";
                    if ($dept->getVar('id') != $defaultDept) {
                        echo "<td class='even' width='10%'><a href='" . XHELP_ADMIN_URL . "/department.php?op=updateDefault&amp;id=" . $dept->getVar('id') . "'><img src='" . XHELP_IMAGE_URL . "/off.png' alt='" . _AM_XHELP_TEXT_MAKE_DEFAULT_DEPT . "' title='" . _AM_XHELP_TEXT_MAKE_DEFAULT_DEPT . "' /></a></td>";
                    } else {
                        echo "<td class='even' width='10%'><img src='" . XHELP_IMAGE_URL . "/on.png'</td>";
                    }
                    //echo "<td class='even' width='10%'><img src='".XHELP_IMAGE_URL."/". (($dept->getVar('id') == $defaultDept) ? "on.png" : "off.png")."'</td>";
                    echo "<td class='even' width='70'><a href='" . XHELP_ADMIN_URL . "/department.php?op=editDepartment&amp;deptid=" . $dept->getVar('id') . "'><img src='" . XOOPS_URL . "/modules/xhelp/images/button_edit.png' title='" . _AM_XHELP_TEXT_EDIT . "' name='editDepartment' /></a>&nbsp;&nbsp;";
                    echo "<a href='" . XHELP_ADMIN_URL . "/delete.php?deleteDept=1&amp;deptid=" . $dept->getVar('id') . "'><img src='" . XOOPS_URL . "/modules/xhelp/images/button_delete.png' title='" . _AM_XHELP_TEXT_DELETE . "' name='deleteDepartment' /></a></td></tr>";
                }
            }
        }
        echo "</td></tr></table>";
        echo "<div id='dept_nav'>" . $nav->renderNav() . "</div>";
        xhelpAdminFooter();
        xoops_cp_footer();
    }
}
Example #3
0
function editField()
{
    global $oAdminButton;
    $eventsrv =& xhelpNewEventService();
    $session =& Session::singleton();
    $regex_array =& _getRegexArray();
    if (!isset($_REQUEST['id'])) {
        redirect_header(xhelpMakeURI(XHELP_ADMIN_URL . '/fields.php', array('op' => 'manageDepartments'), false), 3, _AM_XHELP_MESSAGE_NO_FIELD);
    }
    $fld_id = intval($_REQUEST['id']);
    $hField =& xhelpGetHandler('ticketField');
    if (!($field =& $hField->get($fld_id))) {
        redirect_header(xhelpMakeURI(XHELP_ADMIN_URL . '/fields.php', array('op' => 'manageDepartments'), false), 3, _AM_XHELP_MESSAGE_NO_FIELD);
    }
    if (!isset($_POST['editField'])) {
        //Get Custom Field From session (if exists)
        $field_info = $session->get('xhelp_editField_' . $fld_id);
        $field_errors = $session->get('xhelp_editFieldErrors_' . $fld_id);
        if (!$field_info === false) {
            $fld_controltype = $field_info['controltype'];
            $fld_datatype = $field_info['datatype'];
            $fld_departments = $field_info['departments'];
            $fld_name = $field_info['name'];
            $fld_fieldname = $field_info['fieldname'];
            $fld_description = $field_info['description'];
            $fld_required = $field_info['required'];
            $fld_length = $field_info['length'];
            $fld_weight = $field_info['weight'];
            $fld_defaultvalue = $field_info['defaultvalue'];
            $fld_values = $field_info['values'];
            $fld_validation = $field_info['validation'];
        } else {
            $hFDept =& xhelpGetHandler('ticketFieldDepartment');
            $depts =& $hFDept->departmentsByField($field->getVar('id'), true);
            $fld_controltype = $field->getVar('controltype');
            $fld_datatype = $field->getVar('datatype');
            $fld_departments = array_keys($depts);
            $fld_name = $field->getVar('name');
            $fld_fieldname = $field->getVar('fieldname');
            $fld_description = $field->getVar('description');
            $fld_required = $field->getVar('required');
            $fld_length = $field->getVar('fieldlength');
            $fld_weight = $field->getVar('weight');
            $fld_defaultvalue = $field->getVar('defaultvalue');
            $fld_values = _formatValues($field->getVar('fieldvalues'));
            $fld_validation = $field->getVar('validation');
        }
        //Display Field modification
        xoops_cp_header();
        echo $oAdminButton->renderButtons('manfields');
        //Edit Field Form
        $controls = xhelpGetControlArray();
        $control_select = new XoopsFormSelect(_AM_XHELP_TEXT_CONTROLTYPE, 'fld_controltype', $fld_controltype);
        $control_select->setDescription(_AM_XHELP_TEXT_CONTROLTYPE_DESC);
        foreach ($controls as $key => $control) {
            $control_select->addOption($key, $control['label']);
        }
        $datatypes = array(_XHELP_DATATYPE_TEXT => _XHELP_DATATYPE_TEXT, _XHELP_DATATYPE_NUMBER_INT => _XHELP_DATATYPE_NUMBER_INT, _XHELP_DATATYPE_NUMBER_DEC => _XHELP_DATATYPE_NUMBER_DEC);
        $datatype_select = new XoopsFormSelect(_AM_XHELP_TEXT_DATATYPE, 'fld_datatype', $fld_datatype);
        $datatype_select->setDescription(_AM_XHELP_TEXT_DATATYPE_DESC);
        $datatype_select->addOptionArray($datatypes);
        $hDepts =& xhelpGetHandler('department');
        $depts =& $hDepts->getObjects();
        $dept_select = new XoopsFormSelect(_AM_XHELP_TEXT_DEPARTMENTS, 'fld_departments', $fld_departments, 5, true);
        $dept_select->setDescription(_AM_XHELP_TEXT_DEPT_DESC);
        foreach ($depts as $obj) {
            $dept_select->addOption($obj->getVar('id'), $obj->getVar('department'));
        }
        unset($depts);
        if (!$field_errors === false) {
            xhelpRenderErrors($field_errors, xhelpMakeURI(XHELP_ADMIN_URL . '/fields.php', array('op' => 'clearEditSession', 'id' => $fld_id)));
        }
        $form = new xhelpForm(_AM_XHELP_EDIT_FIELD, 'edit_field', xhelpMakeURI(XHELP_ADMIN_URL . '/fields.php', array('op' => 'editfield', 'id' => $fld_id)));
        $nameEle = new XoopsFormText(_AM_XHELP_TEXT_NAME, 'fld_name', 30, 64, $fld_name);
        $nameEle->setDescription(_AM_XHELP_TEXT_NAME_DESC);
        $form->addElement($nameEle);
        $fieldnameEle = new XoopsFormText(_AM_XHELP_TEXT_FIELDNAME, 'fld_fieldname', 30, 64, $fld_fieldname);
        $fieldnameEle->setDescription(_AM_XHELP_TEXT_FIELDNAME_DESC);
        $form->addElement($fieldnameEle);
        $descriptionEle = new XoopsFormTextArea(_AM_XHELP_TEXT_DESCRIPTION, 'fld_description', $fld_description, 5, 60);
        $descriptionEle->setDescription(_AM_XHELP_TEXT_DESCRIPTION_DESC);
        $form->addElement($descriptionEle);
        $form->addElement($dept_select);
        $form->addElement($control_select);
        $form->addElement($datatype_select);
        $required = new XoopsFormRadioYN(_AM_XHELP_TEXT_REQUIRED, 'fld_required', $fld_required);
        $required->setDescription(_AM_XHELP_TEXT_REQUIRED_DESC);
        $form->addElement($required);
        $lengthEle = new XoopsFormText(_AM_XHELP_TEXT_LENGTH, 'fld_length', 5, 5, $fld_length);
        $lengthEle->setDescription(_AM_XHELP_TEXT_LENGTH_DESC);
        $form->addElement($lengthEle);
        $widthEle = new XoopsFormText(_AM_XHELP_TEXT_WEIGHT, 'fld_weight', 5, 5, $fld_weight);
        $widthEle->setDescription(_AM_XHELP_TEXT_WEIGHT_DESC);
        $form->addElement($widthEle);
        $regex_control = new xhelpFormRegex(_AM_XHELP_TEXT_VALIDATION, 'fld_valid', $fld_validation);
        $regex_control->setDescription(_AM_XHELP_TEXT_VALIDATION_DESC);
        $regex_control->addOptionArray($regex_array);
        $form->addElement($regex_control);
        $defaultValueEle = new XoopsFormText(_AM_XHELP_TEXT_DEFAULTVALUE, 'fld_defaultvalue', 30, 100, $fld_defaultvalue);
        $defaultValueEle->setDescription(_AM_XHELP_TEXT_DEFAULTVALUE_DESC);
        $form->addElement($defaultValueEle);
        $values = new XoopsFormTextArea(_AM_XHELP_TEXT_FIELDVALUES, 'fld_values', $fld_values, 5, 60);
        $values->setDescription(_AM_XHELP_TEXT_FIELDVALUES_DESC);
        $form->addElement($values);
        $btn_tray = new XoopsFormElementTray('');
        $btn_tray->addElement(new XoopsFormButton('', 'editField', _AM_XHELP_BUTTON_SUBMIT, 'submit'));
        $btn_tray->addElement(new XoopsFormButton('', 'cancel', _AM_XHELP_BUTTON_CANCEL));
        $btn_tray->addElement(new XoopsFormHidden('id', $fld_id));
        $form->addElement($btn_tray);
        echo $form->render();
        xhelpAdminFooter();
        xoops_cp_footer();
    } else {
        //Validate Field Information
        $has_errors = false;
        $errors = array();
        $values =& _parseValues($_POST['fld_values']);
        if (!($control = xhelpGetControl($_POST['fld_controltype']))) {
            $has_errors = true;
            $errors['fld_controltype'][] = _AM_XHELP_VALID_ERR_CONTROLTYPE;
        }
        $fld_needslength = $control['needs_length'];
        $fld_needsvalues = $control['needs_values'];
        //name field filled?
        if (trim($_POST['fld_name']) == '') {
            $has_errors = true;
            $errors['fld_name'][] = _AM_XHELP_VALID_ERR_NAME;
        }
        //fieldname filled
        if (trim($_POST['fld_fieldname']) == '') {
            $has_errors = true;
            $errors['fld_fieldname'][] = _AM_XHELP_VALID_ERR_FIELDNAME;
        }
        //fieldname unique?
        $crit = new CriteriaCompo(new Criteria('id', $fld_id, '!='));
        $crit->add(new Criteria('fieldname', $_POST['fld_fieldname']));
        if ($hField->getCount($crit)) {
            $has_errors = true;
            $errors['fld_fieldname'][] = _AM_XHELP_VALID_ERR_FIELDNAME_UNIQUE;
        }
        //Length filled
        if (intval($_POST['fld_length']) == 0 && $fld_needslength == true) {
            $has_errors = true;
            $errors['fld_length'][] = sprintf(_AM_XHELP_VALID_ERR_LENGTH, _XHELP_FIELD_MINLEN, _XHELP_FIELD_MAXLEN);
        }
        //default value in value set?
        if (count($values)) {
            if (!in_array($_POST['fld_defaultvalue'], $values, true) && !array_key_exists($_POST['fld_defaultvalue'], $values)) {
                $has_errors = true;
                $errors['fld_defaultvalue'][] = _AM_XHELP_VALID_ERR_DEFAULTVALUE;
            }
            //length larger than longest value?
            $length = intval($_POST['fld_length']);
            foreach ($values as $key => $value) {
                if (strlen($key) > $length) {
                    $has_errors = true;
                    $errors['fld_values'][] = sprintf(_AM_XHELP_VALID_ERR_VALUE_LENGTH, htmlentities($key), $length);
                }
            }
        } elseif ($fld_needsvalues) {
            $has_errors = true;
            $errors['fld_values'][] = _AM_XHELP_VALID_ERR_VALUE;
        }
        if ($has_errors) {
            $afield = array();
            $afield['name'] = $_POST['fld_name'];
            $afield['description'] = $_POST['fld_description'];
            $afield['fieldname'] = $_POST['fld_fieldname'];
            $afield['departments'] = $_POST['fld_departments'];
            $afield['controltype'] = $_POST['fld_controltype'];
            $afield['datatype'] = $_POST['fld_datatype'];
            $afield['required'] = $_POST['fld_required'];
            $afield['weight'] = $_POST['fld_weight'];
            $afield['defaultvalue'] = $_POST['fld_defaultvalue'];
            $afield['values'] = $_POST['fld_values'];
            $afield['length'] = $_POST['fld_length'];
            $afield['validation'] = $_POST['fld_valid_select'] == $_POST['fld_valid_txtbox'] ? $_POST['fld_valid_select'] : $_POST['fld_valid_txtbox'];
            $session->set('xhelp_editField_' . $fld_id, $afield);
            $session->set('xhelp_editFieldErrors_' . $fld_id, $errors);
            //Redirect to edit page (display errors);
            header('Location: ' . xhelpMakeURI(XHELP_ADMIN_URL . '/fields.php', array('op' => 'editfield', 'id' => $fld_id), false));
            exit;
        }
        //Store Modified Field info
        $field->setVar('name', $_POST['fld_name']);
        $field->setVar('description', $_POST['fld_description']);
        $field->setVar('fieldname', $_POST['fld_fieldname']);
        $field->setVar('controltype', $_POST['fld_controltype']);
        $field->setVar('datatype', $_POST['fld_datatype']);
        $field->setVar('fieldlength', $_POST['fld_length']);
        $field->setVar('required', $_POST['fld_required']);
        $field->setVar('weight', $_POST['fld_weight']);
        $field->setVar('defaultvalue', $_POST['fld_defaultvalue']);
        $field->setVar('validation', $_POST['fld_valid_select'] == $_POST['fld_valid_txtbox'] ? $_POST['fld_valid_select'] : $_POST['fld_valid_txtbox']);
        $field->setValues($values);
        $field->addDepartments($_POST['fld_departments']);
        if ($hField->insert($field)) {
            _clearEditSessionVars($fld_id);
            redirect_header(xhelpMakeURI(XHELP_ADMIN_URL . '/fields.php'), 3, _AM_XHELP_MSG_FIELD_UPD_OK);
        } else {
            redirect_header(xhelpMakeURI(XHELP_ADMIN_URL . '/fields.php', array('op' => 'editfield', 'id' => $fld_id), false), 3, _AM_XHELP_MSG_FIELD_UPD_ERR);
        }
    }
}