Example #1
0
/**
 * @param $config
 *
 * @return array
 */
function createConfigform($config)
{
    $xoops = Xoops::getInstance();
    $config_handler = $xoops->getHandlerConfig();
    //$xoops->config = $config_handler->getConfigsByCat(XOOPS_CONF);
    //$config =& $xoops->config;
    $ret = array();
    $confcount = count($config);
    for ($i = 0; $i < $confcount; ++$i) {
        $conf_catid = $config[$i]->getVar('conf_catid');
        if (!isset($ret[$conf_catid])) {
            $ret[$conf_catid] = new Xoops\Form\ThemeForm('', 'configs', 'index.php', 'post');
        }
        $title = \Xoops\Locale::translate($config[$i]->getVar('conf_title'), 'system');
        switch ($config[$i]->getVar('conf_formtype')) {
            case 'textarea':
                if ($config[$i]->getVar('conf_valuetype') === 'array') {
                    // this is exceptional.. only when value type is array need a smarter way for this
                    $ele = $config[$i]->getVar('conf_value') != '' ? new Xoops\Form\TextArea($title, $config[$i]->getVar('conf_name'), installHtmlSpecialCharacters(implode('|', $config[$i]->getConfValueForOutput())), 5, 50) : new Xoops\Form\TextArea($title, $config[$i]->getVar('conf_name'), '', 5, 50);
                } else {
                    $ele = new Xoops\Form\TextArea($title, $config[$i]->getVar('conf_name'), installHtmlSpecialCharacters($config[$i]->getConfValueForOutput()), 5, 100);
                }
                break;
            case 'select':
                $ele = new Xoops\Form\Select($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                $options =& $config_handler->getConfigOptions(new Criteria('conf_id', $config[$i]->getVar('conf_id')));
                $opcount = count($options);
                for ($j = 0; $j < $opcount; ++$j) {
                    $optval = \Xoops\Locale::translate($options[$j]->getVar('confop_value'), 'system');
                    $optkey = \Xoops\Locale::translate($options[$j]->getVar('confop_name'), 'system');
                    $ele->addOption($optval, $optkey);
                }
                break;
            case 'select_multi':
                $ele = new Xoops\Form\Select($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), 5, true);
                $options =& $config_handler->getConfigOptions(new Criteria('conf_id', $config[$i]->getVar('conf_id')));
                $opcount = count($options);
                for ($j = 0; $j < $opcount; ++$j) {
                    $optval = \Xoops\Locale::translate($options[$j]->getVar('confop_value'), 'system');
                    $optkey = \Xoops\Locale::translate($options[$j]->getVar('confop_name'), 'system');
                    $ele->addOption($optval, $optkey);
                }
                break;
            case 'yesno':
                $ele = new Xoops\Form\RadioYesNo($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), XoopsLocale::YES, XoopsLocale::NO);
                break;
            case 'theme':
            case 'theme_multi':
                $ele = $config[$i]->getVar('conf_formtype') !== 'theme_multi' ? new Xoops\Form\Select($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput()) : new Xoops\Form\Select($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), 5, true);
                $dirlist = XoopsLists::getThemesList();
                if (!empty($dirlist)) {
                    asort($dirlist);
                    $ele->addOptionArray($dirlist);
                }
                break;
            case 'tplset':
                $ele = new Xoops\Form\Select($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                $tplset_handler = $xoops->getHandlerTplSet();
                $tplsetlist = $tplset_handler->getNameList();
                asort($tplsetlist);
                foreach ($tplsetlist as $key => $name) {
                    $ele->addOption($key, $name);
                }
                break;
            case 'timezone':
                $ele = new Xoops\Form\SelectTimeZone($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                break;
            case 'language':
                $ele = new Xoops\Form\SelectLanguage($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                break;
            case 'locale':
                $ele = new Xoops\Form\SelectLocale($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                break;
            case 'startpage':
                $ele = new Xoops\Form\Select($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                $module_handler = $xoops->getHandlerModule();
                $criteria = new CriteriaCompo(new Criteria('hasmain', 1));
                $criteria->add(new Criteria('isactive', 1));
                $moduleslist =& $module_handler->getNameList($criteria, true);
                $moduleslist['--'] = XoopsLocale::NONE;
                $ele->addOptionArray($moduleslist);
                break;
            case 'group':
                $ele = new Xoops\Form\SelectGroup($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 1, false);
                break;
            case 'group_multi':
                $ele = new Xoops\Form\SelectGroup($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 5, true);
                break;
                // RMV-NOTIFY - added 'user' and 'user_multi'
            // RMV-NOTIFY - added 'user' and 'user_multi'
            case 'user':
                $ele = new Xoops\Form\SelectUser($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 1, false);
                break;
            case 'user_multi':
                $ele = new Xoops\Form\SelectUser($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 5, true);
                break;
            case 'module_cache':
                $module_handler = $xoops->getHandlerModule();
                $modules = $module_handler->getObjectsArray(new Criteria('hasmain', 1), true);
                $currrent_val = $config[$i]->getConfValueForOutput();
                $cache_options = array('0' => XoopsLocale::NO_CACHE, '30' => sprintf(XoopsLocale::F_SECONDS, 30), '60' => XoopsLocale::ONE_MINUTE, '300' => sprintf(XoopsLocale::F_MINUTES, 5), '1800' => sprintf(XoopsLocale::F_MINUTES, 30), '3600' => XoopsLocale::ONE_HOUR, '18000' => sprintf(XoopsLocale::F_HOURS, 5), '86400' => XoopsLocale::ONE_DAY, '259200' => sprintf(XoopsLocale::F_DAYS, 3), '604800' => XoopsLocale::ONE_WEEK, '2592000' => XoopsLocale::ONE_MONTH);
                if (count($modules) > 0) {
                    $ele = new Xoops\Form\ElementTray($title, '<br />');
                    foreach (array_keys($modules) as $mid) {
                        $c_val = isset($currrent_val[$mid]) ? (int) $currrent_val[$mid] : null;
                        $selform = new Xoops\Form\Select($modules[$mid]->getVar('name'), $config[$i]->getVar('conf_name') . "[{$mid}]", $c_val);
                        $selform->addOptionArray($cache_options);
                        $ele->addElement($selform);
                        unset($selform);
                    }
                } else {
                    $ele = new Xoops\Form\Label($title, SystemLocale::NO_MODULE_TO_CACHE);
                }
                break;
            case 'site_cache':
                $ele = new Xoops\Form\Select($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                $ele->addOptionArray(array('0' => XoopsLocale::NO_CACHE, '30' => sprintf(XoopsLocale::F_SECONDS, 30), '60' => XoopsLocale::ONE_MINUTE, '300' => sprintf(XoopsLocale::F_MINUTES, 5), '1800' => sprintf(XoopsLocale::F_MINUTES, 30), '3600' => XoopsLocale::ONE_HOUR, '18000' => sprintf(XoopsLocale::F_HOURS, 5), '86400' => XoopsLocale::ONE_DAY, '259200' => sprintf(XoopsLocale::F_DAYS, 3), '604800' => XoopsLocale::ONE_WEEK, '2592000' => XoopsLocale::ONE_MONTH));
                break;
            case 'password':
                $ele = new Xoops\Form\Password($title, $config[$i]->getVar('conf_name'), 50, 255, installHtmlSpecialCharacters($config[$i]->getConfValueForOutput()));
                break;
            case 'color':
                $ele = new Xoops\Form\ColorPicker($title, $config[$i]->getVar('conf_name'), installHtmlSpecialCharacters($config[$i]->getConfValueForOutput()));
                break;
            case 'hidden':
                $ele = new Xoops\Form\Hidden($config[$i]->getVar('conf_name'), installHtmlSpecialCharacters($config[$i]->getConfValueForOutput()));
                break;
            case 'textbox':
            default:
                $ele = new Xoops\Form\Text($title, $config[$i]->getVar('conf_name'), 50, 255, installHtmlSpecialCharacters($config[$i]->getConfValueForOutput()));
                break;
        }
        if ($config[$i]->getVar('conf_desc') != '') {
            $ele->setDescription(\Xoops\Locale::translate($config[$i]->getVar('conf_desc'), 'system'));
        }
        $ret[$conf_catid]->addElement($ele);
        $hidden = new Xoops\Form\Hidden('conf_ids[]', $config[$i]->getVar('conf_id'));
        $ret[$conf_catid]->addElement($hidden);
        unset($ele);
        unset($hidden);
    }
    return $ret;
}
Example #2
0
/**
 * xoBoolField - display a boolean checkbox field
 *
 * @param string $name  field name
 * @param string $value value
 * @param string $label label
 * @param string $help  help text
 *
 * @return void
 */
function xoBoolField($name, $value, $label, $help = '')
{
    $label = installHtmlSpecialCharacters($label);
    $name = installHtmlSpecialCharacters($name);
    $value = installHtmlSpecialCharacters($value);
    echo "<label class='xolabel' for='{$name}'>{$label}</label>\n";
    if ($help) {
        echo '<div class="xoform-help">' . $help . "</div>\n";
    }
    $checked = $value ? 'checked' : '';
    echo "<input type=\"checkbox\" name=\"{$name}\" value=\"1\" {$checked} />" . ENABLE . "<br />";
}