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);
 }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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();
         }
     }
 }