function edit() { $id = JCommentsInput::getVar('cid', 0); if (is_array($id)) { $id = $id[0]; } $db =& JCommentsFactory::getDBO(); $row = new JCommentsCustomBBCodeDB($db); if ($id) { $row->load($id); } $groups = JCommentsAdmin::getAllGroups(); $exclude = JCommentsAdmin::getHigherGroups(); if (count($exclude)) { // remove users 'above' me $i = 0; while ($i < count($groups)) { if (in_array($groups[$i]->group_id, $exclude)) { array_splice($groups, $i, 1); } else { $i++; } } } $userGroups = explode(",", $row->button_acl); $lists['groups'] = array(); foreach ($groups as $group) { $lists['groups'][$group->text] = (int) in_array($group->text, $userGroups); } HTML_JCommentsACustomBBCodes::edit($row, $lists); }
function saveSettings($lang) { global $mainframe; $db =& JCommentsFactory::getDBO(); $config =& JCommentsFactory::getConfig(); $groups = JCommentsAdmin::getAllGroups(); $exclude = JCommentsAdmin::getHigherGroups(); if (count($exclude)) { // left all users 'above' me $i = 0; while ($i < count($groups)) { if (!in_array($groups[$i]->group_id, $exclude)) { array_splice($groups, $i, 1); } else { $i++; } } } $c_params = $config->getKeys(); $p_params = array_keys($_POST); $i_params = array('smiles', 'merge_time', 'use_plural_forms', 'load_cached_comments', 'enable_geshi'); foreach ($c_params as $param) { if (!in_array('cfg_' . $param, $p_params) && !in_array($param, $i_params)) { $_POST['cfg_' . $param] = ''; } } $db->setQuery("SELECT name FROM #__jcomments_settings WHERE component=''" . ($lang != '' ? " AND lang ='{$lang}'" : '')); $dbParams = $db->loadResultArray(); $query = 'SELECT * FROM #__jcomments_settings WHERE name IN ("' . implode('", "', $i_params) . '")'; $db->setQuery($query); $systemVars = $db->loadObjectList('name'); foreach ($i_params as $p) { if (!in_array($p, $dbParams)) { if (isset($systemVars[$p])) { $_POST['cfg_' . $p] = $systemVars[$p]->value; } } } if (!isset($_POST['cfg_comment_minlength'])) { $_POST['cfg_comment_minlength'] = 0; } if (!isset($_POST['cfg_comment_maxlength'])) { $_POST['cfg_comment_maxlength'] = 0; } if ($_POST['cfg_comment_minlength'] > $_POST['cfg_comment_maxlength']) { $_POST['cfg_comment_minlength'] = 0; } foreach ($_POST as $k => $v) { if (strpos($k, 'cfg_') === 0) { $paramName = substr($k, 4); if ($paramName == 'smile_codes' || $paramName == 'smile_images') { continue; } if (is_array($v)) { $config->set($paramName, ''); foreach ($groups as $group) { if (strpos($config->get($paramName), $group->value) !== false) { $v[] = $group->text; } } $v = implode(',', $v); } if (!get_magic_quotes_gpc()) { $v = addslashes($v); } if ($paramName == 'forbidden_names') { $v = preg_replace("#[\n|\r]+#", ',', $v); $v = preg_replace("#,+#", ',', $v); } else { if ($paramName == 'badwords') { $v = preg_replace('#[\\s|\\,]+#i', "\n", $v); $v = preg_replace('#[\\n|\\r]+#i', "\n", $v); } } $v = trim($v); $config->set($paramName, $v); if (in_array($paramName, $dbParams)) { $query = "UPDATE #__jcomments_settings" . "\n SET `value` = '" . $v . "'" . "\n WHERE `name` = '" . $paramName . "'" . ($lang != '' ? " AND `lang` = '{$lang}'" : ''); } else { $query = "INSERT INTO #__jcomments_settings" . "\n SET `value` = '" . $v . "'" . "\n , `name` = '" . $paramName . "'" . ($lang != '' ? " , `lang` = '{$lang}'" : ''); } $db->setQuery($query); $db->query(); } } $message = JText::_('AE_SETTINGS_SAVED'); // clean all caches for components with comments if ($mainframe->getCfg('caching') == 1) { $db->setQuery("SELECT DISTINCT(object_group) AS name FROM #__jcomments"); $rows = $db->loadObjectList(); foreach ($rows as $row) { JCommentsCache::cleanCache($row->name); } unset($rows); } JCommentsCache::cleanCache('com_jcomments'); return $message; }