public static function edit() { $id = JCommentsInput::getVar('cid', 0); if (is_array($id)) { $id = $id[0]; } $db = JCommentsFactory::getDBO(); $row = new JCommentsTableCustomBBCode($db); if ($id) { $row->load($id); } require_once JCOMMENTS_HELPERS . '/user.php'; $groups = JCommentsUserHelper::getUserGroups(); $assignedGroups = explode(",", $row->button_acl); $lists['groups'] = array(); for ($i = 0, $n = count($groups); $i < $n; $i++) { $groups[$i]->enabled = (int) in_array($groups[$i]->id, $assignedGroups); } $lists['groups'] = $groups; HTML_JCommentsACustomBBCodes::edit($row, $lists); }
public static function saveSettings($lang) { JCommentsSecurity::checkToken(); $app = JCommentsFactory::getApplication('administrator'); $db = JCommentsFactory::getDBO(); $config = JCommentsFactory::getConfig(); require_once JCOMMENTS_HELPERS . '/user.php'; $groups = JCommentsUserHelper::getUserGroups(); $c_params = $config->getKeys(); $p_params = array_keys($_POST); $i_params = array('smiles', 'smiles_path', '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->id) !== false) { $v[] = $group->id; } } $v = implode(',', $v); } // handle magic quotes compatibility if (get_magic_quotes_gpc() == 1) { $v = stripslashes($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` = '" . $db->getEscaped($v) . "'" . "\n WHERE `name` = '" . $db->getEscaped($paramName) . "'" . ($lang != '' ? " AND `lang` = '{$lang}'" : ''); } else { $query = "INSERT INTO #__jcomments_settings" . "\n SET `value` = '" . $db->getEscaped($v) . "'" . "\n , `name` = '" . $db->getEscaped($paramName) . "'" . ($lang != '' ? " , `lang` = '{$lang}'" : ''); } $db->setQuery($query); $db->query(); } } if ($config->get('smiles_path') == '') { $smilesPath = '/components/com_jcomments/images/smiles/'; $config->set('smiles_path', $smilesPath); $query = "UPDATE #__jcomments_settings" . "\n SET `value` = '" . $db->getEscaped($smilesPath) . "'" . "\n WHERE `name` = 'smiles_path'" . ($lang != '' ? " AND `lang` = '{$lang}'" : ''); $db->setQuery($query); $db->query(); } $message = JText::_('A_SETTINGS_SAVED'); // clean all caches for components with comments if ($app->getCfg('caching') == 1) { $db->setQuery("SELECT DISTINCT(object_group) AS name FROM #__jcomments"); $rows = $db->loadObjectList(); foreach ($rows as $row) { $cache = JCommentsFactory::getCache($row->name); $cache->clean(); } unset($rows); } $cache = JCommentsFactory::getCache('com_jcomments'); $cache->clean(); return $message; }
public static function fixCustomBBCodeACL() { if (JCOMMENTS_JVERSION == '1.0') { global $database; $db = $database; } else { $db = JFactory::getDBO(); } require_once JCOMMENTS_HELPERS . '/user.php'; $groups = JCommentsUserHelper::getUserGroups(); $where = array(); foreach ($groups as $group) { $where[] = "`button_acl` LIKE '%" . $group->name . "%'"; } if (count($where)) { $db->setQuery("SELECT * FROM `#__jcomments_custom_bbcodes` WHERE " . implode(' OR ', $where)); $rows = $db->loadObjectList(); foreach ($rows as $row) { $values = explode(',', $row->button_acl); foreach ($groups as $group) { for ($i = 0, $n = count($values); $i < $n; $i++) { if ($values[$i] == $group->name) { $values[$i] = $group->id; } } } $row->button_acl = implode(',', $values); $query = "UPDATE `#__jcomments_custom_bbcodes`" . " SET `button_acl` = " . $db->Quote($row->button_acl) . " WHERE `name` = " . $db->Quote($row->name); $db->setQuery($query); $db->query(); } } }